§
    ŠŠtj¥ª ã                  óÌt  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZmZmZmZ d dlmZmZmZmZmZ d dlmZ d dlmZ d dlZd dlZd dlZd dl Zd dl!m"c m#Z$ d dl%m&Z& d d	l'm(Z(m)Z) d d
l*m+Z+ d dl,m-Z- d dl.m/Z/ d dl0m1Z1 d dl2m3Z3 d dl4m5Z5m6Z6m7Z7m8Z8m9Z9m:Z:m;Z;m<Z<m=Z=m>Z>m?Z? d dl@mAZAmBZB d dlCmDZDmEZEmFZFmGZG d dlHmIZI d dlJmKZKmLZLmMZMmNZNmOZOmPZPmQZQ ddlRmSZS ddlTmUZUmVZVmWZWmXZX ddlYmZZZm[Z[ ddlWm\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZdmeZemfZfmgZgmhZhmiZimjZjmkZk ddl"mlZlmmZmmnZnmoZompZpmqZqmrZrmsZsmtZtmuZumvZvmwZwmxZxmyZymzZz ddl{m|Z|m}Z} erddlWm~Z~ ddlm€Z€  ed¦  «        Z� ed¦  «        Z‚ eId d!g¦  «        Zƒ ej„        e…¦  «        Z†i Z‡d"eˆd#<   i Z‰d$eˆd%<   i ZŠd&eˆd'<    eIej‹        jŒ                 ¦   «         Z�ej|        jŽ        ZŽej|        j�        Z�ej|        j�        Z� eIej‹        jŒ                 ¦   «         Z‘ eIej‹        jŒ                 ej’        j“        g¦  «        Z” eIej‹        jŒ                 ¦   «         Z•i Z–d(eˆd)<   ej|        j—        Z—e(e)fZ˜�d@d,„Z™�dAd0„Zš�dBd4„Z›�dCd8„Zœ�dDd=„Z�d>„ Zž�dEdB„ZŸ ežeŽj         eŽj¡        eŽj¢        eŽj£        eŽj¤        eŽj¥        eŽj¦        eŽj§        eŽj¨        eŽj©        eŽjª        eŽj«        eŽj¬        eŽj­        g¦  «         ej®        ej¯        ej°        ej±        ej²        ej³        ej´        ejµ        ej¶        ej·        ej¶        ej¸        ej¹        dCœZº�dFdG„Z»�dGdK„Z¼�dHdM„Z½dNdOœ�dIdT„Z¾dU„ Z¿�dJdY„ZÀ�dKd]„ZÁ�dLde„ZÂ�dMdi„ZÃ�dNdk„ZÄdNe:jÅ        dNe‡f�dOdm„ZÆdn„ ZÇ	 	 �dP�dQdt„ZÈdu„ ZÉ�dRdx„ZÊ	 	 	 	 	 	 �dS�dTd�„ZË ed‚e`¬ƒ¦  «        ZÌ	 	 �dU�dVd‰„ZÍ�dWd‘„ZÎ	 �dX�dYd•„ZÏ eÆej’        j“        d¬–¦  «        d—„ ¦   «         Z“ eÆe�jÐ        d¬–¦  «        �dZd˜„¦   «         ZÑdNd™œ�dZdš„ZÒ eÆeŽjÓ        jÔ        d¬–¦  «        �dZd›„¦   «         ZÕdNdNdœœ�d[d�„ZÖ eÆe�j×        d¬–¦  «        �d\�d[dž„¦   «         ZØdd’e:jÅ        dNdddNdNdf	dŸ„ZÙ ewd e:jÚ        d¬¡¦  «          eÆeŽjÛ        d’d¬¢¦  «        �d]d¤„¦   «         ZÜd¥„ ZÝ eÝ¦   «          	 	 �dUd¦„ZÞ eÆeŽjß        dNd¬¢¦  «        d§„ ¦   «         Zß eÆeŽjà        dNd¬¢¦  «        d¨„ ¦   «         Zà eÆeŽjá        eŽjâ        eŽjã        eŽjä        e�jå        g¦  «        d©„ ¦   «         Zæ eçeŽdª¦  «        r  eÆeŽjè        ¦  «        eæ¦  «          eÆeŽjé        d¬–¦  «        �d^d«„¦   «         Zé eÆeŽjê        d¬–¦  «        �d^d¬„¦   «         Zê eÆeŽjë        g¦  «        �d^d­„¦   «         Zë eÆeŽjì        ¦  «        d®„ ¦   «         Zì eÆeŽjí        ¦  «        d¯„ ¦   «         Zí eÆeŽjî        ¦  «        d°„ ¦   «         Zî eÆeŽjï        ¦  «        d±„ ¦   «         Zï eÆeŽjð        jñ        ¦  «        d²„ ¦   «         Zð eÆeŽjò        ¦  «        d³„ ¦   «         Zò eÆeŽjó        d¬–¦  «        d´„ ¦   «         Zó eÆe�jô        d¬–¦  «        dµ„ ¦   «         Zô eÆeŽjõ        d¬–¦  «        d¶„ ¦   «         Zõ eÆeŽjö        ¦  «        d·„ ¦   «         Zö eÆeŽj÷        d¬–¦  «         eÆeŽjÓ        d¬–¦  «         eÆeŽjø        d¬–¦  «        �d_dº„¦   «         ¦   «         ¦   «         ZÓ eÆeŽjù        d¬–¦  «        d»„ ¦   «         Zùd¼„ Zú eÆeŽjû        d¬–¦  «        d d e
jü        dd’fd½„¦   «         Zý eÆeŽj         d¬–¦  «        	 �d^d’d¾œd¿„¦   «         Z  eÆeŽjþ        d¬–¦  «        �d^dÀ„¦   «         Zþ eÆeŽj¡        d¬–¦  «        �d^dÁ„¦   «         Z¡�d`dÂ„Zÿ eÆe—�j         d¬–¦  «        �dadÉ„¦   «         �ZdÊ„ �Z eÆeŽ�j        �j        ¦  «        dË„ ¦   «         �Z eÆeŽ�j        �j        ¦  «        dÌ„ ¦   «         �Z eÆe—�j        d¬–¦  «        ddÍœ�dbdÏ„¦   «         �Z eÆe—�j	        jñ        d¬–¦  «        �dcdÓ„¦   «         �Z
 eÆe—�j        jñ        d¬–¦  «        ddÍœ�dddÔ„¦   «         �Z eÆe—�j	        �j        d¬–¦  «        �dedÕ„¦   «         �Z eÆe—�j        �j        d¬–¦  «        ddÍœ�dfdÖ„¦   «         �Z�dgdÚ„�Z eÆeŽ�j        ¦  «        �d`dÛ„¦   «         �Z eÆeŽ�j        d¬–¦  «        �dh�didß„¦   «         �Z eÆeŽ�j        d¬–¦  «        �dh�didà„¦   «         �Z eÆeŽ�j        d¬–¦  «        �dh�didá„¦   «         �Z eÆeŽ�j        d¬–¦  «        dâ„ ¦   «         �Z eÆeŽ�j        d¬–¦  «        �d`dã„¦   «         �Z eÆeŽ�j        d¬–¦  «        �d`dä„¦   «         �Z eÆeŽ�j        d¬–¦  «        �d`då„¦   «         �Z eÆeŽ�j        d¬–¦  «        dæ„ ¦   «         �Z eÆeŽ�j        d¬–¦  «        dç„ ¦   «         �Z eÆeŽ�j        d¬–¦  «        dè„ ¦   «         �Z�d`dé„�Z eÆeŽ�j        ¦  «        �djdë„¦   «         �Z�dkdì„�Ze�j        dí„ ¦   «         �Z �d^�dldð„�Z!�d^�dldñ„�Z"�dk�dmdó„�Z#	 	 	 	 �dndô„�Z$dõ„ �Z% eÆej|        �j&        �j'        d¬–¦  «        dö„ ¦   «         �Z' eÆeŽ�j(        d¬–¦  «        d÷„ ¦   «         �Z( eÆeŽ�j)        d¬–¦  «        dø„ ¦   «         �Z) eÆeŽ�j*        �j+        d¬–¦  «        dù„ ¦   «         �Z, eÆeŽ�j-        ¦  «        dú„ ¦   «         �Z- e�j.        d¦  «        dû„ ¦   «         �Z/dü„ �Z0 �eeŽ�j1        jñ        ¦  «        �Z2 �eeŽ�j1        �j3        ¦  «        �Z4 �eeŽ�j5        jñ        ¦  «        �Z6 �eeŽ�j5        �j3        ¦  «        �Z7 �e$eŽ�j8        ¦  «          �e$eŽ�j9        d’¬ý¦  «          �e$eŽ�j:        d’¬ý¦  «          �e$eŽ�j;        d’¬ý¦  «          �e$eŽ�j<        ¦  «          �e$ej|        �j=        �j>        jñ        ¦  «          �e$ej|        �j=        �j?        jñ        ¦  «          �e$ej|        �j=        �j@        jñ        ¦  «          �e$ej|        �j=        �jA        jñ        ¦  «          eÆeŽ�j1        ¦  «        dþ„ ¦   «         �Z1 eÆeŽ�j5        ¦  «        dÿ„ ¦   «         �Z5 eÆeV�jB        d¬–¦  «        �d „ ¦   «         �ZC eÆeV�jD        d¬–¦  «        �do�d„¦   «         �ZE eÆeV�jF        d¬–¦  «        �d„ ¦   «         �ZG eÆeV�jH        d¬–¦  «        �d„ ¦   «         �ZI�do�d„�ZJ eÆeV�jK        d¬–¦  «        d ej´        �dœ�dp�d„¦   «         �ZL �e$eV�jM        ¦  «          �e$eV�jN        ¦  «          eÆeV�j8        d¬–¦  «        d �dœ�dq�d„¦   «         �ZO�dr�d„�ZP�ds�d„�ZQ�dt�d„�ZR�du�d„�ZS eÆeŽ�jT        �jU        d¬–¦  «        dNdNdd�dœ�dv�d!„¦   «         �ZT eÆeŽ�jV        �jU        e:�jW        ¬–¦  «        dNdN�d"œ�dw�d$„¦   «         �ZV�d%„ �ZX�d&„ �ZY�d'„ �ZZ�d(„ �Z[�d)„ �Z\�d*„ �Z]�d+„ �Z^�d,„ �Z_�d-„ �Z` eŸeŽ�j(        jñ        �e`¦  «         �d.„ �Za �e$eŽ�jb        ¦  «          �e$eŽ�jc        d’¬ý¦  «          �e$eŽ�jd        ¦  «          �e$eŽ�je        dN�¬/¦  «          �e$eŽ�jf        jñ        dN�¬/¦  «          �e$eŽ�jg        �eZ¦  «          �e$eŽ�jh        dN�¬/¦  «          �e$eŽ�ji        dN�¬/¦  «         e�jj        � k                    ¦   «         r �e$eŽ�jl        dN�¬/¦  «         e�jm        � k                    ¦   «         r �e$eŽ�jn        dN�¬/¦  «          �e$eŽ�jo        ¦  «          �e$eŽ�jp        ¦  «          �e$eŽ�jq        ¦  «          �e$eŽ�jr        jñ        ¦  «          �e$eŽ�js        jñ        ¦  «          �e$eŽ�jt        ¦  «          �e$eŽ�ju        �jv        ¦  «          �e$eŽ�jw        jñ        ¦  «          �e$eŽ�jx        jñ        ¦  «          �e$eŽ�jy        ¦  «          �e$eŽ�jz        dN�¬/¦  «          �e$eŽ�j{        �eY¦  «          �e$eŽ�j|        �eY¦  «          �e$eŽ�j}        �eZ¦  «          �e$eŽ�j~        �eY¦  «          �e$eŽ�j        �eZ¦  «          �e$eŽ�j€        �eZ¦  «          �e$eŽ�j�        �eZ¦  «          �e$eŽ�j‚        ¦  «          �e$eŽ�jƒ        ¦  «          �e$eŽ�jƒ        ¦  «          �e$eŽ�j„        ¦  «          �e$eŽ�j…        ¦  «          �e$eŽ�j†        ¦  «          �e$eŽ�j‡        �eY¦  «          �e$eŽ�jˆ        ¦  «          �e$eŽ�j‰        ¦  «          �e$eŽ�jŠ        ¦  «          �e$eŽ�j‹        ¦  «          �e$eŽ�jŒ        ¦  «          �e$eŽ�j�        ¦  «          �e$eŽ�jŽ        ¦  «          �e$eŽ�j�        ¦  «          �e$eŽ�j�        �eZ¦  «          �e$eŽ�j‘        ¦  «          �e$eŽ�j’        ¦  «          �e$eŽ�j“        �eZ¦  «          �e$eŽ�j”        ¦  «          �e$eŽ�j•        jñ        dN�¬/¦  «          �e$eŽ�j–        ¦  «          �e$eŽ�j—        ¦  «          �e$eŽ�j˜        ¦  «          �e$eŽ�j™        ¦  «          �e$eŽ�jš        ¦  «          �e$eŽ�j›        ¦  «          �e$eŽ�jœ        ¦  «          �e$eŽ�j�        ¦  «          �e$eŽ�jž        ¦  «          �e$eŽ�jŸ        ¦  «          �e$eŽ�j         ¦  «          �e$eŽ�j¡        ¦  «          �e$eŽ�j¢        ¦  «          �e$eŽ�j£        ¦  «          �e$eŽ�j¤        ¦  «          �e$eŽ�j¥        ¦  «          �e$eŽ�j¦        ¦  «          �e$eŽ�j§        ¦  «          �e$eŽ�j¨        ¦  «          �e$eŽ�j©        ¦  «          �e$eŽ�jª        �j«        ¦  «          �e$eŽ�j¬        ¦  «          �e$eŽ�j­        ¦  «          �e$eŽ�j®        ¦  «          �e$eŽ�j¯        ¦  «          �e$eŽ�j°        ¦  «          �e$eŽ�j±        ¦  «          �e$eŽ�j²        ¦  «          �e$eŽ�j³        jñ        ¦  «          �e$eŽ�j´        jñ        dN�¬/¦  «          �e$eŽ�jµ        jñ        dN�¬/¦  «          �e$eŽ�j¶        jñ        dN�¬/¦  «          �e$eŽ�j·        jñ        dN�¬/¦  «          �e$eŽ�j¸        jñ        dN�¬/¦  «          �e$eŽ�j¹        jñ        dN�¬/¦  «          �e$eŽ�jº        �eY¦  «          �e$e�j»        �j¼        �j½        ¦  «          �e$e�j»        �j¼        �j¾        ¦  «          �e$e�j»        �j¼        �j¿        ¦  «          �e$e�j»        �j¼        �jÀ        ¦  «          �e$eŽ�jÁ        jñ        dN�¬/¦  «          �e$eŽ�jÂ        jñ        dN�¬/¦  «          �e$eŽ�jÃ        ¦  «          �e$eŽ�jÄ        ¦  «          �e$eŽ�jÅ        �eZ¦  «          �e$eŽ�jÆ        ¦  «          �e$eŽ�jÇ        ¦  «          �e$eŽ�jÈ        ¦  «          �e$eŽ�jÉ        ¦  «          �e$eŽ�jÊ        ¦  «          �e$eŽ�jË        jñ        �eadN�¬/¦  «          �e$eŽ�jÌ        jñ        �eadN�¬/¦  «          �e$eŽ�jÍ        jñ        �eadN�¬/¦  «          �e$eŽ�jÍ        �jÎ        dN�¬/¦  «          �e$eŽ�jÏ        jñ        �eadN�¬/¦  «          �e$eŽ�jÐ        jñ        �eadN�¬/¦  «          �e$eŽ�jÑ        jñ        �eadN�¬/¦  «          �e$eŽ�jÒ        jñ        �eadN�¬/¦  «          �e$eŽ�jÓ        jñ        �eadN�¬/¦  «          �e$eŽ�jÔ        jñ        �eadN�¬/¦  «          �e$eŽ�jÕ        jñ        �eadN�¬/¦  «          �e$eŽ�jÖ        jñ        �ea¦  «          �e$eŽ�jÖ        �jÎ        ¦  «          �e$eŽ�j×        jñ        �ea¦  «          �e$eŽ�jØ        jñ        �ea¦  «          �e$eŽ�jÙ        jñ        �ea¦  «          �e$eŽ�jÚ        ¦  «          �e$eŽ�jÛ        �jU        d’¬ý¦  «          �e$eŽ�jÜ        jñ        �eZ¦  «          eÆeŽ�jÝ        d¬–¦  «        �d\�d0„¦   «         �ZÝ eÆeŽ�jÞ        ¦  «        d�d1œ�d2„¦   «         �ZÞ�d3„ �Zß�d4„ �Zà�d5„ �Zá eçeŽ�d6¦  «        r  eÆeŽ�já        ¦  «        �eá¦  «          eÆe��jâ        ¦  «        �d7„ ¦   «         �Zâ eÆeŽ�jã        �jä        d¬–¦  «        	 �dxdddddN�d8œ�d9„¦   «         �Zå eÆeŽ�jæ        d¬–¦  «        �dy�d:„¦   «         �Zæ eÆeŽ�jç        d¬–¦  «        �dz�d;„¦   «         �Zç�d<„ �Zè eÆe�j        eŽ�jé        e��jé        g¦  «        ddddN�d=œ�d>„¦   «         �Z eÆe�jê        ¦  «        �dP�d?„¦   «         �Zê eÆe�jë        ¦  «        �d@„ ¦   «         �Zì eÆeŽ�jí        ¦  «        �dA„ ¦   «         �Zí eÆeŽ�jî        ¦  «        �dB„ ¦   «         �Zî eÆeŽ�jï        ¦  «        	 �d{dd�dCœ�dD„¦   «         �Zï�dE„ �Zð�dF„ �Zñ�dG„ �Zò eÆe�jó        eŽ�jó        g¦  «        ddddd�dHœ�dI„¦   «         �Zó�dJ„ �Zô�dK„ �Zõ  eÆeŽ�jö        ¦  «         �eô�eó¦  «        ¦  «        �Zö �eô �eòd¦  «        ¦  «        �Z÷ �eô �eòd ¦  «        ¦  «        �Zø�dL„ �Zù eÆeŽ�jú        ¦  «        dddd�dMœ�dN„¦   «         �Zú eÆeŽ�jû        ¦  «        dddd�dMœ�dO„¦   «         �Zû eÆeŽ�jü        ¦  «        dddd�dMœ�dP„¦   «         �Zü eÆe��jý        jñ        ¦  «        �dQ„ ¦   «         �Zý eÆe�jþ        eŽ�jþ        g¦  «        �dR„ ¦   «         �Zþ eÆeŽ�jÿ        d¬–¦  «        �d\�dS„¦   «         �Zÿ eÆeŽ�j         d¬–¦  «        �d|�dT„¦   «         �Z �dU„ �Z	 �dk�dV„�Z�dW„ �Z�dk�dX„�Z eÆeŽ�j        d¬–¦  «        �dY„ ¦   «         �Z eÆeŽ�j        d¬–¦  «        �dZ„ ¦   «         �Z eÆeŽ�j        d¬–¦  «        �d\�d[„¦   «         �Z eÆeŽ�j        ¦  «        �d\�d\„¦   «         �Z�d]„ �Z	�d^„ �Z
 eÆeŽ�j        d¬–¦  «        �d\�d_„¦   «         �Z eÆeV�j        d¬–¦  «        �d\�d`„¦   «         �Z�d\�da„�Z �eeŽ�j        jñ        dN�¬b¦  «        �Z �eeŽ�j        jñ        dN�¬b¦  «        �Z eÆeŽ�j        d¬–¦  «        �dc„ ¦   «         �Z eÆeŽ�j        d¬–¦  «        �dd„ ¦   «         �ZeË�de„ ¦   «         �Z eÆeŽ�j        d¬–¦  «        �d^�df„¦   «         �Z eÆeŽ�j        d¬–¦  «        �d}�dg„¦   «         �Zdd’�dhœ�d~�dl„�Z eÆeŽ�j        d¬–¦  «        d�dmœ�d�dn„¦   «         �Z eÆeŽ�j        d¬–¦  «        �d}�do„¦   «         �Z eÆeŽ�j        d¬–¦  «        �d}�dp„¦   «         �Z eÆeŽ�j        d¬–¦  «        �d}�dq„¦   «         �Z eÆeŽ�j        d¬–¦  «        d’�drœ�d€�ds„¦   «         �Z	 	 �d��d‚�dw„�Z eÆeŽ�j        jñ        ¦  «        �d^�dƒ�dy„¦   «         �Z eÆeŽ�j        jñ        ¦  «        �d^�dƒ�dz„¦   «         �Z eÆeŽj«        jñ        ¦  «        	 �dP�d„�d}„¦   «         Z« eÆeŽj¬        jñ        ¦  «        	 �dP�d„�d~„¦   «         Z¬ eÆeŽ�j        jñ        ¦  «        	 	 	 �d{�d…�d€„¦   «         �Z eÆeŽ�j        jñ        ¦  «        	 	 	 �d{�d…�d�„¦   «         �Z�d‚„ �Z  eÆe��j!        jñ        ¦  «        �dƒ„ ¦   «         �Z!�d†�d‡„�Z"�d†�dˆ„�Z# eÆeŽ�j$        d¬–¦  «        �d`�d‰„¦   «         �Z$�d‡�d�„�Z%�dˆ�dŽ„�Z&�d‰�d�„�Z'	 �dŠ�d‘„�Z(d�d’œ�d“„�Z)�d”„ �Z*d�d•œ�d–„�Z+�d—„ �Z, eÆe��j-        d¬–¦  «        	 �d\�d˜„¦   «         �Z-�d‹�dŸ„�Z. eÆe��j/        d¬–¦  «        �d „ ¦   «         �Z/�d¡„ �Z0 eÆeŽj§        d¬–¦  «        	 	 	 	 �dŒ�d¢„¦   «         Z§ eÆeŽj¨        d¬–¦  «        	 	 	 	 �dŒ�d£„¦   «         Z¨ �eeŽj©        jñ        dN�¬b¦  «        �Z1 eÆeŽj©        d¬–¦  «        �d¤„ ¦   «         Z©�d��d¦„�Z2�d§„ �Z3�d¨„ �Z4�d©„ �Z5 �eeŽ�j6        jñ        dN�¬b¦  «        �Z7 eÆeŽ�j6        ¦  «        �dª„ ¦   «         �Z6 �eeŽ�j8        jñ        dN�¬b¦  «        �Z9 eÆeŽ�j8        ¦  «        �d«„ ¦   «         �Z8�d¬„ �Z: eÆeŽ�j;        ¦  «        �d­„ ¦   «         �Z; eÆeŽ�j<        ¦  «        �d®„ ¦   «         �Z<�d¯„ �Z= eÆeŽ�j>        jñ        ¦  «        	 �dŽ�d°„¦   «         �Z> eÆeŽj¢        d¬–¦  «        	 	 	 	 	 �d��d²„¦   «         Z¢ eÆeŽ�j?        d¬–¦  «        	 	 	 	 	 �d��d³„¦   «         �Z? �eeŽ�j@        jñ        dN�¬b¦  «         �eeŽj¢        jñ        dN�¬b¦  «         �eeŽ�j?        jñ        dN�¬b¦  «        g�ZA�d´„ �ZB �eeŽj£        jñ        dN�¬b¦  «        �ZC eÆeŽj£        d¬–¦  «        	 �d^�dµ„¦   «         Z£ �eeŽ�jD        jñ        dN�¬b¦  «        �ZE eÆeŽ�jD        d¬–¦  «        	 �d^�d¶„¦   «         �ZD�d·„ �ZFd�d¸œ�d¹„�ZG	 �d^�d��d½„�ZH�d‘�d¿„�ZI�dÀ„ �ZJ eÆeŽ�jK        ¦  «        �d’d�dÁœ�dÂ„¦   «         �ZK�dÃ„ �ZL�dÄ„ �ZM�dÅ„ �ZN�dÆ„ �ZO eÆeŽ�jP        e��jP        g¦  «        �d^ddN�dÇœ�dÈ„¦   «         �ZQ eÆeŽ�jR        ¦  «        �d^ddN�dÇœ�dÉ„¦   «         �ZR�dÊ„ �ZSeË�dË„ ¦   «         �ZT �eeŽ�jU        �jV        dN�¬b¦  «        �ZW �eeŽ�jU        �jX        dN�¬b¦  «        �ZY �eeŽ�jU        �jZ        dN�¬b¦  «        �Z[ eÆeŽ�jU        d’�¬Ì¦  «        �dÍ„ ¦   «         �ZU�d\�dÎ„�Z\ eÆeŽ�j]        ¦  «        �dÏ„ ¦   «         �Z] eÆeŽ�j^        d¬–¦  «        �d\�dÐ„¦   «         �Z^eË�dÑ„ ¦   «         �Z_eË�dÒ„ ¦   «         �Z`eË�dÓ„ ¦   «         �Za eÆeŽ�jb        d’�¬Ì¦  «        �d^�dÔ„¦   «         �Zc eÆeŽ�jd        gd’�¬Ì¦  «        �dÕ„ ¦   «         �Zd�d“�dØ„�Ze eÆe��jb        gd’�¬Ì¦  «        �dÙ„ ¦   «         �Zf eÆeŽ�jg        eŽ�jb        �jU        gd’e:jÚ        ¬¢¦  «        �dÚ„ ¦   «         �Zb eÆeŽ�jh        e��jh        gd’�¬Ì¦  «        �dÛ„ ¦   «         �Zh eÆeŽ�ji        e��ji        g¦  «        �d’d�dÁœ�dÜ„¦   «         �Zj �eeŽ�jk        jñ        ¦  «        �Zl �eeŽ�jm        jñ        ¦  «        �Zn �eeŽ�jo        jñ        ¦  «        �Zp �eeŽ�jq        jñ        ¦  «        �Zr �eeŽ�js        jñ        ¦  «        �Zt eÆeŽ�jk        ¦  «        �dP�dÝ„¦   «         �Zk eÆeŽ�jm        ¦  «        �dP�dÞ„¦   «         �Zm eÆeŽ�jo        ¦  «        �dß„ ¦   «         �Zo eÆeŽ�jq        d¬–¦  «        �d^�dà„¦   «         �Zq eÆeŽ�js        d¬–¦  «        �d^�dá„¦   «         �Zs eÆeŽ�ju        ¦  «        �d’d�dÁœ�dâ„¦   «         �Zu�d”�då„�Zv eÆeŽ�jw        ¦  «        �d’�dæ„¦   «         �Zx eÆeŽ�jy        d¬–¦  «        �d’�dç„¦   «         �Zz eÆeŽ�j{        d¬–¦  «        �d’�dè„¦   «         �Z|  eÆe��j}        ¦  «         �eH�dé¦  «        ¦  «           eÆeŽ�j~        ¦  «         �eH�dê¦  «        ¦  «        �Z  eÆeŽ�j€        ¦  «         �eH�dë¦  «        ¦  «        �Z�  eÆeŽ�j‚        ¦  «         �eH�dìej²        �¬í¦  «        ¦  «        �Zƒ  eÆeŽ�j„        ¦  «         �eH�dîej²        �¬í¦  «        ¦  «        �Z… �eH�dï¦  «        �Z† �eH�dð¦  «        �Z‡ �eI�dñ¦  «        �Zˆ �eI�dò¦  «        �Z‰ eÙeŽ�jŠ        d’d’�dó�¬ô¦  «        �ZŠ �eeŽ�j‹        �jŒ        dN�¬b¦  «        �Z� eÆeŽ�j‹        �jŒ        d¬–¦  «        ddêdN�dõœ�dö„¦   «         �ZŽ eÆeŽ�j‹        jñ        d¬–¦  «        �d•�d÷„¦   «         �Z‹ �eeŽ�j�        jñ        dN�¬b¦  «        �Z� �eeŽ�j‘        jñ        dN�¬b¦  «        �Z’ �eeŽ�j“        jñ        dN�¬b¦  «        �Z” �eeŽ�j“        �j•        dN�¬b¦  «        �Z– �eeŽ�j—        jñ        dN�¬b¦  «        �Z˜ eÆeŽ�j“        jñ        d¬–¦  «        �dø„ ¦   «         �Z™ eÆeŽ�j“        �j•        d¬–¦  «        �d\�dù„¦   «         �Zš eÆeŽ�j—        jñ        d¬–¦  «        �d•�dú„¦   «         �Z› eÆeŽ�j�        jñ        d¬–¦  «        �d–�dû„¦   «         �Z� eÆeŽ�j‘        jñ        d¬–¦  «        �d•�dü„¦   «         �Z‘�dP�dý„�Zœ�d—�dÿ„�Z� �eœeŽ�jž        ¦  «        �Zž �e�eŽ�jŸ        ¦  «        �ZŸ �eœeŽ�j         ¦  «        �Z  �eœeŽ�j¡        ¦  «        �Z¡ eÙeŽ�j¢        ¦  «        �Z¢ �e�eŽ�j£        ¦  «        �Z£ �e�eŽ�j¤        ¦  «        �Z¤ eÙeŽ�j¥        ¦  «        �Z¥ eÙeŽ�j¦        d’�¬ ¦  «        �Z¦ eÆeŽ�j§        d’�¬Ì¦  «        d�dœ�d„¦   «         �Z§ eÆeŽ�j¨        d’�¬Ì¦  «        d�dœ�d„¦   «         �Z¨ eÞeŽ�j©        �jX        �e§d’�d�¬¦  «        �Zª eÞeŽ�j«        �jX        �e¨d’�d�¬¦  «        �Z¬ �e�eŽ�j­        ¦  «          �e�eŽ�j®        ¦  «          eÙeŽ�j¯        ¦  «        �Z¯ eÙeŽ�j°        ¦  «        �Z° eÙeŽ�j±        ¦  «        �Z± eÙeŽ�j²        �d�¬¦  «        �Z² eÙeŽ�j³        ¦  «        �Z³ eÙeŽ�j´        ¦  «        �Z´ eÙeŽ�jµ        ¦  «        �Zµ �eœeŽ�j¶        ¦  «          �eœeŽ�j·        ¦  «        �Z·  eÆeŽ�j¸        e:jÚ        ¬–¦  «        �e·¦  «          �eœeŽ�j¹        ¦  «          �eœeŽ�jº        ¦  «          �eœeŽ�j»        ¦  «          �e�eŽj†        ¦  «          eÙeŽ�j¼        dd’ej¸        �¬¦  «        �Z¼ eÙeŽ�j½        dd’ej¸        �¬¦  «        �Z½ eÙeŽ�j¾        dd’ej¸        �¬¦  «        �Z¾ eÙeŽ�j¿        dd’ej¸        �¬¦  «        �Z¿ eÙeŽ�jÀ        ¦  «        �ZÀ eÙeŽ�jÁ        ¦  «        �ZÁ  eÆeŽ�jÂ        ¦  «        �eÀ¦  «           eÆeŽ�jÃ        ¦  «        �eÁ¦  «          eÙeŽ�jÄ        ¦  «        �ZÄ eÙeŽ�j¯        ¦  «        �Z¯ �eœeŽ�jÅ        ¦  «        �ZÅ eÙeŽ�jÆ        ¦  «          eÙeŽ�jÇ        �d	�¬¦  «        �ZÇ eÙeŽjî        ¦  «          eÆeŽ�jÈ        ¦  «        �d
„ ¦   «         �ZÈ  eÆeŽ�jÉ        ¦  «        �eÄ¦  «          eÙeŽ�jÊ        ej¸        �¬í¦  «          eÙeŽ�jË        ej¸        �¬í¦  «          eÙeŽ�jÌ        ej¸        �¬í¦  «          eÙeŽ�jÍ        ej¸        �¬í¦  «        �ZÍ eÙeŽ�jÎ        ej¸        �¬í¦  «          eÙeŽ�jÏ        ej¸        �¬í¦  «          �eœeŽ�jÐ        ¦  «          �eœeŽ�jÑ        ¦  «          �eœeŽ�jÒ        ¦  «          �eœeŽ�jÓ        ¦  «          �eœeŽ�jÔ        ¦  «          �eœeŽ�jÕ        ¦  «          �eœeŽ�jÖ        ¦  «          �eœeŽ�j×        ¦  «          �eœeŽ�jØ        ¦  «          �eœeŽ�jÙ        ¦  «          �eœeŽ�jÚ        ¦  «          �eœeŽ�jÛ        ¦  «          �eœeŽ�jÜ        ¦  «          �eœeŽ�jÝ        ¦  «          �eœeŽ�jÞ        ¦  «          �eœeŽ�jß        ¦  «         d�d�là�má�Zá�mâ�Zâ �d„ �Zã�eâD ][�Zä �eãeŽ�eä¦  «        D ]\  �Zå�Zæ�Zç eÙ�eå�eä�eæ�eç�¬¦  «         Œ �eãe��eä¦  «        D ]\  �Zå�Zæ�Zç eÙ�eå�eä�eæ�eç�¬¦  «         ŒŒ\ eÞeŽ�jè        �jé        �eŠd’�¬ ¦  «        �Zê eÞeŽ�jè        �jX        �eŠd’�¬ ¦  «        �Zë eÞeŽ�jè        �jU        �eŠd’�¬ ¦  «          eÞeŽ�jì        �jé        �ed¦  «        �Zí eÞeŽ�jì        �jU        �ed¦  «          eÞeŽ�jì        �jX        �ed¦  «        �Zî eÞeŽ�jï        �jé        �e¦d’�¬ ¦  «          eÞeŽ�jï        �jX        �e¦d’�¬ ¦  «          eÞeŽ�jð        jñ        �eÄ¦  «          eÞeŽ�jñ        jñ        �e¯¦  «          eÞeŽ�jò        �jX        �eU¦  «          eÞeŽ�jò        �jé        �eU¦  «          eÞeŽ�jò        �jó        �eU¦  «          eÞeŽ�jô        �jé        �eb¦  «        �Zõ eÞeŽ�jô        �jU        �eb¦  «          eÞeŽ�jô        �jX        �eb¦  «        �Zö eÞeŽ�j÷        �e¤¦  «          eÞeŽ�jø        �ež¦  «          eÞeŽ�jù        �jé        �eÀ¦  «          eÞeŽ�jù        �jX        �eÀ¦  «          eÞeŽ�jú        �jé        �eÁ¦  «          eÞeŽ�jú        �jX        �eÁ¦  «          eÞeŽ�jû        �jé        �eÀ¦  «          eÞeŽ�jû        �jX        �eÀ¦  «          eÞeŽ�jü        �jé        �eÁ¦  «          eÞeŽ�jü        �jX        �eÁ¦  «          eÞeŽ�jý        �eÅ¦  «          eÞeŽ�jþ        �eÇ¦  «          eÞeŽ�jÿ        �eÞ¦  «          eÞeŽ�j         �eÝ¦  «        �Z�d„ �Z �eeŽ�j        �jé        eŽ�jè        �jé        �eê¦  «          �eeŽ�j        �jX        eŽ�jè        �jX        �eë¦  «          �eeŽ�j        �jé        eŽ�jì        �jé        �eí¦  «          �eeŽ�j        �jX        eŽ�jì        �jX        �eî¦  «          �eeŽ�j        �jé        eŽ�jô        �jé        �eõ¦  «          �eeŽ�j        �jX        eŽ�jô        �jX        �eö¦  «          �eeŽ�j        jñ        eŽ�j         jñ        �e¦  «          �eeŽ�j        �jX        eŽ�j©        �jX        �eª¦  «          �eeŽ�j        �jX        eŽ�j«        �jX        �e¬¦  «         �d„ �Z	 �e	eŽ�j
        �eŠ¦  «          �e	eŽ�j        �e°¦  «          �e	eŽ�j        �e±¦  «          �e	eŽ�j        �e²¦  «          �e	eŽ�j        �e³¦  «          �e	eŽ�j        �e´¦  «          �e	eŽ�j        �eµ¦  «          �e	eŽ�j        �ed¦  «          �e	eŽ�j        �jU        �eb¦  «          �e	eŽ�j        �j        �ec¦  «          �e	eŽ�j        �e¼¦  «          �e	eŽ�j        �e½¦  «          �e	eŽ�j        �e¾¦  «          �e	eŽ�j        �e¿¦  «          �e	eŽ�j        �e¦¦  «          �e	eŽ�j        �e¢¦  «          �e	eŽ�j        �e£¦  «           eÆeŽ�j        ¦  «        �e°¦  «           eÆeŽ�j        ¦  «        �e±¦  «           eÆeŽ�j        ¦  «        �e³¦  «           eÆeŽ�j        ¦  «        �e´¦  «           eÆeŽ�j        ¦  «        �eµ¦  «          �e	eŽ�j         eŽ�j        ¦  «          �e	eŽ�j!        eŽ�j        ¦  «          �e	eŽ�j"        eŽ�j        ¦  «          �e	eŽ�j#        eŽ�j        ¦  «          �e	eŽ�j$        eŽ�j        ¦  «          eÆeŽ�j%        ¦  «        �dP�d„¦   «         �Z% eÆeŽ�j&        �j'        ¦  «        �d„ ¦   «         �Z& eÆeŽ�j(        �j'        ¦  «        �d„ ¦   «         �Z( eÆeŽ�j)        ¦  «        �d„ ¦   «         �Z)�d„ �Z* eA�j+        ¦   «         D ],\  �Z,�Z- eÆ eB�e,¦  «        ¦  «        �e-�dœ�d„¦   «         �Z.Œ- eÆe�j/        ¦  «        �d„ ¦   «         �Z/ eÆeŽ�j-        ¦  «        �d„ ¦   «         �Z0 eÆej|        �j1        �j2        ¦  «        �d„ ¦   «         �Z3 eÆej|        �j4        �j5        ¦  «        �d„ ¦   «         �Z5 eÆej|        jŽ        �j6        �j7        ¦  «        �d„ ¦   «         �Z8 eçej|        �j9        �d¦  «        r, eÆej|        �j9        �j^        jñ        ¦  «        �d„ ¦   «         �Z: eÆej|        jŽ        �j;        ¦  «        d�d1œ�d„¦   «         �Z;d �d�l<�m=�Z=  �e$�e=¦  «          eÆe-¦  «        �d „ ¦   «         �Z> eÆej|        �j?        �j@        d¬–¦  «        �d˜�d"„¦   «         �Z@ eÆej|        �j?        �jA        d¬–¦  «        �d\�d#„¦   «         �ZA  eÆej|        �j?        �jB        d¬–¦  «         e�jC        �eAd’�¬$¦  «        ¦  «          eÆej|        �j?        �jD        d¬–¦  «        �d™�d(„¦   «         �ZD �eE¦   «         �ZF�dš�d+„�ZGd �d,�lH�mI�ZI  eÆ�eId¬–¦  «        �d-„ ¦   «         �ZJ eÆej’        �jK        d¬–¦  «        d�d.œ�d›�d/„¦   «         �ZL eÆe+d¬–¦  «        �dœ�d3„¦   «         �ZM eÆej|        j�        �jN        jñ        ¦  «        �d4„ ¦   «         �ZN eÆej|        j�        �jO        jñ        ¦  «        �d5„ ¦   «         �ZO eÆej|        �j?        �jP        d¬–¦  «        �d6„ ¦   «         �ZPd�d7�lQ�mR�ZR�mS�ZS  �eR¦   «           �eS¦   «           eÆeV�jT        d¬–¦  «        �d8„ ¦   «         �ZT eÆeV�jU        d¬–¦  «        �d9„ ¦   «         �ZV eÆej’        �jW        d¬–¦  «        d’d�d:œ�d;„¦   «         �ZXd�d<lT�mY�ZY  eS�eY¦  «         d�d=lT�mZ�ZZ  �eZ�j[        ¦   «           �eZ�j\        ¦   «          d�d>lT�m]�Z]�m^�Z^  �e]�j_        ¦   «          e�j`        �d��d?„¦   «         �ZadS (ž  é    )ÚannotationsN)Údefaultdict)ÚCallableÚIterableÚMappingÚSequence)ÚAnyÚcastÚTYPE_CHECKINGÚ	TypeGuardÚTypeVar)Ú	ParamSpec)Úpatch)Úcounters)ÚSavedForBackwardsAOTOutputÚ#SavedForBackwardsNoVcCheckAOTOutput)Úassociative_scan_op)Útriton_kernel_wrapper_mutation)ÚFakeScriptObject)Úis_opaque_value)Úget_layout_constraint_tag)Úcanonicalize_dimÚcanonicalize_dimsÚcheckÚdtype_to_typeÚelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚget_computation_dtypeÚis_boolean_dtypeÚis_float_dtypeÚis_integer_dtypeÚNumber)Úmagic_methodsÚmethod_to_operator)Úfree_unbacked_symbolsÚhas_free_unbacked_symbolsÚresolve_unbacked_bindingsÚSymTypes)Ú
OrderedSet)ÚCeilDivÚFloorDivÚIdentityÚMaxÚMinÚModÚModularIndexingé   )Úimport_submoduleé   )ÚconfigÚinductor_primsÚirÚtest_operators)ÚdecompositionsÚget_decompositions)ÚBaseViewÚ	DtypeViewÚ
ExpandViewÚIndexingConstantÚIRNodeÚ	is_tritonÚ
MutableBoxÚOnlineSoftmaxReductionÚops_wrapperÚPermuteViewÚ	PointwiseÚ	ReductionÚSqueezeViewÚ	TensorBoxÚvalidate_irÚView)ÚceildivÚconvert_symint_to_exprÚdecode_deviceÚ
is_dynamicÚis_gpuÚis_nvidia_sm100_or_laterÚis_pointwise_useÚis_triton_fp8_dtype_supportedÚis_viewÚ,needs_fallback_due_to_atomic_add_limitationsÚpad_listlikeÚ#register_op_dtype_propagation_rulesÚ#register_op_requires_libdevice_fp64Úsympy_productÚuse_scatter_fallback)ÚopsÚV)ÚBaseConstant)ÚReductionTypeÚ_TÚ_Pztorchvision::roi_alignzaten::index_addú2dict[Callable[..., Any] | str, Callable[..., Any]]Ú	loweringsz/dict[torch._ops.OpOverload, Callable[..., Any]]Úuser_loweringsz6dict[torch._ops.OpOverload, Callable[..., Any] | None]Ú_maybe_layout_constraintsz2dict[torch._ops.OpOverload, torch._ops.OpOverload]Úinplaceable_foreach_opsÚreturnÚboolc                 ó†   — t           j        j        j        D ])} | j        D ]}|j        dk    r|j        t          v s  dS Œ Œ*dS )NÚcall_functionTF)rZ   ÚgraphÚcurrent_nodeÚusersÚopÚtargetÚforeach_ops)ÚnodeÚusers     úV/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_inductor/lowering.pyÚcur_node_has_non_foreach_usersrq   •   s^   € Ý”Ô$Ô*ð ð ˆØ”Jð 	ð 	ˆDØ”G˜Ò.Ð.°D´KÅ;Ð4NÐ4NØ�t�t�tð 5Oð	ð ˆ5ó    Ú	arg_pairsúIterable[Any]ú4defaultdict[tuple[Any, bool], list[tuple[int, Any]]]c                óŒ  — t          t          ¦  «        }d}t          | ¦  «        D ]�\  }}t          |t          ¦  «        sd}|f}t          |Ž  pt          j        }d }|D ]2}t          |t          ¦  «        r|j	         
                    ¦   «         } nŒ3|€
J d¦   «         ‚|r|\  }|||f                              ||f¦  «         Œž|S )NFTz.foreach op should have at least one tensor arg)r   ÚlistÚ	enumerateÚ
isinstancer   rM   r4   Ú#combo_kernel_foreach_dynamic_shapesrG   ÚdataÚ
get_deviceÚappend)rs   ÚoutÚunpack_argsÚiÚargsÚuse_foreachÚdeviceÚts           rp   Úgroup_foreach_argsr…   ¡   sü   € õ •dÑ
Ô
€CØ€KÝ˜YÑ'Ô'ð 5ð 5‰ˆˆ4Ý˜$¥Ñ)Ô)ð 	ØˆKØ�7ˆDå˜DÐ!Ð!ÐO¥VÔ%Oð 	ð ˆØð 	ð 	ˆAÝ˜!�YÑ'Ô'ð Øœ×*Ò*Ñ,Ô,�Ø�ðð Ð!Ð!Ð#SÑ!Ô!Ð!Øð 	Ø‰GˆTØˆV�[Ð!Ô"×)Ò)¨1¨d¨)Ñ4Ô4Ð4Ð4Ø€Jrr   ÚfnúCallable[..., Any]úCallable[..., Any] | Nonec                ó¸   — t          | t          j        j        ¦  «        sdS t	          | d¬¦  «        x}rt          |¦  «        S | t          v rt          |          S dS )zHGet layout constraints. Returns None if there are no layout constraints.NF)Úwith_default)ry   ÚtorchÚ_opsÚ
OpOverloadr   Útag_to_layout_constraintrb   )r†   Úmaybe_layout_tags     rp   Úmaybe_layout_constraintsr�   ¹   sd   € å�b�%œ*Ô/Ñ0Ô0ð àˆtå4°RÀeÐLÑLÔLÐLÐð :Ý'Ð(8Ñ9Ô9Ð9à	Õ&Ð&Ð&Ý(¨Ô,Ð,Øˆ4rr   Útagútorch._C.Tagú%Callable[..., tuple[Any, Any]] | Nonec                ó$  — | t           j        j        j        k    rt          S | t           j        j        j        k    rt          S | t           j        j        j        k    rt          S | t           j        j        j	        k    rd S t          d| › �¦  «        ‚)NzUnknown layout constraint tag: )r‹   Ú_CÚTagÚneeds_exact_stridesÚconstrain_to_fake_tensorsÚneeds_contiguous_stridesÚrequire_contiguous_stridesÚneeds_fixed_stride_orderÚconstrain_to_fx_stridesÚflexible_layoutÚAssertionError)r‘   s    rp   rŽ   rŽ   Ç   sz   € ð �eŒhŒlÔ.Ò.Ð.Ý(Ð(Ø
�eŒhŒlÔ3Ò3Ð3Ý)Ð)Ø
�eŒhŒlÔ3Ò3Ð3Ý&Ð&Ø
�eŒhŒlÔ*Ò*Ð*ØˆtÝ
Ð@¸3Ð@Ð@Ñ
AÔ
AÐArr   ÚcondÚmsgÚstrÚNonec                ó.   — | st          d|› �¦  «        ‚d S )Nzinductor does not support ©ÚNotImplementedError©rŸ   r    s     rp   Ú
assert_nyir§   Õ   s.   € Øð FÝ!Ð"D¸sÐ"DÐ"DÑEÔEÐEðFð Frr   c                ó<  — t          | t          t          t          t          f¦  «        rd„ | D ¦   «         S t
                               | ¦  «         t          | t          j        j	        ¦  «        r.t
           
                    |                      ¦   «         ¦  «         d S d S )Nc                ó,   — g | ]}t          |¦  «        ‘ŒS © )Úadd_needs_realized_inputs©Ú.0Úxs     rp   ú
<listcomp>z-add_needs_realized_inputs.<locals>.<listcomp>Ü   s!   € Ð9Ð9Ð9°Õ)¨!Ñ,Ô,Ð9Ð9Ð9rr   )ry   rw   ÚsetÚtupler)   Úneeds_realized_inputsÚaddr‹   rŒ   ÚOpOverloadPacketÚupdateÚop_overloads)r†   s    rp   r«   r«   Ú   sŠ   € Ý�"•t�S¥%­Ð4Ñ5Ô5ð :Ø9Ð9°bÐ9Ñ9Ô9Ð9Ý×Ò˜bÑ!Ô!Ð!Ý�"•e”jÔ1Ñ2Ô2ð 8Ý×$Ò$ R§_¢_Ñ%6Ô%6Ñ7Ô7Ð7Ð7Ð7ð8ð 8rr   ú3torch._ops.OpOverloadPacket | torch._ops.OpOverloadÚ
constraintúCallable[..., tuple[Any, Any]]c                óž   — t          | t          j        j        ¦  «        r#|                      ¦   «         D ]}|t
          |<   Œd S |t
          | <   d S ©N)ry   r‹   rŒ   r´   r¶   rb   )r†   r¸   Úoverloads      rp   Úadd_layout_constraintr½   â   s_   € õ �"•e”jÔ1Ñ2Ô2ð 3ØŸšÑ)Ô)ð 	=ð 	=ˆHØ2<Õ% hÑ/Ð/ð	=ð 	=ð )3Õ! "Ñ%Ð%Ð%rr   )r   r3   r1   é   é   é   é   é   é   é	   é
   é   é   Údtypeúint | torch.dtypeútorch.dtypec                ó|   — t          | t          ¦  «        s| S | t          v sJ d| › d�¦   «         ‚t          |          } | S )Nzid z missing from DTYPE_ID_LOOKUP)ry   ÚintÚDTYPE_ID_LOOKUP©rÈ   s    rp   Údecode_dtyperÏ     sM   € Ý�e�SÑ!Ô!ð ØˆØ•OÐ#Ð#Ð#Ð%O¨5Ð%OÐ%OÐ%OÑ#Ô#Ð#å˜EÔ"€EØ€Lrr   r®   r	   ú'TypeGuard[TensorBox | sympy.Expr | int]c                ó   — t          | t          ¦  «        rBt          |                      ¦   «         ¦  «        p t	          |                      ¦   «         ¦  «        S t          | t
          j        ¦  «        r	| j        du S t          | t          ¦  «        S ©NT)	ry   rG   r!   Ú	get_dtyper   ÚsympyÚExprÚ
is_integerrÌ   ©r®   s    rp   Úis_integer_typerØ   "  sq   € Ý�!•YÑÔð "Ý §¢¡¤Ñ.Ô.ÐQÕ2BÀ1Ç;Â;Á=Ä=Ñ2QÔ2QÐQÝ	�A•u”zÑ	"Ô	"ð "ØŒ|˜tÐ#Ð#å˜!�SÑ!Ô!Ð!rr   úTypeGuard[TensorBox | bool]c                ó˜   — t          | t          ¦  «        r!t          |                      ¦   «         ¦  «        S t          | t          ¦  «        S r»   )ry   rG   r   rÓ   re   r×   s    rp   Úis_boolean_typerÛ   +  s:   € Ý�!•YÑÔð #Ý §¢¡¤Ñ.Ô.Ð.å˜!�TÑ"Ô"Ð"rr   F)Úreturn_compute_dtyper�   Útype_promotion_kindr   rÜ   c                óR   ‡— dd„Šˆfd„|D ¦   «         }t          |d| iŽ\  }}|r|n|S )NÚinpr	   rd   c                óâ   — t          | t          t          j        f¦  «        r| S t	          |                      ¦   «         ¦  «        }t          j        dg|z  |                      ¦   «         ¬¦  «        S )Nr3   rÎ   )	ry   r"   rÔ   ÚBasicÚlenÚget_sizer‹   ÚzerosrÓ   )rß   Údims     rp   Úconstruct_inputz+get_promoted_dtype.<locals>.construct_input7  sY   € Ý�c�F¥E¤KÐ0Ñ1Ô1ð 	AØˆJå�c—l’l‘n”nÑ%Ô%ˆCå”; ˜s S™y°·²±´Ð@Ñ@Ô@Ð@rr   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rª   rª   )r­   Úargræ   s     €rp   r¯   z&get_promoted_dtype.<locals>.<listcomp>?  s#   ø€ Ð1Ð1Ð1 SˆOˆO˜CÑ Ô Ð1Ð1Ð1rr   rÝ   )rß   r	   rd   r	   )r   )rÝ   rÜ   r�   ÚinpsÚcompute_dtypeÚresult_dtyperæ   s         @rp   Úget_promoted_dtyperì   2  sf   ø€ ð
Að Að Að Að 2Ð1Ð1Ð1¨DÐ1Ñ1Ô1€DÝ"4Ø	ð#Ø#6ð#ð #Ñ€M�<ð 1ÐBˆ=ˆ=°lÐBrr   c                ó0  — t          | t          t          f¦  «        s| g} nt          | ¦  «        } t          | ¦  «        D ]V}t          |t          j        j        ¦  «        r5|                     ¦   «         D ] }|t          vr|                      |¦  «         Œ!ŒW| S r»   )	ry   rw   r±   r‹   rŒ   r´   r¶   r`   r}   )Úaten_fnr†   Úother_fns      rp   Úget_overloadsrð   F  s•   € Ý�g¥¥e˜}Ñ-Ô-ð  Ø�)ˆˆå�w‘-”-ˆå�7‰mŒmð -ð -ˆÝ�b�%œ*Ô5Ñ6Ô6ð 	-ØŸOšOÑ-Ô-ð -ð -�Ø¥9Ð,Ð,Ø—N’N 8Ñ,Ô,Ð,øøà€Nrr   rk   ú9Any | torch._ops.OpOverloadPacket | torch._ops.OpOverloadÚ	namespacec                óÀ   — t          | t          j        j        ¦  «        r	|| j        v S t          | t          j        j        ¦  «        r||                      ¦   «         v S dS ©NF)ry   r‹   rŒ   r´   Ú_qualified_op_namer�   Úname)rk   rò   s     rp   Úin_namespacer÷   U  sX   € õ �"•e”jÔ1Ñ2Ô2ð &Ø˜BÔ1Ð1Ð1Ý	�B�œ
Ô-Ñ	.Ô	.ð &Ø˜BŸGšG™IœIÐ%Ð%Øˆ5rr   rG   rƒ   útorch.devicec           	     ó(  — t          | j        t          j        ¦  «        r!t	          |                      ¦   «         ¦  «        r| S t          j        j         	                    |                      ¦   «         ¦  «        }|  
                    ¦   «         }|�ƒ|j        dk    rx||k    rrt          |¦  «        dk    st          |¦  «        dk    rL|d         dk    r@t          t          j        t          j                             | |d¦  «        ¦  «        ¦  «        S | S )zB
    Copy cpu scalar if doesn't not match with given `device`
    NÚcpur   r3   F)ry   r{   r6   ÚReinterpretViewr&   rã   rZ   rh   ÚsizevarsÚguarding_hints_or_throwr|   Útyperâ   rG   Ú
StorageBoxÚ
DeviceCopyÚcreate)r®   rƒ   ÚsizeÚ
cur_devices       rp   Úmaybe_copy_cpu_scalarr  _  sä   € õ �a”f�bÔ0Ñ1Ô1ð Õ5NØ	�
Š
‰Œñ6ô 6ð ð ˆÝŒ7Ô×3Ò3°A·J²J±L´LÑAÔA€DØ—’‘”€JàÐØŒO˜uÒ$Ð$Ø˜&Ò Ð Ý�‰YŒY˜!Š^ˆ^¥ D¡	¤	¨Q¢ °4¸´7¸a²<°<å�œ¥r¤}×';Ò';¸A¸zÈ5Ñ'QÔ'QÑRÔRÑSÔSÐSØ€Hrr   ú	list[Any]Úkwargsúdict[str, Any]Ú	broadcastú&ELEMENTWISE_TYPE_PROMOTION_KIND | NoneÚconvert_input_to_boolú tuple[list[Any], dict[str, Any]]c           	     ób  ‡ ‡‡‡‡— d„ t          ‰ ¦  «        D ¦   «         }d„ ‰                     ¦   «         D ¦   «         }|s|s‰ ‰fS |s|rù|rt          j        ŠnId„ ‰ D ¦   «         }|                     d„ ‰                     ¦   «         D ¦   «         ¦  «         t          |d|iŽŠ|r‰ |d                  n‰|d                                       ¦   «         Š|D ]}t          ‰ |         ‰¦  «        ‰ |<   Œ|D ]}	t          ‰|	         ‰¦  «        ‰|	<   Œdˆˆfd
„Šˆfd„‰ D ¦   «         Š ˆfd„‰                     ¦   «         D ¦   «         Š|�rht          t          t          j        ˆ fd„|D ¦   «         ˆfd„|D ¦   «         ¦  «        ¦  «        Ž }
t          |
d                              ¦   «         ¦  «        }t          ||
dt          |¦  «        …         ¦  «        D ]
\  }}|‰ |<   Œt          ||
t          |¦  «        d…         ¦  «        D ]
\  }	}|‰|	<   Œt!          t          ‰ ¦  «        ¦  «        D ]@}t#          ‰ |         t$          j        ¦  «        rt)          j        ‰ |         |¦  «        ‰ |<   ŒA‰D ]@}	t#          ‰|	         t$          j        ¦  «        rt)          j        ‰|	         |¦  «        ‰|	<   ŒA‰ ‰fS )zB
    Transforms arguments for broadcasting and type promotion
    c                óB   — g | ]\  }}t          |t          ¦  «        ¯|‘ŒS rª   ©ry   rG   ©r­   r€   r®   s      rp   r¯   z"transform_args.<locals>.<listcomp>~  s+   € ÐNÐNÐN™$˜!˜QµZÀÅ9Ñ5MÔ5MÐN�AÐNÐNÐNrr   c                óB   — g | ]\  }}t          |t          ¦  «        ¯|‘ŒS rª   r  ©r­   ÚkÚvs      rp   r¯   z"transform_args.<locals>.<listcomp>  s+   € ÐOÐOÐO™D˜A˜qµjÀÅIÑ6NÔ6NÐO�aÐOÐOÐOrr   c                ót   — g | ]5}t          |t          t          j        f¦  «        st	          |d ¦  «        ¯3|‘Œ6S rÎ   )ry   r"   rÔ   rá   Úhasattr©r­   Úas     rp   r¯   z"transform_args.<locals>.<listcomp>‰  sT   € ð ð ð àÝ˜a¥&­%¬+Ð!6Ñ7Ô7ðõ <CÀ1ÀgÑ;NÔ;NðØðð ð rr   c              3  ó:   K  — | ]}t          |d ¦  «        ¯|V — ŒdS )rÈ   N)r  r  s     rp   ú	<genexpr>z!transform_args.<locals>.<genexpr>�  s1   è è € Ð!TÐ!T¨ÅÈÈ7Ñ@SÔ@SÐ!T !Ð!TÐ!TÐ!TÐ!TÐ!TÐ!Trr   rÝ   r   rè   r	   rd   c                ó¾   •— t          | t          ¦  «        rt          | ‰¦  «        S t          | t          j        ¦  «        rt          j        | j        ‰‰¬¦  «        S | S )N©ÚvaluerÈ   rƒ   )ry   rG   Úto_dtyper6   ÚConstantr  )rè   rƒ   rÈ   s    €€rp   Úpromoteztransform_args.<locals>.promote   sW   ø€ Ý˜#�yÑ)Ô)ð Ý  UÑ+Ô+Ð+Ý˜C¥¤Ñ-Ô-ð Ý”{¨¬¸%ÈÐOÑOÔOÐOà�
rr   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rª   rª   )r­   r  r  s     €rp   r¯   z"transform_args.<locals>.<listcomp>¨  s!   ø€ Ð)Ð)Ð)˜q��˜‘
”
Ð)Ð)Ð)rr   c                ó.   •— i | ]\  }}| ‰|¦  «        “ŒS rª   rª   )r­   r  r  r  s      €rp   ú
<dictcomp>z"transform_args.<locals>.<dictcomp>©  s'   ø€ Ð;Ð;Ð;¡D A q�!�W�W˜Q‘Z”ZÐ;Ð;Ð;rr   c              3  ó(   •K  — | ]}‰|         V — Œd S r»   rª   ©r­   r€   r�   s     €rp   r  z!transform_args.<locals>.<genexpr>¯  s'   øè è € Ð3Ð3 �T˜!”WÐ3Ð3Ð3Ð3Ð3Ð3rr   c              3  ó(   •K  — | ]}‰|         V — Œd S r»   rª   )r­   r  r  s     €rp   r  z!transform_args.<locals>.<genexpr>°  s'   øè è € Ð7Ð7 1�V˜A”YÐ7Ð7Ð7Ð7Ð7Ð7rr   N)rè   r	   rd   r	   )rx   Úitemsr‹   re   ÚextendÚvaluesrì   r|   r  Úbroadcast_tensorsrw   Ú	itertoolsÚchainrã   Úziprâ   Úrangery   r6   r  r<   r  )r�   r  r  rÝ   r
  Úargs_indicesÚkwargs_indicesÚpromoting_argsr€   r  Úbroadcastedr  r®   rƒ   rÈ   r  s   ``           @@@rp   Útransform_argsr2  s  sM  øøøøø€ ð OÐN¥)¨D¡/¤/ÐNÑNÔN€LØOÐO F§L¢L¡N¤NÐOÑOÔO€Nàð  ð Ø�Vˆ|Ðàð %<Ð3ð %<Ø ð 	Ý”JˆEˆEðð àðñ ô ˆNð ×!Ò!Ð!TÐ!T¨V¯]ª]©_¬_Ð!TÑ!TÔ!TÑTÔTÐTÝ&Øðà$7ðð ˆEð &2ÐPˆD�˜a”Ô!Ð!°v¸nÈQÔ>OÔ7Pß
Š*‰,Œ,ð 	ð ð 	=ð 	=ˆAÝ+¨D°¬G°VÑ<Ô<ˆD�‰GˆGàð 	Að 	AˆAÝ-¨f°Q¬i¸Ñ@Ô@ˆF�1‰IˆIð	ð 	ð 	ð 	ð 	ð 	ð 	ð *Ð)Ð)Ð) DÐ)Ñ)Ô)ˆØ;Ð;Ð;Ð;¨F¯LªL©N¬NÐ;Ñ;Ô;ˆàñ ?Ý'ÝÝ”Ø3Ð3Ð3Ð3 lÐ3Ñ3Ô3Ø7Ð7Ð7Ð7¨Ð7Ñ7Ô7ñô ñô ð
ˆõ �K ”N×+Ò+Ñ-Ô-Ñ.Ô.ˆå˜ kÐ2EµC¸Ñ4EÔ4EÐ2EÔ&FÑGÔGð 	ð 	‰DˆAˆqØˆD�‰GˆGÝ˜¨µC¸Ñ4EÔ4EÐ4GÐ4GÔ(HÑIÔIð 	ð 	‰DˆAˆqØˆF�1‰IˆIå•s˜4‘y”yÑ!Ô!ð 	;ð 	;ˆAÝ˜$˜qœ'¥2¤;Ñ/Ô/ð ;Ý$Ô+¨D°¬G°TÑ:Ô:��Q‘øØð 	?ð 	?ˆAÝ˜& œ)¥R¤[Ñ1Ô1ð ?Ý&Ô-¨f°Q¬i¸Ñ>Ô>��q‘	øà�ˆ<Ðrr   rî   útorch._ops.OpOverloadÚ	decomp_fnc                ó   ‡— t          j        ‰¦  «        dˆfd„¦   «         }t          | ¦  «        }t                               |¦  «         t
                               t                               ||¦  «        ¦  «         |S )a¯  
    Add a foreach lowering to lowerings dict.

    Arguments:
        aten_fn: torch.ops.aten.* fn we are lowering
        decomp_fn: alternate implementation on our IR
        broadcast: True to apply broadcasting to tensor inputs
        type_promotion_kind: kind of type promotion applied to tensor inputs, `None` means no type promotion
        convert_input_to_bool: some logical ops require inputs are converted to bool
    r�   r	   r  rd   c                 ó6   •—  ‰| i |¤Ž}t          |¦  «         |S r»   )rH   )r�   r  r~   r4  s      €rp   Úwrappedz+_register_foreach_lowering.<locals>.wrappedÓ  s*   ø€ àˆi˜Ð( Ð(Ð(ˆÝ�CÑÔÐØˆ
rr   )r�   r	   r  r	   rd   r	   )Ú	functoolsÚwrapsrð   rm   rµ   r`   ÚdictÚfromkeys)rî   r4  r7  Úaten_fnss    `  rp   Ú_register_foreach_loweringr=  Å  s‚   ø€ õ „_�YÑÔðð ð ð ð ñ  Ôðõ
 ˜WÑ%Ô%€HÝ×Ò�xÑ Ô Ð Ý×Ò•T—]’] 8¨WÑ5Ô5Ñ6Ô6Ð6Ø€Nrr   Úlowering_dictc                óÐ   ‡ ‡‡‡‡— t          j        ‰¦  «        ˆ ˆˆˆˆfd„¦   «         }t          ‰ ¦  «        Š |                     t                               ‰ |¦  «        ¦  «         |S )a¦  
    Add a lowering to lowerings dict

    Arguments:
        aten_fn: torch.ops.aten.* fn we are lowering
        decomp_fn: alternate implementation on our IR
        broadcast: True to apply broadcasting to tensor inputs
        type_promotion_kind: kind of type promotion applied to tensor inputs, `None` means no type promotion
        convert_input_to_bool: some logical ops require inputs are converted to bool
    c                 ó¼  •— t          | ¦  «        } t          |¦  «        }d}t          | ¦  «        dk    r9t          | d         t           t          f¦  «        rd}t          | d         ¦  «        } t          d„ ‰D ¦   «         ¦  «        s#t          d„ |D ¦   «         ¦  «        r
J d¦   «         ‚t          | |‰‰‰¦  «        \  } }|r| g}  ‰| i |¤Ž}t          |¦  «         |S )NFr3   r   Tc              3  óH   K  — | ]}|t           v pt          |d ¦  «        V — ŒdS )Ú_c10d_functionalN)Ú	fallbacksr÷   )r­   r†   s     rp   r  z6_register_lowering.<locals>.wrapped.<locals>.<genexpr>ü  sG   è è € ð 
ð 
ØJLˆR•9ˆ_ÐD¥¨RÐ1CÑ DÔ Dð
ð 
ð 
ð 
ð 
ð 
rr   c              3  ó"   K  — | ]
}|d k    V — ŒdS )r~   Nrª   r¬   s     rp   r  z6_register_lowering.<locals>.wrapped.<locals>.<genexpr>   s&   è è € Ð6Ð6¨!˜1 š:Ð6Ð6Ð6Ð6Ð6Ð6rr   zout= ops aren't yet supported)	rw   r:  râ   ry   r±   ÚallÚanyr2  rH   )	r�   r  Úunpackedr~   rî   r  r
  r4  rÝ   s	       €€€€€rp   r7  z#_register_lowering.<locals>.wrappedò  s  ø€ å˜t™*œ*ˆÝ!% f¡¤ˆØˆåˆt‰9Œ9˜Š>ˆ>�j¨¨a¬µ4½°-Ñ@Ô@ˆ>ØˆHÝ˜˜Qœ‘=”=ˆDåð 
ð 
ØPWð
ñ 
ô 
ñ 
ô 
ð 	Xõ Ð6Ð6¨vÐ6Ñ6Ô6Ñ6Ô6ÐWÐWÐ8WÑWÔWÐ6å%Ø�&˜)Ð%8Ð:Oñ
ô 
‰ˆˆfð ð 	Ø�6ˆDàˆi˜Ð( Ð(Ð(ˆÝ�CÑÔÐàˆ
rr   )r8  r9  rð   rµ   r:  r;  )rî   r4  r  rÝ   r
  r>  r7  s   `````  rp   Ú_register_loweringrH  ß  s�   øøøøø€ õ& „_�YÑÔðð ð ð ð ð ð ð ñ  Ôðõ6 ˜GÑ$Ô$€Gà×Ò�Ÿš w°Ñ8Ô8Ñ9Ô9Ð9Ø€Nrr   ú.Callable[[Callable[_P, _T]], Callable[_P, _T]]c                ó@   — t          j        t          | ||||¬¦  «        S )z+
    Shim to support decorator syntax.
    )r  rÝ   r
  r>  )r8  ÚpartialrH  )rî   r  rÝ   r
  r>  s        rp   Úregister_loweringrL    s0   € õ ÔÝØØØ/Ø3Ø#ðñ ô ð rr   c                ó&  — t          |¦  «        }| r| |k    r|S g }t          j        t          | ¦  «        t          |¦  «        t          j        j        ¬¦  «        D �]\  }}t          j        j	         
                    |¦  «        r|                     |¦  «         Œ@t          j        j	         
                    |¦  «        r|                     |¦  «         Œzt          j        j	                             ||¦  «         t          t	          j        |¦  «        j        ¦  «        t          t	          j        |¦  «        j        ¦  «        k     r|                     |¦  «         �Œ|                     |¦  «         �Œt          t          |¦  «        ¦  «        S )zŸ
    Broadcasting logic based on symbolic shapes.

    We give the shapes 0 and 1 concrete values, while all other shapes
    are symbolic sympy formulas.
    )Ú	fillvalue)r±   r*  Úzip_longestÚreversedrÔ   ÚSÚOnerZ   rh   rü   Úis_size_one_or_falser}   Úcheck_equalsrâ   ÚexpandÚfree_symbols)r  ÚbÚoutputr®   Úys        rp   Úbroadcast_symbolic_shapesrZ  )  sJ  € õ 	ˆa‰Œ€AØð ��Q’�Øˆà€FÝÔ%¥h¨q¡k¤kµ8¸A±;´;Í%Ì'Ì+ÐVÑVÔVð 
!ñ 
!‰ˆˆ1ÝŒ7Ô×0Ò0°Ñ3Ô3ð 		!Ø�MŠM˜!ÑÔÐÐÝŒWÔ×2Ò2°1Ñ5Ô5ð 	!Ø�MŠM˜!ÑÔÐÐåŒGÔ×)Ò)¨!¨QÑ/Ô/Ð/Ý•5”< ‘?”?Ô/Ñ0Ô0µ3µu´|ÀA±´Ô7SÑ3TÔ3TÒTÐTØ—’˜aÑ Ô Ð Ñ à—’˜aÑ Ô Ð Ñ Ý•˜&Ñ!Ô!Ñ"Ô"Ð"rr   ÚinputsúSequence[_T]Úoverride_return_dtypeútorch.dtype | Noneú&Sequence[_T | BaseView | BaseConstant]c                ó   ‡‡‡	— |�|�
J d¦   «         ‚|€|€t           j        }t          d„ | D ¦   «         ¦  «        s| S t          d„ | D ¦   «         ¦  «        r!|pt	          | d|iŽŠˆfd„Šˆfd„| D ¦   «         S t          d„ | D ¦   «         ¦  «        }|                     ¦   «         Š	|t          j        k    r ‰	t          j	        t          j
        fv rˆ	fd„}nd	„ }g }| D �]1}t          |t          t          f¦  «        rx|                     t          j        t#          j         ||¦  «        ‰	|                     ¦   «         ¬
¦  «        t)          |                     ¦   «         ¦  «        ¦  «        ¦  «         Œ—t          |t,          j        ¦  «        rk|                     t          j        t1          |‰	|                     ¦   «         ¬¦  «        t)          |                     ¦   «         ¦  «        ¦  «        ¦  «         �Œ|                     |¦  «         �Œ3|S )NzEonly one of override_return_dtype or type_promotion_kind may be givenc              3  ód   K  — | ]+}t          |t          j        t          t          f¦  «        V — Œ,d S r»   )ry   rÔ   rá   rÌ   Úfloatr¬   s     rp   r  z$promote_constants.<locals>.<genexpr>O  s5   è è € ÐHÐH¸A�z˜!�eœk­3µÐ6Ñ7Ô7ÐHÐHÐHÐHÐHÐHrr   c              3  ód   K  — | ]+}t          |t          t          t          j        f¦  «        V — Œ,d S r»   )ry   rÌ   rb  rÔ   rá   r¬   s     rp   r  z$promote_constants.<locals>.<genexpr>Q  s5   è è € Ð
DÐ
D¸�:�a�#�u¥e¤kÐ2Ñ3Ô3Ð
DÐ
DÐ
DÐ
DÐ
DÐ
Drr   rÝ   c                óÈ   •— t          | t          j        ¦  «        r$t          j        | ‰t          d ¦  «        ¬¦  «        S t          j        | ‰t          d ¦  «        ¬¦  «        S )N©ÚindexrÈ   rƒ   r  )ry   rÔ   rá   r6   r=   rL   r  ©r®   rÈ   s    €rp   Ú
const_funcz%promote_constants.<locals>.const_funcX  sb   ø€ Ý˜!�Uœ[Ñ)Ô)ð UÝÔ*Ø 5µ¸tÑ1DÔ1Dðñ ô ð õ ”{¨°%ÅÈdÑ@SÔ@SÐTÑTÔTÐTrr   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rª   rª   )r­   r®   rh  s     €rp   r¯   z%promote_constants.<locals>.<listcomp>`  s!   ø€ Ð.Ð.Ð. !�
�
˜1‘”Ð.Ð.Ð.rr   c              3  óh   K  — | ]-}t          |t          t          t          j        f¦  «        ¯)|V — Œ.d S r»   )ry   rG   r<   r6   r  r¬   s     rp   r  z$promote_constants.<locals>.<genexpr>a  s:   è è € ÐWÐW�A¥:¨aµ)½ZÍÌÐ1UÑ#VÔ#VÐWˆaÐWÐWÐWÐWÐWÐWrr   c                óT   •— t          j        | ‰¬¦  «                             ¦   «         S ©NrÎ   )r‹   ÚtensorÚitem)r  Útensor_dtypes    €rp   ú<lambda>z#promote_constants.<locals>.<lambda>i  s"   ø€ ¥%¤,¨q¸Ð"EÑ"EÔ"E×"JÒ"JÑ"LÔ"L€ rr   c                ó   — | S r»   rª   )r  s    rp   rp  z#promote_constants.<locals>.<lambda>k  s   €  !€ rr   r  re  )r   ÚDEFAULTrF  rE  rì   ÚnextrÓ   r‹   re   Úbfloat16Úfloat16ry   rÌ   rb  r}   r<   r  r6   r  Úget_device_or_errorrw   rã   rÔ   rá   r=   )
r[  r]  rÝ   ÚexÚ_round_scalarr~   r®   rh  rÈ   ro  s
          @@@rp   Úpromote_constantsry  C  s{  øøø€ ð
 !Ð(Ð,?Ð,GÐ,GØOñ -HÔ,GÐGð Ð$Ð)<Ð)DÝ=ÔEÐåÐHÐHÀÐHÑHÔHÑHÔHð ØˆÝ
Ð
DÐ
D¸VÐ
DÑ
DÔ
DÑDÔDð /Ø%ð 
Õ);Øð*
ð !4ð*
ð *
ˆð	Uð 	Uð 	Uð 	Uð 	Uð /Ð.Ð.Ð. vÐ.Ñ.Ô.Ð.Ý	ÐWÐW˜ÐWÑWÔWÑ	WÔ	W€BØ—<’<‘>”>€Lð ¥¤
Ò*Ð*¨|ÝŒÝŒð@ð 0ð 0ð MÐLÐLÐLˆˆà#˜ˆà
€CØð ñ ˆÝ�a�#�u˜Ñ&Ô&ð 	Ø�JŠJÝÔ!Ý”KØ+˜m¨AÑ.Ô.Ø*Ø!×5Ò5Ñ7Ô7ðñ ô õ
 ˜Ÿš™œÑ'Ô'ñô ñ	ô 	ð 	ð 	õ ˜�5œ;Ñ'Ô'ð 
	Ø�JŠJÝÔ!Ý$Ø |¸B×<RÒ<RÑ<TÔ<Tðñ ô õ ˜Ÿš™œÑ'Ô'ñ	ô ñô ð ñ ð �JŠJ�q‰MŒMˆM‰Mà€Jrr   c                ó  ‡‡‡‡— t          | |t          j        ¬¦  «        Š|                      ¦   «         Š|                     ¦   «         Šˆˆˆˆfd„}t	          j        |                      ¦   «         ‰||                      ¦   «         ¬¦  «        S )zBCompute a + alpha * b using FMA for CUDA floating-point precision.©rÝ   c                óæ   •—  ‰| ¦  «        } ‰| ¦  «        }t          ‰t          j        ¦  «        rt          j        ‰‰¦  «        }nt          j        ‰‰¦  «        }t          j        |||¦  «        S r»   )ry   rÔ   rá   rY   Ú
index_exprÚconstantÚfma)ÚidxÚa_valÚb_valÚ
alpha_exprÚa_loaderÚalphaÚb_loaderrÈ   s       €€€€rp   Úinner_fnz%_add_with_alpha_fma.<locals>.inner_fn“  si   ø€ Ø�˜‘”ˆØ�˜‘”ˆÝ�e�Uœ[Ñ)Ô)ð 	4Ýœ¨¨uÑ5Ô5ˆJˆJåœ e¨UÑ3Ô3ˆJÝŒw�u˜j¨%Ñ0Ô0Ð0rr   ©rƒ   rÈ   r‡  Úranges)rì   r   rr  Úmake_loaderrD   r  r|   rã   )r  rW  r…  r‡  r„  r†  rÈ   s     ` @@@rp   Ú_add_with_alpha_fmar‹  ‰  s¢   øøøø€ åØ	Ø	Ý;ÔCðñ ô €Eð
 �}Š}‰Œ€HØ�}Š}‰Œ€Hð1ð 1ð 1ð 1ð 1ð 1ð 1ð 1õ ÔØ�|Š|‰~Œ~ØØØ�zŠz‰|Œ|ð	ñ ô ð rr   rn   útorch.fx.Node | Nonec                óV  — | €dS d}| j         D ]}|j        dk    rd} nŒ|sdS | j         D ]}}|j        dk    rŒ|j                             d¦  «        }|€Œ+t	          j        |j        d         ¦  «        }t          ||¦  «        D ]"\  }}|| u rt          |t          ¦  «        r  dS Œ#Œ~dS )NFrX  TÚdescr   )
rj   rk   ÚmetaÚgetÚpytreeÚtree_leavesr�   r,  ry   Ú&_SAVED_FOR_BACKWARDS_OUTPUT_DESC_TYPES)rn   Úhas_non_output_userro   ÚdescsÚoutput_valuesÚoutput_valuerŽ  s          rp   Ú_has_saved_lowp_output_user˜  ¤  s÷   € Ø€|ØˆuàÐØ”
ð ð ˆØŒ7�hÒÐØ"&ÐØˆEð ð ð Øˆuà”
ð ð ˆØŒ7�hÒÐØà”	—’˜fÑ%Ô%ˆØˆ=ØåÔ*¨4¬9°Q¬<Ñ8Ô8ˆÝ"% m°UÑ";Ô";ð 	ð 	ÑˆL˜$Ø˜tÐ#Ð#­
ØÕ<ñ)ô )Ð#ð �t�t�tøð		ð ˆ5rr   Úoverride_deviceútorch.device | NoneÚoverride_fn_when_input_boolÚallow_alphaÚuse_fma_for_alphaÚtriton_fallbackúCallable[..., _T] | NoneúCallable[..., TensorBox | _T]c           	     ó2   ‡ ‡‡‡‡‡‡— ddœdˆˆ ˆˆˆˆˆfd„}|S )	zcWraps a pointwise fn and returns a function representing the pointwise in
    the define-by-run IR.N)r…  r[  r	   rd   úTensorBox | _Tc           	     óÄ  •‡‡	‡
‡‡‡‡— ‰�"t          d„ ‰D ¦   «         ¦  «        r	‰rJ ‚ ‰‰Ž S t          ‰‰¦  «        Š‰rÂ| �¿| dk    r¹‰r�t          ‰d         t          ¦  «        rt‰d                              ¦   «         }‰d                              ¦   «         j        r;t          j        j	        s*|�(|j
        dk    rt          ‰d         ‰d         | ¦  «        S t          ‰¦  «        Št          ‰d         | ¦  «        ‰d<   n| �J ‚d„ ‰D ¦   «         Š‰d                              ¦   «         Š‰p‰d                              ¦   «         Š	‰dd …         D ]s}t          |t          j        ¦  «        sWt#          ‰¦  «        t#          |                     ¦   «         ¦  «        k    s%J d‰› d‰› d|                     ¦   «         › �¦   «         ‚Œtt          j        t          j        fŠt(          j        �t-          t(          j        d	d ¦  «        nd }|d uo#|j        d uo|j                             d
d¦  «        Št2          j        o‰ o‰	‰v ot7          |¦  «        }‰p|o‰	‰v Š
ˆ	ˆ
ˆˆˆˆˆˆˆf	d„}‰s_d }‰D ]>}t9          |                     ¦   «         j
        ¦  «        r|                     ¦   «         } nŒ?|s‰d                              ¦   «         }‰p|}t;          j        |‰	|‰¬¦  «        S )Nc              3  ó^   K  — | ](}t          |t          ¦  «        ot          |¦  «        V — Œ)d S r»   ©ry   r>   r?   ©r­   rß   s     rp   r  z0make_pointwise.<locals>.inner.<locals>.<genexpr>Ð  sH   è è € ð /
ð /
Ø;>�J�s�FÑ#Ô#Ð6­	°#©¬ð/
ð /
ð /
ð /
ð /
ð /
rr   r3   r   Úcudaéÿÿÿÿc                ó6   — g | ]}|                      ¦   «         ‘ŒS rª   ©rŠ  r¬   s     rp   r¯   z1make_pointwise.<locals>.inner.<locals>.<listcomp>ì  s    € Ð3Ð3Ð3 q�1—=’=‘?”?Ð3Ð3Ð3rr   zndim mismatch ú ri   Úlow_precision_pointwise_barrierFc                ó  •	‡ — t          ‰ ¦  «        t          ‰¦  «        k    sJ d‰ › d‰› �¦   «         ‚‰t          j        k    r‰� ‰ˆ fd„‰D ¦   «         Ž S g }t          ‰¦  «        D ]q\  }} |‰ ¦  «        }‰|                              ¦   «         }‰	r0|‰v r,t          j        ||d¬¦  «        }t          j        ||¦  «        }|                     |¦  «         Œr ‰
|Ž }‰r,t          j        |‰d¬¦  «        }t          j        |‰¦  «        S |S )Nzwrong ndim r«  c                ó&   •— g | ]} |‰¦  «        ‘ŒS rª   rª   )r­   Úloadrf  s     €rp   r¯   zCmake_pointwise.<locals>.inner.<locals>.inner_fn.<locals>.<listcomp>  s!   ø€ Ð4UÐ4UÐ4UÀT°T°T¸%±[´[Ð4UÐ4UÐ4Urr   F)Úuse_compute_types)râ   r‹   re   rx   rÓ   rY   r  r}   )rf  Úinputs_loadedÚ	inp_indexr¯  r~   Ú	inp_dtypeÚdowncastrÈ   Úemulate_output_castÚemulate_precision_castsr†   r[  ÚloadersÚ	low_pr_fpr›  r‰  s   `      €€€€€€€€€rp   r‡  z/make_pointwise.<locals>.inner.<locals>.inner_fn  sH  øø€ Ý�u‘:”:¥ V¡¤Ò,Ð,Ð,Ð.L¸EÐ.LÐ.LÀFÐ.LÐ.LÑ,Ô,Ð,Ø�œ
Ò"Ð"Ð'BÐ'NØ2Ð2Ð4UÐ4UÐ4UÐ4UÈWÐ4UÑ4UÔ4UÐVÐVà "�Ý'0°Ñ'9Ô'9ð .ð .‘O�I˜tØ˜$˜u™+œ+�CØ & yÔ 1× ;Ò ;Ñ =Ô =�IØ.ð @°9À	Ð3IÐ3IÝ#&¤<°°YÐRWÐ#XÑ#XÔ#X˜Ý!œl¨8°YÑ?Ô?˜Ø!×(Ò(¨Ñ-Ô-Ð-Ð-à�b˜-Ð(�Ø&ð 9õ  #œ|¨C°È%ÐPÑPÔP�HÝœ<¨°%Ñ8Ô8Ð8Ø�
rr   rˆ  )rF  ry  ry   r>   r|   rÓ   Úis_floating_pointr‹   ÚversionÚhiprþ   r‹  rw   Úmulrã   r6   r[   râ   rt  ru  rZ   rh   Úgetattrr�  r�  r4   Ú(emulate_precision_casts_on_saved_tensorsr˜  rN   rD   r  )r…  r[  Ú
inp_deviceÚotherri   Útruncate_saved_outputr‡  rƒ   r€   rÈ   rµ  r¶  r·  r¸  r‰  rœ  r†   r™  r›  r]  rž  r�  s    `       @@@@@@€€€€€€€rp   Úinnerzmake_pointwise.<locals>.innerÏ  s¶  øøøøøøøø€ ØÐ&­3ð /
ð /
ØBHð/
ñ /
ô /
ñ ,
ô ,
Ð&ð #Ð"Ð"�?Ø"�? FÐ+Ð+õ # 6Ð+@ÑAÔAˆØð 	!ØÐ  U¨a¢Z Zð %ð P­°F¸1´I½vÑ)FÔ)Fð PØ!'¨¤×!5Ò!5Ñ!7Ô!7�Jà˜qœ	×+Ò+Ñ-Ô-Ô?ðPå %¤Ô 1ðPð 'Ð2Ø&œO¨vÒ5Ð5å2°6¸!´9¸fÀQ¼iÈÑOÔOÐOõ ˜f™œ�å  ¨¤¨UÑ3Ô3��r‘
øà�=�=�=Ø3Ð3¨FÐ3Ñ3Ô3ˆØ˜”×#Ò#Ñ%Ô%ˆØ%Ð>¨°¬×)<Ò)<Ñ)>Ô)>ˆà˜A˜B˜B”Zð 	Að 	AˆEÝ˜e¥R¤_Ñ5Ô5ð A½¸V¹¼ÍØ—’Ñ Ô ñIô Iò :ð :ð :à@ Ð@Ð@ VÐ@Ð@¨e¯nªnÑ.>Ô.>Ð@Ð@ñ:ô :ð øõ ”^¥U¤]Ð3ˆ	å67´gÐ6I�G•A”G˜^¨TÑ2Ô2Ð2Ètð 	ð  Ð$ð PØÔ!¨Ð-ðPàÔ!×%Ò%Ð&GÈÑOÔOð 	 õ Ô;ð 9Ø+Ð+ð9à˜Ð"ð9õ +¨<Ñ8Ô8ð	 	ð $Ð<Ð'<ð!à�yÐ ð 	ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð, ð 	0ØˆFØð ð �å˜!Ÿ,š,™.œ.Ô-Ñ.Ô.ð ØŸ\š\™^œ^�FØ�Eðð ð 0Ø œ×-Ò-Ñ/Ô/�ð !Ð* FˆåÔØØØØð	
ñ 
ô 
ð 	
rr   )r[  r	   rd   r¢  rª   )r†   r]  r™  r›  rœ  r�  rž  rÂ  s   ``````` rp   Úmake_pointwiserÃ  Ã  sj   øøøøøøø€ ð #'ð d
ð d
ð d
ð d
ð d
ð d
ð d
ð d
ð d
ð d
ð d
ð d
ð d
ð d
ðL €Lrr   Úforeach_node_t)Úboundr…  Úpw_fnúCallable[..., foreach_node_t]Úscalar_kwargú#Callable[..., list[foreach_node_t]]c                ó$   ‡ ‡‡— dddœdˆˆ ˆfd„}|S )	Nr3   )r…  r  r[  úlist[list[TensorBox]]rd   úlist[foreach_node_t]c                óü  •‡	— t          |¦  «        }‰dk    r9|r7t          |d         t           t          f¦  «        s|                     ¦   «         Š	n‰dk    r|Š	n| Š	t	          t
          j        j        j        ¦  «        dk    p*t
          j        j        j	        t          v pt          ¦   «         }d }|D ]"}t          |t           t          f¦  «        r|} nŒ#|€
J d¦   «         ‚g }|D ]Z}t          |t           t          f¦  «        s'|                     |gt	          |¦  «        z  ¦  «         ŒE|                     |¦  «         Œ[t          t          |Ž ¦  «        }dˆ
ˆˆˆ	fd„}t          |t	          |¦  «        ||¦  «        S )	Nr  r¨  r   z1at least one input must be a list to a foreach oprd   rÄ  c                ó&   •— ‰r
 ‰| i ‰‰i¤ŽS  ‰| Ž S r»   rª   )r�   rœ  rÆ  rÈ  Ú
scalar_vals    €€€€rp   Úapply_fnz7make_foreach_pointwise.<locals>.inner.<locals>.apply_fnl  s1   ø€ Øð $Ø�u˜dÐA |°ZÐ&@ÐAÐAÐAà�u˜d�|Ð#rr   )rd   rÄ  )rw   ry   r±   Úpoprâ   rZ   rh   ri   rj   rl   Úinplace_foreach_opsrq   r}   r…   r,  Úforeach_group_loop)r…  r  r[  Úrealize_outputsÚa_list_inputÚinputÚbroadcast_inputsÚgroupsrÐ  rÏ  rœ  rÆ  rÈ  s            @€€€rp   rÂ  z%make_foreach_pointwise.<locals>.inner@  sÇ  øø€ õ
 �f‘”ˆà˜GÒ#Ð#Øð $å˜v bœz­Dµ%¨=Ñ9Ô9ð $ð
  Ÿš™œˆJˆJØ˜WÒ$Ð$ØˆJˆJàˆJõ •”Ô$Ô*Ñ+Ô+¨qÒ0ð 0ÝŒwÔ#Ô*Õ.AÐAð0å-Ñ/Ô/ð 	ð ˆØð 	ð 	ˆEÝ˜%¥$­ Ñ/Ô/ð Ø$�Ø�ðð Ð'Ð'Ø?ñ (Ô'Ð'ð
 ÐØð 	/ð 	/ˆEÝ˜e¥d­E ]Ñ3Ô3ð /Ø ×'Ò'¨¨µ#°lÑ2CÔ2CÑ(CÑDÔDÐDÐDð !×'Ò'¨Ñ.Ô.Ð.Ð.å#¥CÐ)9Ð$:Ñ;Ô;ˆð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$õ " &­#¨lÑ*;Ô*;¸XÀÑWÔWÐWrr   )r[  rË  rd   rÌ  rª   )rÆ  rœ  rÈ  rÂ  s   ``` rp   Úmake_foreach_pointwiserÙ  ;  sP   øøø€ ð
 56¸Qð 2Xð 2Xð 2Xð 2Xð 2Xð 2Xð 2Xð 2Xð 2Xð 2Xðh €Lrr   rØ  ú0Mapping[tuple[Any, bool], list[tuple[int, Any]]]Únum_outputsrÌ   rÐ  rÔ  rÌ  c                ó  — dg|z  }|                       ¦   «         D ]¬\  \  }}}g }|D ]~\  }	}
 ||
¦  «        }|||	<   t          j                             |t          j        ¦  «        r?|r=|r;|                     ¦   «          |                     |                     ¦   «         ¦  «         Œ|rt          j         	                    |¦  «         Œ­t          d„ |D ¦   «         ¦  «        sJ ‚t          t          t                   |¦  «        S )aa  
    Common loop over grouped foreach arguments.

    Args:
        groups: Result of group_foreach_args - dict mapping (device, use_foreach) to groups
        num_outputs: Number of outputs to produce
        apply_fn: Function to apply to each set of args, returns the output
        realize_outputs: Whether to realize outputs for foreach fusion
    Nc              3  ó   K  — | ]}|d uV — Œ	d S r»   rª   r¬   s     rp   r  z%foreach_group_loop.<locals>.<genexpr>˜  ó&   è è € Ð.Ð. ˆq˜ˆ}Ð.Ð.Ð.Ð.Ð.Ð.rr   )r&  rZ   rh   Úhas_featureÚBackendFeatureÚFOREACHÚrealizer}   Úget_operation_nameÚregister_operation_listrE  r
   rw   rÄ  )rØ  rÛ  rÐ  rÔ  Úoutputsrƒ   r‚   ÚgroupÚoperation_listÚ
output_indr�   rX  s               rp   rÓ  rÓ  w  s!  € ð -1¨6°KÑ+?€GØ(.¯ª©¬ð <ð <Ñ$Ñˆ�˜uØ$&ˆØ %ð 
	Cð 
	CÑˆJ˜Ø�X˜d‘^”^ˆFØ"(ˆG�JÑõ ”×#Ò# F­NÔ,BÑCÔCðCàðCð $ðCð
 —’Ñ Ô Ð Ø×%Ò% f×&?Ò&?Ñ&AÔ&AÑBÔBÐBøàð 	<ÝŒG×+Ò+¨NÑ;Ô;Ð;øåÐ.Ð. gÐ.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.å••^Ô$ gÑ.Ô.Ð.rr   TÚcopyr°  c                ó¤   ‡‡‡— |                       ¦   «         Š‰‰k    r|rt          | ¦  «        n| S ˆˆˆfd„} t          |‰¬¦  «        | ¦  «        S )Nc                óž   •— t          j        | ‰‰‰¬¦  «        }t          j        t          j        f}‰s‰|v rt          j        |‰¦  «        }|S )N)Ú	src_dtyper°  )rY   r  r‹   rt  ru  )r®   Úresultr¸  rÈ   rì  r°  s      €€€rp   Ú	_to_dtypezto_dtype.<locals>._to_dtype¤  s_   ø€ Ý”ØØØØ/ð	
ñ 
ô 
ˆõ ”^¥U¤]Ð3ˆ	Ø ð 	1 U¨iÐ%7Ð%7õ ”\ &¨%Ñ0Ô0ˆFØˆrr   ©r]  )rÓ   ÚclonerÃ  )r®   rÈ   ré  r°  rî  rì  s    ` ` @rp   r  r  �  sw   øøø€ ð —’‘”€IØ�EÒÐØÐ&�u�Q‰xŒxˆx QÐ&ðð ð ð ð ð ð ð B�>˜)¸5ÐAÑAÔAÀ!ÑDÔDÐDrr   r{  c                ó¶  — ddl m} |}| j        } ||t          j        ¬¦  «        }t          j        |¦  «        5   |j        |Ž  ddd¦  «         n# 1 swxY w Y   |j        }|sJ ‚t          |¦  «        }dgt          |¦  «        z  }	| 
                    ¦   «         D ]Ÿ\  \  }
}}g }|D ]q\  }}||	|<   t          j                             |
t          j        ¦  «        r=|r;|                     ¦   «          |                     |                     ¦   «         ¦  «         Œr|rt          j                             |¦  «         Œ t%          d„ |	D ¦   «         ¦  «        sJ ‚|	S )aI  
    This lowers an invocation of foreach_map
    The way this works is that an arbitrary N-arg func is provided by the user, looped over by the
    polyfill with the same semantics as a foreach op (a loop applying an n-ary function to n args)
    and then traced into a subgraph by dynamo.
    This code allows us to inline the subgraph into the main graph lowering using the PontwiseSubgraphLowering.
    The graph outputs represent the vertically fused sequence of ops, and then register_operation_list
    below registers the buffers as horizontally fuseable in the scheduler.
    r3   )ÚPointwiseSubgraphLowering)Úroot_graph_loweringNc              3  ó   K  — | ]}|d uV — Œ	d S r»   rª   r¬   s     rp   r  z_foreach_map.<locals>.<genexpr>ß  rÞ  rr   )Úsubgraph_loweringrò  Úgraph_modulerZ   rh   Úset_graph_handlerÚrunÚgraph_outputsr…   râ   r&  rß  rà  rá  râ  r}   rã  rä  rE  )Úsubgraphr�   r  rò  r[  ÚgmÚpw_subgraphÚsub_outputsrØ  rå  rƒ   r‚   ræ  rç  rè  rX  s                   rp   Ú_foreach_maprþ  ¶  sÏ  € ð =Ð<Ð<Ð<Ð<Ð<à€Fà	Ô	€BØ+Ð+¨BÅAÄGÐLÑLÔL€KÝ	
Ô	˜[Ñ	)Ô	)ð !ð !ØˆŒ˜Ð Ð ð!ð !ð !ñ !ô !ð !ð !ð !ð !ð !ð !øøøð !ð !ð !ð !ð Ô+€KàÐÐˆ;Ý Ñ,Ô,€Fàˆf•s˜;Ñ'Ô'Ñ'€GØ(.¯ª©¬ð <ð <Ñ$Ñˆ�˜uØ$&ˆð ð	Cð 	Cñ 
ØØà"(ˆG�JÑåŒw×"Ò" 6­>Ô+AÑBÔBð CÀ{ð CØ—’Ñ Ô Ð Ø×%Ò% f×&?Ò&?Ñ&AÔ&AÑBÔBÐBøàð 	<ÝŒG×+Ò+¨NÑ;Ô;Ð;øåÐ.Ð. gÐ.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ø€Ns   »AÁAÁAc                óÌ  — |j         s|                      ¦   «         j         rq|                      ¦   «         r3t          | |¬¦  «        }t          j                             || ¦  «         |S  t          t          j	        j
        d¬¦  «        | |¦  «        S |                      ¦   «         }t          j        t          j        f}t          j        o||v p||v  }t!          | |d|¬¦  «        S )NrÎ   F©Úadd_to_fallback_setT)ré  r°  )Ú
is_complexrÓ   rã   Ú
empty_liker6   ÚInplaceCopyFallbackr  Úfallback_handlerÚprimsÚconvert_element_typeÚdefaultr‹   rt  ru  r4   r¶  r  )r®   rÈ   Údstrì  r¸  r°  s         rp   Ú_convert_element_typer
  ã  só   € àÔð 
˜1Ÿ;š;™=œ=Ô3ð 
Ø�:Š:‰<Œ<ð 		õ ˜Q eÐ,Ñ,Ô,ˆCÝÔ"×)Ò)¨#¨qÑ1Ô1Ð1ØˆJðÕ#ÝÔ*Ô2Èðñ ô à�ñô ð ð —’‘”€IÝ”¥¤Ð/€IåÔ&ð 	;Ø˜)Ð#Ð9 u°	Ð'9ðÐõ �A�u 4Ð;LÐMÑMÔMÐMrr   ©ré  c               ól  — |                       ¦   «         }||k    r|rt          | ¦  «        n| S d„ } ||¦  «        } ||¦  «        }||k    rGt          j                             | ¦  «        } t          t          j        j        ¦  «        ||¦  «        S t          t          j        | |¦  «        ¦  «        S )Nc                ó˜   — | j         rt          j        | ¦  «        j        S | t          j        k    rdS t          j        | ¦  «        j        S )NrÃ   )r¹  r‹   ÚfinfoÚbitsre   ÚiinforÎ   s    rp   Ú_get_primitive_bitwidthz1to_dtype_bitcast.<locals>._get_primitive_bitwidthþ  sE   € ØÔ"ð 	+Ý”;˜uÑ%Ô%Ô*Ð*Ø•e”jÒ Ð à�1å”;˜uÑ%Ô%Ô*Ð*rr   )rÓ   rð  r6   ÚExternKernelrš   r  ÚatenÚviewrÈ   rG   r;   r  )r®   rÈ   ré  Úx_dtyper  Úsrc_bitsÚdst_bitsÚx_conts           rp   Úto_dtype_bitcastr  ù  sº   € Ø�kŠk‰mŒm€GØ�%ÒÐØÐ&�u�Q‰xŒxˆx QÐ&ð+ð +ð +ð 'Ð& wÑ/Ô/€HØ&Ð& uÑ-Ô-€HØ�8ÒÐå”×;Ò;¸AÑ>Ô>ˆØ0Õ¥¤	¤Ñ0Ô0°¸Ñ?Ô?Ð?å�Ô)¨!¨UÑ3Ô3Ñ4Ô4Ð4rr   c                óú   — |j         s|                      ¦   «         j         rLt          j        t          j                             t          j        j        j	        j
        | |¦  «        ¦  «        S t          | |¦  «        S r»   )r  rÓ   rG   r  r6   ÚComplexViewr‹   rY   r  r  rÈ   r  rg  s     rp   Ú_view_dtyper    sg   € àÔð 
˜1Ÿ;š;™=œ=Ô3ð 
ÝÔÝŒN×!Ò!¥%¤)¤.Ô"5Ô";¸QÀÑFÔFñ
ô 
ð 	
õ ˜A˜uÑ%Ô%Ð%rr   ©ré  Únon_blockingc               óÜ   — t          |¦  «        }|                      ¦   «         |k    r|rt          | ¦  «        n| S t          j        t
          j                             | ||¦  «        ¦  «        S r»   )rL   r|   rð  rG   r  r6   r   )r®   rƒ   ré  r  s       rp   Ú	to_devicer     s\   € Ý˜6Ñ"Ô"€FØ‡|‚|�~„~˜ÒÐØÐ&�u�Q‰xŒxˆx QÐ&ÝÔ�BœM×0Ò0°°F¸LÑIÔIÑJÔJÐJrr   c                ó(   — t          | |d|¬¦  «        S )NTr  )r   )r®   rƒ   r  s      rp   Ú_device_putr"  !  s   € å�Q˜ T¸ÐEÑEÔEÐErr   c
                ób  — |p| j         }t          |¦  «        }
t          |||¦  «         |�t          |¦  «        }t          |
|||||	¬¦  «        }
 t	          | |||¬¦  «        |
¦  «        }
t          t          |¦  «        r. t	          t          t          |¦  «        d|¬¦  «        |
¦  «         |
S )z3A pointwise function that maps ops.{name} to inputsN)r]  r›  rœ  r�  rž  )r  rÝ   r
  )rÝ   r
  )Ú__name__rB   rU   rÃ  rL  r  r  r½  )rî   rö   r  rÝ   r
  r]  r›  rœ  r�  rž  r†   s              rp   Úregister_pointwiser%  &  s  € ð Ð#�7Ô#€DÝ	�TÑ	Ô	€Bå'ØÐ!Ð#8ñô ð ð #Ð.Ý&1Ð2MÑ&NÔ&NÐ#å	Ø
Ø3Ø$?ØØ+Ø'ð
ñ 
ô 
€Bð
Õ	ØØØ/Ø3ð	
ñ 
ô 
ð
 	ñ

ô 

€Bõ �u�dÑÔð ð	
ÕÝ•E˜4Ñ Ô Ø $Ø"7ð	
ñ 	
ô 	
ð ñ		ô 	ð 	ð
 €Irr   Úldexp)rÝ   r]  )r  rÝ   Únc                óp  ‡‡	— t          d¦  «        Š|                      ¦   «         }|                     ¦   «         }|j        }|j         o|t          j        k    }|r |rˆfd„} t          |¦  «        | |¦  «        S t          | ¦  «        rt          j        n|Š	ˆ	fd„} t          |‰	¬¦  «        | |¦  «        S )Nr&  c                ó   •—  ‰| |¦  «        S r»   rª   )r®   r'  Úldexp_fns     €rp   Úcompute_ldexpz%ldexp_lowering.<locals>.compute_ldexph  s   ø€ Ø�8˜A˜q‘>”>Ð!rr   c                ó¬   •— t          j        |‰¦  «        }t          j        d‰¦  «        }t          j        ||¦  «        }t          j        | |¦  «        S )Ng       @)rY   r  r~  Úpowr¼  )r®   r'  Ú
n_out_typeÚtwoÚ
pow_resultÚ	out_dtypes        €rp   Úcompute_fallbackz(ldexp_lowering.<locals>.compute_fallbackp  sH   ø€ Ýœ a¨Ñ3Ô3ˆJÝ”,˜s IÑ.Ô.ˆCÝœ  jÑ1Ô1ˆJÝ”7˜1˜jÑ)Ô)Ð)rr   rï  )rB   rÓ   r¹  r‹   re   rÃ  rØ   Úfloat32)
r®   r'  r  Ún_dtypeÚ
x_is_floatÚn_is_intr+  r2  r*  r1  s
           @@rp   Úldexp_loweringr7  \  só   øø€ å˜7Ñ#Ô#€Hà�kŠk‰mŒm€GØ�kŠk‰mŒm€GàÔ*€JØÔ,Ð,ÐF°½E¼JÒ1F€Hàð �hð ð	"ð 	"ð 	"ð 	"ð 	"ð -�~˜mÑ,Ô,¨Q°Ñ2Ô2Ð2õ &5°QÑ%7Ô%7ÐD•E”M�M¸Wˆ	ð	*ð 	*ð 	*ð 	*ð 	*ð
�~ØØ"+ð
ñ 
ô 
ð ˆQñô ð 	rr   c                 óf  ‡‡— d} t          d¦  «        Šˆfd„}ˆfd„}t          |¦  «        t          |t          j        ¬¦  «        gŠˆfd„} t	          t
          j        ¦  «        |¦  «        }t          t          | ¦  «        r- t	          t          t          | ¦  «        d¬¦  «        |¦  «         |S )z2A pointwise function that maps ops.frexp to inputsÚfrexpc                 ó    •—  ‰| i |¤Žd         S ©Nr   rª   ©r�   r  r9  s     €rp   Úfrexp0zregister_frexp.<locals>.frexp0�  ó   ø€ Øˆu�dÐ%˜fÐ%Ð% aÔ(Ð(rr   c                 ó    •—  ‰| i |¤Žd         S ©Nr3   rª   r<  s     €rp   Úfrexp1zregister_frexp.<locals>.frexp1„  r>  rr   rï  c                 ó<   •—  ‰d         | i |¤Ž ‰d         | i |¤ŽfS ©Nr   r3   rª   )r�   r  Úpw_fnss     €rp   r†   zregister_frexp.<locals>.fnŒ  s4   ø€ Øˆv�aŒy˜$Ð) &Ð)Ð)¨9¨6°!¬9°dÐ+E¸fÐ+EÐ+EÐEÐErr   Nr{  )
rB   rÃ  r‹   Úint32rL  r  r9  r  r  r½  )rö   r=  rA  r†   r9  rD  s       @@rp   Úregister_frexprF  |  s  øø€ à€DÝ˜Ñ Ô €Eð)ð )ð )ð )ð )ð)ð )ð )ð )ð )õ 	�vÑÔÝ�vµU´[ÐAÑAÔAð€Fð
Fð Fð Fð Fð Fð
Õ	ÝŒ
ñ
ô 
àñ

ô 

€Bõ �u�dÑÔð ð	
ÕÝ•E˜4Ñ Ô Ø $ð	
ñ 	
ô 	
ð ñ	ô 	ð 	ð €Irr   c                óJ   — t          |||¬¦  «        }t          | |¦  «        }|S )N©rœ  rÈ  )rÙ  r=  )rî   Úpointwise_lowering_fnrœ  rÈ  r†   s        rp   Úregister_foreach_pointwiserJ  ž  s5   € õ 
 Ø¨;À\ð
ñ 
ô 
€Bõ 
$ G¨RÑ	0Ô	0€BØ€Irr   c           	     óf  ‡— d„ }t          |t          t          f¦  «        r t          |¦  «        |¦  «        }t          |t          t          f¦  «        r t          |¦  «        |¦  «        }| ||gŠt	          ‰d         ‰d         t
          j        ¬¦  «        }d„ t          ‰¦  «        D ¦   «         }t          |t          ˆfd„|D ¦   «         Ž ¦  «        D ]
\  }}|‰|<   Œt          t          ‰¦  «        ¦  «        D ]k}t          ‰|         t          j        ¦  «        rIt          j        ‰|         t!          ‰|d                                       ¦   «         ¦  «        ¦  «        ‰|<   Œl t%          ||¬¦  «        ‰d         t'          ‰d         |¦  «        t'          ‰d         |¦  «        ¦  «        S )	Nc                 ó   — t          j        | Ž S r»   )rY   Úwhere©r�   s    rp   r†   zwhere.<locals>.fn­  s   € ÝŒy˜$ÐÐrr   r3   r1   r{  c                óB   — g | ]\  }}t          |t          ¦  «        ¯|‘ŒS rª   r  r  s      rp   r¯   zwhere.<locals>.<listcomp>¹  s+   € ÐIÐIÐI‘T�Q˜µ
¸1½iÑ0HÔ0HÐIˆqÐIÐIÐIrr   c                ó    •— g | ]
}‰|         ‘ŒS rª   rª   r$  s     €rp   r¯   zwhere.<locals>.<listcomp>º  s   ø€ Ð0JÐ0JÐ0J¸Q°°a´Ð0JÐ0JÐ0Jrr   r   rï  )ry   rb  rÌ   Úconstant_likerì   r   rr  rx   r,  r)  r-  râ   r6   r  r<   r  rw   rã   rÃ  r  )	rŸ   r  rW  r†   rÈ   Úindicesr€   r®   r�   s	           @rp   rM  rM  «  s·  ø€ ð ð  ð  õ �!•e�S�\Ñ"Ô"ð  Ø�M˜!ÑÔ˜QÑÔˆÝ�!•e�S�\Ñ"Ô"ð  Ø�M˜!ÑÔ˜QÑÔˆà�!�Qˆ<€DÝØˆQŒ��a”Õ.MÔ.Uðñ ô €Eð JÐI�Y t™_œ_ÐIÑIÔI€GÝ�GÕ.Ð0JÐ0JÐ0JÐ0JÀ'Ð0JÑ0JÔ0JÐKÑLÔLð ð ‰ˆˆ1ØˆˆQ‰ˆÝ•3�t‘9”9ÑÔð Tð TˆÝ�d˜1”g�rœ{Ñ+Ô+ð 	TÝ Ô'¨¨Q¬µ°d¸7À1¼:Ô6F×6OÒ6OÑ6QÔ6QÑ1RÔ1RÑSÔSˆD�‰GøØ:�>˜"°EÐ:Ñ:Ô:ØˆQŒ•˜$˜qœ' 5Ñ)Ô)­8°D¸´G¸UÑ+CÔ+Cñô ð rr   c                 ó  — t          | ¦  «        dk    r3t          | d         t          t          f¦  «        rt	          | d         Ž S | S t          j        t          d„ | D ¦   «         d¦  «        }g }| D ]–}t          |                     ¦   «         ¦  «        x}|k    rnWt          |¦  «        t          |¦  «        k    s't          d„ t          ||¦  «        D ¦   «         ¦  «        rt          ||¦  «        }|                     |¦  «         Œ—|S )Nr3   r   c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r»   )rã   r¬   s     rp   r  z$broadcast_tensors.<locals>.<genexpr>Ë  s*   è è € Ð#AÐ#A°Q A§J¢J¡L¤LÐ#AÐ#AÐ#AÐ#AÐ#AÐ#Arr   rª   c              3  ó°   K  — | ]Q\  }}t           j        j                             |¦  «        t           j        j                             |¦  «        k    V — ŒRd S r»   )rZ   rh   rü   rS  ©r­   r  rW  s      rp   r  z$broadcast_tensors.<locals>.<genexpr>Ò  sj   è è € ð .
ð .
ñ ��1õ ŒGÔ×1Ò1°!Ñ4Ô4ÝŒwÔ×4Ò4°QÑ7Ô7ò8ð.
ð .
ð .
ð .
ð .
ð .
rr   )râ   ry   rw   r±   r)  r8  ÚreducerZ  rã   rF  r,  rU  r}   )r[  rl   rå  r®   Úsizess        rp   r)  r)  Ä  s  € å
ˆ6�{„{�aÒÐÝ�f˜Q”i¥$­ Ñ/Ô/ð 	1Ý$ f¨Q¤iÐ0Ð0ØˆÝ(Ô/Ý!Ð#AÐ#A¸&Ð#AÑ#AÔ#AÀ2ñ ô  €Fð €GØð 
ð 
ˆÝ˜1Ÿ:š:™<œ<Ñ(Ô(Ð(ˆE¨VÒ3Ð3Øå�‰ZŒZ�3˜v™;œ;Ò&Ð&­#ð .
ð .
õ ˜E 6Ñ*Ô*ð.
ñ .
ô .
ñ +
ô +
Ð&õ
 �q˜&Ñ!Ô!ˆAØ�Š�qÑÔÐÐØ€Nrr   c                ó   — | S r»   rª   r×   s    rp   ÚnoprZ  Ü  s   € à€Hrr   Ú
lift_freshc                ó.  — t          | t          ¦  «        sJ ‚|€&t          t          j        | j        ¦  «        ¦  «        S t          |t
          t          j        f¦  «        r$t          j	        j
                             |¦  «        nt          d„ |D ¦   «         ¦  «        }t          t          |                      ¦   «         ¦  «        |¦  «        }t!          t          |t          ¦  «        s|fn|¦  «        }g }t#          |                      ¦   «         ¦  «        D ]U\  }}||v r7t          j	        j
                             t          j        |d¦  «        ¦  «        s|                     |¦  «         ŒV||                      ¦   «         k    rt+          | |¦  «        n| S )Nc              3  ó^   K  — | ](}t           j        j                             |¦  «        V — Œ)d S r»   ©rZ   rh   rü   Ú	guard_int©r­   Úds     rp   r  zsqueeze.<locals>.<genexpr>î  s5   è è € Ð>Ð>°Q•1”7Ô#×-Ò-¨aÑ0Ô0Ð>Ð>Ð>Ð>Ð>Ð>rr   r3   )ry   rG   rF   r  r{   rÌ   rÔ   rÕ   rZ   rh   rü   r_  r±   r   râ   rã   r)   rx   Úguard_or_falseÚEqr}   r  )r®   rå   ÚdimsÚ	new_shapera  Úss         rp   Úsqueezerg  å  s]  € å�a�Ñ#Ô#Ð#Ð#Ð#Ø
€{Ý�Ô+¨A¬FÑ3Ô3Ñ4Ô4Ð4õ �c�C¥¤Ð,Ñ-Ô-ð	?�ŒÔ×"Ò" 3Ñ'Ô'Ð'åÐ>Ð>¸#Ð>Ñ>Ô>Ñ>Ô>ð õ
 �C §
¢
¡¤Ñ-Ô-¨sÑ
3Ô
3€CÝ¥J¨sµEÑ$:Ô$:ÐC�s�f�fÀÑDÔD€Dà€IÝ˜!Ÿ*š*™,œ,Ñ'Ô'ð  ð  ‰ˆˆ1Ø�T�	�	�aœgÔ.×=Ò=½e¼hÀqÈ!¹n¼nÑMÔM�	Ø×Ò˜QÑÔÐøð "+¨a¯jªj©l¬lÒ!:Ð!:�4��9ÑÔÐÀÐArr   c                ó<   — t          t          | |¦  «        ¦  «        S r»   )rð  rg  )r®   rå   s     rp   Úsqueeze_copyri  ü  s   € å•˜˜C‘”Ñ!Ô!Ð!rr   c                óš   — t          | |¦  «        }t          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|j        | _        | S r»   )rg  ry   rG   r{   ©r®   rå   Úvals      rp   Úsqueeze_rm    sI   € å
�!�S‰/Œ/€CÝ�a�Ñ#Ô#Ð#Ð#Ð#Ý�c�9Ñ%Ô%Ð%Ð%Ð%ØŒX€A„FØ€Hrr   c                ó¾   — t          | ¦  «        rt          | dt          j        ¬¦  «        S t	          d¦  «        } t          |t          j        ¬¦  «        | ¦  «        S )NFrÎ   Úisinfrï  ©rØ   Ú	full_liker‹   re   rB   rÃ  ©r®   r†   s     rp   ro  ro  
  óU   € å�qÑÔð 5Ý˜˜E­¬Ð4Ñ4Ô4Ð4Ý	�WÑ	Ô	€BØ?�>˜"µE´JÐ?Ñ?Ô?ÀÑBÔBÐBrr   c                ó¾   — t          | ¦  «        rt          | dt          j        ¬¦  «        S t	          d¦  «        } t          |t          j        ¬¦  «        | ¦  «        S )NFrÎ   Úisnanrï  rp  rr  s     rp   ru  ru    rs  rr   c                óŒ   — t          | ¦  «        rt          | ¦  «        S t          d¦  «        } t          |¦  «        | ¦  «        S )NÚceil©rØ   rð  rB   rÃ  rr  s     rp   rw  rw    sB   € å�qÑÔð Ý�Q‰xŒxˆÝ	�VÑ	Ô	€BØ�>˜"ÑÔ˜aÑ Ô Ð rr   c                óŒ   — t          | ¦  «        rt          | ¦  «        S t          d¦  «        } t          |¦  «        | ¦  «        S )NÚfloorrx  rr  s     rp   rz  rz  "  óB   € å�qÑÔð Ý�Q‰xŒxˆÝ	�WÑ	Ô	€BØ�>˜"ÑÔ˜aÑ Ô Ð rr   c                óŒ   — t          | ¦  «        rt          | ¦  «        S t          d¦  «        } t          |¦  «        | ¦  «        S )NÚroundrx  rr  s     rp   r}  r}  *  sB   € å�qÑÔð %Ý�Q‰xŒxˆå˜Ñ!Ô!ˆØ!�~˜bÑ!Ô! !Ñ$Ô$Ð$rr   c                óŒ   — t          | ¦  «        rt          | ¦  «        S t          d¦  «        } t          |¦  «        | ¦  «        S )NÚtruncrx  rr  s     rp   r  r  3  r{  rr   c                ó–  — t          | g¦  «        \  } t          | t          j        ¦  «        r"t	          j        | t          |¦  «        ¦  «        S t          | t          ¦  «        sJ ‚t          |t          t          f¦  «        sJ ‚t          |  	                    ¦   «         ¦  «        t          |¦  «        k    r| S t          |  	                    ¦   «         ¦  «        s¾t          j        j                             t          |  	                    ¦   «         ¦  «        ¦  «        }|dk    rut          |¦  «        sf|                      t          j        j                             t          |¦  «        ¦  «        |z  t"          j        pt'          j        ¦   «         ¬¦  «         t          t	          j        | j        t          |¦  «        ¦  «        ¦  «        S )Nr   )Úgraph_reuse)ry  ry   r6   r[   r<   r  r±   rG   rw   rã   r%   rZ   rh   rü   Úguarding_hint_or_throwrW   Ú
mark_reuser4   Údeterministicr‹   Ú$are_deterministic_algorithms_enabledr{   )r®   rX  Úx_size_products      rp   rU  rU  ;  sv  € å˜a˜SÑ!Ô!�D€QÝ�!•R”_Ñ%Ô%ð 2ÝÔ  ¥E¨%¡L¤LÑ1Ô1Ð1Ý�a�Ñ#Ô#Ð#Ð#Ð#Ý�e�d¥E˜]Ñ+Ô+Ð+Ð+Ð+ÝˆQ�ZŠZ‰\Œ\ÑÔ�e E™lœlÒ*Ð*Øˆå  §¢¡¤Ñ.Ô.ð ÝœÔ)×@Ò@Ý˜!Ÿ*š*™,œ,Ñ'Ô'ñ
ô 
ˆð ˜AÒÐÕ&;¸EÑ&BÔ&BÐð
 �LŠLÝ”Ô ×7Ò7½ÀeÑ8LÔ8LÑMÔMØ!ñ"å"Ô0ð @ÝÔ=Ñ?Ô?ð	 ñ ô ð õ •ZÔ& q¤v­u°U©|¬|Ñ<Ô<Ñ=Ô=Ð=rr   c                ó®   — t          |¦  «        }|D ]}d||<   Œ| }t          |¦  «        D ]\  }}|dk    rt          ||¦  «        }Œt          ||¦  «        S ©Nr¨  )rw   rx   Ú	unsqueezerU  )r  ÚshapeÚbroadcast_dimensionsrf  Úbroadcast_dimensionr  r€  r®   s           rp   Úbroadcast_in_dimr�  [  sr   € åˆU‰Œ€AØ3ð $ð $ÐØ!#ˆÐ
ÑÐà	€AÝ˜A‘,”,ð "ð "‰ˆˆQØ�Š7ˆ7Ý˜!˜SÑ!Ô!ˆAøå�!�UÑÔÐrr   c                óF   — t          | |                     ¦   «         ¦  «        S r»   )rU  rã   )r®   rY  s     rp   Ú	expand_asr�  i  s   € å�!�Q—Z’Z‘\”\Ñ"Ô"Ð"rr   c                óV  ‡‡‡— t          |                      ¦   «         ¦  «        Št          ‰¦  «        t          ‰¦  «        k    rRt          j        j        gt          ‰¦  «        t          ‰¦  «        z
  z  ‰z   Št          | t          ‰¦  «        ¦  «        } t          ‰¦  «        t          |                      ¦   «         ¦  «        k    sJ ‚t          |                      ¦   «         ¦  «        }d}t          t          ‰¦  «        ¦  «        D ]$}‰|         dk    rd}||         ‰|         z  ||<   Œ%|r6t          ||  	                    ¦   «         |  
                    ¦   «         ¬¦  «        S t          d„ t          ‰‰¦  «        D ¦   «         ¦  «        rt          t          | |¦  «        ¦  «        S ˆˆˆfd„}t          ‰¦  «        s�t          |¦  «        s~t           j        j                             t)          ‰¦  «        ¦  «        }|dk    rG|                      t           j        j                             t)          |¦  «        ¦  «        |z  ¦  «         |                      ¦   «         Št/          j        |  
                    ¦   «         |  	                    ¦   «         |t          |¦  «        ¬¦  «        S )NFr   T©rÈ   rƒ   c              3  ó4   K  — | ]\  }}|d k    p|d k    V — ŒdS ©r3   Nrª   rV  s      rp   r  zrepeat.<locals>.<genexpr>€  s3   è è € Ð
AÐ
A¡$ ! QˆA�ŠFÐ�a˜1’fÐ
AÐ
AÐ
AÐ
AÐ
AÐ
Arr   c                óT  •— t          | ¦  «        t          ‰¦  «        k    sJ ‚t          | ¦  «        } t          t          ‰¦  «        ¦  «        D ]O}‰|         dk    rA‰|         dk    rt          j        j        | |<   Œ/t          | |         d‰|         ¦  «        | |<   ŒP ‰| ¦  «        S r@  )râ   rw   r-  rÔ   rQ  ÚZeror0   )rf  r€   Úold_sizeÚrepeatsÚx_loaders     €€€rp   r‡  zrepeat.<locals>.inner_fn…  s¡   ø€ Ý�5‰zŒz�S ™\œ\Ò)Ð)Ð)Ð)Ý�U‘”ˆÝ•s˜7‘|”|Ñ$Ô$ð 	Ið 	IˆAØ�qŒz˜QŠˆØ˜A”; !Ò#Ð#Ý$œwœ|�E˜!‘H�Hå.¨u°Q¬x¸¸HÀQ¼KÑHÔH�E˜!‘HøØˆx˜‰ŒÐrr   rˆ  )rw   rã   râ   rÔ   rQ  rR  r  r-  ÚemptyrÓ   r|   rE  r,  rð  rU  r%   rZ   rh   rü   r‚  rW   rƒ  rŠ  rD   r  )	r®   r—  Únew_sizeÚzero_tensorr€   r‡  Úold_size_productr–  r˜  s	    `     @@rp   Úrepeatr�  n  sd  øøø€ å�A—J’J‘L”LÑ!Ô!€HÝ
ˆ7�|„|•c˜(‘m”mÒ#Ð#Ý”G”K�=¥C¨¡L¤Lµ3°x±=´=Ñ$@ÑAÀHÑLˆÝ�•D˜‘N”NÑ#Ô#ˆÝˆw‰<Œ<�3˜qŸzšz™|œ|Ñ,Ô,Ò,Ð,Ð,Ð,å�A—J’J‘L”LÑ!Ô!€Hà€KÝ•3�w‘<”<Ñ Ô ð /ð /ˆØ�1Œ:˜Š?ˆ?ØˆKØ˜q”k G¨A¤JÑ.ˆ�‰ˆàð KÝ�X Q§[¢[¡]¤]¸1¿<º<¹>¼>ÐJÑJÔJÐJÝ
Ð
AÐ
A­#¨g°xÑ*@Ô*@Ð
AÑ
AÔ
AÑAÔAð *Ý•V˜A˜xÑ(Ô(Ñ)Ô)Ð)ð	ð 	ð 	ð 	ð 	ð 	ð 	õ ! Ñ*Ô*ð 
Õ3HÈÑ3RÔ3Rð 
Ýœ7Ô+×BÒBÝ˜(Ñ#Ô#ñ
ô 
Ðð ˜aÒÐð �LŠLÝ”Ô ×7Ò7½ÀhÑ8OÔ8OÑPÔPØ#ñ$ñô ð ð
 �}Š}‰Œ€HÝÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØÝ�H‰~Œ~ð	ñ ô ð rr   rX  úSequence[sympy.Expr]c                óP   — t          t          j        | j        |¦  «        ¦  «        S r»   )rG   rI   r  r{   )r®   rX  s     rp   r  r  ¦  s    € õ •T”[ ¤¨Ñ/Ô/Ñ0Ô0Ð0rr   c                óÔ   — t          | t          ¦  «        sJ ‚t          |t          t          f¦  «        sJ ‚t          t	          j        | j        t          |¦  «        ¦  «        ¦  «        S r»   )ry   rG   rw   r±   rC   r  r{   )r®   rd  s     rp   Úpermuter¡  ­  sU   € å�a�Ñ#Ô#Ð#Ð#Ð#Ý�d�T¥5˜MÑ*Ô*Ð*Ð*Ð*Ý•[Ô'¨¬µ°d±´Ñ<Ô<Ñ=Ô=Ð=rr   c                ó\  — ddl m}m} t          j        j        } |t          j        j        j        |�|j         	                    di ¦  «        ni ¦  «        }d\  }	}
|rÌt          |¦  «        dk    s
J |¦   «         ‚|                     ¦   «         D ]=\  }}| |d¦  «        t          j        | ¦  «        fk    r|}	Œ+| |d¦  «        fk    r|}
Œ>|	�[t          j        |	||||¦  «        }t          j                             |¦  «        |_        t          j                             |¦  «         |	|
fS )	ad  Register DynamicSliceSize for any unbacked size bindings on the current FX node.

    Unbacked symbols may have been allocated at trace time of the slice
    that inductor must define so the assertion
    new_unbacked_defs >= renamed_unbacked_bindings passes in run_node.

    Returns (sym_size, sym_storage) parsed from the bindings, or (None, None).
    r   )ÚCallMethodKeyr'   NÚunbacked_bindings©NNr1   r  Ústorage_offset)Ú%torch.fx.experimental.symbolic_shapesr£  r'   rZ   rh   ri   rü   Ú	shape_envr�  r�  râ   r&  r‘  ÚSequenceKeyr6   ÚDynamicSliceSizeÚregister_bufferrö   Úregister_operation)rå   ÚstartÚendÚstepr  r£  r'   ri   Únode_unbacked_bindingsÚsym_sizeÚsym_storageÚsymÚkeypathÚb_sizes                 rp   Ú&_register_unbacked_slice_size_bindingsr¶  ¶  sr  € ðð ð ð ð ð ð ð õ ”7Ô'€LØ6Ð6Ý	ŒÔÔ"àÐ#ð 	Ô×ÒÐ1°2Ñ6Ô6Ð6àñ	ô Ðð 'Ñ€HˆkØð 
/ÝÐ)Ñ*Ô*¨aÒ/Ð/Ð/Ð1GÑ/Ô/Ð/Ø2×8Ò8Ñ:Ô:ð 	"ð 	"‰LˆC�Ø˜=˜=¨Ñ0Ô0µ&Ô2DÀSÑ2IÔ2IÐJÒJÐJØ��Ø˜]˜]Ð+;Ñ<Ô<Ð>Ò>Ð>Ø!�øØÐÝÔ(¨°5¸#¸tÀTÑJÔJˆFÝœ'×1Ò1°&Ñ9Ô9ˆFŒKÝŒG×&Ò& vÑ.Ô.Ð.ð �[Ð Ð rr   c           
     ó¶  — t          | t          ¦  «        sJ ‚t          | |d¦  «        }|                      ¦   «         |         }t	          j        |¦  «        }t          |t          j        ¦  «        s|dk    s
J |¦   «         ‚	 |dk    rOt          j        j	         
                    ||¦  «        r*|dk    r$t          |||||¦  «        \  }}|�
J d¦   «         ‚| S n# t          $ r Y nw xY wdd„}	d\  }
}|}|rX |	||d¦  «        }
|�2t          j        j	                             |t          j        ¦  «        r|}n |	|||¦  «        }|
�|�|
|}}d}|sYt          |||||¦  «        \  }}|�
J d¦   «         ‚t          t           j                             | j        |||||¬	¦  «        ¦  «        S |sJ ‚|
�|�J ‚t          |||||                      ¦   «         |         ¦  «        \  }}|€J ‚|                      ¦   «         €|                      ¦   «          |
�<|�J ‚|                      ¦   «         j        |
|                      ¦   «         |         z  z   }n¦t!          j        |||                      ¦   «         j        |                      ¦   «         |         |                      ¦   «         |         d
¬	¦  «        }t          j                             |¦  «        |_        t          j                             |¦  «         |}t;          |                      ¦   «         ¦  «        }t;          |                      ¦   «         ¦  «        }|||<   ||xx         |z  cc<   t=          | |||d¬¦  «        S )a	  
    Lowers a slice call, creating ExternKernels for the output size & storage offset symbols,
    if the indices are unbacked and appropriate semantics aren't known.
    If they are known (indices are static/backed/unbacked with info), a SliceView is created.
    r   r3   Nz:Unexpected storage_offset unbacked binding for no-op slicec           	     óÄ  — | €|S d„ }t          j        | ¦  «        } t          j        |¦  «        } |t          j        t          j        | d¦  «        t          j        | |¦  «        ¦  «        ¦  «        r| S  |t          j        t          j        | d¦  «        t          j        | | ¦  «        ¦  «        ¦  «        r| |z   S  |t          j        | |¦  «        ¦  «        r|S  |t          j        | | ¦  «        ¦  «        rdS  |t          j        | d¦  «        ¦  «        rt          | |¦  «        S  |t          j        | d¦  «        ¦  «        rt          | |z   d¦  «        S d S )Nc                óJ   — t           j        j                             | ¦  «        S r»   )rZ   rh   rü   rb  r×   s    rp   rp  z5slice_.<locals>.compute_slice_index.<locals>.<lambda>  s   € •q”wÔ'×6Ò6°qÑ9Ô9€ rr   r   )	rÔ   rU  ÚAndÚGeÚLeÚLtÚGtr.   r-   )rf  r  r  r†   s       rp   Úcompute_slice_indexz#slice_.<locals>.compute_slice_indexÿ  s\  € Øˆ=ØˆNà9Ð9ˆÝ”˜UÑ#Ô#ˆÝŒ|˜DÑ!Ô!ˆØˆ2�eŒi�œ ¨Ñ*Ô*­E¬H°U¸DÑ,AÔ,AÑBÔBÑCÔCð 	(ØˆLØˆR•”	�%œ( 5¨!Ñ,Ô,­e¬h°u¸t¸eÑ.DÔ.DÑEÔEÑFÔFð 	(Ø˜4‘<ÐØˆR•”˜ Ñ%Ô%Ñ&Ô&ð 		(ØˆKØˆR•”˜  Ñ&Ô&Ñ'Ô'ð 	(Ø�1ØˆR•”˜ Ñ"Ô"Ñ#Ô#ð 	(å�u˜dÑ#Ô#Ð#ØˆR•”˜ Ñ"Ô"Ñ#Ô#ð 	(å�u˜t‘| QÑ'Ô'Ð'Øˆtrr   r¥  FzWUnexpected storage_offset unbacked binding when both start and end indices are resolved©ÚclampT©Ú(storage_offset_relative_to_input_storager»   )ry   rG   Ú_validate_dimrã   rÔ   rU  rÕ   rZ   rh   rü   Ústatically_known_leqr¶  Ú	TypeErrorÚstatically_known_equalsÚsysÚmaxsizer6   Ú	SliceViewr  r{   Úmaybe_get_layoutrâ  Ú
get_layoutÚoffsetÚ
get_strideÚDynamicSelectStorageOffsetr«  rö   r¬  rw   Ú
as_strided)r®   rå   r­  r®  r¯  rÁ  r  Ú_r²  r¿  Ústart_indexÚ	end_indexÚambiguous_slicer±  Únew_storage_offsetÚ	b_storageÚ	new_sizesÚnew_stridess                     rp   Úslice_rÙ  ß  sÆ  € õ �a�Ñ#Ô#Ð#Ð#Ð#Ý
˜˜3 Ñ
"Ô
"€CØ�:Š:‰<Œ<˜Ô€DÝŒ<˜ÑÔ€DÝ�d�EœJÑ'Ô'Ð9¨4°!ª8¨8¨8°T©8¬8Ð3ðà�QŠJˆJÝ”Ô ×5Ò5°d¸CÑ@Ô@ð à˜’	�	åCØ�U˜C  tñô ‰NˆAˆ{ð Ð&Ð&ØLñ 'Ô&Ð&ð ˆHøøÝð ð ð Øˆðøøøðð ð ð ð. (Ñ€K�ð
 €OØð $Ø)Ð)¨%°°qÑ9Ô9ˆð ˆ?�qœwÔ/×GÒGØ•”ñ 
ô  
ˆ?ð ˆIˆIà+Ð+¨C°°tÑ<Ô<ˆIØÐ" yÐ'<Ø$ i�3ˆEØ#ˆOàð 
Ý?Ø�˜˜T 4ñ
ô 
‰ˆˆ;ð Ð"Ð"ð1ñ #Ô"Ð"õ
 ÝŒL×Ò ¤¨¨U°C¸ÀUÐÑKÔKñ
ô 
ð 	
ð
 €L€Lˆ5ØÐ )Ð"3Ð"3Ð3ÝBØˆU�C˜˜qŸzšz™|œ|¨CÔ0ñô Ñ€Hˆkð ÐÐÐà×ÒÑÔÐ#à	�	Š	‰ŒˆàÐàÐ"Ð"Ð"ØŸ\š\™^œ^Ô2°[À1Ç<Â<Á>Ä>ÐRUÔCVÑ5VÑVÐÐåÔ1ØØØ�LŠL‰NŒNÔ!Ø�LŠL‰NŒN˜3ÔØ�JŠJ‰LŒL˜ÔØð
ñ 
ô 
ˆ	õ œ×0Ò0°Ñ;Ô;ˆ	ŒÝ	Œ×"Ò" 9Ñ-Ô-Ð-Ø(Ðå�Q—Z’Z‘\”\Ñ"Ô"€IÝ�q—|’|‘~”~Ñ&Ô&€KØ€Iˆc�NØ�ÐÐÔ˜ÑÐÐÑÝØ	ØØØØ16ðñ ô ð s   ÂAC Ã
C%Ã$C%rÂ  c          	     ó
  — |d uo|}d }d }t          | t          ¦  «        r‚t          | j        t          j        ¦  «        rc|                      ¦   «         }| j        }|€-|                      ¦   «         �|                      ¦   «         j	        }| j         
                    ¦   «         } |                      ¦   «          t          j        | ¦  «        st          d| › d�¦  «        ‚t          j        | ¦  «        \  }}	|�t          |¦  «        nd}t          |t          j        ¦  «        r|j        n|}
|rft          |
t          j        ¦  «        rLt%          j        |t(          j        j                             |
                     ¦   «         d¦  «        z
  ¦  «        }t          j        |r|n|	j        |r|n|	j        d„ |D ¦   «         d„ |D ¦   «         t%          j        |¦  «        ¦  «        }t          t          j        ||¬¦  «        ¦  «        S )Nzunrealized as_strided(z, ...)r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rª   ©rÔ   rU  ©r­   rf  s     rp   r¯   zas_strided.<locals>.<listcomp>Ž  s    € Ð'Ð'Ð'˜Q�Œ�a‰ŒÐ'Ð'Ð'rr   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rª   rÜ  rÝ  s     rp   r¯   zas_strided.<locals>.<listcomp>�  ó    € Ð)Ð)Ð)˜Q�Œ�a‰ŒÐ)Ð)Ð)rr   ©r{   Úlayout)ry   rG   r{   r6   r:   r|   rÈ   rË  rÌ  rÍ  Úunwrap_viewrâ  Úis_storage_and_layoutr¥   Úas_storage_and_layoutrK   rÿ   ÚInputBufferrÔ   rU  rZ   rh   Úgraph_input_storage_offsetsr�  Úget_nameÚFixedLayoutrƒ   rû   )r®   r  Ústrider¦  rÃ  Úexplicit_storage_offsetÚ
new_deviceÚ	new_dtypeÚstorageÚ
old_layoutÚstorage_dataÚ
new_layouts               rp   rÐ  rÐ  a  sÿ  € ð 	˜dÐ"ÐOÐ'Oð ð €JØ€IÝ�!•YÑÔð !¥J¨q¬vµr´{Ñ$CÔ$Cð !ð —\’\‘^”^ˆ
Ø”Gˆ	ØÐ! a×&8Ò&8Ñ&:Ô&:Ð&FØŸ\š\™^œ^Ô2ˆNØŒF×ÒÑ Ô ˆØ‡I‚I�K„K€KÝÔ# AÑ&Ô&ð FÝ!Ð"D¸1Ð"DÐ"DÐ"DÑEÔEÐEÝÔ2°1Ñ5Ô5Ñ€GˆZà2@Ð2LÕ˜~Ñ.Ô.Ð.ÐRSð õ $.¨gµr´}Ñ#EÔ#EÐR�7”<�<È7€LØð 
¥:¨l½B¼NÑ#KÔ#Kð 
õ œØÝŒgÔ1×5Ò5°l×6KÒ6KÑ6MÔ6MÈqÑQÔQñRñ
ô 
ˆõ ”Ø Ð7ˆ
ˆ
 jÔ&7ØÐ4ˆ	ˆ	 JÔ$4Ø'Ð' $Ð'Ñ'Ô'Ø)Ð) &Ð)Ñ)Ô)ÝŒ�^Ñ$Ô$ñô €Jõ •RÔ'¨W¸ZÐHÑHÔHÑIÔIÐIrr   c                ól   — t          | t          ¦  «        sJ ‚t          | |||¦  «        j        | _        | S r»   )ry   rG   rÐ  r{   )r®   r  ré  r¦  s       rp   Úas_strided_rò  •  s5   € å�a�Ñ#Ô#Ð#Ð#Ð#Ý˜˜4 ¨Ñ8Ô8Ô=€A„FØ€Hrr   c                óD   — t          | |||¦  «        }t          |¦  «        S r»   )rÐ  rð  )r®   r  ré  r¦  rí  s        rp   Úas_strided_copyrô  œ  s!   € å˜˜4 ¨Ñ8Ô8€FÝ�‰=Œ=Ðrr   c                óÄ  ‡ ‡‡‡— g Šd}‰ D ]B}‰                      |||                     ¦   «         ‰         z   f¦  «         ‰d         d         }ŒCd„ ‰ D ¦   «         Šˆˆ ˆˆfd„}t          ‰ d                              ¦   «         ¦  «        }‰d         d         |‰<   t          j        ‰ d                              ¦   «         ‰ d                              ¦   «         ||¬¦  «        S )Nr   r¨  c                ó6   — g | ]}|                      ¦   «         ‘ŒS rª   rª  r¦  s     rp   r¯   z!pointwise_cat.<locals>.<listcomp>ª  s"   € Ð:Ð:Ð:¨C�c—o’oÑ'Ô'Ð:Ð:Ð:rr   c           	     óæ  •‡
‡— t          j        | ‰         t          j        ¦  «        }g }g }t	          t          ‰¦  «        ¦  «        D �]XŠ
‰
dk    rt          j        dt          j        ¦  «        n*t          j        ‰‰
         d         t          j        ¦  «        }t          j        ‰‰
         d         t          j        ¦  «        }t          j        ||¦  «        }t          j        ||¦  «        }‰
dk    r|}n.‰
t          ‰¦  «        dz
  k    r|}nt          j	        ||¦  «        }| 
                    |¦  «         t          | ¦  «        Št          ‰‰         ‰‰
         d         z
  ¦  «        ‰‰<   | 
                    t          j        |ˆ
ˆˆfd„d¦  «        ¦  «         �ŒZ|d         }	t	          t          ‰¦  «        dz
  dd¦  «        D ]$Š
t          j        |‰
         |‰
         |	¦  «        }	Œ%|	S )Nr   r3   c                 ó&   •—  ‰‰          ‰¦  «        S r»   rª   )r€   Úidx_loadÚinputs_loaderss   €€€rp   rp  z1pointwise_cat.<locals>.inner_fn.<locals>.<lambda>Î  s   ø€ Ð-˜N¨1Ô-¨hÑ7Ô7€ rr   ç        r¨  r1   )rY   r}  r‹   Úint64r-  râ   r~  ÚgeÚltÚand_r}   rw   r,   ÚmaskedrM  )r€  Úidx_dimÚmasksÚmasked_loadsr­  r®  Ú
start_condÚend_condÚmaskÚnext_valr€   rù  rå   r[  rú  Úinputs_rangess             @@€€€€rp   r‡  zpointwise_cat.<locals>.inner_fn¬  sæ  øøø€ Ý”.  S¤­5¬;Ñ7Ô7ˆàˆØˆÝ•s˜6‘{”{Ñ#Ô#ð  	ñ  	ˆAð ˜’6�6õ ”˜Q¥¤Ñ,Ô,Ð,å”^ M°!Ô$4°QÔ$7½¼ÑEÔEð õ
 ”. ¨qÔ!1°!Ô!4µe´kÑBÔBˆCåœ ¨Ñ/Ô/ˆJÝ”v˜g sÑ+Ô+ˆHØ�AŠvˆvØ��Ø•c˜&‘k”k A‘oÒ%Ð%Ø!��å”x 
¨HÑ5Ô5�à�LŠL˜ÑÔÐÝ˜C‘y”yˆHõ % X¨c¤]°]À1Ô5EÀaÔ5HÑ%HÑIÔIˆH�S‰Mà×ÒÝ”
ØØ7Ð7Ð7Ð7Ð7Ð7Øñô ñô ð ñ ð   Ô#ˆÝ�˜F™œ qÑ(¨"¨bÑ1Ô1ð 	ð 	ˆAÝ”yØ�a”Ø˜Q”Øñô ˆHˆHð
 ˆrr   rˆ  )r}   rã   rw   rD   r  r|   rÓ   )r[  rå   Úprev_endrß   r‡  rš  rú  r  s   ``    @@rp   Úpointwise_catr
  ¢  s  øøøø€ à9;€MØ€HØð )ð )ˆØ×Ò˜h¨°3·<²<±>´>À#Ô3FÑ(FÐGÑHÔHÐHØ  Ô$ RÔ(ˆˆà:Ð:°6Ð:Ñ:Ô:€Nð.ð .ð .ð .ð .ð .ð .ð .õ` �F˜1”I×&Ò&Ñ(Ô(Ñ)Ô)€HØ! "Ô% bÔ)€HˆS�MåÔØ�aŒy×#Ò#Ñ%Ô%Ø�QŒi×!Ò!Ñ#Ô#ØØð	ñ ô ð rr   rÖ  ÚscalesÚzero_pointsÚaxisÚ	quant_minÚ	quant_maxc           	     óv  ‡‡‡‡‡‡‡‡	‡
— t          ‰                     ¦   «         ¦  «        dk    s
J d¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    s
J d¦   «         ‚|                      ¦   «         t          j        k    rt          | t          j        ¦  «        } |                      ¦   «         t          j        k    sJ d|                      ¦   «         › �¦   «         ‚‰t          |                      ¦   «         ¦  «        k     s,J dt          |                      ¦   «         ¦  «        › �¦   «         ‚|                      ¦   «         Š‰                     ¦   «         Š	‰                     ¦   «         Š
ˆˆˆˆˆˆˆ	ˆˆ
f	d„}t          j	        |  
                    ¦   «         ‰||                      ¦   «         ¬¦  «        S )Nr3   úexpect scales 1 dimúexpect zero_points 1 dimú<Expecting input to have dtype torch.float32, but got dtype: úExpecting axis to be < c                ó<  •	— | ‰
         f} ‰| ¦  «        } ‰|¦  «        } ‰|¦  «        }t          ‰‰t          j        ¬¦  «        \  }}‰j        t          j        k    rt	          j        |t          j        ¦  «        }‰j        t          j        k    rt	          j        |t          j        ¦  «        }t	          j        |¦  «        }t	          j        ||z  ¦  «        |z   }t	          j	        |t	          j
        ||¦  «        ¦  «        }	t	          j        |	‰¦  «        S rl  )Ú_create_constantsr‹   r3  rÈ   rY   r  rE  Ú
reciprocalr}  ÚmaximumÚminimum)r€  Úchannel_idxrÖ  ÚscaleÚ
zero_pointÚqminÚqmaxÚ	inv_scalerl  Úclampedr  rÈ   Úinput_loaderr  r  r  Úscales_loaderr  Úzero_points_loaders             €€€€€€€€€rp   r‡  z;quantized_decomposed_quantize_per_channel.<locals>.inner_fn  sò   ø€ Ø˜4”y�lˆà�˜SÑ!Ô!ˆØ�˜kÑ*Ô*ˆØ'Ð'¨Ñ4Ô4ˆ
Ý& y°)Å5Ä=ÐQÑQÔQ‰
ˆˆdàŒ<�5œ=Ò(Ð(Ý”L ­¬Ñ6Ô6ˆEØÔ¥¤Ò+Ð+Ýœ jµ%´+Ñ>Ô>ˆJÝ”N 5Ñ)Ô)ˆ	ÝŒi˜ 	Ñ)Ñ*Ô*¨ZÑ7ˆÝ”+˜d¥C¤K°°cÑ$:Ô$:Ñ;Ô;ˆÝŒ|˜G UÑ+Ô+Ð+rr   rˆ  )râ   rã   rÓ   r‹   rt  r  r3  rŠ  rD   r  r|   )rÖ  r  r  r  r  r  rÈ   r‡  r!  r"  r#  s    `````` @@@rp   Ú)quantized_decomposed_quantize_per_channelr$  ç  sÈ  øøøøøøøøø€ õ ˆv�ŠÑ Ô Ñ!Ô! QÒ&Ð&Ð&Ð(=Ñ&Ô&Ð&Ýˆ{×#Ò#Ñ%Ô%Ñ&Ô&¨!Ò+Ð+Ð+Ð-GÑ+Ô+Ð+à‡‚ÑÔ�EœNÒ*Ð*Ý˜¥¤Ñ.Ô.ˆØ�?Š?ÑÔ¥¤Ò-Ð-Ð-ØZÀuÇÂÑGXÔGXÐZÐZñ .Ô-Ð-ð •#�e—n’nÑ&Ô&Ñ'Ô'Ò'Ð'Ð'Ø9¥# e§n¢nÑ&6Ô&6Ñ"7Ô"7Ð9Ð9ñ (Ô'Ð'ð ×$Ò$Ñ&Ô&€LØ×&Ò&Ñ(Ô(€MØ$×0Ò0Ñ2Ô2Ðð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,õ" ÔØ×ÒÑ!Ô!ØØØ�~Š~ÑÔð	ñ ô ð rr   c           	     óP  ‡ ‡— ‰                       ¦   «          t          ‰ t          j        ¦  «        Š ˆ ˆfd„}t	          j        ‰                      ¦   «         ‰                      ¦   «         |t          ‰  	                    ¦   «         ¦  «        ¬¦  «        }|                      ¦   «          |S )Nc                óÔ   •— t           j                             ¦   «         5  t          j         ‰                     ¦   «         | ¦  «        ‰¦  «        cd d d ¦  «         S # 1 swxY w Y   d S r»   )r6   ÚComputedBufferÚforce_realizerY   Údevice_assert_asyncrŠ  )rf  rŸ   r    s    €€rp   r‡  z_assert_async.<locals>.inner_fn  s·   ø€ ÝÔ×,Ò,Ñ.Ô.ð 	Kð 	KÝÔ*Ð+=¨4×+;Ò+;Ñ+=Ô+=¸eÑ+DÔ+DÀcÑJÔJð	Kð 	Kð 	Kð 	Kñ 	Kô 	Kð 	Kð 	Kð 	Kð 	Kð 	Kð 	Køøøð 	Kð 	Kð 	Kð 	Kð 	Kð 	Ks    0AÁA!Á$A!rˆ  )
râ  r  r‹   re   rD   r  r|   rÓ   rw   rã   )rŸ   r    r‡  Úassertion_ops   ``  rp   Ú_assert_asyncr+    s©   øø€ Ø‡L‚L�N„N€NÝ�D�%œ*Ñ%Ô%€DðKð Kð Kð Kð Kð Kõ Ô#Ø�ŠÑ Ô Ø�nŠnÑÔØÝ�D—M’M‘O”OÑ$Ô$ð	ñ ô €Lð ×ÒÑÔÐØÐrr   c                ó"   — t          | |¦  «        S r»   ©r+  r¦   s     rp   Úlower_assert_asyncr.  ,  ó   € å˜˜sÑ#Ô#Ð#rr   c                ó"   — t          | |¦  «        S r»   r-  r¦   s     rp   Úlower_assert_functional_asyncr1  1  r/  rr   )r1  r1  c               ó  ‡‡‡‡‡	‡
‡— t          ‰                     ¦   «         ¦  «        dk    s
J d¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    s
J d¦   «         ‚|                      ¦   «         |k    s"J d|› d|                      ¦   «         › �¦   «         ‚‰t          |                      ¦   «         ¦  «        k     s,J dt          |                      ¦   «         ¦  «        › �¦   «         ‚‰€t          j        Š|                      ¦   «         Š	‰                     ¦   «         Š
‰                     ¦   «         Šˆˆ	ˆˆˆ
ˆˆfd„}t          j        |                      ¦   «         ‰||                      ¦   «         ¬¦  «        S )	Nr3   r  r  úExpecting input to have dtype ú, but got dtype: r  c                óÀ  •— | ‰         f} ‰| ¦  «        } ‰
|¦  «        } ‰|¦  «        }‰	j         t          j        k    rt          j        |t          j        ¦  «        }‰j         t          j        k    rt          j        |t          j        ¦  «        }t          j        t          j        |t          j        ¦  «        |¦  «        |z  }t          j        |‰¦  «        }|S r»   )rÈ   r‹   r3  rY   r  Úsub)r€  r  rÖ  r  r  rl  r  r!  r1  r  r"  r  r#  s         €€€€€€€rp   r‡  z=quantized_decomposed_dequantize_per_channel.<locals>.inner_fnT  s»   ø€ Ø˜4”y�lˆà�˜SÑ!Ô!ˆØ�˜kÑ*Ô*ˆØ'Ð'¨Ñ4Ô4ˆ
àŒ<�5œ=Ò(Ð(Ý”L ­¬Ñ6Ô6ˆEØÔ¥¤Ò-Ð-Ýœ jµ%´-Ñ@Ô@ˆJÝŒg•c”l 5­%¬-Ñ8Ô8¸*ÑEÔEÈÑMˆÝŒl˜3 	Ñ*Ô*ˆØˆ
rr   rˆ  ©	râ   rã   rÓ   r‹   r3  rŠ  rD   r  r|   )rÖ  r  r  r  r  r  rÈ   r1  r‡  r!  r"  r#  s    ```   ` @@@rp   Ú+quantized_decomposed_dequantize_per_channelr8  6  s§  øøøøøøø€ õ ˆv�ŠÑ Ô Ñ!Ô! QÒ&Ð&Ð&Ð(=Ñ&Ô&Ð&Ýˆ{×#Ò#Ñ%Ô%Ñ&Ô&¨!Ò+Ð+Ð+Ð-GÑ+Ô+Ð+Ø�?Š?ÑÔ Ò%Ð%Ð%ØT¨ÐTÐTÀÇÂÑARÔARÐTÐTñ &Ô%Ð%ð •#�e—n’nÑ&Ô&Ñ'Ô'Ò'Ð'Ð'Ø9¥# e§n¢nÑ&6Ô&6Ñ"7Ô"7Ð9Ð9ñ (Ô'Ð'ð ÐÝ”Mˆ	à×$Ò$Ñ&Ô&€LØ×&Ò&Ñ(Ô(€MØ$×0Ò0Ñ2Ô2Ððð ð ð ð ð ð ð ð ð ð õ ÔØ×ÒÑ!Ô!ØØØ�~Š~ÑÔð	ñ ô ð rr   r  rb  r  c                ó  ‡‡‡‡— |                       ¦   «         t          j        k    rt          | t          j        ¦  «        } |                       ¦   «         t          j        k    sJ d|                       ¦   «         › �¦   «         ‚|                      ¦   «         Šˆˆˆˆfd„}t          j        |                      ¦   «         ‰t          j
        |t          |¦  «        t          |¦  «        ¬¦  «        |                      ¦   «         ¬¦  «        S )Nr  c                óJ  •—  ‰
| ¦  «        }t          d|z  |t          j        ¬¦  «        \  }}t          j        ||z  ¦  «        |z   }t          ‰‰t          j        ¬¦  «        \  }}t          j        t          j        ||¦  «        |¦  «        }t          j        |‰	¦  «        S )Nç      ð?rÎ   )r  r‹   r3  rY   r}  r  r  r  )r€  r  r  rÖ  r  rl  r  r  r   rÈ   r!  r  r  s            €€€€rp   r‡  zBquantized_decomposed_quantize_per_tensor_default.<locals>.inner_fn~  sœ   ø€ Ø�˜SÑ!Ô!ˆÝ 1Ø�%‰K˜­5¬=ð!
ñ !
ô !
Ñˆ	�:õ Œi˜ 	Ñ)Ñ*Ô*¨ZÑ7ˆÝ& y°)Å5Ä=ÐQÑQÔQ‰
ˆˆdÝ”+�cœk¨#¨tÑ4Ô4°dÑ;Ô;ˆÝŒ|˜G UÑ+Ô+Ð+rr   ©r  r  rˆ  )rÓ   r‹   rt  r  r3  rŠ  rD   r  r|   r8  rK  rb  rÌ   rã   )rÖ  r  r  r  r  rÈ   r‡  r!  s      ``` @rp   Ú0quantized_decomposed_quantize_per_tensor_defaultr=  k  s
  øøøø€ ð ‡‚ÑÔ�EœNÒ*Ð*Ý˜¥¤Ñ.Ô.ˆØ�?Š?ÑÔ¥¤Ò-Ð-Ð-ØZÀuÇÂÑGXÔGXÐZÐZñ .Ô-Ð-ð ×$Ò$Ñ&Ô&€Lð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,õ ÔØ×ÒÑ!Ô!ØÝÔ"Ø�E %™LœLµS¸±_´_ð
ñ 
ô 
ð �~Š~ÑÔðñ ô ð rr   c               ó   ‡‡— |                       ¦   «         |k    s"J d|› d|                       ¦   «         › �¦   «         ‚‰€t          j        Š|                      ¦   «         Šˆˆfd„}t	          j        |                      ¦   «         ‰t          j        |t          |¦  «        t          |¦  «        ¬¦  «        |                      ¦   «         ¬¦  «        S )Nr3  r4  c                óð   •—  ‰| ¦  «        }t          ||t          j        ¬¦  «        \  }}t          j        t          j        |t          j        ¦  «        |¦  «        |z  }t          j        |‰¦  «        }|S rl  )r  r‹   r3  rY   r6  r  )r€  r  r  rÖ  rl  r!  r1  s        €€rp   r‡  zDquantized_decomposed_dequantize_per_tensor_default.<locals>.inner_fn¨  sg   ø€ Ø�˜SÑ!Ô!ˆÝ-¨e°ZÅuÄ}ÐUÑUÔUÑˆˆzÝŒg•c”l 5­%¬-Ñ8Ô8¸*ÑEÔEÈÑMˆÝŒl˜3 	Ñ*Ô*ˆØˆ
rr   r<  rˆ  )rÓ   r‹   r3  rŠ  rD   r  r|   r8  rK  rb  rÌ   rã   )	rÖ  r  r  r  r  rÈ   r1  r‡  r!  s	         ` @rp   Ú2quantized_decomposed_dequantize_per_tensor_defaultr@  ’  sé   øø€ ð �?Š?ÑÔ Ò%Ð%Ð%ØT¨ÐTÐTÀÇÂÑARÔARÐTÐTñ &Ô%Ð%ð ÐÝ”Mˆ	à×$Ò$Ñ&Ô&€Lðð ð ð ð ð õ ÔØ×ÒÑ!Ô!ØÝÔ"Ø�E %™LœLµS¸±_´_ð
ñ 
ô 
ð �~Š~ÑÔðñ ô ð rr   c           	     ó  ‡‡‡‡‡‡‡‡	‡
— |                       ¦   «         t          j        k    rt          | t          j        ¦  «        } |                       ¦   «         t          j        k    sJ d|                       ¦   «         › �¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    sMt          ‰                     ¦   «         ¦  «        dk    r‰                     ¦   «         d         dk    s
J d¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    sMt          ‰                     ¦   «         ¦  «        dk    r‰                     ¦   «         d         dk    s
J d¦   «         ‚|                      ¦   «         Š‰                     ¦   «         Š	‰                     ¦   «         Š
|                      ¦   «         Šˆˆˆˆˆˆˆ	ˆˆ
f	d„}t          j
        |                      ¦   «         ‰||                      ¦   «         ¬¦  «        S )Nr  r   r3   úexpect scale as scalar tensorú"expect zero_point as scalar tensorc                óV  •	—  ‰
| ¦  «        } ‰t          ‰                     ¦   «         ¦  «        dk    rdnd¦  «        } ‰t          ‰                     ¦   «         ¦  «        dk    rdnd¦  «        }‰j        t          j        k    rt          j        |t          j        ¦  «        }‰j        t          j        k    rt          j        |t          j        ¦  «        }‰rH‰j        dk    r=t          j        |t          j	        |¦  «        |¦  «        }t          j
        |‰	¦  «        S t          j        |t          j	        |¦  «        z  ¦  «        |z   }t          ‰‰t          j        ¬¦  «        \  }}t          j        t          j        ||¦  «        |¦  «        }t          j        |‰	¦  «        S )Nr3   ©r   rª   rú   rÎ   )râ   rã   rÈ   r‹   r3  rY   r  rþ   r  r  Úround_to_intr}  r  r  r  )r€  rÖ  Ú_scaleÚ_zero_pointrl  r  r  r   rƒ   rÈ   r!  r  r  r  Úscale_loaderr  Úzero_point_loaders           €€€€€€€€€rp   r‡  zAquantized_decomposed_quantize_per_tensor_tensor.<locals>.inner_fnÖ  sg  ø€ Ø�˜SÑ!Ô!ˆØ�¥c¨%¯.ª.Ñ*:Ô*:Ñ&;Ô&;¸qÒ&@Ð&@˜d˜dÀbÑIÔIˆØ'Ð'µ°E·N²NÑ4DÔ4DÑ0EÔ0EÈÒ0JÐ0J¨¨ÐPRÑSÔSˆØŒ;�%œ-Ò'Ð'Ý”\ &­%¬-Ñ8Ô8ˆFØÔ�uœ}Ò,Ð,Ýœ, {µE´MÑBÔBˆKØð 	0�f”k UÒ*Ð*Ý”'˜%¥¤°Ñ!7Ô!7¸ÑEÔEˆCÝÔ# C¨Ñ/Ô/Ð/ÝŒi˜¥¤¨vÑ 6Ô 6Ñ6Ñ7Ô7¸+ÑEˆÝ& y°)Å5Ä=ÐQÑQÔQ‰
ˆˆdÝ”+�cœk¨#¨tÑ4Ô4°dÑ;Ô;ˆÝŒ|˜G UÑ+Ô+Ð+rr   rˆ  )rÓ   r‹   rt  r  r3  râ   rã   rŠ  r|   rD   r  )rÖ  r  r  r  r  rÈ   r‡  rƒ   r!  rI  rJ  s    ````` @@@@rp   Ú/quantized_decomposed_quantize_per_tensor_tensorrK  ¹  s  øøøøøøøøø€ ð ‡‚ÑÔ�EœNÒ*Ð*Ý˜¥¤Ñ.Ô.ˆØ�?Š?ÑÔ¥¤Ò-Ð-Ð-ØZÀuÇÂÑGXÔGXÐZÐZñ .Ô-Ð-õ ˆu�~Š~ÑÔÑ Ô  AÒ%Ð%ÝˆE�NŠNÑÔÑÔ Ò"Ð" u§~¢~Ñ'7Ô'7¸Ô':¸aÒ'?Ð'?Ð'?Ø&ñ (@Ô'?ðõ ˆz×"Ò"Ñ$Ô$Ñ%Ô%¨Ò*Ð*ÝˆJ×ÒÑ!Ô!Ñ"Ô" aÒ'Ð'¨J×,?Ò,?Ñ,AÔ,AÀ!Ô,DÈÒ,IÐ,IÐ,IØ+ñ -JÔ,Iðð ×$Ò$Ñ&Ô&€LØ×$Ò$Ñ&Ô&€LØ"×.Ò.Ñ0Ô0Ðà×ÒÑÔ€Fð,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,ð ,õ  ÔØ×ÒÑ!Ô!ØØØ�~Š~ÑÔð	ñ ô ð rr   c               ój  ‡‡‡‡‡	‡
— t          ‰                     ¦   «         ¦  «        dk    sMt          ‰                     ¦   «         ¦  «        dk    r‰                     ¦   «         d         dk    s
J d¦   «         ‚t          ‰                     ¦   «         ¦  «        dk    sMt          ‰                     ¦   «         ¦  «        dk    r‰                     ¦   «         d         dk    s
J d¦   «         ‚|                      ¦   «         |k    s"J d|› d|                      ¦   «         › �¦   «         ‚‰€t          j        Š|                      ¦   «         Š‰                     ¦   «         Š	‰                     ¦   «         Š
ˆˆˆˆ	ˆˆ
fd„}t          j        |                      ¦   «         ‰||                      ¦   «         ¬¦  «        S )	Nr   r3   rB  rC  r3  r4  c                óJ  •—  ‰| ¦  «        } ‰t          ‰                     ¦   «         ¦  «        dk    rdnd¦  «        } ‰
t          ‰                     ¦   «         ¦  «        dk    rdnd¦  «        }‰j        t          j        k    rt          j        |t          j        ¦  «        }‰	j        t          j        k    rt          j        |t          j        ¦  «        }t          j        t          j        |t          j        ¦  «        |¦  «        |z  }t          j        |‰¦  «        }|S )Nr3   rE  rª   )râ   rã   rÈ   r‹   r3  rY   r  r6  )r€  rÖ  rG  rH  rl  r!  r1  r  rI  r  rJ  s        €€€€€€rp   r‡  zCquantized_decomposed_dequantize_per_tensor_tensor.<locals>.inner_fn  sñ   ø€ Ø�˜SÑ!Ô!ˆØ�¥c¨%¯.ª.Ñ*:Ô*:Ñ&;Ô&;¸qÒ&@Ð&@˜d˜dÀbÑIÔIˆØ'Ð'µ°E·N²NÑ4DÔ4DÑ0EÔ0EÈÒ0JÐ0J¨¨ÐPRÑSÔSˆØŒ;�%œ-Ò'Ð'Ý”\ &­%¬-Ñ8Ô8ˆFØÔ�uœ}Ò,Ð,Ýœ, {µE´MÑBÔBˆKÝŒg•c”l 5­%¬-Ñ8Ô8¸+ÑFÔFÈÑOˆÝŒl˜3 	Ñ*Ô*ˆØˆ
rr   rˆ  r7  )rÖ  r  r  r  r  rÈ   r1  r‡  r!  rI  rJ  s    ``   ` @@@rp   Ú1quantized_decomposed_dequantize_per_tensor_tensorrN  î  sÕ  øøøøøø€ õ ˆu�~Š~ÑÔÑ Ô  AÒ%Ð%ÝˆE�NŠNÑÔÑÔ Ò"Ð" u§~¢~Ñ'7Ô'7¸Ô':¸aÒ'?Ð'?Ð'?Ø&ñ (@Ô'?ðõ ˆz×"Ò"Ñ$Ô$Ñ%Ô%¨Ò*Ð*ÝˆJ×ÒÑ!Ô!Ñ"Ô" aÒ'Ð'¨J×,?Ò,?Ñ,AÔ,AÀ!Ô,DÈÒ,IÐ,IÐ,IØ+ñ -JÔ,Iðð �?Š?ÑÔ Ò%Ð%Ð%ØT¨ÐTÐTÀÇÂÑARÔARÐTÐTñ &Ô%Ð%ð ÐÝ”Mˆ	à×$Ò$Ñ&Ô&€LØ×$Ò$Ñ&Ô&€LØ"×.Ò.Ñ0Ô0Ðð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØ×ÒÑ!Ô!ØØØ�~Š~ÑÔð	ñ ô ð rr   úlist[TensorBox]rå   ú
str | Nonec                ór  ‡— t          | ¦  «        dk     rdS | d                              ¦   «         }| dd…         D ]}||                     ¦   «         z  }Œ|sdS t          t          j        j        j        d                              ¦   «         ¦  «        }d}d}|D ]Ô}t          j                             |¦  «        }|�±t          |t          j        ¦  «        r—t          |j        t          j        ¦  «        rxt          |j                             ¦   «         ¦  «        t          |j                             ¦   «         ¦  «        z  }	t          j        j                             ||	¦  «        r|}|} nŒÕ|€dS t'          |dd¦  «        }
|
sdS t)          ¦   «         Š| D ]*}t'          |dd¦  «        }|r‰                     |¦  «         Œ+|
D ]q}|j        dk    rdt          |j        t0          j        j        ¦  «        r@t0          j        j        |j        j        v r#t=          ˆfd„|j        D ¦   «         ¦  «        s dS Œr|S )	aj  If all cat inputs share a common upstream reduction buffer whose
    only consumers feed into this cat, return its name so it can be
    excluded from the can_fuse_reduction check.

    Checks common reads for an IR reduction whose numel matches the cat
    output, then verifies via FX origins that all of the reduction's
    consumers feed into the cat inputs.r1   Nr   r3   rl  Úoriginsrg   c              3  ó    •K  — | ]}|‰v V — Œ	d S r»   rª   )r­   ÚuÚcat_input_originss     €rp   r  z2_cat_inputs_recombine_reduction.<locals>.<genexpr>h  s)   øè è € ÐEÐE°1˜Ð.Ð.ÐEÐEÐEÐEÐEÐErr   ) râ   Úget_read_namesrK   rZ   rh   ri   r�  ÚnumelÚtry_get_bufferry   r6   r'  r{   rE   rW   rã   Úget_reduction_sizerü   rÇ  r½  r)   rµ   rk   rl   r‹   rŒ   r�   r–   Ú	reductionÚtagsrE  rj   )r[  rå   Úcommon_readsrß   Úcat_out_numelÚreduction_nameÚreduction_bufrö   ÚbufÚreduction_numelrR  Úinp_originsÚoriginrU  s                @rp   Ú_cat_inputs_recombine_reductionrd     sU  ø€ õ ˆ6�{„{�Q‚€Øˆtà˜!”9×+Ò+Ñ-Ô-€LØ�a�b�bŒzð ;ð ;ˆØ# c×&8Ò&8Ñ&:Ô&:Ñ:ˆˆØð Øˆtõ +­1¬7Ô+?Ô+DÀUÔ+K×+QÒ+QÑ+SÔ+SÑTÔT€MØ€NØ€MØð ð ˆÝŒg×$Ò$ TÑ*Ô*ˆàˆOÝ˜3¥Ô 1Ñ2Ô2ð å˜3œ8¥R¤\Ñ2Ô2ð õ ,¨C¬H×,=Ò,=Ñ,?Ô,?Ñ@Ô@Å=Ø”×+Ò+Ñ-Ô-ñDô Dñ ˆOõ ŒwÔ×7Ò7¸ÀÑWÔWð Ø!%�Ø #�Ø�øàÐØˆtõ  �m Y°Ñ5Ô5€GØð Øˆtå3=±<´<ÐØð 2ð 2ˆÝ˜c 9¨dÑ3Ô3ˆØð 	2Ø×$Ò$ [Ñ1Ô1Ð1øð
 ð ð ˆàŒI˜Ò(Ð(Ý˜6œ=­%¬*Ô*?Ñ@Ô@ð )å”	Ô# v¤}Ô'9Ð9Ð9ÝÐEÐEÐEÐE¸¼ÐEÑEÔEÑEÔEð :ð �4�4øàÐrr   c                óè  ‡ ‡‡‡‡‡‡‡‡‡‡‡— ‰ d                               ¦   «         j        dk    }|r�t          d„ ‰ D ¦   «         ¦  «        rt‰ D ]}|                     ¦   «          Œt          d„ ‰ D ¦   «         ¦  «        rt	          t
          j        g‰ ¢R Ž \  Š } t          t
          j        j        ¦  «        ‰ |¦  «        S t          ‰ ¦  «        dk    rt          ‰ d         ¦  «        S d„ Šˆfd„‰ D ¦   «         Št          ‰¦  «        r[d„ t          ‰ ‰¦  «        D ¦   «         }|st          ‰ d         ¦  «        S t          |¦  «        dk    rt          |d         ¦  «        S |Š t          ‰ d         |d¦  «        }t          ‰ d	t          j        iŽŠˆfd
„‰ D ¦   «         Š d!d„Šd„ Št#          ¦   «         fd"ˆˆˆfd„Št%          ‰ |¦  «        }|rt#          |g¦  «        nt#          ¦   «         Št          ˆˆfd„‰ D ¦   «         ¦  «        }d#ˆˆfd„Št&          j        rt+          ‰ |¦  «        S |r-t-          t.          j                             ‰ |¦  «        ¦  «        S ˆˆfd„ŠdŠd$d„Št          ‰ ¦  «        t&          j        k    s9t          ‰ ¦  «        t&          j        k    r©t          ˆˆfd„‰ D ¦   «         ¦  «        r�t          ˆfd„t8          j        j        D ¦   «         ¦  «        }t          ˆfd„‰ D ¦   «         ¦  «        o|}	d#ˆ ˆˆfd„}
 |
¦   «         }t          ˆfd „‰ D ¦   «         ¦  «        o| }|s|	s|rt+          ‰ |¦  «        S t-          t.          j                             ‰ |¦  «        ¦  «        S )%z@Lower aten.cat, choosing between pointwise_cat and ConcatKernel.r   rú   c              3  ón   K  — | ]0}|                      ¦   «         t          j        t          j        fv V — Œ1d S r»   )rÓ   r‹   Úint8Úuint8©r­   rÖ  s     rp   r  zcat.<locals>.<genexpr>s  sK   è è € ð ð Ø;@ˆ�ŠÑÔ�eœj­%¬+Ð6Ð6ðð ð ð ð ð rr   c              3  ó`   K  — | ])}t          |                     ¦   «         ¦  «        d k    V — Œ*dS )r¿   N)râ   rã   ri  s     rp   r  zcat.<locals>.<genexpr>z  s9   è è € Ð>Ð>¨e�s�5—>’>Ñ#Ô#Ñ$Ô$¨Ò)Ð>Ð>Ð>Ð>Ð>Ð>rr   r3   c                ó¦   — |                       ¦   «         }t          |¦  «        dk    o*t          j        j                             |d         d¦  «        S ©Nr3   r   )rã   râ   rZ   rh   rü   rÇ  )r„   r  s     rp   Ú_cat_should_skipzcat.<locals>._cat_should_skipƒ  s?   € Ø�zŠz‰|Œ|ˆÝ�4‰yŒy˜AŠ~ÐV¥!¤'Ô"2×"JÒ"JÈ4ÐPQÌ7ÐTUÑ"VÔ"VÐVrr   c                ó&   •— g | ]} ‰|¦  «        ‘ŒS rª   rª   )r­   r„   rm  s     €rp   r¯   zcat.<locals>.<listcomp>‡  s%   ø€ Ð5Ð5Ð5¨Ð!Ð! !Ñ$Ô$Ð5Ð5Ð5rr   c                ó   — g | ]	\  }}|°|‘Œ
S rª   rª   )r­   r„   Úskips      rp   r¯   zcat.<locals>.<listcomp>‰  s!   € ÐLÐLÐL™g˜a ÀtÐL˜ÐLÐLÐLrr   rÝ   c                ó0   •— g | ]}t          |‰¦  «        ‘ŒS rª   ©r  )r­   rß   rÈ   s     €rp   r¯   zcat.<locals>.<listcomp>”  s#   ø€ Ð5Ð5Ð5 s�h�s˜EÑ"Ô"Ð5Ð5Ð5rr   r®   úTensorBox | ir.StorageBoxrd   ú	ir.IRNodec                óð   — t          | t          ¦  «        r?t          | j        t          j        ¦  «        r| j                             ¦   «         S | j        S t          | t          j        ¦  «        r| j        S | S r»   )ry   rG   r{   r6   r:   râ  rÿ   r×   s    rp   Úunwrap_tensorzcat.<locals>.unwrap_tensor–  se   € Ý�a�Ñ#Ô#ð 	Ý˜!œ&¥"¤+Ñ.Ô.ð Ø”v×)Ò)Ñ+Ô+Ð+à”v�å�a�œÑ'Ô'ð 	Ø”6ˆMàˆrr   c                ót   — t          | t          j        ¦  «        ot          | j        t          j        ¦  «        S r»   )ry   r6   r'  r{   rE   )r„   s    rp   Úis_reductionzcat.<locals>.is_reduction¢  s(   € Ý˜!�RÔ.Ñ/Ô/ÐTµJ¸q¼vÅrÄ|Ñ4TÔ4TÐTrr   ÚexcludeúOrderedSet[str]c                ó  •‡— t          | t          t          j        f¦  «        r ‰ ‰| ¦  «        ‰¦  «        S  ‰| ¦  «        pGt          | t          j        ¦  «        o-t          ˆˆfd„|                      ¦   «         D ¦   «         ¦  «        S )Nc              3  ór   •K  — | ]1}|‰vo( ‰t           j                             |¦  «        ‰¦  «        V — Œ2d S r»   )rZ   rh   Ú
get_buffer)r­   ÚreadÚcan_fuse_reductionry  s     €€rp   r  z2cat.<locals>.can_fuse_reduction.<locals>.<genexpr>«  sd   øè è € ð ð ð ð ˜GÐ#ð JØ&Ð&¥q¤w×'9Ò'9¸$Ñ'?Ô'?ÀÑIÔIðð ð ð ð ð rr   )ry   rG   r6   rÿ   rD   rF  rV  )r„   ry  r  rx  rv  s    `€€€rp   r  zcat.<locals>.can_fuse_reduction¥  sª   øø€ Ý�a�)¥R¤]Ð3Ñ4Ô4ð 	AØ%Ð% m m°AÑ&6Ô&6¸Ñ@Ô@Ð@àˆL˜‰OŒOð Ý˜!�Rœ\Ñ*Ô*ð Ýð ð ð ð ð ð ×,Ò,Ñ.Ô.ðñ ô ñ ô ð	
rr   c              3  ó0   •K  — | ]} ‰|‰¦  «        V — Œd S r»   rª   )r­   r„   r  ry  s     €€rp   r  zcat.<locals>.<genexpr>¸  s1   øè è € ÐKÐK¸qÐ.Ð.¨q°'Ñ:Ô:ÐKÐKÐKÐKÐKÐKrr   re   c                óD  •— t          j        | ¦  «        r9t          j        | d¬¦  «        \  }}t           j                             |¦  «         S t          | t          t           j        f¦  «        r ‰ ‰| ¦  «        ¦  «        S t          | t           j        ¦  «        rdS dS )NF)ÚfreezeT)	r6   rã  rä  ÚConcatKernelÚcan_realize_into_without_copyry   rG   rÿ   rD   )r®   rí  rÑ  Úshould_lower_cat_inputrv  s      €€rp   r…  z#cat.<locals>.should_lower_cat_inputº  s�   ø€ õ Ô# AÑ&Ô&ð 	NÝÔ1°!¸EÐBÑBÔB‰JˆG�QÝ”×DÒDÀWÑMÔMÐMÐMå�a�)¥R¤]Ð3Ñ4Ô4ð 	<Ø)Ð)¨-¨-¸Ñ*:Ô*:Ñ;Ô;Ð;å�a�œÑ&Ô&ð 	Ø�4àˆurr   c                ó`  •— t          | t          t          j        f¦  «        r ‰ ‰| ¦  «        ¦  «        S t          | t          j        ¦  «        sdS |                      ¦   «         j        }|                      ¦   «         D ]-}| ‰t          j	         
                    |¦  «        ¦  «        z  }Œ.|S r;  )ry   rG   r6   rÿ   rD   Úinner_fn_opcountÚnum_opsrV  rZ   rh   r}  )r®   Úcountr~  Úop_countrv  s      €€rp   rŠ  zcat.<locals>.op_countÑ  s«   ø€ Ý�a�)¥R¤]Ð3Ñ4Ô4ð 	.Ø�8˜M˜M¨!Ñ,Ô,Ñ-Ô-Ð-õ ˜!�Rœ\Ñ*Ô*ð 	Ø�1à×"Ò"Ñ$Ô$Ô,ˆØ×$Ò$Ñ&Ô&ð 	8ð 	8ˆDØ�X�X�aœg×0Ò0°Ñ6Ô6Ñ7Ô7Ñ7ˆEˆEàˆrr   r1   rk   r3  c                óJ   — | t           j        j        t           j        j        fv S r»   )r  Úcatr  Úconstant_pad_nd©rk   s    rp   Úadditional_pointwise_opsz%cat.<locals>.additional_pointwise_opsã  s   € Ø•d”hÔ&­Ô(<Ô(DÐEÐEÐErr   c              3  ó6   •K  — | ]} ‰|¦  «        ‰k    V — Œd S r»   rª   )r­   r„   ÚMAX_SIMPLE_OP_COUNTrŠ  s     €€rp   r  zcat.<locals>.<genexpr>è  s1   øè è € ÐCÐC°q��˜‘”Ð2Ò2ÐCÐCÐCÐCÐCÐCrr   c              3  ó8   •K  — | ]}t          |‰¦  «        V — Œd S r»   ©rP   )r­   Úuser�  s     €rp   r  zcat.<locals>.<genexpr>ê  sB   øè è € ð 
ð 
àõ ˜SÐ":Ñ;Ô;ð
ð 
ð 
ð 
ð 
ð 
rr   c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S r»   rª   ©r­   rß   r…  s     €rp   r  zcat.<locals>.<genexpr>ñ  ó/   øè è € Ð>Ð>°Ð&Ð& sÑ+Ô+Ð>Ð>Ð>Ð>Ð>Ð>rr   c                 ó  •‡‡— t           j        Š‰€dS ‰j        d         } t          | t          t
          f¦  «        r| }n%t          | t          j        j        ¦  «        r| g}ndS t          ‰¦  «        rd„ t          |‰¦  «        D ¦   «         }ˆˆfd„Št          |‰¦  «        D ]_\  }}t          |d¦  «        rt          |j        ¦  «        dk    rŒ.t          ˆfd„|j        D ¦   «         ¦  «        r dS  ‰|¦  «        r dS Œ`dS )	NFr   c                ó   — g | ]	\  }}|°|‘Œ
S rª   rª   )r­   r'  rp  s      rp   r¯   z>cat.<locals>.any_input_has_multi_consumers.<locals>.<listcomp>	  s"   € ÐXÐXÐX¡W Q¨ÐSWÐX˜qÐXÐXÐXrr   c                ó¢   •— t          | t          t          j        f¦  «        r ‰ ‰| ¦  «        ¦  «        S t          | t          j        ¦  «        S r»   )ry   rG   r6   rÿ   rD   )r®   Úis_unrealized_pointwiserv  s    €€rp   r›  zKcat.<locals>.any_input_has_multi_consumers.<locals>.is_unrealized_pointwise
	  sJ   ø€ Ý˜a¥)­R¬]Ð!;Ñ<Ô<ð EØ2Ð2°=°=ÀÑ3CÔ3CÑDÔDÐDÝ! !¥R¤\Ñ2Ô2Ð2rr   rj   r3   c              3  ó>   •K  — | ]}|‰u¯t          |¦  «        V — Œd S r»   r“  )r­   rT  ri   s     €rp   r  z=cat.<locals>.any_input_has_multi_consumers.<locals>.<genexpr>	  s6   øè è € ÐWÐW¨qÀÈ,ÐAVÐAVÕ'¨Ñ*Ô*ÐAVÐAVÐAVÐAVÐWÐWrr   T)rZ   ri   r�   ry   rw   r±   r‹   ÚfxÚNoderF  r,  r  râ   rj   )	Úfx_argsÚinput_nodesrè   Úir_inputri   r›  r[  Ú	skip_maskrv  s	       @@€€€rp   Úany_input_has_multi_consumersz*cat.<locals>.any_input_has_multi_consumersû  sK  øøø€ Ýœ>ˆLØÐ#Ø�uØ"Ô'¨Ô*ˆGÝ˜'¥D­% =Ñ1Ô1ð Ø%��Ý˜G¥U¤X¤]Ñ3Ô3ð Ø&˜i��à�uå�9‰~Œ~ð YØXÐXµ°KÀÑ0KÔ0KÐXÑXÔX�ð3ð 3ð 3ð 3ð 3ð 3õ
 "% [°&Ñ!9Ô!9ð  ð  ‘��XÝ˜s GÑ,Ô,ð µ°C´I±´À!Ò0CÐ0CØõ ÐWÐWÐWÐW°C´IÐWÑWÔWÑWÔWð  Ø˜4˜4ð +Ð*¨8Ñ4Ô4ð  Ø˜4˜4ð à�5rr   c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S r»   rª   r–  s     €rp   r  zcat.<locals>.<genexpr> 	  r—  rr   )r®   rs  rd   rt  )ry  rz  ©rd   re   ©rk   r3  )r|   rþ   rE  râ  Úrequire_channels_lastr  rŒ  r  r  râ   rð  rF  r,  rÄ  rì   r   rr  r)   rd  r4   Úforce_pointwise_catr
  rG   r6   rƒ  r  Ú max_complex_pointwise_cat_inputsÚmax_pointwise_cat_inputsrZ   ri   rj   )r[  rå   Ú
cpu_devicerÖ  rÑ  Úvalid_inputsÚ
recombinedÚfusable_reductionÚpointwise_usesÚfuse_pointwise_user£  Úhas_multi_consumersÚhorizontal_fuse_catr‘  rm  r�  r  rÈ   ry  rx  rŠ  r…  r¢  rv  s   `            @@@@@@@@@@@rp   rŒ  rŒ  o  s°  øøøøøøøøøøøø€ ð ˜”×%Ò%Ñ'Ô'Ô,°Ò5€JØð 	?•cð ð ØDJðñ ô ñ ô ð 	?ð
 ð 	ð 	ˆEØ�MŠM‰OŒOˆOˆOÝÐ>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ð 	AÝ-­d¬hÐ@¸Ð@Ð@Ð@‰IˆF�AØ1Õ¥¤Ô 0Ñ1Ô1°&¸#Ñ>Ô>Ð>å
ˆ6�{„{�aÒÐÝ�V˜A”YÑÔÐðWð Wð Wð 6Ð5Ð5Ð5¨fÐ5Ñ5Ô5€IÝ
ˆ9�~„~ð ØLÐL­¨V°YÑ)?Ô)?ÐLÑLÔLˆØð 	$Ý˜ œÑ#Ô#Ð#Ýˆ|ÑÔ Ò!Ð!Ý˜ aœÑ)Ô)Ð)Øˆå
˜˜qœ	 3¨Ñ
*Ô
*€CÝØ	ðÝ%DÔ%Lðð €Eð 6Ð5Ð5Ð5¨fÐ5Ñ5Ô5€Fð
ð 
ð 
ð 
ðUð Uð Uõ :D¹¼ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ" 1°¸Ñ=Ô=€JØ;EÐW�z¨:¨,Ñ7Ô7Ð7Í:É<Ì<€GÝÐKÐKÐKÐKÐKÀFÐKÑKÔKÑKÔKÐðð ð ð ð ð ð õ Ô!ð *Ý˜V SÑ)Ô)Ð)ð ð >Ý�œ×/Ò/°¸Ñ<Ô<Ñ=Ô=Ð=ðð ð ð ð ð ð  ÐðFð Fð Fð Fõ ˆ6�{„{•fÔ=Ò=Ð=Ý	ˆV‰Œ�Ô7Ò	7Ð	7ÝÐCÐCÐCÐCÐC¸FÐCÑCÔCÑCÔCð 
8õ ð 
ð 
ð 
ð 
å”~Ô+ð
ñ 
ô 
ñ 
ô 
ˆõ Ð>Ð>Ð>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ÐQÀ>ð 	ð 	ð  	ð  	ð  	ð  	ð  	ð  	ð  	ðD <Ð;Ñ=Ô=Ðõ Ð>Ð>Ð>Ð>°vÐ>Ñ>Ô>Ñ>Ô>ÐXÐGXÐCXð 	ð #ð 	.Ð(:ð 	.Ð>Qð 	.Ý  ¨Ñ-Ô-Ð-å•R”_×+Ò+¨F°CÑ8Ô8Ñ9Ô9Ð9rr   rÍ  Údim1Údim2c                ó‚  ‡‡‡‡	‡
— |                       ¦   «         Š
t          ‰
¦  «        Š	t          ‰‰	¬¦  «        Št          ‰‰	¬¦  «        Št          ‰‰k    ˆˆfd„¦  «         t          j        j                             t          j	        |d¦  «        ¦  «        }|rXt          j        j         
                    t          j        j                             ‰
‰         |z   ‰
‰         ¦  «        d¦  «        }nWt          j        j         
                    t          j        j                             ‰
‰         ‰
‰         |z
  ¦  «        d¦  «        }dŠ|r| dfŠnd|fŠˆˆfd„t          ‰
¦  «        D ¦   «         }|                     |¦  «         ˆˆˆˆ	ˆ
fd„}t          t          j                             | ||¦  «        ¦  «        S )N)r€  Úrankc                 ó   •— d‰ › d‰› �S )Nz(diagonal dimensions cannot be identical z, rª   )r³  r´  s   €€rp   rp  zdiagonal.<locals>.<lambda>1	  s   ø€ ÐWÈÐWÐWÐQUÐWÐW€ rr   r   )r   r   c                ó&   •— g | ]\  }}|‰‰fv¯|‘ŒS rª   rª   )r­   r€   rf  r³  r´  s      €€rp   r¯   zdiagonal.<locals>.<listcomp>L	  s+   ø€ ÐNÐNÐN‘4�1�a¸À$ÈÀÐ8MÐ8MˆQÐ8MÐ8MÐ8Mrr   c                ó
  •— | d         }dgt          ‰	¦  «        z  }d}t          ‰¦  «        D ]<}|‰k    r|‰d         z   ||<   Œ|‰k    r|‰d         z   ||<   Œ,| |         ||<   |dz  }Œ=|t          ‰	¦  «        dz
  k    sJ ‚|S )Nr¨  r   r3   r1   )râ   r-  )
r€  Údiag_idxÚoriginal_idxÚcur_dimra  Úbase_idxr³  r´  Únum_dimsÚoriginal_shapes
        €€€€€rp   Ú	reindexerzdiagonal.<locals>.reindexerO	  s°   ø€ Ø�r”7ˆØ�s�S Ñ0Ô0Ñ0ˆØˆÝ�x‘”ð 	ð 	ˆAØ�DŠyˆyØ"*¨X°a¬[Ñ"8�˜Q‘�Ø�d’�Ø"*¨X°a¬[Ñ"8�˜Q‘�à"% g¤,�˜Q‘Ø˜1‘��à�#˜nÑ-Ô-°Ñ1Ò1Ð1Ð1Ð1ØÐrr   )rã   râ   r   r   rZ   rh   rü   Úevaluate_exprrÔ   r½  Úevaluate_maxÚevaluate_minrx   r}   rG   r6   ÚGenericViewr  )rÖ  rÍ  r³  r´  Úoffset_negativeÚ	diag_sizerX  rÀ  r½  r¾  r¿  s     ``    @@@rp   ÚdiagonalrÇ  )	  så  øøøøø€ à—^’^Ñ%Ô%€NÝ�>Ñ"Ô"€HÝ ¨8Ð4Ñ4Ô4€DÝ ¨8Ð4Ñ4Ô4€Då	Ø�ŠÐWÐWÐWÐWÐWñô ð õ ”gÔ&×4Ò4µU´X¸fÀaÑ5HÔ5HÑIÔI€OØð 
Ý”GÔ$×1Ò1ÝŒGÔ×)Ò)Ø˜tÔ$ vÑ-Ø˜tÔ$ñô ð ñ
ô 
ˆ	ˆ	õ ”GÔ$×1Ò1ÝŒGÔ×)Ò)Ø˜tÔ$Ø˜tÔ$ vÑ-ñô ð ñ
ô 
ˆ	ð €HØð Ø�G˜Q�<ˆˆà�v�;ˆàNÐNÐNÐNÐN�9 ^Ñ4Ô4ÐNÑNÔN€EØ	‡L‚L�ÑÔÐðð ð ð ð ð ð ð ð õ  •R”^×*Ò*¨5°%¸ÑCÔCÑDÔDÐDrr   c                ó@   — t          t          | |||¦  «        ¦  «        S r»   )rð  rÇ  )rÖ  rÍ  r³  r´  s       rp   Údiagonal_copyrÉ  b	  s   € å•˜% ¨¨tÑ4Ô4Ñ5Ô5Ð5rr   c                óh   — t          | ¦  «        }t          ||||¦  «        }t          ||¦  «         |S r»   )rð  rÇ  Ú	mutate_to)rÖ  ÚsrcrÍ  r³  r´  rX  rl   s          rp   Údiagonal_scatterrÍ  g	  s5   € å�5‰\Œ\€FÝ�f˜f d¨DÑ1Ô1€FÝˆf�cÑÔÐØ€Mrr   c                óÌ  — t          j        |¦  «        }t          j        |                      ¦   «         |         ¦  «        }d }t          j        j                             t          j        |d¦  «        ¦  «        r||z   }n9t          j        j                             t          j        |d¦  «        ¦  «        r|}|�±t          |¦  «        r{|  
                    ¦   «          |                      ¦   «         }|                      ¦   «         }|                      ¦   «         j        ||         |z  z   }||= ||= t          | |||d¬¦  «        S t          | |||dz   d¬¦  «        }t!          ||¦  «        S t#          t          j        j        j        t          j        j        j        d         ¦  «        }	|	€J ‚t+          |	¦  «        dk    s
J |	¦   «         ‚t-          t/          |	                     ¦   «         ¦  «        ¦  «        \  }
}|  
                    ¦   «          |                      ¦   «         }|                      ¦   «         }|
}t3          j        |
||                      ¦   «         j        ||         |                      ¦   «         |         d¬¦  «        }t          j                             |¦  «        |_        t          j                             |¦  «         ||= ||= t          | |||d¬¦  «        S )Nr   FrÂ  r3   rÀ  r¤  )rÔ   rU  rã   rZ   rh   rü   rb  r½  r»  r&   râ  rÎ  rÌ  rÍ  rÐ  rÙ  rg  r'   r¨  ri   r�  râ   rs  Úiterr&  r6   rÏ  r«  rö   r¬  )r®   rå   r€  r  Úactual_indexrš  Ú
new_striderÕ  Úslice_resultr¤  Úunbacked_offset_symrÑ  Úbuffers                rp   ÚselectrÕ  o	  s¯  € å
Œ,�sÑ
Ô
€CÝŒ<˜Ÿ
š
™œ SÔ)Ñ*Ô*€DØ€Lå„wÔ×&Ò&¥u¤x°°QÑ'7Ô'7Ñ8Ô8ð Ø˜T‘zˆˆÝ	
ŒÔ	×	(Ò	(­¬°#°qÑ)9Ô)9Ñ	:Ô	:ð ØˆàÐÝ$ SÑ)Ô)ð 	.ð �IŠI‰KŒKˆKØ—z’z‘|”|ˆHØŸš™œˆJØ!"§¢¡¤Ô!6¸ÀC¼È<Ñ9WÑ!WÐà˜�Ø˜3�ÝØØØØ"Ø9>ðñ ô ð õ " ! S¨,¸ÀqÑ8HÐPUÐVÑVÔVˆLÝ˜<¨Ñ-Ô-Ð-õ 2Ý	ŒÔÔ"¥A¤GÔ$8Ô$=Ð>QÔ$Rñô Ðð Ð(Ð(Ð(ÝÐ Ñ!Ô! QÒ&Ð&Ð&Ð(9Ñ&Ô&Ð&Ý!¥$Ð'8×'>Ò'>Ñ'@Ô'@Ñ"AÔ"AÑBÔBÑÐ˜ð ‡I‚I�K„K€KØ�zŠz‰|Œ|€HØ—’‘”€JØ,ÐÝÔ*ØØØ	�Š‰ŒÔØ�3ŒØ	�
Š
‰Œ�SÔØðñ ô €Fõ ”'×)Ò)¨&Ñ1Ô1€F„KÝ„G×Ò˜vÑ&Ô&Ð&à�ˆØ�3ˆÝØ	ØØØØ16ðñ ô ð rr   c           
     ó˜  — t          | |d¦  «        }|}t          |t          t          f¦  «        sãt          j        j        }|                     |d¦  «        rt          d|› �¦  «        ‚|  	                    ¦   «         |         }| 
                    |d¦  «        rt          | |ddd¬¦  «        gS | 
                    |d¦  «        rt          d|› �¦  «        ‚|                     t          ||z   dz
  |¦  «        ¦  «        }|g|z  }||dz
  |z  z
  |d<   g }d}|D ]0}	||	z   }
|                     t          | |||
d¬¦  «        ¦  «         |
}Œ1|S )Nr   z=split expects split_size be non-negative, but got split_size=FrÀ  zKsplit_size can only be 0 if dimension size is 0, but got dimension size of r3   r¨  )rÄ  ry   rw   r±   rZ   rh   rü   Ústatically_known_ltÚRuntimeErrorrã   rÇ  rÙ  r_  r+   r}   )r®   rX  rå   Úsizes_rü   Úx_sizeÚchunksrí  r­  r  r®  s              rp   ÚsplitrÜ  ¼	  s–  € å
˜˜3 Ñ
"Ô
"€CØ€Fõ �e�d¥E˜]Ñ+Ô+ð 3Ý”7Ô#ˆØ×'Ò'¨¨qÑ1Ô1ð 	ÝØWÐPUÐWÐWñô ð ð —’‘”˜cÔ"ˆØ×+Ò+¨F°AÑ6Ô6ð 	7Ý˜1˜c 1 a¨uÐ5Ñ5Ô5Ð6Ð6à×+Ò+¨E°1Ñ5Ô5ð 	Ýð6Ø-3ð6ð 6ñô ð ð
 ×#Ò#¥H¨V°e©^¸aÑ-?ÀÑ$GÔ$GÑHÔHˆØ�˜6Ñ!ˆà˜v¨™z¨UÑ2Ñ2ˆˆr‰
ð €FØ€EØð ð ˆØ�d‰lˆð 	�Š•f˜Q  U¨C°uÐ=Ñ=Ô=Ñ>Ô>Ð>ØˆˆØ€Mrr   c                ó$   — t          | ||¦  «        S r»   )rÜ  )r®   rX  rå   s      rp   Úsplit_with_sizesrÞ  æ	  s   € å��E˜3ÑÔÐrr   c                óÜ   ‡ ‡— t          ‰ ‰d¦  «        Št          j        j                             ‰                      ¦   «         ‰         ¦  «        }ˆˆ fd„t          |¦  «        D ¦   «         }|S )Nr   c                ó2   •— g | ]}t          ‰‰|¦  «        ‘ŒS rª   )rÕ  )r­   r€   rå   r®   s     €€rp   r¯   zunbind.<locals>.<listcomp>ï	  s%   ø€ Ð7Ð7Ð7 A�f�Q˜˜QÑÔÐ7Ð7Ð7rr   )rÄ  rZ   rh   rü   r_  rã   r-  )r®   rå   rÚ  rí  s   ``  rp   Úunbindrá  ë	  sa   øø€ å
˜˜3 Ñ
"Ô
"€CÝŒWÔ×'Ò'¨¯
ª
©¬°SÔ(9Ñ:Ô:€FØ7Ð7Ð7Ð7Ð7­¨v©¬Ð7Ñ7Ô7€FØ€Mrr   c                ó´  ‡‡— |                       ¦   «         }t          |¦  «        }t          ||¦  «        Š|dk    r t          t	          | d¦  «        |d¬¦  «        S |‰         }t
          j        j        }|                     ||¦  «         | 	                    d‰¦  «         t          ||z
  ‰¦  «        dz   }|                     |¦  «        dk    r9|                      |                     t          ||z  |¦  «        ¦  «        ¦  «         g |d ‰…         ¢|‘|‰dz   d …         ¢|‘}	ˆˆfd„}
t          t          j                             | |	|
¦  «        ¦  «        S )Nr   F)r®  rÁ  r3   c                ód   •— | d         | ‰         ‰z  z   }g | d ‰…         ¢|‘| ‰dz   d…         ¢R S )Nr¨  r3   rª   )r€  Údim_idxrå   r¯  s     €€rp   rÀ  zunfold.<locals>.reindexer	
  sF   ø€ Ø�b”'˜C œH t™OÑ+ˆØ8��T�c�T”Ð8˜GÐ8 c¨#°©'°B¨,Ô&7Ð8Ð8Ð8rr   )rã   râ   r   rÙ  r‰  rZ   rh   rü   Ú	check_leqÚcheck_ltr+   r‚  rƒ  r*   rG   r6   rÄ  r  )r®   Ú	dimensionr  r¯  rX  ÚndimÚdim_sizerü   Únew_dim_sizeÚout_sizerÀ  rå   s      `       @rp   Úunfoldrì  ó	  sj  øø€ à�JŠJ‰LŒL€EÝˆu‰:Œ:€DÝ
˜4 Ñ
+Ô
+€Càˆq‚y€yÝ•i  1‘o”o¨4°uÐ=Ñ=Ô=Ð=à�SŒz€HÝŒwÔ€HØ×Ò�t˜XÑ&Ô&Ð&Ø×Ò�a˜ÑÔÐå˜H t™O¨TÑ2Ô2°QÑ6€LØ×&Ò& xÑ0Ô0°1Ò4Ð4Ø	�ŠØ×+Ò+­G°LÀ4Ñ4GÈÑ,RÔ,RÑSÔSñ	
ô 	
ð 	
ð E��t˜�t”ÐD˜lÐD¨U°3¸±7°9°9Ô-=ÐD¸tÐD€Hð9ð 9ð 9ð 9ð 9ð 9õ •R”^×*Ò*¨1¨h¸	ÑBÔBÑCÔCÐCrr   c                óÐ   — t          | |d¦  «        }t          |                      ¦   «         ¦  «        }|                     |t          j        j        ¦  «         t          | |¦  «        S r@  )rÄ  rw   rã   ÚinsertrÔ   rQ  rR  r  )r®   rå   re  s      rp   r‰  r‰  
  sR   € å
˜˜3 Ñ
"Ô
"€CÝ�Q—Z’Z‘\”\Ñ"Ô"€IØ×Ò�S�%œ'œ+Ñ&Ô&Ð&Ý��9ÑÔÐrr   c                óš   — t          | |¦  «        }t          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚|j        | _        | S r»   )r‰  ry   rG   r{   rk  s      rp   Ú
unsqueeze_rð  
  sK   € å
�A�sÑ
Ô
€CÝ�a�Ñ#Ô#Ð#Ð#Ð#Ý�c�9Ñ%Ô%Ð%Ð%Ð%ØŒX€A„FØ€Hrr   c                ó  — t           j        j        j                             t          j        |¦  «        ¦  «        }t          |                      ¦   «         ¦  «        }|dk     r|||z   z  }d|cxk    r	||z   k     sn J ‚|S r;  )	rZ   rh   rü   r¨  rÁ  rÔ   Úsympifyrâ   rã   )r®   rå   rÍ  rè  s       rp   rÄ  rÄ  !
  s�   € Ý
Œ'Ô
Ô
$×
2Ò
2µ5´=ÀÑ3EÔ3EÑ
FÔ
F€CÝˆq�zŠz‰|Œ|ÑÔ€DØ
ˆQ‚w€wØˆt�f‰}ÑˆØ�Ð#Ð#Ò#Ð#�d˜V‘mÒ#Ð#Ð#Ð#Ð#Ð#Ø€Jrr   r¨  c                ó2  — t          | |d¦  «        }t          j        j                             |                      ¦   «         |         ¦  «        dz  }t          | |d|d¬¦  «        }t          | |||dz  d¬¦  «        }t          |t          |¦  «        ¦  «        S )Nr   r1   FrÀ  )	rÄ  rZ   rh   rü   r_  rã   rÙ  r¼  Úsigmoid)r®   rå   Únew_lenr  rW  s        rp   Úglurö  *
  s‡   € å
˜˜3 Ñ
"Ô
"€CåŒgÔ×(Ò(¨¯ª©¬°cÔ):Ñ;Ô;¸qÑ@€Gåˆq�#�q˜'¨Ð/Ñ/Ô/€AÝˆq�#�w ¨!¡°5Ð9Ñ9Ô9€AÝˆq•'˜!‘*”*ÑÔÐrr   c                óX   ‡ — |rt                                ‰ ¦  «         ˆ fd„}d|_        |S )Nc                 ód   •— d„ }t          j        |t          j        j        ‰g| ¢R i |¤Ž¦  «        S )Nc                ób   — t          | t          j        ¦  «        r|                      ¦   «         n| S r»   ©ry   r6   r>   Úwrap_for_loweringr×   s    rp   Úwrap_tensorsz7fallback_handler.<locals>.handler.<locals>.wrap_tensors:
  ó*   € Ý,6°q½"¼)Ñ,DÔ,DÐK�1×&Ò&Ñ(Ô(Ð(È!ÐKrr   )r‘  Útree_mapr6   ÚFallbackKernelr  )r�   r  rü  Úkernels      €rp   Úhandlerz!fallback_handler.<locals>.handler9
  sN   ø€ ð	Lð 	Lð 	Lõ ŒØ�"Ô+Ô2°6ÐK¸DÐKÐKÐKÀFÐKÐKñ
ô 
ð 	
rr   T)rC  r³   Ú_is_fallback_handler)r   r  r  s   `  rp   r  r  5
  sE   ø€ Øð Ý�Š�fÑÔÐð
ð 
ð 
ð 
ð 
ð $(€GÔ à€Nrr   c                 ó.   — t          j        d¦  «         d S )NzjTorchinductor does not support code generation for complex operators. Performance may be worse than eager.)ÚwarningsÚwarnrª   rr   rp   Ú_warn_complex_not_supportedr  G
  s#   € å„MØtñô ð ð ð rr   r„   útorch.Tensorc                óH  — |                       ¦   «         rt          ¦   «          dS | j        rdS | j        rdS t	          | j        | j        ¦  «        sdS | j        t          j        k    rº|sdS t          |j
        t          j        j        ¦  «        rY|j
        t          j        j        t          j        j        t          j        j        t          j        j        t          j        j        fv p7t          |j
        t          j        j        ¦  «        ot)          |j
        ¦  «         S dS )z0Do not support reading or writing to this tensorTF)r  r  Úis_metaÚ	is_sparserQ   rÈ   rƒ   r‹   Úfloat8_e8m0fnury   rl   rŒ   r�   r  r  rŒ  r  rð  Ú
_scaled_mmÚ_scaled_mm_v2rR   )r„   rn   s     rp   Úunsupported_input_tensorr  P
  s  € à‡|‚|�~„~ð å#Ñ%Ô%Ð%Øˆtà„yð Øˆtà„{ð Øˆtå(¨¬°!´(Ñ;Ô;ð Øˆtà„w•%Ô&Ò&Ð&Øð 	Ø�4õ
 �t”{¥E¤JÔ$9Ñ:Ô:ð Ø”å”	”Ý”Ô Ý”
Ô"Ý”Ô'ÝÔ"Ô*ððð	Yõ ˜4œ;­¬
Ô(=Ñ>Ô>ÐWÅ7È4Ì;ÑCWÔCWð
ð 	
ð ˆ5rr   c                óæ   — t           j        j        t          j        j        j        j        f}|�|j        |v r|  	                    ¦   «         rdS t          | |¦  «        rdS | j        ot          j        S )z2Do not support writing tensor but can read from itNFT)r  r  rÈ   r‹   rY   r  r  r  rl   r  r  Úis_cpur4   Údisable_cpp_codegen)r„   rn   Úsupported_complex_viewss      rp   Úunsupported_output_tensorr  v
  sn   € õ 	Œ	ŒÝŒ	ŒÔ,Ô4ðÐð Ð˜DœKÐ+BÐBÐBÀqÇ|Â|Á~Ä~ÐBØˆuÝ  4Ñ(Ô(ð ØˆtØŒ8Ð2�Ô2Ð2rr   útorch.fx.Nodec                ó  ‡ — ‰ j         t          j        j        u rdS ‰ j        dk    rdS ‰ j         t          j        j        u rdS ˆ fd„}t          j        ‰ j        i ‰ j	        ¤ŽD ]} ||d¬¦  «        r dS Œ |‰ d¬¦  «        S )NFÚplaceholderc                ó6  •— t          | t          j        j        ¦  «        sdS d| j        vrdS t          j        | j        d         ¦  «        D ]K}t          |t          j        j        ¦  «        sŒ"|rt          |‰¦  «        r dS Œ8t          |‰¦  «        r dS ŒLdS )NFrl  T)ry   r‹   r�  rž  r�  r‘  r’  Ú_subclassesÚ
FakeTensorr  r  )Úinp_out_nodeÚ	is_outputr�  rn   s      €rp   Úcheck_skip_conditionzCfallback_node_due_to_unsupported_type.<locals>.check_skip_condition�
  s»   ø€ Ý˜,­¬¬Ñ6Ô6ð 	Ø�5à˜Ô)Ð)Ð)Ø�5åÔ& |Ô'8¸Ô'?Ñ@Ô@ð 		 ð 		 ˆDÝ˜d¥EÔ$5Ô$@ÑAÔAð Øàð  Ý,¨T°4Ñ8Ô8ð  Ø˜4˜4ð õ ,¨D°$Ñ7Ô7ð  Ø˜4˜4ð ð ˆurr   )r  T)
rl   r  Úview_as_complexr  rk   Úlift_fresh_copyr‘  Úarg_tree_leavesr�   r  )rn   Úallow_cpu_inputsr  rè   s   `   rp   Ú%fallback_node_due_to_unsupported_typer!  ƒ
  sÁ   ø€ à„{•dÔ*Ô2Ð2Ð2Øˆuà„w�-ÒÐØˆuð „{•dÔ*Ô2Ð2Ð2Øˆuðð ð ð ð õ* Ô% t¤yÐ@°D´KÐ@Ð@ð ð ˆØÐ ¨uÐ5Ñ5Ô5ð 	Ø�4�4ð	ð  Ð °Ð5Ñ5Ô5Ð5rr   c                ó  ‡— |�
 |¦   «         nt           }| |vs|sJ d| › �¦   «         ‚|r°t          t          j        d¦  «        ¦  «        r�t	          | g¦  «        rt
          j        r| t          j        j	        j
        v s[|sYt          j        j        j        r0dt          j        j        _        t                               d¦  «         t          d| › d�¦  «        ‚ˆfd„}t!          | t          j        j        ¦  «        r$|                      ¦   «         D ]} ||¦  «         Œd S t!          | t          j        j        t          j        j        f¦  «        r || ¦  «         d S t-          d| › d	t/          | ¦  «        › �¦  «        ‚)
Nz*both a fallback and a decomp for same op: ÚCIFznA make_fallback error occurred in suppress_errors config, and suppress_errors is being disabled to surface it.zmake_fallback(a.  ): a decomposition exists, we should switch to it. To fix this error, either add a decomposition to core_aten_decompositions (preferred) or inductor_decompositions, and delete the corresponding `make_fallback` line. Get help from the inductor team if unsure, don't pick arbitrarily to unblock yourself.c                ó”   •— t          | ¦  «         ‰�t          | ‰¦  «          t          | d ¬¦  «        t          | ¦  «        ¦  «        S ©Nr{  )r«   r½   rL  r  )Úop_overloadÚlayout_constraints    €rp   Úregister_fallbackz(make_fallback.<locals>.register_fallbackÒ
  sU   ø€ Ý! +Ñ.Ô.Ð.ØÐ(Ý! +Ð/@ÑAÔAÐAØGÕ  À$ÐGÑGÔGÝ˜[Ñ)Ô)ñ
ô 
ð 	
rr   zUnsupported fallback z with type )r8   re   ÚosÚgetenvr9   r4   Úfallback_randomr‹   Ú_decompÚdecompositions_for_rngÚextra_random_decompsÚ_dynamoÚsuppress_errorsÚlogÚwarningrž   ry   rŒ   r´   r¶   r�   ÚHigherOrderOperatorrØ  rþ   )rk   r'  r  Úoverride_decompÚget_decomp_fnÚcheck_decompsr(  r&  s    `      rp   Úmake_fallbackr7  «
  sÔ  ø€ ð (5Ð'@�M�M‘O”O�OÅn€MØ�]Ð"Ð" oÐ"Ð"Ø9°RÐ9Ð9ñ #Ô"Ð5ð 	ð
å•”˜4‘”Ñ!Ô!ð
õ  ˜tÑ$Ô$ð
õ Ô"ð
ð •e”mÔ:ÔOÐOÐOàð Põ Œ=ÔÔ/ð 	Ø38�EŒMÔ Ô0Ý�KŠKðHñô ð õ ðf˜Rð fð fð fñ
ô 
ð 	
ð
ð 
ð 
ð 
ð 
õ �"•e”jÔ1Ñ2Ô2ð NØŸ?š?Ñ,Ô,ð 	+ð 	+ˆKØÐ˜kÑ*Ô*Ð*Ð*ð	+ð 	+å	�B�œÔ.µ´
Ô0NÐOÑ	PÔ	Pð NØÐ˜"ÑÔÐÐÐåÐL°2ÐLÐLÅ$ÀrÁ(Ä(ÐLÐLÑMÔMÐMrr   c                óP   — d}| D ]}||z  }Œt          |t          j        ¬¦  «        S )zÎ
    TorchInductor offset calculation differs from PyTorch eager offset
    calculation for random ops (tl.rand vs torch.rand). In future, we should
    strive for same impl for tl.rand and torch.rand.
    r3   rÎ   ©rm  r‹   rü  )rŠ  rW  rf  s      rp   Úphilox_rand_offsetr:  ã
  s8   € ð €EØð ð ˆØ˜‘	ˆˆÝ�%�uœ{Ð+Ñ+Ô+Ð+rr   c                óf  ‡‡	‡
‡— t          j        |‰| t           j                             | ¦  «        ¦  «                             ¦   «         Š
|                     ¦   «         Š|                     ¦   «         Š	ˆˆ	ˆ
ˆfd„}t          j        |‰|t          | ¦  «        ¬¦  «        }t          | ¦  «        }||fS )Nc                ón  •— t          j         ‰g ¦  «        t          j        ¦  «        }t          j         ‰g ¦  «        t          j        ¦  «        }t          j        t          j         ‰| ¦  «        t          j        ¦  «        |¦  «        }t          j        ||¦  «        }t          j        |‰¦  «        S r»   )rY   r  r‹   rE  r³   r}  Úrand)	rf  Úseed_index_exprÚoffset_index_exprÚrand_index_exprrí  rÈ   Úoffset_loaderÚ
random_posÚseed_loaders	        €€€€rp   r‡  zphilox_rand.<locals>.inner_fnü
  sš   ø€ õ œ, { {°2¡¤½¼ÑDÔDˆÝœL¨¨°rÑ):Ô):½E¼KÑHÔHÐåœ'ÝŒN˜:˜: eÑ,Ô,­e¬kÑ:Ô:Ð<Mñ
ô 
ˆõ ”ØØñ
ô 
ˆõ Œ|˜F EÑ*Ô*Ð*rr   rˆ  )
r6   rè  ÚFlexibleLayoutÚcontiguous_stridesÚmake_indexerrŠ  rD   r  rw   r:  )r  ÚseedrÍ  ré  rƒ   rÈ   r‡  Úrandom_values_nodeÚoffset_noderA  rB  rC  s        `   @@@rp   Úphilox_randrJ  ï
  sÖ   øøøø€ õ ”ØØØÝ
Ô×,Ò,¨TÑ2Ô2ñ	ô ÷
 ‚l�n„nð ð ×"Ò"Ñ$Ô$€KØ×&Ò&Ñ(Ô(€Mð+ð +ð +ð +ð +ð +ð +ð +õ #Ô)ØØØÝ�D‰zŒzð	ñ ô Ðõ % TÑ*Ô*€KØ˜{Ð*Ð*rr   c           	     óÔ   — t           j        rNt          j        t          j        t          j                             t          j	        j
        | ||¦  «        ¦  «        S t          d¦  «        ‚)Nz&should be handled in replace_random.py)r4   r+  r‘  rþ  rG   r  r6   rÿ  r  Únative_dropoutr  rž   )r®   ÚpÚtrains      rp   rL  rL    sY   € åÔð GÝŒÝÔÝÔ×$Ò$¥TÔ%8Ô%@À!ÀQÈÑNÔNñ
ô 
ð 	
õ
 ÐEÑFÔFÐFrr   c                ót  — t           j        s4|                      ¦   «         t          j        d¦  «        k    s
J d¦   «         ‚|                      ¦   «          t          |¦  «        dk    st          |d         t          ¦  «        rt          j
        j        nt          j
        j        }t          j        || g|¢R Ž  | S )Nrú   úTthis should be handled in decomps unless config.fallback_random or the device is CPUr   )r4   r+  r|   r‹   rƒ   râ  râ   ry   rb  r  Ú
bernoulli_ÚTensorr6   ÚInplaceBernoulliFallback)r®   r�   r&  s      rp   rQ  rQ  !  s©   € åÔ!ð  Q§\¢\¡^¤^µu´|ÀEÑ7JÔ7JÒ%JÐ%JÐ%JØ^ñ &KÔ%JÐJð ‡I‚I�K„K€Kõ ˆt‰9Œ9˜Š>ˆ>�Z¨¨Q¬µÑ7Ô7ˆ>õ 	ŒÔÐåŒ_Ô#ð õ
 Ô ¨QÐ6°Ð6Ð6Ð6Ð6Ø€Hrr   c                ó¶   — t           j        s4|                      ¦   «         t          j        d¦  «        k    s
J d¦   «         ‚t          t          | ¦  «        g|¢R Ž S )Nrú   rP  )r4   r+  r|   r‹   rƒ   rQ  rð  )r®   r�   s     rp   Úbernoulli_prU  0  sY   € åÔ!ð  Q§\¢\¡^¤^µu´|ÀEÑ7JÔ7JÒ%JÐ%JÐ%JØ^ñ &KÔ%JÐJõ •e˜A‘h”hÐ& Ð&Ð&Ð&Ð&rr   c                ó   — t           ‚r»   ©rž   )rÑ  s    rp   Ú_foobarrX  9  s   € å
Ðrr   c                ó:   — t                                d¦  «         d S )Nz1using triton random, expect difference from eager)r1  Úinfo)Úsalts    rp   Ú_warn_triton_randomr\  >  s   € å‡H‚HÐ@ÑAÔAÐAÐAÐArr   c                 óB   — t          t          j        j        ¦  «         d S r»   )r\  rZ   rh   Úcreation_timerª   rr   rp   Úwarn_triton_randomr_  C  s   € å�œÔ-Ñ.Ô.Ð.Ð.Ð.rr   )r4  c                 óè   — |                      d¦  «        �t          | i |¤ŽS t          j        s|                      d¦  «        r"|                     dd ¦  «         t          | i |¤ŽS t          d¦  «        ‚©NÚ	generatorÚ
pin_memoryz-should have been handled in replace_random.py)r�  Úfallback_rand_generatorr4   r+  rÑ  Úfallback_rand_defaultrž   ©r�   r  s     rp   r=  r=  Y  s{   € à‡z‚z�+ÑÔÐ*Ý&¨Ð7°Ð7Ð7Ð7Ý	Ô	ð 6 6§:¢:¨lÑ#;Ô#;ð 6Ø�
Š
�; Ñ%Ô%Ð%Ý$ dÐ5¨fÐ5Ð5Ð5Ý
ÐHÑ
IÔ
IÐIrr   c                 óè   — |                      d¦  «        �t          | i |¤ŽS t          j        s|                      d¦  «        r"|                     dd ¦  «         t          | i |¤ŽS t          d¦  «        ‚ra  )r�  Úfallback_randn_generatorr4   r+  rÑ  Úfallback_randn_defaultrž   rf  s     rp   Úrandnrj  c  s{   € à‡z‚z�+ÑÔÐ*Ý'¨Ð8°Ð8Ð8Ð8Ý	Ô	ð 7 6§:¢:¨lÑ#;Ô#;ð 7Ø�
Š
�; Ñ%Ô%Ð%Ý% tÐ6¨vÐ6Ð6Ð6Ý
ÐHÑ
IÔ
IÐIrr   c                ó”   — t          j        |t          j        j        j        ¦  «        }t           j                             | |¦  «        S r»   )r6   Úget_stride_orderrZ   rh   rü   r¨  r  Úrequire_stride_order)Úinput_tensorré  Ústride_orders      rp   Úinductor_force_stride_orderrp  m  s4   € åÔ& v­q¬wÔ/?Ô/IÑJÔJ€LÝŒ?×/Ò/°¸lÑKÔKÐKrr   c                ó    — t          d¦  «        ‚)Nz.should be handled in fuse_seed_creation_pass()rW  ©rƒ   s    rp   Úinductor_seedrs  s  s   € å
ÐIÑ
JÔ
JÐJrr   c                ó†   — t          ¦   «          t          j        t          j        | t          |¦  «        ¦  «        ¦  «        S r»   )r_  rG   r  r6   ÚRandomSeedsrL   )r‰  rƒ   s     rp   Úinductor_seedsrv  x  s3   € åÑÔÐÝÔ�BœN¨5µ-ÀÑ2GÔ2GÑHÔHÑIÔIÐIrr   c                óŠ   ‡ ‡— ˆˆ fd„}t          j        ‰                      ¦   «         ‰                      ¦   «         |g ¬¦  «        S )Nc                óR   •— t          j        ‰                     ¦   «         ‰¦  «        S r»   )rY   Ú	load_seedrç  )rÑ  rf  Úseedss    €€rp   r‡  z&inductor_lookup_seed.<locals>.inner_fn€  s   ø€ ÝŒ}˜UŸ^š^Ñ-Ô-¨uÑ5Ô5Ð5rr   rˆ  )rD   r  r|   rÓ   )rz  rf  r‡  s   `` rp   Úinductor_lookup_seedr{  ~  s`   øø€ ð6ð 6ð 6ð 6ð 6ð 6õ ÔØ×ÒÑ!Ô!Ø�oŠoÑÔØØð	ñ ô ð rr   c                ó,  — t          | t          j        ¦  «        st          j        | ¦  «        } | j        dk    rV| j        }|€t          j                             ¦   «         }t          j                             |¦  «        }|j        |j	        z  }nd}|}|S )Nr§  i €  )
ry   r‹   rƒ   rþ   rf  r§  Úcurrent_deviceÚget_device_propertiesÚmulti_processor_countÚmax_threads_per_multi_processor)rƒ   r€  ÚpropÚthreads_per_roundÚ_CPU_GRAIN_SIZEs        rp   Úget_threads_per_roundr„  ‹  s�   € Ý�f�eœlÑ+Ô+ð &Ý”˜fÑ%Ô%ˆà„{�fÒÐØŒlˆØˆ;Ý”*×+Ò+Ñ-Ô-ˆCåŒz×/Ò/°Ñ4Ô4ˆàÔ&¨Ô)MÑMð 	Ðð  ˆØ+ÐàÐrr   )rÍ  Úalign_dtyper  ú	list[int]rG  Úmoder…  c               ó  ‡‡
‡‡‡— t           j        rJ ‚‰dv sJ ‚g | ¢} t          j        }|                     ¦   «         }t          j        ||| t
          j                             | ¦  «        |¬¦  «         	                    ¦   «         Š
| 
                    ¦   «         Št           j        r2|j        dk    r't          |¦  «        Šdd„} ||¦  «        Šˆ
ˆˆˆfd	„}nˆˆ
ˆfd
„}t          j        |||g | ¢¬¦  «        }	|	                     ¦   «          |	S )N)r=  rj  ©rÍ  r§  ÚdtrÊ   rd   rÌ   c                ó>   — | t           j        t           j        fv rdS dS )NrÃ   r¿   )r‹   ru  rt  )rŠ  s    rp   Ú_vec_from_dtypez(inductor_random.<locals>._vec_from_dtypeµ  s    € Ø•e”m¥U¤^Ð4Ð4Ð4Ø�qØ�1rr   c           
     óÌ   •—  ‰dg¦  «        } ‰dg¦  «        }t          j        ||‰t          j         ‰| ¦  «        t          j        ¦  «        t          ‰¦  «        ¬¦  «        S )Nr   r3   )Úvec)rY   Ú
rand_eagerr}  r‹   rE  rÌ   )rf  Úrng_seedÚbase_offsetrB  rC  r‚  rŽ  s      €€€€rp   r‡  z!inductor_random.<locals>.inner_fn¼  sk   ø€ Ø"�{ A 3Ñ'Ô'ˆHØ%˜+ q cÑ*Ô*ˆKÝ”>ØØØ!Ý”˜z˜z¨%Ñ0Ô0µ%´+Ñ>Ô>Ý˜‘H”Hðñ ô ð rr   c                ó    •—  t          t          ‰¦  «         ‰g ¦  «        t          j         ‰| ¦  «        t          j        ¦  «        ¦  «        S r»   )r½  rY   r}  r‹   rE  )rf  r‡  rB  rC  s    €€€rp   r‡  z!inductor_random.<locals>.inner_fnÈ  sG   ø€ Ø%•7�3 Ñ%Ô%Ø�˜B‘”Ý”˜z˜z¨%Ñ0Ô0µ%´+Ñ>Ô>ñô ð rr   rˆ  )rŠ  rÊ   rd   rÌ   )r4   r+  r‹   r3  rv  r6   rè  rD  rE  rF  rŠ  Úalign_random_eagerrþ   r„  rD   r  râ  )r  rG  r‡  rÍ  r…  rÈ   rƒ   rŒ  r‡  rí  rB  rC  r‚  rŽ  s     `       @@@@rp   Úinductor_randomr”  Ÿ  sw  øøøøø€ õ Ô%Ð%Ð%Ð%ØÐ$Ð$Ð$Ð$Ð$ØˆTˆ7€DÝŒM€EØ×%Ò%Ñ'Ô'€FÝ”Ø��t�RÔ.×AÒAÀ$ÑGÔGÐPVðñ ô ç‚l�n„nð ð ×"Ò"Ñ$Ô$€KåÔ ð  V¤[°FÒ%:Ð%:Ý1°&Ñ9Ô9Ðð	ð 	ð 	ð 	ð
 ˆo˜kÑ*Ô*ˆð		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð 		ð	ð 	ð 	ð 	ð 	ð 	ð 	õ ÔØØØØ�ˆwð	ñ ô €Fð ‡N‚NÑÔÐØ€Mrr   r‰  ÚlowÚhighc               ój  ‡ ‡‡‡	— t           j        rJ ‚g |¢}t          j        }|                     ¦   «         }t          j        |||t
          j                             |¦  «        |¬¦  «         	                    ¦   «         Š| 
                    ¦   «         Š	ˆˆ ˆˆ	fd„}t          j        |||g |¢¬¦  «        S )Nr‰  c           	     ó  •— t          j         ‰g ¦  «        t          j         ‰| ¦  «        t          j        ¦  «        t          j        ‰t          j        ¦  «        t          j        ‰t          j        ¦  «        ¦  «        S r»   )rY   Ú	randint64r}  r‹   rE  Ú
value_exprrü  )rf  r–  r•  rB  rC  s    €€€€rp   r‡  z"inductor_randint.<locals>.inner_fné  s_   ø€ ÝŒ}ØˆK˜‰OŒOÝŒN˜:˜: eÑ,Ô,­e¬kÑ:Ô:ÝŒN˜3¥¤Ñ,Ô,ÝŒN˜4¥¤Ñ-Ô-ñ	
ô 
ð 	
rr   rˆ  )r4   r+  r‹   rü  rv  r6   rè  rD  rE  rF  rŠ  rD   r  )
r•  r–  r  rG  rÍ  rÈ   rƒ   r‡  rB  rC  s
   ``      @@rp   Úinductor_randintr›  Ü  sÞ   øøøø€ õ Ô%Ð%Ð%Ð%ØˆTˆ7€DÝŒK€EØ×%Ò%Ñ'Ô'€FÝ”Ø��t�RÔ.×AÒAÀ$ÑGÔGÐPVðñ ô ç‚l�n„nð ð ×"Ò"Ñ$Ô$€Kð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØØØØ�ˆwð	ñ ô ð rr   Útbú.tuple[str, sympy.Expr, sympy.Expr, sympy.Expr]c                óâ   — |                       ¦   «         }|                      ¦   «         }|                      ¦   «         |d         |                      ¦   «                              ¦   «         |d         fS rˆ  )rã   rÎ  rç  rÌ  Ústorage_size)rœ  r  ré  s      rp   Ú_boundaries_helperr   ù  sV   € Ø�;Š;‰=Œ=€DØ�]Š]‰_Œ_€Fà
�Š‰ŒØˆRŒØ
�Š‰Œ×$Ò$Ñ&Ô&ØˆrŒ
ð	ð rr   c                óZ   — t          t          j                             | ¦  «        ¦  «        S r»   )rG   r6   r  Úrealize_input©rœ  s    rp   Ú _realize_bucketize_lookup_tensorr¤    s"   € õ •R”_×2Ò2°2Ñ6Ô6Ñ7Ô7Ð7rr   útuple[str, sympy.Expr]c                ó^   — |                       ¦   «         |                      ¦   «         d         fS rˆ  )rç  rÎ  r£  s    rp   Ú_sorter_helperr§  
  s"   € Ø�;Š;‰=Œ=˜"Ÿ-š-™/œ/¨"Ô-Ð-Ð-rr   rf  Úindex_dtypec           
     ól  — |                       ¦   «         }|                      ¦   «         j        t          d„ t	          |d d…         |d d…         ¦  «        D ¦   «         t
          j        j        ¦  «        z   }|s)t          |t
          j	        ¦  «        rt          |¦  «        S t          j        ||¦  «        S )Nc              3  ó&   K  — | ]\  }}||z  V — Œd S r»   rª   )r­   rf  r€   s      rp   r  z%_bucketize_indices.<locals>.<genexpr>  s*   è è € Ð9Ð9‘4�1�aˆˆQ‰Ð9Ð9Ð9Ð9Ð9Ð9rr   r¨  )rÎ  rÌ  rÍ  Úsumr,  rÔ   rQ  r•  ry   ÚIntegerrÌ   rY   r}  )rœ  rf  r¨  ÚstridesÚflattened_indexs        rp   Ú_bucketize_indicesr¯    s    € ð �mŠm‰oŒo€GØ—m’m‘o”oÔ,­sØ9Ð9�3˜w s¨ sœ|¨U°3°B°3¬ZÑ8Ô8Ð9Ñ9Ô9½5¼7¼<ñ0ô 0ñ €Oð ð $•Z µ´Ñ?Ô?ð $Ý�?Ñ#Ô#Ð#ÝŒ>˜/¨;Ñ7Ô7Ð7rr   ©Ú	out_int32ÚrightÚsideÚsorterÚsorted_sequenceÚselfr±  r²  r³  r´  úTensorBox | Nonec               ód  ‡ ‡‡‡
‡— d„ } |‰ ¦  «        r ||¦  «        r‰�: |‰¦  «        s/ t          t          j        j        d¬¦  «        ‰ ||‰|‰¬¦  «        S |�|dk    rdŠ|rt          j        nt          j        Š
|                     ¦   «         Št          ‰ ¦  «        Š ‰�t          ‰¦  «        Št          ‰  
                    ¦   «         ¦  «        dk    r
ˆ
ˆˆ ˆˆfd„}n	ˆ
ˆˆ ˆˆfd	„}|                     ¦   «         }t          j        |‰
||j        ¬
¦  «        }	|	                     ¦   «          |	S )Nc                óV   — t           j                             | t          j        ¦  «        S r»   )rZ   rh   rß  rà  Ú	BUCKETIZEr£  s    rp   rp  zsearchsorted.<locals>.<lambda>$  s    € ¥A¤G×$7Ò$7Ø
�NÔ$ñ%ô %€ rr   Fr   r°  r²  Tr3   c                óÐ   •—  ‰| ¦  «        }t          j        |t          ‰¦  «        t          ‰d‰¦  «        ‰‰‰€d nt	          ‰¦  «        ‰€d nt          ‰d‰¦  «        ¬¦  «        S )Nrª   ©r´  Úsorter_indices)rY   Ú	bucketizer   r¯  r§  )r€  rl  r¨  r²  rµ  r´  Úvalues_loaders     €€€€€rp   r‡  zsearchsorted.<locals>.inner_fnG  s~   ø€ Ø�- Ñ$Ô$ˆCÝ”=ØÝ" ?Ñ3Ô3Ý" ?°B¸ÑDÔDØØØ%˜~�t�tµ>À&Ñ3IÔ3Ið �~ð �Då+¨F°B¸ÑDÔDðñ ô ð rr   c                óÈ   •‡ —  ‰‰ ¦  «        }dˆ ˆfd„}t          j        |t          ‰¦  «         |‰¦  «        ‰‰‰€d nt          ‰¦  «        ‰€d n
 |‰¦  «        ¬¦  «        S )Nrœ  rG   c                ó&   •— t          | ‰‰¦  «        S r»   )r¯  )rœ  r€  r¨  s    €€rp   Úget_flattened_indexz;searchsorted.<locals>.inner_fn.<locals>.get_flattened_index^  s   ø€ Ý)¨"¨c°;Ñ?Ô?Ð?rr   r¼  )rœ  rG   )rY   r¾  r   r§  )r€  rl  rÂ  r¨  r²  rµ  r´  r¿  s   `  €€€€€rp   r‡  zsearchsorted.<locals>.inner_fnY  s¤   øø€ Ø�- Ñ$Ô$ˆCð@ð @ð @ð @ð @ð @ð @õ ”=ØÝ" ?Ñ3Ô3Ø#Ð# OÑ4Ô4ØØØ%˜~�t�tµ>À&Ñ3IÔ3IØ'- ~˜t˜tÐ;NÐ;NÈvÑ;VÔ;Vðñ ô ð rr   rˆ  )r  r  ÚsearchsortedrR  r‹   rE  rü  rŠ  r¤  râ   rã   r|   rD   r  rŠ  râ  )rµ  r¶  r±  r²  r³  r´  Úvalidate_bucketizer‡  rƒ   rí  r¨  r¿  s   `  ` `    @@rp   rÃ  rÃ    s¹  øøøøø€ ðð Ðð Ð˜Ñ/Ô/ð
à!Ð! $Ñ'Ô'ð
ð ÐÐ'9Ð'9¸&Ñ'AÔ'AÐàTÕ¥Ô 1Ô 8ÈeÐTÑTÔTØØØØØØð
ñ 
ô 
ð 	
ð Ð˜D GšO˜OØˆà!*Ð;•%”+�+µ´€KØ×$Ò$Ñ&Ô&€Mõ 7°ÑGÔG€OàÐÝ1°&Ñ9Ô9ˆå
ˆ?×#Ò#Ñ%Ô%Ñ&Ô&¨!Ò+Ð+ð	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð$	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð 	ð$ �_Š_ÑÔ€FÝÔØØØØŒzð	ñ ô €Fð ‡N‚NÑÔÐà€Mrr   ©r±  r²  Ú
boundariesc               óŒ  ‡‡‡‡— t          ‰                     ¦   «         ¦  «        dk    sJ ‚t          j                             | t
          j        ¦  «        r*t          j                             ‰t
          j        ¦  «        s- t          t          j	        j
        d¬¦  «        | ‰|‰¬¦  «        S t          ‰¦  «        Š|                      ¦   «         }|                      ¦   «         Š|rt          j        nt          j        Šˆˆˆˆfd„}t#          j        |‰||                      ¦   «         ¬¦  «        }|                     ¦   «          |S )Nr3   Fr   rÅ  c           	     ó†   •—  ‰| ¦  «        }t          j        |t          ‰¦  «        t          ‰d‰¦  «        ‰‰¦  «        }|S )Nrª   )rY   r¾  r   r¯  )rf  rl  rR  rÆ  r¨  r!  r²  s      €€€€rp   r‡  zbucketize.<locals>.inner_fn”  sM   ø€ Øˆl˜5Ñ!Ô!ˆÝ”-ØÝ˜zÑ*Ô*Ý˜z¨2¨{Ñ;Ô;ØØñ
ô 
ˆð ˆrr   rˆ  )râ   rã   rZ   rh   rß  rà  rº  r  r  r¾  rR  r¤  r|   rŠ  r‹   rE  rü  rD   r  râ  )	rÖ  rÆ  r±  r²  rƒ   r‡  rí  r¨  r!  s	    ` `   @@rp   r¾  r¾  x  sR  øøøø€ õ ˆz×"Ò"Ñ$Ô$Ñ%Ô%¨Ò*Ð*Ð*Ð*õ 	
Œ×Ò˜E¥>Ô#;Ñ<Ô<ð
åŒG×Ò 
­NÔ,DÑEÔEð
ð RÕ¥¤Ô 5È5ÐQÑQÔQØ�:¨¸%ð
ñ 
ô 
ð 	
õ 2°*Ñ=Ô=€JØ×ÒÑÔ€FØ×$Ò$Ñ&Ô&€Là!*Ð;•%”+�+µ´€Kð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØØØØ�~Š~ÑÔð	ñ ô €Fð ‡N‚NÑÔÐà€Mrr   c                ó„   — t          | t          j        ¦  «        o&t          | t          j        t          j        f¦  «         S r»   )ry   r6   r>   ÚNonTensorObjÚOpaqueMultiOutputr×   s    rp   Ú_is_tensor_irnoderÌ  ³  s;   € Ý�a�œÑ#Ô#ð ­JØ	�BŒO�RÔ1Ð2ñ-ô -ð )ð rr   c                óh   — t          j        t          t          j        j        ||f¦  «        \  }}||fS r»   )r‘  Útree_map_onlyrÌ  r6   r  Úrequire_stride1©rÑ  r�   r  s      rp   Úrequire_denserÑ  ¹  s4   € ÝÔ'Ý�2œ?Ô:¸TÀ6¸Nñô �L€Dˆ&ð �ˆ<Ðrr   c                óh   — t          j        t          t          j        j        ||f¦  «        \  }}||fS r»   )r‘  rÎ  rÌ  r6   r  Úrequire_contiguousrÐ  s      rp   rÓ  rÓ  À  s6   € ÝÔ'ÝÝ
ŒÔ*Ø	ˆvˆñô �L€Dˆ&ð
 �ˆ<Ðrr   c                óh   — t          j        t          t          j        j        ||f¦  «        \  }}||fS r»   )r‘  rÎ  rÌ  r6   r  rš   rÐ  s      rp   rš   rš   É  s8   € õ Ô'ÝÝ
ŒÔ2Ø	ˆvˆñô �L€Dˆ&ð
 �ˆ<Ðrr   c                óh   — t          j        t          t          j        j        ||f¦  «        \  }}||fS r»   )r‘  rÎ  rÌ  r6   r  r§  rÐ  s      rp   r§  r§  Ô  s6   € ÝÔ'ÝÝ
ŒÔ-Ø	ˆvˆñô �L€Dˆ&ð
 �ˆ<Ðrr   c                óÖ  ‡ ‡— ‰€‰ S t          ‰t          ¦  «        st          ‰¦  «        r‰ S t          ‰ t          j        ¦  «        r2t          j                             ‰ ‰                     ¦   «         ¦  «        S t          ‰ t          ¦  «        rˆ ˆfd„‰ D ¦   «         S t          ‰ t          t          f¦  «        r0 t          ‰ ¦  «        d„ t          ‰ ‰¦  «        D ¦   «         ¦  «        S ‰ S )Nc                óJ   •— i | ]}|t          ‰|         ‰|         ¦  «        “Œ S rª   ©Úconstrain_to_fake_tensor)r­   Úkeyrè   Úfake_args     €€rp   r"  z,constrain_to_fake_tensor.<locals>.<dictcomp>å  s.   ø€ ÐVÐVÐVÈ3�Õ-¨c°#¬h¸À¼ÑFÔFÐVÐVÐVrr   c              3  ó<   K  — | ]\  }}t          ||¦  «        V — Œd S r»   rØ  )r­   r  Úf_as      rp   r  z+constrain_to_fake_tensor.<locals>.<genexpr>ç  sB   è è € ð 
ð 
Ù19°!°SÕ$ Q¨Ñ,Ô,ð
ð 
ð 
ð 
ð 
ð 
rr   )ry   r   r   r6   r>   r  Úrequire_exact_stridesré  r:  r±   rw   rþ   r,  )rè   rÛ  s   ``rp   rÙ  rÙ  Ý  sú   øø€ ØÐØˆ
Ý�(Õ,Ñ-Ô-ð µÀÑ1JÔ1Jð Øˆ
Ý�#•r”yÑ!Ô!ð MÝŒ×4Ò4°S¸(¿/º/Ñ:KÔ:KÑLÔLÐLÝ�#•tÑÔð 
ØVÐVÐVÐVÐVÐRUÐVÑVÔVÐVÝ	�C�%¥˜Ñ	'Ô	'ð 
Ø�t�C‰yŒyð 
ð 
Ý=@ÀÀhÑ=OÔ=Oð
ñ 
ô 
ñ 
ô 
ð 	
ð €Jrr   c                óš   ‡— t          d„ t          | |¦  «        D ¦   «         ¦  «        } ˆfd„|                     ¦   «         D ¦   «         }| |fS )Nc              3  ó<   K  — | ]\  }}t          ||¦  «        V — Œd S r»   rØ  )r­   rè   rÛ  s      rp   r  z,constrain_to_fake_tensors.<locals>.<genexpr>î  sD   è è € ð ð áˆC�õ 	!  hÑ/Ô/ðð ð ð ð ð rr   c                óD   •— i | ]\  }}|t          |‰|         ¦  «        “ŒS rª   rØ  )r­   r  r  Úfake_kwargss      €rp   r"  z-constrain_to_fake_tensors.<locals>.<dictcomp>ò  s.   ø€ ÐXÐXÐXÁÀÀAˆaÕ)¨!¨[¸¬^Ñ<Ô<ÐXÐXÐXrr   )r±   r,  r&  )r�   r  Ú	fake_argsrâ  s      `rp   r˜   r˜   í  sf   ø€ Ýð ð å   yÑ1Ô1ðñ ô ñ ô €Dð YÐXÐXÐXÈÏÊÉÌÐXÑXÔX€FØ�ˆ<Ðrr   c                óÀ   ‡ ‡‡— d„ Šˆˆfd„Št          ˆfd„t          |‰ j        ¦  «        D ¦   «         ¦  «        }ˆˆ fd„|                     ¦   «         D ¦   «         }||fS )Nc                óx   — t          | t          j        j        ¦  «        r| j                             d¦  «        S | S ©Nrl  )ry   r‹   r�  rž  r�  r�  )Úfx_args    rp   Úget_fake_valz-constrain_to_fx_strides.<locals>.get_fake_val÷  s1   € Ý�f�eœhœmÑ,Ô,ð 	*Ø”;—?’? 5Ñ)Ô)Ð)Øˆrr   c                ó~  •‡ ‡—  ‰|¦  «        Št          ‰ ¦  «        rwt          ‰t          j        ¦  «        s‰ S t	          j        ‰                     ¦   «         t          j        j	        j
        ¦  «        }t          j                             ‰ |¦  «        S t          ‰ t          ¦  «        r't          ‰t          ¦  «        s‰ S ˆˆ ˆfd„‰ D ¦   «         S t          ‰ t          t          f¦  «        rPt          ‰t          t          f¦  «        s‰ S  t!          ‰ ¦  «        ˆfd„t#          ‰ ‰¦  «        D ¦   «         ¦  «        S ‰ S )Nc                óB   •— i | ]}| ‰‰|         ‰|         ¦  «        “ŒS rª   rª   )r­   rÚ  Úapply_constraintrè   Úfake_vals     €€€rp   r"  zEconstrain_to_fx_strides.<locals>.apply_constraint.<locals>.<dictcomp>  s1   ø€ ÐRÐRÐRÀs�CÐ)Ð)¨#¨c¬(°H¸S´MÑBÔBÐRÐRÐRrr   c              3  ó6   •K  — | ]\  }} ‰||¦  «        V — Œd S r»   rª   )r­   r  Úfx_arë  s      €rp   r  zDconstrain_to_fx_strides.<locals>.apply_constraint.<locals>.<genexpr>  sF   øè è € ð ð Ù.5¨a°Ð Ð   DÑ)Ô)ðð ð ð ð ð rr   )rÌ  ry   r‹   rR  r6   rl  ré  rZ   rh   rü   r¨  r  rm  r:  r±   rw   rþ   r,  )rè   rç  ro  rì  rë  rè  s   `  @€€rp   rë  z1constrain_to_fx_strides.<locals>.apply_constraintü  sM  øøø€ Ø�< Ñ'Ô'ˆÝ˜SÑ!Ô!ð 	KÝ˜h­¬Ñ5Ô5ð Ø�
ÝÔ.Ø—’Ñ!Ô!¥1¤7Ô#3Ô#=ñô ˆLõ ”?×7Ò7¸¸\ÑJÔJÐJÝ�c�4Ñ Ô ð 	SÝ˜h­Ñ-Ô-ð Ø�
ØRÐRÐRÐRÐRÐRÈcÐRÑRÔRÐRÝ�c�E¥4˜=Ñ)Ô)ð 	Ý˜h­µ¨Ñ6Ô6ð Ø�
Ø•4˜‘9”9ð ð ð ð Ý9<¸SÀ(Ñ9KÔ9Kðñ ô ñ ô ð ð ˆ
rr   c              3  ó6   •K  — | ]\  }} ‰||¦  «        V — Œd S r»   rª   )r­   rè   rç  rë  s      €rp   r  z*constrain_to_fx_strides.<locals>.<genexpr>  sF   øè è € ð ð Ù*5¨#¨vÐÐ˜˜fÑ%Ô%ðð ð ð ð ð rr   c                óF   •— i | ]\  }}| ‰|‰j         |         ¦  «        “ŒS rª   ©r  ©r­   r  r  rë  Úfx_nodes      €€rp   r"  z+constrain_to_fx_strides.<locals>.<dictcomp>  s4   ø€ ÐSÐSÐS¹D¸A¸qˆaÐ!Ð! ! W¤^°AÔ%6Ñ7Ô7ÐSÐSÐSrr   )r±   r,  r�   r&  )ró  r�   r  rë  rè  s   `  @@rp   rœ   rœ   ö  s¦   øøø€ ðð ð ð
ð ð ð ð ð õ* ð ð ð ð Ý9<¸TÀ7Ä<Ñ9PÔ9Pðñ ô ñ ô €Dð TÐSÐSÐSÐSÀFÇLÂLÁNÄNÐSÑSÔS€FØ�ˆ<Ðrr   c                óB   — t           j        s||fS t          | g|¢R i |¤ŽS r»   )r4   r+  rœ   )ró  r�   r  s      rp   Ú*constrain_to_fx_strides_if_fallback_randomrõ    s5   € ÝÔ!ð Ø�Vˆ|ÐÝ" 7Ð<¨TÐ<Ð<Ð<°VÐ<Ð<Ð<rr   c           	     óÞ   ‡ ‡‡— ˆˆ fd„Šˆ fd„Št          ˆfd„t          t          |‰ j        ¦  «        ¦  «        D ¦   «         ¦  «        }ˆˆ fd„|                     ¦   «         D ¦   «         }||fS )zGApply stride constraints to SDPA inputs, ensuring dense last dimension.c           
     ó8  •— t          |¦  «        s|S |j        d         }d„ |                     ¦   «         D ¦   «         }t          j        j        j        }t          j        |                     ¦   «         |¦  «        }|rT|d         dk    rHt          t          t          t          |                     ¦   «         ¦  «        ¦  «        ¦  «        ¦  «        }‰j        t          j        j        k    r| dv rt          |¦  «        dk    sJ ‚d}d }t$          j        ra|                     ¦   «         }t+          |¦  «        ||rt-          |¦  «        nd f}|t          j        j        v rt          j        j        |         S  ‰
| ||||¦  «        }	|�|	t          j        j        |<   |	S )Nrl  c                ó^   — g | ]*}t          |t          j        ¦  «        r|j        j        n|‘Œ+S rª   )ry   r‹   ÚSymIntrn   ÚexprrÝ  s     rp   r¯   z=sdpa_constraint.<locals>.apply_constraint.<locals>.<listcomp>.  s>   € ð 
ð 
ð 
ØBC�: a­¬Ñ6Ô6Ð=ˆAŒFŒKˆK¸Að
ð 
ð 
rr   r¨  r   )r   rÀ   r¿   )r¾   r3   r1   r   )rÌ  r�  ré  rZ   rh   rü   r¨  r6   rl  rw   rP  r-  râ   rã   rl   r  Ú0_scaled_dot_product_efficient_attention_backwardr  r4   Úcache_sdpa_constraintÚmaybe_get_nameÚidr±   Úsdpa_constraint_cache)r€  rè   rç  Úmeta_valÚmeta_stride_exprr¨  ro  Ú	cache_keyÚarg_namerí  Ú_apply_constraint_innerró  s             €€rp   rë  z)sdpa_constraint.<locals>.apply_constraint)  sª  ø€ Ý  Ñ%Ô%ð 	ØˆJà”;˜uÔ%ˆð
ð 
ØGOÇÂÑGXÔGXð
ñ 
ô 
Ðõ ”GÔ$Ô.ˆ	ÝÔ*¨8¯?ª?Ñ+<Ô+<¸iÑHÔHˆàð 	F˜L¨Ô,°Ò1Ð1å¥­­s°3·<²<±>´>Ñ/BÔ/BÑ)CÔ)CÑ DÔ DÑEÔEˆLð ŒNÝÔDÔLòMð Mà�v��å�|Ñ$Ô$¨Ò)Ð)Ð)Ð)ð
 (ˆLð ˆ	ÝÔ'ð 	@Ø×)Ò)Ñ+Ô+ˆHå�3‘”ØØ'3Ð=•�lÑ#Ô#Ð#¸ðˆIð
 �AœGÔ9Ð9Ð9Ý”wÔ4°YÔ?Ð?à(Ð(Ø��hÐ 0°,ñ
ô 
ˆð Ð Ø7=�AŒGÔ)¨)Ñ4Øˆrr   c                óª  •‡— |j         s'|j        s t          j                             ||¦  «        S dŠ‰j        t          j        j        j	        j
        k    o| dk    }t          |t          ¦  «        sJ ‚t          |                     ¦   «         ¦  «        dvr|S t          j        |‰¦  «        }|r2t          j        t          j                             |¦  «        |¦  «        S t          |t$          ¦  «        rH|                     ¦   «         �4|r2t          j        t          j                             |¦  «        |¦  «        S |�rät)          |                     ¦   «         ¦  «        }g }|                     ¦   «         }	t+          t          |                     ¦   «         ¦  «        dz
  ¦  «        D ]o}
t,          j        j                             ||
         d¦  «        s-|	�@t,          j        j                             |	|
         d¦  «        r|                     |
¦  «         Œpdgt          |¦  «        z  }d|d<   d}t+          t          |¦  «        dz
  dd¦  «        D ]°}
||
dz            dk    r|||
dz            z  }|
|v rBt,          j        j                             t7          ||
dz            ‰¦  «        d¦  «        rd||
<   Œet,          j        j                             t7          |‰¦  «        d¦  «        st9          |‰¦  «        ‰z  }|||
<   Œ±t          j                             ||¦  «        S |r2t          j        t          j                             |¦  «        |¦  «        S t          |t$          ¦  «        rH|                     ¦   «         �4|r2t          j        t          j                             |¦  «        |¦  «        S ˆfd„}t          |j        t          j        ¦  «        rZ ||¦  «        sO ||                      ¦   «         ¦  «        r2t          j        t          j                             |¦  «        |¦  «        S t          j                             ||¦  «        S )	NrÃ   r¾   ©r¾   r¿   r3   r   r¨  r1   c                óì   •— |                       ¦   «         }t          |¦  «        dk    rdS t          j        j                             t          j        t          |d         ‰¦  «        d¦  «        ¦  «        S )Nr   Fr¨  )	rã   râ   rZ   rh   rü   rb  rÔ   rc  r/   )r®   r  Ú	ALIGNMENTs     €rp   Ú
is_alignedzDsdpa_constraint.<locals>._apply_constraint_inner.<locals>.is_aligned´  s^   ø€ Ø—:’:‘<”<ˆDÝ�4‰yŒy˜AŠ~ˆ~Ø�uÝ”7Ô#×2Ò2Ý”�˜T "œX yÑ1Ô1°1Ñ5Ô5ñô ð rr   )!Úis_cudaÚis_xpur6   r  rm  rl   r‹   rY   r  Ú'_scaled_dot_product_efficient_attentionr  ry   rG   râ   rã   Úis_aligned_realized_tensorÚtry_match_insignificant_stridesr¢  r>   Úmaybe_get_striderw   r-  rZ   rh   rü   rÇ  r}   r/   rJ   rÞ  r{   r:   râ  )r€  rè   r   r  ro  Úeffn_attn_fwd_biasÚis_aligned_tensorrë  Úexpanded_dimsÚmaybe_strider€   Úout_stridesré  r	  r  ró  s                 @€rp   r  z0sdpa_constraint.<locals>._apply_constraint_inner\  sX  øø€ ØÔ ð 	K H¤Oð 	KÝ”?×7Ò7¸¸\ÑJÔJÐJð ˆ	ð ŒNÝŒyŒ~ÔEÔMòNð à�q’ð 	õ ˜#�yÑ)Ô)Ð)Ð)Ð)Ýˆs�|Š|‰~Œ~ÑÔ fÐ,Ð,ØˆJåÔ9¸#¸yÑIÔIÐØð 	ÝÔ5Ý”×-Ò-¨cÑ2Ô2Ð4Dñô ð õ
 �s�FÑ#Ô#ð	à×$Ò$Ñ&Ô&Ð2Ø!ð 3õ Ô5Ý”×-Ò-¨cÑ2Ô2Ð4Dñô ð ð ñ &	KÝ˜CŸLšL™NœNÑ+Ô+ˆHàˆMð ×/Ò/Ñ1Ô1ˆLÝ�3˜sŸ|š|™~œ~Ñ.Ô.°Ñ2Ñ3Ô3ð ,ð ,�Ý”7Ô#×;Ò;Ð<LÈQÔ<OÐQRÑSÔSð ,Ø Ð,ÝœÔ(×@Ò@ÀÈaÄÐRSÑTÔTð -ð "×(Ò(¨Ñ+Ô+Ð+øð ˜$¥ X¡¤Ñ.ˆKØˆK˜‰OØˆFÝ�3˜x™=œ=¨1Ñ,¨b°"Ñ5Ô5ð (ð (�Ø˜q 1™uÔ%¨Ò*Ð*Ø# h¨q°1©u¤oÑ5�Fð ˜Ð%Ð%Ý”wÔ'×?Ò?Ý˜K¨¨A©Ô.°	Ñ:Ô:¸Añô ð !ð *+˜ A™Ø å”wÔ'×?Ò?Ý˜ 	Ñ*Ô*¨Añô ð Dõ % V¨YÑ7Ô7¸)ÑC�Fà!'�˜A‘�å”?×8Ò8¸¸kÑJÔJÐJàð 	ÝÔ5Ý”×-Ò-¨cÑ2Ô2Ð4Dñô ð õ
 �s�FÑ#Ô#ð	à×$Ò$Ñ&Ô&Ð2Ø!ð 3õ Ô5Ý”×-Ò-¨cÑ2Ô2Ð4Dñô ð ð	ð 	ð 	ð 	ð 	õ �c”h¥¤Ñ,Ô,ð 	Ø�:˜c‘?”?ð Ø�:˜cŸošoÑ/Ô/Ñ0Ô0ð ÝÔ=Ýœ×5Ò5°cÑ:Ô:Ð<Lñô ð õ Œ×3Ò3°C¸ÑFÔFÐFrr   c              3  ó>   •K  — | ]\  }\  }} ‰|||¦  «        V — Œd S r»   rª   )r­   r€  rè   rç  rë  s       €rp   r  z"sdpa_constraint.<locals>.<genexpr>Å  sN   øè è € ð ð áˆC‘�#�vð 	Ð˜˜c 6Ñ*Ô*ðð ð ð ð ð rr   c           	     óH   •— i | ]\  }}| ‰d |‰j         |         ¦  «        “ŒS ©r¨  rñ  rò  s      €€rp   r"  z#sdpa_constraint.<locals>.<dictcomp>É  s6   ø€ ÐWÐWÐWÁÀÀ1ˆaÐ!Ð! " a¨¬¸Ô):Ñ;Ô;ÐWÐWÐWrr   )r±   rx   r,  r�   r&  )ró  r�   r  r  rë  s   `  @@rp   Úsdpa_constraintr  &  sÄ   øøø€ ð1ð 1ð 1ð 1ð 1ð 1ðfgGð gGð gGð gGð gGõR ð ð ð ð å"+­C°°g´lÑ,CÔ,CÑ"DÔ"Dðñ ô ñ ô €Dð XÐWÐWÐWÐWÈÏÊÉÌÐWÑWÔW€FØ�ˆ<Ðrr   )r  c                ó  — t          |t          j        ¦  «        s6t          ||                      ¦   «         |                      ¦   «         ¬¦  «        }|}|                      ¦   «         |                     ¦   «         k    r"t          ||                      ¦   «         ¦  «        }|                      ¦   «         |                     ¦   «         k    r"t          ||                      ¦   «         ¦  «        }|                      ¦   «         |                     ¦   «         k    r2t          ||                      ¦   «         ¦  «        }t          |¦  «        }nt          |¦  «        }|                      ¦   «         }|�|j        rt          |¦  «         |S ©Nr‘  )ry   r6   r>   rm  rÓ   r|   r   r  rã   rU  rð  rË  Ú	is_pinnedÚ_realize_as_pinned)r¶  rÌ  r  r®   r~   rí  Úself_layouts          rp   ré  ré  ´  s.  € å�c�2œ9Ñ%Ô%ð LÝ�S §¢Ñ 0Ô 0¸¿ºÑ9JÔ9JÐKÑKÔKˆØ€AØ‡‚ÑÔ˜CŸNšNÑ,Ô,Ò,Ð,Ý�a˜ŸšÑ*Ô*Ñ+Ô+ˆØ‡~‚~ÑÔ˜3Ÿ=š=™?œ?Ò*Ð*Ý�Q˜ŸšÑ(Ô(Ñ)Ô)ˆà‡}‚}�„˜#Ÿ,š,™.œ.Ò(Ð(Ý�Q˜Ÿš™œÑ(Ô(ˆÝ�s‘”ˆˆå�q‘”ˆà×'Ò'Ñ)Ô)€KØÐ ;Ô#8ÐÝ˜6Ñ"Ô"Ð"Ø€Mrr   )Úmemory_formatc          	     óÜ   — t          j        |                      ¦   «         |                      ¦   «         |                      ¦   «         t          |                      ¦   «         ¦  «        ¬¦  «        S ©Nrˆ  )rD   r  r|   rÓ   rŠ  rw   rã   )r®   r  s     rp   rð  rð  Ê  sR   € õ
 ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØ—’‘”Ý�A—J’J‘L”LÑ!Ô!ð	ñ ô ð rr   c                ót   — |                       ¦   «          d| j        j                             ¦   «         _        d S rÒ   )râ  r{   rÌ  r  )rí  s    rp   r  r  ×  s1   € Ø
‡N‚NÑÔÐØ.2€F„KÔ×ÒÑ!Ô!Ô+Ð+Ð+rr   c                óø  — g }t          | t          ¦  «        r—t          | j        t          j        ¦  «        rx| j        } t          | t          j        ¦  «        rH|                     |                      ¦   «         ¦  «         | j        } t          | t          j        ¦  «        °Ht          | ¦  «        } t          | ¦  «        } |r:| j        } |d d d…         D ]}t          j        | |¬¦  «        } Œt          | ¦  «        } | S )Nr¨  rà  )ry   rG   r{   r6   rû   r}   rÌ  rð  )r®   Úreinterpret_view_layoutsrá  s      rp   Úclone_preserve_reinterpret_viewr$  Ü  sî   € Ø!ÐÝ�!•YÑÔð ¥J¨q¬vµrÔ7IÑ$JÔ$Jð ØŒFˆå˜�BÔ.Ñ/Ô/ð 	Ø$×+Ò+¨A¯LªL©N¬NÑ;Ô;Ð;Ø”ˆAõ ˜�BÔ.Ñ/Ô/ð 	õ �a‰LŒLˆåˆa‰Œ€Aàð ØŒFˆØ.¨t¨t°¨tÔ4ð 	:ð 	:ˆFÝÔ"¨°&Ð9Ñ9Ô9ˆAˆAÝ�a‰LŒLˆà€Hrr   c                ó|   — t          | ¦  «        }|                      ¦   «         }|�|j        rt          |¦  «         |S r»   )rð  rË  r  r  )r®   rí  Úinput_layouts      rp   r  r  ñ  sA   € Ý�1‰XŒX€FØ×%Ò%Ñ'Ô'€LØÐ LÔ$:Ðõ 	˜6Ñ"Ô"Ð"Ø€Mrr   r  c               ób   ‡‡‡— ˆˆˆfd„}t          j        t          |¦  «        ‰|| g¬¦  «        S )Nc                óH   •— t          j        ‰| d         z  ‰z   ‰¬¦  «        S )Nr   rÎ   ©rY   r}  )rf  rÈ   r­  r¯  s    €€€rp   r†   ziota.<locals>.fn	  s%   ø€ ÝŒ~˜d U¨1¤X™o°Ñ5¸UÐCÑCÔCÐCrr   rˆ  )rD   r  rL   )Úlengthr­  r¯  rÈ   rƒ   Úrequires_gradr†   s    ```   rp   Úiotar,  ÿ  sa   øøø€ ðDð Dð Dð Dð Dð Dð Dõ ÔÝ˜VÑ$Ô$ØØØˆxð	ñ ô ð rr   )rÈ   rƒ   rá  rc  r+  c               ób   — |€J ‚t          || z
  |¦  «        }t          || |||�|nd|¬¦  «        S )Nrú   ©r­  r¯  rÈ   rƒ   r+  )rJ   r,  )	r­  r®  r¯  rÈ   rƒ   rá  rc  r+  r*  s	            rp   Úarange_start_stepr/    sU   € ð ÐÐÐÝ�S˜5‘[ $Ñ'Ô'€FÝØØØØØÐ+ˆvˆv°Ø#ðñ ô ð rr   c           	     ó  ‡‡‡‡— t          ||                      ¦   «         ¦  «        }|                      ¦   «         Št          | ‰d¦  «        Št          j        j                             t          j	        ‰d¦  «        ¦  «        r‰|  
                    ¦   «         ‰         z   Šnbt          j        j                             t          j        ‰d¦  «        ¦  «        rn* t          t          j        j        ¦  «        | |‰‰¦  «        S t          j        j                             d‰¦  «         t          j        j                             ‰|  
                    ¦   «         ‰         ¦  «         t%          t'          |‰¦  «        |  
                    ¦   «         ¦  «        }|                     ¦   «         Šˆˆˆˆfd„}t)          j        |                      ¦   «         |                      ¦   «         |t/          |  
                    ¦   «         ¦  «        ¬¦  «        S )Nr   c           	     óú   •— t          j        t          j        t          j        | ‰         t          j        ¦  «        t          j        ‰t          j        ¦  «        ¦  «         ‰| ¦  «         ‰| ¦  «        ¦  «        S r»   )rY   rM  Úeqr}  r‹   rE  )r€  rå   rf  Ú
src_loaderr˜  s    €€€€rp   r‡  z select_scatter.<locals>.inner_fn>  sd   ø€ ÝŒyÝŒFÝ”˜s 3œx­¬Ñ5Ô5Ý”˜u¥e¤kÑ2Ô2ñô ð ˆJ�s‰OŒOØˆH�S‰MŒMñ
ô 
ð 	
rr   rˆ  )r  rÓ   rŠ  rÄ  rZ   rh   rü   rb  rÔ   r½  rã   r»  r  r  Úselect_scatterr  rå  ræ  rU  r‰  rD   r  r|   rw   )r®   rÌ  rå   rf  r‡  r3  r˜  s     `` @@rp   r4  r4  ,  s±  øøøø€ å
�3˜Ÿš™œÑ
&Ô
&€CØ�}Š}‰Œ€HÝ
˜˜3 Ñ
"Ô
"€CÝ„wÔ×&Ò&¥u¤x°°qÑ'9Ô'9Ñ:Ô:ð QØ˜Ÿ
š
™œ SÔ)Ñ)ˆˆÝ	
ŒÔ	×	(Ò	(­¬°%¸Ñ);Ô);Ñ	<Ô	<ð QØð =Õ¥Ô 3Ô ;Ñ<Ô<¸QÀÀSÈ%ÑPÔPÐPå„GÔ×Ò˜q %Ñ(Ô(Ð(Ý„GÔ×Ò˜e Q§Z¢Z¡\¤\°#Ô%6Ñ7Ô7Ð7Ý
•˜3 Ñ$Ô$ a§j¢j¡l¤lÑ
3Ô
3€CØ—’Ñ"Ô"€Jð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØÝ�A—J’J‘L”LÑ!Ô!ð	ñ ô ð rr   c           	     ó®  ‡ ‡‡‡‡‡‡	‡
— t          |‰                      ¦   «         ¦  «        }‰                      ¦   «         Š
t          ‰ ‰d¦  «        Š‰                      ¦   «         ‰         Št
          j                             ‰ ‰‰‰¦  «        \  ŠŠt          ‰                      ¦   «         ¦  «        }t          ‰‰z
  ‰dz
  z   ‰¦  «        |‰<   t          ||¦  «        }|                     ¦   «         Š	ˆˆˆˆ	ˆˆˆ ˆ
fd„}t          j        ‰                      ¦   «         ‰                      ¦   «         |t          ‰                      ¦   «         ¦  «        ¬¦  «        S )Nr   r3   c                ó2  •‡— ‰	dk    r‰‰k    r‰
dk    r ‰| ¦  «        S t          j        | ‰         t          j        ¦  «        }t	          | ¦  «        Št          | ‰         ‰	z
  ‰
¦  «        ‰‰<   g }‰	dk    rW|                     t          j        |t          j        t          j	        ‰	¦  «        t          j        ¦  «        ¦  «        ¦  «         ‰‰k    rW|                     t          j
        |t          j        t          j	        ‰¦  «        t          j        ¦  «        ¦  «        ¦  «         ‰
dk    rz|                     t          j        t          j        t          | ‰         ‰	z
  d‰
¦  «        t          j        ¦  «        t          j        dt          j        ¦  «        ¦  «        ¦  «         |sJ ‚t          j        t           j        |¦  «        }t          j        |ˆˆfd„t%          ‰¦  «        rdnd¦  «        }t          j        || ‰| ¦  «        ¦  «        S )Nr   r3   c                 ó   •—  ‰‰ ¦  «        S r»   rª   )Úsrc_idxr3  s   €€rp   rp  z1slice_scatter.<locals>.inner_fn.<locals>.<lambda>„  s   ø€ �J�J˜wÑ'Ô'€ rr   rû  )rY   r}  r‹   rü  rw   r+   r}   rý  rÔ   rU  rþ  r2  r0   r~  r8  rW  rÿ  r   rØ   rM  )r€  r  r  Úsrc_valr8  rå   ré  r®  r3  r­  r¯  r®   r˜  s       @€€€€€€€€rp   r‡  zslice_scatter.<locals>.inner_fn_  só  øø€ Ø�AŠ:ˆ:˜# š/˜/¨d°aªi¨ià�:˜c‘?”?Ð"å”.  S¤­5¬;Ñ7Ô7ˆÝ�s‘)”)ˆÝ  C¤¨5Ñ 0°$Ñ7Ô7ˆ�‰àˆØ�AŠ:ˆ:Ø�KŠKÝ”ØÝ”N¥5¤<°Ñ#6Ô#6½¼ÑDÔDñô ñô ð ð �(Š?ˆ?Ø�KŠKÝ”ØÝ”N¥5¤<°Ñ#4Ô#4µe´kÑBÔBñô ñô ð ð �1Š9ˆ9Ø�KŠKÝ”Ý”NÝ'¨¨C¬°5Ñ(8¸!¸TÑBÔBÅEÄKñô õ ”L ¥E¤KÑ0Ô0ñ	ô ñô ð ð ˆˆˆtÝÔ¥¤¨$Ñ/Ô/ˆÝ”*ØØ'Ð'Ð'Ð'Ð'Ý  Ñ#Ô#Ð,ˆAˆA¨ñ
ô 
ˆõ
 ŒyØØØˆH�S‰MŒMñ
ô 
ð 	
rr   rˆ  )r  rÓ   rŠ  rÄ  rã   r6   rÊ  Únormalize_start_endrw   r+   rU  rD   r  r|   )r®   rÌ  rå   r­  r®  r¯  Úsrc_sizer‡  ré  r3  r˜  s   ` ````  @@@rp   Úslice_scatterr<  P  sJ  øøøøøøøø€ å
�3˜Ÿš™œÑ
&Ô
&€CØ�}Š}‰Œ€HÝ
˜˜3 Ñ
"Ô
"€CØ�zŠz‰|Œ|˜CÔ €Hõ ”×1Ò1°!°S¸%ÀÑEÔE�J€Eˆ3å�A—J’J‘L”LÑ!Ô!€HÝ˜S 5™[¨D°1©HÑ5°tÑ<Ô<€HˆS�MÝ
��hÑ
Ô
€CØ—’Ñ"Ô"€Jð,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
ð ,
õ\ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØÝ�A—J’J‘L”LÑ!Ô!ð	ñ ô ð rr   c                óŽ   — t          | t          t          f¦  «        r(t          | ¦  «        dk    rt	          | d         ¦  «        S | S r;  )ry   rw   r±   râ   Ú_unwrapr×   s    rp   r>  r>  •  s;   € Ý�!•d�E�]Ñ#Ô#ð ­¨A©¬°ª
¨
Ý�q˜”t‰}Œ}ÐØ€Hrr   ©rÈ   rƒ   rá  rc  c               ó|  ‡ ‡— |t           j        k    rt           j        }t          |d t           j        fv d|› �¦  «         t	          t          ‰ ¦  «        t          ¦  «        r‰pt           j        Šn‰pt          j        ¦   «         Šg }t	          ‰ t          j
        ¦  «        rˆ ˆfd„}nÝt	          ‰ t          t          f¦  «        rˆ ˆfd„}nºt          ‰ ¦  «        dk    s5t	          ‰ d         t          t          f¦  «        rNt          ‰ ¦  «        dk    r;|                     t          j        t          ‰ ¦  «        ¦  «        ¦  «         ˆ ˆfd„}n7t          j                             t          j        ‰ ‰||pd¬¦  «        ¦  «        S t'          j        t+          |¦  «        ‰||¬	¦  «        }|rt-          |¦  «         |S )
Núlayout=c                ó.   •— t          j        ‰‰¦  «        S r»   r)  ©rf  r{   rÈ   s    €€rp   r‡  ztensor.<locals>.inner_fnª  s   ø€ Ý”> $¨Ñ.Ô.Ð.rr   c                ó.   •— t          j        ‰‰¦  «        S r»   ©rY   r~  rC  s    €€rp   r‡  ztensor.<locals>.inner_fn¯  s   ø€ Ý”<  eÑ,Ô,Ð,rr   r   rÃ   c                óš   •‡ ‡— ˆˆˆˆ fd„Št          ‰¦  «        dk    rt          j        d‰¦  «        S  ‰dt          ‰¦  «        ¦  «        S )Nc           	     ól  •— | |k     sJ ‚|| z
  dk    rt          j        ‰|          ‰¦  «        S || z
  dz  | z   }t          j        t          j        t          j        ‰d         t
          j        ¦  «        t          j        |t
          j        ¦  «        ¦  «         ‰| |¦  «         ‰||¦  «        ¦  «        S )Nr3   r1   r   )rY   r~  rM  rþ  r}  r‹   rü  )r­  r®  ÚmidÚbinary_searchr{   rÈ   rf  s      €€€€rp   rI  z/tensor.<locals>.inner_fn.<locals>.binary_search·  s±   ø€ Ø˜s’{�{�{�{Ø˜‘; !Ò#Ð#Ýœ<¨¨U¬°UÑ;Ô;Ð;Ø˜U‘{ qÑ(¨5Ñ0�Ý”yÝ”FÝœ u¨Q¤xµ´Ñ=Ô=Ýœ S­%¬+Ñ6Ô6ñô ð "�M %¨Ñ-Ô-Ø!�M # sÑ+Ô+ñô ð rr   r   )râ   rY   r~  )rf  rI  r{   rÈ   s   `@€€rp   r‡  ztensor.<locals>.inner_fn¶  sh   øøø€ ðð ð ð ð ð ð ð õ �4‰yŒy˜AŠ~ˆ~Ý”| A uÑ-Ô-Ð-Ø �= ¥C¨¡I¤IÑ.Ô.Ð.rr   F)rÈ   rƒ   rc  rˆ  )r‹   ÚjaggedÚstridedr§   ry   r>  rÌ   rü  Úget_default_dtyperÔ   rá   rb  râ   r}   r¬  rZ   rh   Úadd_tensor_constantrm  rD   r  rL   r  )r{   rÈ   rƒ   rá  rc  r‰  r‡  rí  s   ``      rp   rm  rm  ›  sñ  øø€ ð •”ÒÐÝ”ˆÝˆv˜$¥¤Ð.Ð.Ð0B¸&Ð0BÐ0BÑCÔCÐCÝ•'˜$‘-”-¥Ñ%Ô%ð 3ØÐ$�œˆˆàÐ2�Ô0Ñ2Ô2ˆà!€Få�$�œÑ$Ô$ð &
ð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/õ 
�D�5¥#˜,Ñ	'Ô	'ð !
ð	-ð 	-ð 	-ð 	-ð 	-ð 	-ð 	-õ 
ˆT‰Œ�aŠˆ�: d¨1¤gµµs¨|Ñ<Ô<ˆÅÀTÁÄÈaÂÀà�Š•e”m¥C¨¡I¤IÑ.Ô.Ñ/Ô/Ð/ð	/ð 	/ð 	/ð 	/ð 	/ð 	/ð 	/õ( Œw×*Ò*ÝŒLØ˜E¨&¸ZÐ=PÈ5ðñ ô ñ
ô 
ð 	
õ ÔÝ˜VÑ$Ô$ØØØð	ñ ô €Fð ð #Ý˜6Ñ"Ô"Ð"Ø€Mrr   c                óœ   — t          | t          ¦  «        r&|�t          | |¦  «        } |�t          | |¦  «        } | S t	          | ||¬¦  «        S r  )ry   rG   r  r   rm  )r{   rÈ   rƒ   s      rp   Ú	as_tensorrO  Û  sX   € å�$�	Ñ"Ô"ð ØÐÝ˜D %Ñ(Ô(ˆDØÐÝ˜T 6Ñ*Ô*ˆDØˆÝ�$˜e¨FÐ3Ñ3Ô3Ð3rr   c                ó8   — t          | t          j        ¬¦  «        S rl  r9  )r{   s    rp   Úlong_tensorrQ  æ  s   € å�$�eœkÐ*Ñ*Ô*Ð*rr   c                ó®  — t          t          j        j        j        t          j        j        j        d         ¦  «        }|€J ‚t          |¦  «        dk    s
J |¦   «         ‚t          t          | 
                    ¦   «         ¦  «        ¦  «        \  }}t          j        ||| ¦  «        }t          j                             |¦  «        |_        t          j                             |¦  «         t          j        j        j        d         }t!          |t"          j        t"          j        t"          j        f¦  «        r|j        j        S t/          j        |¦  «        S )Nr¤  r3   rl  )r'   rZ   rh   rü   r¨  ri   r�  râ   rs  rÏ  r&  r6   ÚDynamicScalarr«  rö   r¬  ry   r‹   rù  ÚSymFloatÚSymBoolrn   rú  rÔ   rò  )r{   r¤  Úbinding_symr´  rÔ  rl  s         rp   Ú_local_scalar_denserW  ë  s  € õ 2Ý	ŒÔÔ"¥A¤GÔ$8Ô$=Ð>QÔ$Rñô Ðð Ð(Ð(Ð(ÝÐ Ñ!Ô! QÒ&Ð&Ð&Ð(9Ñ&Ô&Ð&õ   ¥Ð%6×%<Ò%<Ñ%>Ô%>Ñ ?Ô ?Ñ@Ô@Ñ€K�ÝÔ˜k¨7°DÑ9Ô9€FÝ”'×)Ò)¨&Ñ1Ô1€F„KÝ„G×Ò˜vÑ&Ô&Ð&õ Œ'Ô
Ô
# EÔ
*€CÝ�#�œ¥e¤nµe´mÐDÑEÔEð "ØŒxŒ}ÐåŒ}˜SÑ!Ô!Ð!rr   c                ó   — d S r»   rª   )r{   r    s     rp   Ú_assert_scalarrY    s	   € ð ˆ4rr   )rƒ   rá  c               ó   — d S r»   rª   )r  r  ré  rÈ   rƒ   rá  s         rp   Ú_assert_tensor_metadatar[  "  s	   € ð ˆ4rr   c                óÄ  ‡‡‡— | Št          | t          t          f¦  «        st          ‰d¦  «        r‰j        Št          ‰t          t          f¦  «        rˆˆfd„}nat          ‰t
          j        ¦  «        rˆˆfd„}n@t          ‰                     ¦   «         ¦  «        dk    sJ ‚‰ 	                    ¦   «         Šˆfd„}t          j        |‰|t          |¦  «        ¬¦  «        S )Nr  c                ó.   •— t          j        ‰‰¦  «        S r»   rE  ©rf  rÈ   r  s    €€rp   r‡  z_full.<locals>.inner_fn0  s   ø€ Ý”<  uÑ-Ô-Ð-rr   c                ó.   •— t          j        ‰‰¦  «        S r»   r)  r^  s    €€rp   r‡  z_full.<locals>.inner_fn5  s   ø€ Ý”> %¨Ñ/Ô/Ð/rr   r   c                ó   •—  ‰g ¦  «        S r»   rª   )rf  Úvalue_loaders    €rp   r‡  z_full.<locals>.inner_fn<  s   ø€ Ø�< Ñ#Ô#Ð#rr   rˆ  )ry   rÌ   rb  r  r  rÔ   rá   râ   rã   rŠ  rD   r  rw   )Ú
fill_valuerƒ   rÈ   r  r‡  r  ra  s     `  @@rp   Ú_fullrc  )  s'  øøø€ Ø€EÝ�j¥3­ ,Ñ/Ô/ð µG¸EÀ7Ñ4KÔ4Kð Ø”ˆå�%�#�u˜Ñ&Ô&ð $ð	.ð 	.ð 	.ð 	.ð 	.ð 	.ð 	.õ 
�E�5œ;Ñ	'Ô	'ð 
$ð	0ð 	0ð 	0ð 	0ð 	0ð 	0ð 	0õ �5—>’>Ñ#Ô#Ñ$Ô$¨Ò)Ð)Ð)Ð)Ø×(Ò(Ñ*Ô*ˆð	$ð 	$ð 	$ð 	$ð 	$õ ÔØØØÝ�D‰zŒzð	ñ ô ð rr   c                óH   —  t          t          |¦  «        ¦  «        | fi |¤ŽS r»   ©Úcreate_tensor_likeÚtensor_constructor)r®   rb  r  s      rp   rq  rq  G  s,   € Ø=ÕÕ0°Ñ<Ô<Ñ=Ô=¸aÐJÐJÀ6ÐJÐJÐJrr   c                ó    ‡ — d d d dd dœˆ fd„
}|S )NF©rÈ   rƒ   rá  rc  r  c                ó  •— t          |d t          j        fv d|› �¦  «         t          | d¦  «         t          |¦  «        }| pt          j        ¦   «         } t          |¦  «        dk    rBt          |d         t          t          t          j	        f¦  «        rt          |d         ¦  «        }|D ]}t          |t          j
        ¦  «        rJ ‚Œd„ |D ¦   «         }t          ‰t          |¦  «        | |¦  «        }|rt          |¦  «         |S )NrA  r  r3   r   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rª   rÜ  rÝ  s     rp   r¯   z5tensor_constructor.<locals>.inner.<locals>.<listcomp>_  s    € Ð.Ð.Ð. A•”˜Q‘”Ð.Ð.Ð.rr   )r§   r‹   rK  rL   rL  râ   ry   rw   r±   ÚSizerù  rc  r  )	rÈ   rƒ   rá  rc  r  r  rf  Úfull_pointwiserb  s	           €rp   rÂ  z!tensor_constructor.<locals>.innerM  s  ø€ õ 	�6˜d¥E¤MÐ2Ð2Ð4F¸fÐ4FÐ4FÑGÔGÐGÝ�}Ð$ oÑ6Ô6Ð6Ý˜vÑ&Ô&ˆØÐ2�Ô0Ñ2Ô2ˆÝˆt‰9Œ9˜Š>ˆ>�j¨¨a¬µ4½ÅÄ
Ð2KÑLÔLˆ>Ý˜˜aœ‘>”>ˆDð ð 	3ð 	3ˆAÝ! !¥U¤\Ñ2Ô2Ð2Ð2Ð2Ð2Ø.Ð.¨Ð.Ñ.Ô.ˆÝ˜z­=¸Ñ+@Ô+@À%ÈÑNÔNˆàð 	/Ý˜~Ñ.Ô.Ð.àÐrr   rª   )rb  rÂ  s   ` rp   rg  rg  K  s>   ø€ ð ØØØØðð ð ð ð ð ð ð4 €Lrr   )rÈ   rá  rƒ   rc  r  c                óô   — t          |¦  «        }t          |¦  «        dk    rBt          |d         t          t          t
          j        f¦  «        rt	          |d         ¦  «        }t          |d | |||¬¦  «        S )Nr3   r   ©rÈ   rá  rƒ   rc  )rL   râ   ry   rw   r±   r‹   rl  Úempty_strided)rÈ   rá  rƒ   rc  r  r  s         rp   r™  r™  j  sn   € õ ˜6Ñ"Ô"€FÝ
ˆ4�y„y�A‚~€~�* T¨!¤W­tµU½E¼JÐ.GÑHÔH€~Ý�T˜!”W‰~Œ~ˆÝØˆd˜%¨°vÈ*ðñ ô ð rr   c                ó    ‡ — ddddddœˆ fd„
}|S )zZ
    Shim to convert X_like(...) into X(...).  For example zeros_like() into zeros().
    NFri  c               óB  •— t          | d¦  «         t          |d t          j        fv d|› �¦  «         |€|                      ¦   «         }nt	          |¦  «        }|p|                      ¦   «         }t          |                      ¦   «         ¦  «        } ‰|||||¬¦  «        S )Nrc  rA  r?  )r§   r‹   rK  rÓ   rÏ   r|   rw   rã   )r®   rÈ   rƒ   rá  rc  r  r  Úcreation_fns          €rp   Ú_constant_likez*create_tensor_like.<locals>._constant_like€  s¨   ø€ õ 	�z�> <Ñ0Ô0Ð0Ý�6˜d¥E¤MÐ2Ð2Ð4F¸fÐ4FÐ4FÑGÔGÐGØˆ=Ø—K’K‘M”MˆEˆEå  Ñ'Ô'ˆEØÐ)˜1Ÿ<š<™>œ>ˆÝ�A—J’J‘L”LÑ!Ô!ˆØˆ{Ø˜ f°VÈ
ð
ñ 
ô 
ð 	
rr   rª   )rs  rt  s   ` rp   rf  rf  {  s<   ø€ ð  ¨d¸uÐTXð
ð 
ð 
ð 
ð 
ð 
ð 
ð Ðrr   c                ó:   — t          t          | ¦  «        ¦  «        S r»   re  )rb  s    rp   rQ  rQ  ’  s   € ÝÕ0°Ñ<Ô<Ñ=Ô=Ð=rr   c                ó   ‡ — d d d d dœˆ fd„
}|S )Nro  c               ól  •— t          |t          t          f¦  «        sJ ‚t          | d¦  «         t          |d t          j        fv d|› �¦  «         t          |¦  «        p|                      ¦   «         }|p|                      ¦   «         }d„ |D ¦   «         }t          ‰t          |¦  «        ||¦  «        S )Nrc  rA  c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rª   )rÔ   r¬  rÝ  s     rp   r¯   z7new_constant.<locals>._new_constant.<locals>.<listcomp>¥  s"   € Ð/Ð/Ð/ Q•”˜aÑ Ô Ð/Ð/Ð/rr   )ry   rw   r±   r§   r‹   rK  rÏ   rÓ   r|   rc  rL   )r®   r  rÈ   rá  rƒ   rc  rb  s         €rp   Ú_new_constantz#new_constant.<locals>._new_constantœ  s±   ø€ õ ˜$¥¥u Ñ.Ô.Ð.Ð.Ð.Ý�z�> <Ñ0Ô0Ð0Ý�6˜d¥E¤MÐ2Ð2Ð4F¸fÐ4FÐ4FÑGÔGÐGå˜UÑ#Ô#Ð4 q§{¢{¡}¤}ˆØÐ)˜1Ÿ<š<™>œ>ˆØ/Ð/¨$Ð/Ñ/Ô/ˆÝ�Z¥¨vÑ!6Ô!6¸¸tÑDÔDÐDrr   rª   )rb  ry  s   ` rp   Únew_constantrz  ›  s>   ø€ à t°DÀTð
Eð 
Eð 
Eð 
Eð 
Eð 
Eð 
Eð Ðrr   ro  c          	     óž   — |€|                       ¦   «         }|€|                      ¦   «         }t          |d ||t          |¦  «        |¬¦  «        S ©Nro  ©rÓ   r|   rp  rL   )r®   r  rÈ   rá  rƒ   rc  s         rp   Ú	new_emptyr~  «  sW   € à€}Ø—’‘”ˆØ€~Ø—’‘”ˆÝØØØØÝ˜VÑ$Ô$Øðñ ô ð rr   c               ó&  — t          | t          t          f¦  «        sJ ‚t          |t          t          t          d ¦  «        f¦  «        sJ ‚t	          |d t
          j        fv d|› �¦  «         t          |¦  «        pt          j        ¦   «         }|pt          j	        d¦  «        j
        }t          |¦  «        }t          d||| ¬¦  «        }|                     ¦   «          |j        j        }t          j        |j        dgt#          | ¦  «        z  ¬¦  «        |_        t          |t$          j        ¦  «        sJ ‚d„ | D ¦   «         } |rd„ |D ¦   «         nt$          j                             | ¦  «        }t%          j        ||| ||pd¬	¦  «        |_        |S )
NrA  rû  r   )rb  rƒ   rÈ   r  )r‰  c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rª   rÜ  rÝ  s     rp   r¯   z!empty_strided.<locals>.<listcomp>Ì  s    € Ð*Ð*Ð* �EŒL˜‰OŒOÐ*Ð*Ð*rr   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rª   rÜ  rÝ  s     rp   r¯   z!empty_strided.<locals>.<listcomp>Î  rß  rr   F)rƒ   rÈ   r  ré  r  )ry   rw   r±   rþ   r§   r‹   rK  rÏ   rL  rm  rƒ   rL   rc  râ  r{   ÚdataclassesÚreplacerâ   r6   r'  rD  rE  rè  rá  )r  ré  rÈ   rá  rƒ   rc  Ú	pointwiserÔ  s           rp   rp  rp  »  s•  € õ �d�T¥5˜MÑ*Ô*Ð*Ð*Ð*Ý�f�t¥U­D°©J¬JÐ7Ñ8Ô8Ð8Ð8Ð8Ýˆv˜$¥¤Ð.Ð.Ð0B¸&Ð0BÐ0BÑCÔCÐCå˜ÑÔÐ<¥5Ô#:Ñ#<Ô#<€EØÐ/•u”| CÑ(Ô(Ô/€FÝ˜6Ñ"Ô"€FÝ ¨6¸ÀTÐJÑJÔJ€IØ×ÒÑÔÐØŒ^Ô €FåÔ% f¤k¸1¸#ÅÀDÁ	Ä	¹/ÐJÑJÔJ€F„KÝ�f�bÔ/Ñ0Ô0Ð0Ð0Ð0Ø*Ð* TÐ*Ñ*Ô*€Dð ð	8Ð)Ð) &Ð)Ñ)Ô)Ð)åÔ×1Ò1°$Ñ7Ô7ð õ
 ”NØØØØØÐ% ðñ ô €F„Mð Ðrr   c          	     óž   — |€|                       ¦   «         }|€|                      ¦   «         }t          ||||t          |¦  «        |¬¦  «        S r|  r}  )r®   r  ré  rÈ   rá  rƒ   rc  s          rp   Únew_empty_stridedr†  Ü  sY   € ð €}Ø—’‘”ˆØ€~Ø—’‘”ˆÝØØØØÝ˜VÑ$Ô$Øðñ ô ð rr   c                óê   — t           j        j                             |¦  «        }t	          t          t          |¦  «        ¦  «        |j        ¬¦  «        }t          j	         
                    | |¦  «        S )N)rÚ  )rZ   rh   rü   rý   Úsortedr-  râ   Ú__getitem__r6   r  rm  )r®   ré  ro  s      rp   Úcopy_stridedrŠ  î  sU   € åŒWÔ×5Ò5°fÑ=Ô=€FÝ�%¥ F¡¤Ñ,Ô,°&Ô2DÐEÑEÔE€LÝŒ?×/Ò/°°<Ñ@Ô@Ð@rr   c                ól   — |                      d¦  «        €
J d¦   «         ‚ t          |¦  «        | fi |¤ŽS )NrÈ   z(dtype should be handled by decomposition)r�  rg  )r  rb  r  s      rp   ÚfullrŒ  õ  sD   € à�:Š:�gÑÔÐ*Ð*Ð,VÑ*Ô*Ð*Ø)Õ˜jÑ)Ô)¨$Ð9Ð9°&Ð9Ð9Ð9rr   c                óD  ‡‡‡‡— t          | t          ¦  «        sJ ‚|                     ¦   «         dk    r"t          | |                     ¦   «         ¦  «        S |                      ¦   «         Št          ‰¦  «        dk    }t          | ‰|¦  «        Š|rt          | dg¦  «        } dgŠ|                      ¦   «         Š|                     ¦   «         Šˆˆˆˆfd„}t          j
        |                      ¦   «         |                      ¦   «         ||                     ¦   «         ¬¦  «        S )Nr   r3   c                ó¼   •— t          | ¦  «        } t          j         ‰| ¦  «        ‰‰         d¬¦  «        }t          | ¦  «        dk    r|g} n|| ‰<    ‰| ¦  «        S )NF©Úwrap_negr   )rw   rY   Úindirect_indexingrâ   )r€  Ú
gather_idxrå   Úindex_loaderr  r˜  s     €€€€rp   r†   zgather.<locals>.fn  sc   ø€ Ý�3‰iŒiˆÝÔ*¨<¨<¸Ñ+<Ô+<¸dÀ3¼iÐRWÐXÑXÔXˆ
Ýˆs‰8Œ8�qŠ=ˆ=Ø�,ˆCˆCà!ˆC�‰HØˆx˜‰}Œ}Ðrr   rˆ  )ry   rG   Ú	get_numelr~  rã   râ   rÄ  rU  rŠ  rD   r  r|   rÓ   )	r®   rå   rf  Úsparse_gradrÍ  r†   r“  r  r˜  s	    `    @@@rp   Úgatherr–  û  s   øøøø€ õ �a�Ñ#Ô#Ð#Ð#Ð#Ø‡‚ÑÔ˜AÒÐå˜˜EŸNšNÑ,Ô,Ñ-Ô-Ð-à�:Š:‰<Œ<€DÝ�‰YŒY˜!Š^€FÝ
˜˜3 Ñ
'Ô
'€Càð Ý�1�q�c‰NŒNˆØˆsˆà�}Š}‰Œ€HØ×$Ò$Ñ&Ô&€Lðð ð ð ð ð ð ð õ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØ�~Š~ÑÔð	ñ ô ð rr   c                ó˜  ‡‡‡‡	‡
— |r+ t          t          j        j        ¦  «        | ||||¦  «        S |rJ ‚t	          | t
          ¦  «        sJ ‚t	          |t
          ¦  «        sJ ‚dt          |                     ¦   «         ¦  «        v sJ ‚|                      ¦   «         Š	|                     ¦   «         Št          | 
                    ¦   «         ¦  «        Š|  
                    ¦   «         Š
g | 
                    ¦   «         ¢‰
dd …         ¢Šˆˆˆˆ	ˆ
fd„}t          j        |                      ¦   «         |                      ¦   «         |‰¬¦  «        S )NrÌ   r3   c                óô   •— t          | ¦  «        t          ‰¦  «        k    sJ | › d‰› �¦   «         ‚ ‰| d ‰…         ¦  «        }t          j        |‰d         d¬¦  «        gg | ‰d …         ¢z   } ‰|¦  «        S )Nz != r   Fr�  )râ   rY   r‘  )r€  Ú	var_indexÚ
weight_idxÚindices_loaderÚindices_ndimrš  Úweight_loaderÚweight_sizes      €€€€€rp   r†   zembedding.<locals>.fn2  s–   ø€ Ý�3‰xŒx�3˜x™=œ=Ò(Ð(Ð(¨SÐ*@Ð*@°hÐ*@Ð*@Ñ(Ô(Ð(Ø"�N 3 }¨ }Ô#5Ñ6Ô6ˆ	åÔ! )¨[¸¬^ÀeÐLÑLÔLð
à!ˆc�,�-�-Ô Ð!ñ"ˆ
ð ˆ}˜ZÑ(Ô(Ð(rr   rˆ  )r  r  Ú	embeddingr  ry   rG   r¡   rÓ   rŠ  râ   rã   rD   r  r|   )ÚweightrR  Úpadding_idxÚscale_grad_by_freqÚsparser†   r›  rœ  rš  r�  rž  s         @@@@@rp   rŸ  rŸ     su  øøøøø€ àð 
Ø7Õ¥¤Ô 6Ñ7Ô7Ø�G˜[Ð*<¸fñ
ô 
ð 	
ð ÐÐˆ:Ý�f�iÑ(Ô(Ð(Ð(Ð(Ý�g�yÑ)Ô)Ð)Ð)Ð)Ø•C˜×)Ò)Ñ+Ô+Ñ,Ô,Ð,Ð,Ð,Ð,à×&Ò&Ñ(Ô(€MØ×(Ò(Ñ*Ô*€NÝ�w×'Ò'Ñ)Ô)Ñ*Ô*€LØ—/’/Ñ#Ô#€KØ6�×!Ò!Ñ#Ô#Ð6 k°!°"°"¤oÐ6€Hð)ð )ð )ð )ð )ð )ð )ð )ð )õ ÔØ× Ò Ñ"Ô"Ø×ÒÑ Ô ØØð	ñ ô ð rr   c                óø  ‡ — t          d„ ‰ D ¦   «         ¦  «        sJ dd„ ‰ D ¦   «         › �¦   «         ‚t          d„ ‰ D ¦   «         ¦  «        rt          d¦  «        ‚d„ t          ‰ ¦  «        D ¦   «         }t	          |¦  «        dk    s
J d¦   «         ‚d gt	          ‰ ¦  «        z  }t          |t          ˆ fd	„|D ¦   «         Ž ¦  «        D ]1\  }}|                     ¦   «         |k    rt          d
¦  «        ‚|||<   Œ2||fS )Nc              3  óž   K  — | ]H}|®|                      ¦   «         t          j        t          j        t          j        t          j        fv V — ŒId S r»   )rÓ   r‹   rü  rE  re   rh  ©r­   r€   s     rp   r  z.check_and_broadcast_indices.<locals>.<genexpr>C  sN   è è € ð ð àØˆ=ð 	
�Š‰Œ�%œ+¥u¤{µE´JÅÄÐLÐLàˆ=ˆ=ˆ=ðð rr   z)indices must be int64, byte or bool. Got c                ó:   — g | ]}|®|                      ¦   «         ‘ŒS r»   ©rÓ   r¦  s     rp   r¯   z/check_and_broadcast_indices.<locals>.<listcomp>H  s&   € Ð4eÐ4eÐ4eÀqÐWXÐWd°Q·[²[±]´]ÐWdÐWdÐWdrr   c              3  ór   K  — | ]2}|®|                      ¦   «         t          j        t          j        fv V — Œ3d S r»   )rÓ   r‹   re   rh  r¦  s     rp   r  z.check_and_broadcast_indices.<locals>.<genexpr>J  sA   è è € ð ð Ø78ÀqÀ}ˆ�Š‰Œ�%œ*¥e¤kÐ2Ð2À}À}À}À}ðð rr   zFallback for bool indicesc                óB   — g | ]\  }}t          |t          ¦  «        ¯|‘ŒS rª   r  r  s      rp   r¯   z/check_and_broadcast_indices.<locals>.<listcomp>O  s+   € ÐOÐOÐO™˜˜1µjÀÅIÑ6NÔ6NÐO�!ÐOÐOÐOrr   r   z"requires at least 1 non-None indexc                ó    •— g | ]
}‰|         ‘ŒS rª   rª   )r­   r€   rR  s     €rp   r¯   z/check_and_broadcast_indices.<locals>.<listcomp>R  s   ø€ Ð3SÐ3SÐ3SÀ1°G¸A´JÐ3SÐ3SÐ3Srr   z.Fallback when indices is on a different device)rE  rF  r¥   rx   râ   r,  r)  r|   )rR  rƒ   Ú
valid_idxsÚnew_indicesr€   r®   s   `     rp   Úcheck_and_broadcast_indicesr®  B  sb  ø€ Ýð ð àðñ ô ñ ô ð ð ð
 	hÐ4eÐ4eÈGÐ4eÑ4eÔ4eÐgÐgñô ð õ ð ð Ø<Cðñ ô ñ ô ð ?õ "Ð"=Ñ>Ô>Ð>àOÐO¥	¨'Ñ 2Ô 2ÐOÑOÔO€JÝˆz‰?Œ?˜QÒÐÐÐ DÑÔÐØ�&�3˜w™<œ<Ñ'€KÝ�JÕ 1Ð3SÐ3SÐ3SÐ3SÈ
Ð3SÑ3SÔ3SÐ TÑUÔUð ð ‰ˆˆ1ð �<Š<‰>Œ>˜VÒ#Ð#Ý%Ð&VÑWÔWÐWØˆ�A‰ˆØ˜
Ð"Ð"rr   c	           
     óf  ‡ ‡‡‡‡‡‡‡‡‡‡— dŠt          j        ‰¦  «        D ]\  }	}
|
|	z
  dk    rdŠŒˆ fd„t          ‰¦  «        D ¦   «         Šg ‰¢‰ t          ‰¦  «        t          ‰¦  «        z   d …         ¢Š‰d         }‰r‰‰z   Šn‰d |…         ‰z   ‰|d …         z   Šˆˆˆˆˆˆˆˆˆˆf
d„}‰|fS )NFr3   Tc                ó*   •— g | ]\  }}|­‰|         ‘ŒS r»   rª   )r­   r€   rl  rÚ  s      €rp   r¯   z2index_output_size_and_inner_fn.<locals>.<listcomp>s  s"   ø€ ÐMÐMÐM¡  CÀÀ�6˜!”9ÀÀÀrr   r   c                óv  •
— t          | ¦  «        t          ‰¦  «        k    sJ ‚t          ‰¦  «        t          ‰
¦  «        k    sJ ‚t          ‰¦  «        }g }‰d         }‰rdn|}d}t          ‰d         dz   ¦  «        D ]ž}||k    r||z  }‰|         €6|t          | ¦  «        k     sJ ‚|                     | |         ¦  «         |dz  }ŒK‰|         }|€J ‚‰
|         }|                     t          j         || |||z   …         ¦  «        |‰	‰¬¦  «        ¦  «         ŒŸg |¢| |d …         ¢}‰€|n
 ‰|¦  «        S )Nr   r¨  r3   ©r   r�  )râ   r-  r}   rY   r‘  )r€  r¶  Ú	new_indexÚfirst_tensor_indexÚstart_offsetÚnext_idxr€   Úloaderr  r   Úindexed_sizerR  Úindices_loadersÚnon_consecutive_tensorsÚoutput_sizeÚtensor_indicesÚtensor_sizer�  r˜  s            €€€€€€€€€€rp   r†   z*index_output_size_and_inner_fn.<locals>.fn€  sž  ø€ Ý�3‰xŒx�3˜{Ñ+Ô+Ò+Ð+Ð+Ð+Ý�?Ñ#Ô#¥s¨<Ñ'8Ô'8Ò8Ð8Ð8Ð8å�;ÑÔˆØˆ	Ø+¨AÔ.ÐØ3ÐK�q�qÐ9KˆØˆÝ�~ bÔ)¨AÑ-Ñ.Ô.ð 	ð 	ˆAØ�LÒ Ð Ø˜DÑ �Ø�qŒzÐ!Ø¥# c¡(¤(Ò*Ð*Ð*Ð*Ø× Ò   X¤Ñ/Ô/Ð/Ø˜A‘��à(¨Ô+�ØÐ)Ð)Ð)Ø# A”�Ø× Ò ÝÔ)Ø˜˜s <°,ÀÑ2EÐ#EÔFÑGÔGØØ#Ø!)ð	ñ ô ñô ð ð ð
Øð
à���Œ^ð
ˆ	ð %Ð,ˆyˆy°(°(¸9Ñ2EÔ2EÐErr   )r*  Úpairwiserx   râ   )rÚ  rR  r¼  r½  r¹  r¸  r˜  r   r�  ÚpreviousÚcurrentr´  r†   rº  r»  s   `````````    @@rp   Úindex_output_size_and_inner_fnrÁ  \  sM  øøøøøøøøøøø€ ð$ $ÐÝ&Ô/°Ñ?Ô?ð +ð +Ñˆ�'Ø�XÑ Ò"Ð"Ø&*Ð#øàMÐMÐMÐM­9°WÑ+=Ô+=ÐMÑMÔM€KØS�KÐS &­¨[Ñ)9Ô)9½CÀÑ<OÔ<OÑ)OÐ)QÐ)QÔ"RÐS€Kà'¨Ô*ÐØð 
Ø! KÑ/ˆˆð Ð+Ð+Ð+Ô,ØñàÐ,Ð-Ð-Ô.ñ/ð 	ð Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  Fð  FðD ˜ˆ?Ðrr   c                ó¤   — t          | ||¦  «        \  }}}t          j        |                      ¦   «         |                      ¦   «         ||¬¦  «        S r   )Úindex_impl_helperrD   r  r|   rÓ   )r®   rR  r   r»  r‡  rÑ  s         rp   Ú
index_implrÄ  ¥  sP   € Ý0°°G¸UÑCÔCÑ€K�˜1åÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØð	ñ ô ð rr   c                ó¬  ‡‡
‡‡— t          ‰t          t          f¦  «        sJ ‚|                      ¦   «         Št	          ‰|                      ¦   «         ¦  «        \  Š}t          |¦  «        dk    s
J d¦   «         ‚d„ ‰D ¦   «         }t          ‰|d                                       ¦   «         ¦  «        }|                      ¦   «         Šˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }|rd|v rd|vrt          d¦  «        ‚ˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }t          ‰‰||||d ||¬¦	  «	        \  }Š
ˆ
ˆfd„}	||	‰
fS )	Nr   z Must have at least one valid idxc                ó>   — g | ]}|�|                      ¦   «         nd ‘ŒS r»   rª  r¦  s     rp   r¯   z%index_impl_helper.<locals>.<listcomp>¶  ó(   € ÐSÐSÐSÀa¨!¨-�q—}’}‘”�¸TÐSÐSÐSrr   c                ó0   •— g | ]}‰|         ®
‰|         ‘ŒS r»   rª   )r­   r€   rR  rÚ  s     €€rp   r¯   z%index_impl_helper.<locals>.<listcomp>¾  s&   ø€ ÐUÐUÐU !¸gÀa¼jÐ>T�F˜1”IÐ>TÐ>TÐ>Trr   z0index is out of bounds for dimension with size 0c                ó    •— g | ]
}‰|         ‘ŒS rª   rª   ©r­   r€   rÚ  s     €rp   r¯   z%index_impl_helper.<locals>.<listcomp>Â  ó   ø€ Ð;Ð;Ð; !�F˜1”IÐ;Ð;Ð;rr   r²  c                ó,   •—  ‰ ‰| ¦  «        ¦  «        S r»   rª   )r€  Úindex_inner_fnr˜  s    €€rp   r‡  z#index_impl_helper.<locals>.inner_fnÏ  s   ø€ Øˆx˜˜ sÑ+Ô+Ñ,Ô,Ð,rr   )ry   rw   r±   rŠ  r®  r|   râ   rã   r-  Ú
IndexErrorrÁ  )r®   rR  r   r�  r¼  r¹  r½  r¸  r»  r‡  rÍ  r˜  rÚ  s    `        @@@rp   rÃ  rÃ  °  sŽ  øøøø€ Ý�g¥¥e˜}Ñ-Ô-Ð-Ð-Ð-Ø�}Š}‰Œ€HÝ9¸'À1Ç<Â<Á>Ä>ÑRÔRÑ€Gˆ^Ýˆ~ÑÔ Ò"Ð"Ð"Ð$FÑ"Ô"Ð"àSÐSÈ7ÐSÑSÔS€Oõ �w˜~¨aÔ0Ô1×:Ò:Ñ<Ô<Ñ=Ô=€Kà�ZŠZ‰\Œ\€FàUÐUÐUÐUÐU¥u­S°©\¬\Ñ':Ô':ÐUÑUÔU€LØð M��lÐ"Ð" q°Ð';Ð';ÝÐKÑLÔLÐLà;Ð;Ð;Ð;¥u­S°©\¬\Ñ':Ô':Ð;Ñ;Ô;€LÝ"@ØØØØØØØØØð
#ñ 
#ô 
#Ñ€K�ð-ð -ð -ð -ð -ð -ð ˜ .Ð0Ð0rr   c                óÄ   — 	 t          | |d¬¦  «        S # t          $ rA |                      ¦   «           t          t          j        j        d¬¦  «        | |¦  «        cY S w xY w)NT©r   Fr   )rÄ  r¥   râ  r  r  rf  rR  ©r®   rR  s     rp   rf  rf  Õ  sz   € ð
Ý˜!˜W¨DÐ1Ñ1Ô1Ð1øÝð 
ð 
ð 
à	�	Š	‰ŒˆØMÕ¥¤
Ô 1ÀuÐMÑMÔMØˆwñ
ô 
ð 	
ð 	
ð 	
ð
øøøs   ‚ ”AAÁAc                ó&   — t          | |d¬¦  «        S )NFrÐ  )rÄ  rÑ  s     rp   Ú_unsafe_indexrÓ  á  s   € å�a˜¨Ð.Ñ.Ô.Ð.rr   c                óF   — t          t          | ¦  «        |||dd¬¦  «        S )NTF©r   Úmay_realize©Úindex_put_impl_rð  ©r®   rR  r(  Ú
accumulates       rp   Ú	index_putrÛ  î  s,   € åÝˆa‰Œ�'˜6 :°TÀuðñ ô ð rr   c                óF   — t          t          | ¦  «        |||dd¬¦  «        S )NFrÕ  r×  rÙ  s       rp   Ú_unsafe_index_putrÝ  õ  s,   € åÝˆa‰Œ�'˜6 :°UÈðñ ô ð rr   c                ó  — |                      ¦   «         |                       ¦   «         k    r"t          ||                       ¦   «         ¦  «        }|rt          | |¦  «        }t          | t	          |d         || ¦  «        ¦  «        S r;  )r|   r   r³   rË  rM  )r¶  rR  r  rÚ  s       rp   Úindex_put_as_masked_fillrß  ü  ss   € Ø×ÒÑÔ˜TŸ_š_Ñ.Ô.Ò.Ð.Ý˜% §¢Ñ!2Ô!2Ñ3Ô3ˆØð !Ý�D˜%Ñ Ô ˆÝ�T�5 ¨¤¨U°DÑ9Ô9Ñ:Ô:Ð:rr   c                ój  — ddl m} t          t          j        t
          j        j        j        j	        ¦  «        }t
          j        j        }t          j        sD|�B ||¦  «        r7d}|j                             dd ¦  «        x}r|› d|› �}|t
          j        _        t          j        || |||¦  «         | S )Nr3   )Ú,_fx_node_is_input_dependent_cudagraph_unsafezLindex_put_ fallback with boolean indexing is not compatible with CUDA graphsÚstack_traceú Found from : 
 )Úutilsrá  r½  r  Ú
index_put_rZ   rh   ri   rl   Ú_overloadnamer4   Úgraph_partitionr�  r�  Údisable_cudagraphs_reasonr6   ÚIndexPutFallback)	r¶  rR  r(  rÚ  rá  r&  ró  r    râ  s	            rp   Úindex_put_fallbackrê    sÂ   € ØCÐCÐCÐCÐCÐCå�$œ/­1¬7Ô+?Ô+FÔ+TÑUÔU€Kõ
 ŒgÔ"€GåÔ"ð0àÐØ8Ð8¸ÑAÔAð  ð ]ˆØ!œ,×*Ò*¨=¸$Ñ?Ô?Ð?ˆ;ð 	9ØÐ8Ð8¨;Ð8Ð8ˆCØ,/�ŒÔ)åÔ˜ T¨7°F¸JÑGÔGÐGØ€Krr   c                ó,   — t          | |||dd¬¦  «        S )NTrÕ  ©rØ  ©r¶  rR  r(  rÚ  s       rp   rå  rå    s&   € åØˆg�v˜z°À4ðñ ô ð rr   c                ó,   — t          | |||dd¬¦  «        S )NFTrÕ  rì  rí  s       rp   Ú_unsafe_index_put_rï  "  s&   € åØˆg�v˜z°ÀDðñ ô ð rr   c           
     ó‚  ‡‡— |rZd„ Št          j        | ¦  «        |                     ¦   «         v r/t          ˆfd„|D ¦   «         ¦  «        s|                     ¦   «          |                     ¦   «         dk    rÁt          |¦  «        dk    r®|d                              ¦   «         t          j	        t          j
        fv r||d         }t          t          |                     ¦   «         ¦  «        t          |                      ¦   «         ¦  «        ¦  «        D ]}t          |d¦  «        }Œt          | |g||¦  «        S t          j        ¦   «         rt!          | |||¦  «        S |D ]D}|�@|                     ¦   «         t          j	        t          j
        fv rt!          | |||¦  «        c S ŒE|                      ¦   «         Št          ‰¦  «        }	|rbt#          |                      ¦   «         ¦  «        rA|	dk    rt%          | dg¦  «        } t!          | |||¦  «        } |	dk    rt%          | g ¦  «        } | S t'          ||                      ¦   «         ¦  «        }	 t)          ||                      ¦   «         ¦  «        \  }}
n"# t,          $ r t!          | |||¦  «        cY S w xY wd„ |D ¦   «         }t/          | t0          ¦  «        sJ ‚|                      ¦   «          |	dk    rt%          | dg¦  «        } t3          ||
d                                       ¦   «         ¦  «        }ˆfd„t          t          |¦  «        ¦  «        D ¦   «         }t5          ‰||
|||d |¬¦  «        \  }}t7          ||¦  «        }|                      ¦   «         }|€J ‚t          j        ||                      ¦   «         |                     ¦   «         |||rd	nd ¬
¦  «        }t          j        d t          j        | ¦  «        |¬¦  «        }t@          j!         "                    |¦  «        |_#        t@          j!         $                    |¦  «         |	dk    rt%          | g ¦  «        } | S )Nc                ó–  — t          | t          ¦  «        r³t          | j        t          j        ¦  «        r”| j                             ¦   «         } t          | t          j        ¦  «        o`t          | j        t          j        ¦  «        oAt          | j        dd ¦  «        o+| j        j	        j
        t          j        j        j        j        u S dS )Nró  F)ry   rG   r{   r6   r:   râ  rÿ   r  r½  ró  rl   r‹   rY   r  Úrandpermr  )Úindices    rp   Úindice_slice_from_randpermz3index_put_impl_.<locals>.indice_slice_from_randperm,  s©   € õ ˜&¥)Ñ,Ô,ð µ¸F¼KÍÌÑ1UÔ1Uð Øœ×0Ò0Ñ2Ô2�å˜v¥r¤}Ñ5Ô5ð VÝ" 6¤;µ´Ñ@Ô@ðVå ¤¨Y¸Ñ=Ô=ðVð œÔ+Ô2µe´i´nÔ6MÔ6UÐUð	ð �5rr   c              3  ó.   •K  — | ]} ‰|¦  «        V — Œd S r»   rª   )r­   ró  rô  s     €rp   r  z"index_put_impl_.<locals>.<genexpr>:  sH   øè è € ð H
ð H
Ø39Ð&Ð& vÑ.Ô.ðH
ð H
ð H
ð H
ð H
ð H
rr   r3   r   r¨  c                ó>   — g | ]}|�|                      ¦   «         nd ‘ŒS r»   rª  r¦  s     rp   r¯   z#index_put_impl_.<locals>.<listcomp>n  rÇ  rr   c                ó    •— g | ]
}‰|         ‘ŒS rª   rª   rÊ  s     €rp   r¯   z#index_put_impl_.<locals>.<listcomp>y  rË  rr   rÐ  Ú
atomic_add©rƒ   rÈ   r‡  r‰  Úoutput_indexerÚscatter_mode©rö   rá  r{   )%r6   Útry_get_namerV  rE  râ  r”  râ   rÓ   r‹   re   rh  r-  rã   r‰  rß  r…  rê  rS   r  r  r®  r|   r¥   ry   rG   rw   rÁ  rU  ÚScatterrŠ  r'  ÚMutationLayoutSHOULDREMOVErZ   rh   r«  rö   r¬  )r¶  rR  r(  rÚ  r   rÖ  r  rÑ  rf  Úx_ndimr¼  r¹  r½  r¸  Úexpected_vals_sizer‡  rƒ   ÚscatterrÔ  rô  rÚ  s                      @@rp   rØ  rØ  )  s{  øø€ Øð ð	ð 	ð 	õ Œ?˜4Ñ Ô  F×$9Ò$9Ñ$;Ô$;Ð;Ð;ÅCð H
ð H
ð H
ð H
Ø=DðH
ñ H
ô H
ñ E
ô E
Ð;ð �NŠNÑÔÐð 	×ÒÑÔ˜aÒÐÝ�‰LŒL˜AÒÐØ�AŒJ× Ò Ñ"Ô"¥u¤zµ5´;Ð&?Ð?Ð?à�qŒzˆÝ•s˜4Ÿ=š=™?œ?Ñ+Ô+­S°·²±´Ñ-AÔ-AÑBÔBð 	'ð 	'ˆAÝ˜T 2Ñ&Ô&ˆDˆDÝ'¨¨t¨f°f¸jÑIÔIÐIõ Ô1Ñ3Ô3ð EÝ! $¨°¸ÑDÔDÐDð ð Ið IˆØÐ §¢Ñ!2Ô!2µu´zÅ5Ä;Ð6OÐ!OÐ!OÝ% d¨G°V¸ZÑHÔHÐHÐHÐHøà�]Š]‰_Œ_€FÝ�‰[Œ[€Fàð ÕBÀ4Ç>Â>ÑCSÔCSÑTÔTð à�QŠ;ˆ;Ý˜˜q˜c‘?”?ˆDÝ! $¨°¸ÑDÔDˆØ�QŠ;ˆ;Ý˜˜b‘>”>ˆDØˆå�f˜dŸnšnÑ.Ô.Ñ/Ô/€FðEå"=Ø�T—_’_Ñ&Ô&ñ#
ô #
Ñˆ��øõ ð Eð Eð EÝ! $¨°¸ÑDÔDÐDÐDÐDðEøøøð TÐSÈ7ÐSÑSÔS€Oå�d�IÑ&Ô&Ð&Ð&Ð&Ø‡L‚L�N„N€Nð �‚{€{Ý�D˜1˜#‰Œˆõ �w˜~¨aÔ0Ô1×:Ò:Ñ<Ô<Ñ=Ô=€KØ;Ð;Ð;Ð;¥u­S°©\¬\Ñ':Ô':Ð;Ñ;Ô;€Lå#AØØØØØØØØð	$ñ 	$ô 	$Ñ Ð˜õ �FÐ.Ñ/Ô/€Fð �_Š_ÑÔ€FØÐÐÐÝŒjØØ�nŠnÑÔØ×#Ò#Ñ%Ô%Ø!ØØ%/Ð9�\�\°Tðñ ô €Gõ ÔØÝÔ,¨TÑ2Ô2Øðñ ô €Fõ
 ”'×)Ò)¨&Ñ1Ô1€F„KÝ„G×Ò˜vÑ&Ô&Ð&à�‚{€{Ý�D˜"‰~Œ~ˆØ€Ks   É%I4 É4JÊJr   c                ó  ‡‡‡‡‡	— t          | |dd¬¦  «        \  }}Š‰                     ¦   «         Š|                      ¦   «         Š	ˆˆˆˆˆ	fd„}t          j        |                      ¦   «         |                      ¦   «         ||¬¦  «        S )NFr²  c                óÎ   •‡ — ‰j         t          j        k    r)t          j         ‰‰ ¦  «        t          j        ¦  «        }n ‰‰ ¦  «        }t          j        |ˆˆ ˆfd„‰¦  «        S )Nc                 ó,   •—  ‰ ‰ ‰¦  «        ¦  «        S r»   rª   )Ú_unsafe_index_fnr€  Úself_loaders   €€€rp   rp  z8_unsafe_masked_index.<locals>.inner_fn.<locals>.<lambda>µ  s   ø€ ¨K¨KÐ8HÐ8HÈÑ8MÔ8MÑ,NÔ,N€ rr   )rÈ   r‹   re   rY   r  r   )r€  Úmask_valr  Úfillr  Úmask_loaderr  s   ` €€€€€rp   r‡  z&_unsafe_masked_index.<locals>.inner_fn°  sf   øø€ ØŒ:�œÒ#Ð#Ý”| K K°Ñ$4Ô$4µe´jÑAÔAˆHˆHà"�{ 3Ñ'Ô'ˆHÝŒz˜(Ð$NÐ$NÐ$NÐ$NÐ$NÐ$NÐPTÑUÔUÐUrr   rˆ  )rÃ  rŠ  rD   r  r|   rÓ   )
r¶  r  rR  r	  r‰  rÑ  r‡  r  r
  r  s
    ` `   @@@rp   Ú_unsafe_masked_indexr  ¨  sÂ   øøøøø€ å"3Øˆg˜U¨Uð#ñ #ô #Ñ€FˆAÐð ×"Ò"Ñ$Ô$€KØ×"Ò"Ñ$Ô$€KðVð Vð Vð Vð Vð Vð Vð Vð Võ ÔØ�ŠÑ Ô Ø�nŠnÑÔØØð	ñ ô ð rr   c                óÈ   ‡‡— t          ||d¦  «        }|                      ¦   «         Šˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }t	          | ||d¬¦  «        S )Nr   c                ór   •— g | ]3}‰|         r't          ‰|         ‰|          ‰|         d z
  ¦  «        nd‘Œ4S r“  rÀ  )r­   r€   rR  rŠ  s     €€rp   r¯   z7_unsafe_masked_index_put_accumulate.<locals>.<listcomp>Ã  sU   ø€ ð ð ð àð 7>¸a´jÐJ�ˆg�aŒj˜5 œ8˜) U¨1¤X°¡\Ñ2Ô2Ð2Àdðð ð rr   T)rÚ  )rM  rã   r-  râ   rÝ  )r®   r  rR  r(  Úmasked_valueÚclamped_indicesrŠ  s     `   @rp   Ú#_unsafe_masked_index_put_accumulater  ¿  sv   øø€ å˜˜v qÑ)Ô)€LØ�JŠJ‰LŒL€Eðð ð ð ð å•s˜7‘|”|Ñ$Ô$ðñ ô €Oõ ˜Q °È$ÐOÑOÔOÐOrr   c                óR   — t          j        |t          j        || ¦  «        ¦  «        S r»   )rY   r  r  ©r  ÚminÚmaxs      rp   rÁ  rÁ  Ì  s    € åŒ;�s�CœK¨¨QÑ/Ô/Ñ0Ô0Ð0rr   c                óh   — t          | ¦  «        }t          ||||¦  «        }t          ||¦  «         |S r»   )rð  rÐ  Úcopy_)r¶  rÌ  r  ré  r¦  rX  Úoutput_views          rp   Úas_strided_scatterr  Ñ  s5   € å�4‰[Œ[€FÝ˜V T¨6°>ÑBÔB€KÝ	ˆ+�sÑÔÐØ€Mrr   c                ó<   — t          t          | ¦  «        |||fi |¤ŽS r»   )Úscatter_rð  )r®   rå   rf  rÌ  r  s        rp   r  r  Ù  s$   € å•E˜!‘H”H˜c 5¨#Ð8Ð8°Ð8Ð8Ð8rr   ©rW  Úinclude_selfr&  rW  r  c               ób  — t          |t          ¦  «        }t          | ||                     ¦   «         t	          t
          j        |r|                     ¦   «         nt          |¦  «        ¦  «        |r|                     ¦   «         j        nd|¦  «        rt          j
        | ||||||¬¦  «         |S d S )Nznot implr  )ry   rG   rX   rÓ   r
   r‹   rÈ   rþ   r|   r6   ÚScatterFallback)r&  r¶  rå   rf  rÌ  rW  r  Úsrc_is_tensors           rp   Úscatter_fallbackr   Þ  s¸   € õ ˜s¥IÑ.Ô.€MÝØØØ�ŠÑÔÝ�UŒ[¨]ÐI˜#Ÿ-š-™/œ/˜/ÅÀSÁ	Ä	ÑJÔJà!.Ð>ˆ�ŠÑÔÔÐ°JØñô ð õ 	ÔØØØØØØØ%ð	
ñ 	
ô 	
ð 	
ð ˆàˆ4rr   ©rW  c               óò   — |dv sJ ‚|€Lt          t          j        t          j        j        j        j        ¦  «        }t          || ||||¬¦  «        }|�|S |dk    rd}n|dk    rd}t          | ||||¦  «        S )N)Nr³   Úmultiplyr!  r³   r«  r#  Úprod)
r½  r  r  rZ   rh   ri   rl   ræ  r   Úscatter_reduce_)r¶  rå   rf  rÌ  rW  r&  Úfallback_results          rp   r  r     sš   € àÐ.Ð.Ð.Ð.Ð.Ø€~Ý�dœm­Q¬WÔ-AÔ-HÔ-VÑWÔWˆÝ*Ø˜˜s E¨3°vð
ñ 
ô 
ˆð Ð&Ø"Ð"à�‚€ØˆˆØ	�:Ò	Ð	ØˆÝ˜4  e¨S°&Ñ9Ô9Ð9rr   c                ó@   — t          t          | ¦  «        |||¦  «        S r»   )Úscatter_add_rð  ©r®   rå   rf  rÌ  s       rp   Úscatter_addr*    s   € å�˜a™œ # u¨cÑ2Ô2Ð2rr   c                ó(   — t          | |||d¦  «        S )Nr«  )r%  r)  s       rp   r(  r(    s   € å˜1˜c 5¨#¨uÑ5Ô5Ð5rr   c                ó>   — t          t          | ¦  «        ||||fi |¤ŽS r»   )r%  rð  )r®   rå   rf  rÌ  Úreduction_typer  s         rp   Úscatter_reducer.    s&   € å�5 ™8œ8 S¨%°°nÐOÐOÈÐOÐOÐOrr   )r  c          
     óº  ‡ ‡‡‡‡— |dv sJ ‚t          t          j                             ¦   «         ¦  «        dk    r dt          j                             ¦   «         v s
J d¦   «         ‚t	          ‰t
          ¦  «        rt          ‰ ‰¦  «        Št          t          j        j        ‰ ‰|‰||¬¦  «        }|r|S t	          ‰ t          ¦  «        sJ ‚dt          |                     ¦   «         ¦  «        v sJ ‚t          ‰                      ¦   «         ¦  «        }|dk    rt          ‰ dg¦  «        Š t	          ‰t          ¦  «        r6t          ‰                     ¦   «         ¦  «        dk    rt          ‰dg¦  «        Št	          |t          ¦  «        r6t          |                     ¦   «         ¦  «        dk    rt          |dg¦  «        }|                     ¦   «         dk    r‰ S t          ‰ ‰¦  «        Š‰                      ¦   «          |                     ¦   «         Št	          ‰t          ¦  «        r‰                     ¦   «         nd Šˆˆˆ fd„}ˆ ˆˆfd	„}	d
„ }
‰                      ¦   «         }|€J ‚|s­t'          j        |‰                      ¦   «         ˆ fd„|                     ¦   «         |d ¬¦  «        }t'          j        d t'          j        ‰ ¦  «        |¬¦  «        }t.          j                             |¦  «        |_        t.          j                             |¦  «         t'          j        |‰                      ¦   «         |	|                     ¦   «         | |
|¦  «        ¬¦  «        }t'          j        d t'          j        ‰ ¦  «        |¬¦  «        }t.          j                             |¦  «        |_        t.          j                             |¦  «         |dk    rt          ‰ g ¦  «        Š ‰ S )N)Nr«  r$  ÚmeanÚamaxÚaminr3   r/  zKaten.scatter_reduce_.two is not the unique overload of aten.scatter_reduce_r  rÌ   r   c                óÎ   •— ‰                      ¦   «         }t          |¦  «        }t          | ¦  «        }t          j         ‰| ¦  «        |dk    rdn|‰         d¬¦  «        |‰<   |S )Nr   r3   Fr�  )rã   râ   rw   rY   r‘  )r€  rŠ  rè  Úindirect_idxrå   r“  r¶  s       €€€rp   rú  z'scatter_reduce_.<locals>.output_indexerO  sk   ø€ à—’‘”ˆÝ�5‰zŒzˆÝ˜C‘y”yˆÝÔ1ØˆL˜ÑÔ D¨A¢I I˜q˜q°5¸´:Èð
ñ 
ô 
ˆ�SÑð Ðrr   c                ól   •— ‰r ‰| ¦  «        S t          j        ‰‰                     ¦   «         ¦  «        S r»   ©rY   r~  rÓ   )r€  r¶  rÌ  r3  s    €€€rp   r†   zscatter_reduce_.<locals>.fnY  s7   ø€ Øð 	7Ø�:˜c‘?”?Ð"õ ”<  T§^¢^Ñ%5Ô%5Ñ6Ô6Ð6rr   c                ó   — | dk    rdS | �J ‚d S )Nr«  rø  rª   r!  s    rp   Úbackend_reduce_strz+scatter_reduce_.<locals>.backend_reduce_stra  s    € Ø�UŠ?ˆ?Ø�<ð �>�>�>Ø�4rr   c                óR   •— t          j        d‰                     ¦   «         ¦  «        S r;  r6  )rf  r¶  s    €rp   rp  z!scatter_reduce_.<locals>.<lambda>q  s   ø€ ¥3¤<°°4·>²>Ñ3CÔ3CÑ#DÔ#D€ rr   rù  rü  )râ   r  r%  Ú	overloadsry   r"   rq  r   r/  rG   r¡   rÓ   rã   r  r”  rÄ  râ  rŠ  r|   r6   rþ  r'  rÿ  rZ   rh   r«  rö   r¬  )r¶  rå   rf  rÌ  rW  r  r&  rè  rú  r†   r8  rƒ   Úzero_outrÔ  r  r“  r3  s   `` `           @@rp   r%  r%  !  sï  øøøøø€ àÐBÐBÐBÐBÐBå�DÔ ×*Ò*Ñ,Ô,Ñ-Ô-°Ò2Ð2Ø•TÔ)×3Ò3Ñ5Ô5Ð5Ð5Ð5ØTñ 6Ô5ð	6õ �#•vÑÔð #Ý˜˜cÑ"Ô"ˆå&ÝÔÔ ØØØØØØ!ðñ ô €Oð ð ØÐå�d�IÑ&Ô&Ð&Ð&Ð&Ø•C˜ŸšÑ)Ô)Ñ*Ô*Ð*Ð*Ð*Ð*åˆt�}Š}‰ŒÑÔ€DØˆq‚y€yÝ�D˜1˜#‰Œˆå�#•yÑ!Ô!ð ¥c¨#¯,ª,©.¬.Ñ&9Ô&9¸QÒ&>Ð&>Ý�3˜˜‰nŒnˆå�%�Ñ#Ô#ð !­¨E¯NªNÑ,<Ô,<Ñ(=Ô(=ÀÒ(BÐ(BÝ�U˜Q˜CÑ Ô ˆà‡‚ÑÔ˜AÒÐØˆå
˜˜cÑ
"Ô
"€Cà‡L‚L�N„N€NØ×$Ò$Ñ&Ô&€LÝ&0°µiÑ&@Ô&@ÐJ�—’Ñ"Ô"Ð"Àd€Jðð ð ð ð ð ð ð7ð 7ð 7ð 7ð 7ð 7ð 7ðð ð ð �_Š_ÑÔ€FØÐÐÐàð +å”:ØØ—.’.Ñ"Ô"ØDÐDÐDÐDØ—>’>Ñ#Ô#Ø)Øð
ñ 
ô 
ˆõ Ô"ØÝÔ0°Ñ6Ô6Øð
ñ 
ô 
ˆõ
 ”g×-Ò-¨fÑ5Ô5ˆŒÝ	Œ×"Ò" 6Ñ*Ô*Ð*õ
 ŒjØØ�nŠnÑÔØØ�~Š~ÑÔØ%Ø'Ð'¨Ñ/Ô/ðñ ô €Gõ ÔØÝÔ,¨TÑ2Ô2Øðñ ô €Fõ
 ”'×)Ò)¨&Ñ1Ô1€F„KÝ„G×Ò˜vÑ&Ô&Ð&àˆq‚y€yÝ�D˜"‰~Œ~ˆØ€Krr   Úscales_xútuple[float | None, ...]Úexactc                ó&  ‡‡‡
‡‡‡— |                       ¦   «          |                      ¦   «         Š|                      ¦   «         ‰ d …         Š
|                      ¦   «         d ‰ …         }d„ ‰
D ¦   «         Š
t          |¦  «        ‰k    sJ ‚|}d„ t	          ‰
|¦  «        D ¦   «         Št          |¦  «        D ]\  }}|�d|z  ‰|<   Œˆfd„Šˆ
ˆˆˆˆfd„}	t          j        |                      ¦   «         |  	                    ¦   «         |	g |¢|¢¬¦  «        S )Nc                óV   — g | ]&}t           j        j                             |¦  «        ‘Œ'S rª   r^  r¦  s     rp   r¯   z&upsample_nearestnd.<locals>.<listcomp>¡  s+   € Ð>Ð>Ð>°�qŒwÔ×)Ò)¨!Ñ,Ô,Ð>Ð>Ð>rr   c                ó   — g | ]
\  }}||z  ‘ŒS rª   rª   )r­   r€   Úos      rp   r¯   z&upsample_nearestnd.<locals>.<listcomp>¦  s    € Ð:Ð:Ð:™D˜A˜q�!�a‘%Ð:Ð:Ð:rr   r;  c                óz  •— t          j        | t          j        ¦  «        } ‰r2t          j        | t          j        dt          j        ¦  «        ¦  «        } t          j        | t          j        |t          j        ¦  «        ¦  «        } t          j        | t          j        ¦  «        } t          j	        | |d¬¦  «        S )Nç      à?FrÐ  )
rY   r}  r‹   r3  r³   r~  r¼  r  rE  r‘  )r®   r  r  r>  s      €rp   Úscale_fnz$upsample_nearestnd.<locals>.scale_fn«  s‰   ø€ õ ŒN˜1�eœmÑ,Ô,ˆØð 	=Ý”˜�3œ<¨­U¬]Ñ;Ô;Ñ<Ô<ˆAÝŒG�A•s”| E­5¬=Ñ9Ô9Ñ:Ô:ˆÝŒL˜�EœKÑ(Ô(ˆÝÔ$ Q¨°EÐ:Ñ:Ô:Ð:rr   c           	     ó„   •— | ‰ d …         }| d ‰ …         } ‰g |¢ˆfd„t          |‰‰¦  «        D ¦   «         ¢¦  «        S )Nc                ó2   •— g | ]\  }}} ‰|||¦  «        ‘ŒS rª   rª   )r­   r€   rf  r  rE  s       €rp   r¯   z2upsample_nearestnd.<locals>.fn.<locals>.<listcomp>º  s-   ø€ ÐVÐVÐV©J¨A¨q°$�8�8˜A˜q $Ñ'Ô'ÐVÐVÐVrr   )r,  )r€  r®   rW  Úi_sizesÚ
inv_scalesr'  rE  r˜  s      €€€€€rp   r†   zupsample_nearestnd.<locals>.fn¶  sc   ø€ Ø����ŒHˆØ��!��ŒHˆØˆxØWˆaÐWÐVÐVÐVÐV½#¸aÀÈWÑ:UÔ:UÐVÑVÔVÐWñ
ô 
ð 	
rr   rˆ  )
Úrealize_hintrŠ  rã   râ   r,  rx   rD   r  r|   rÓ   )r®   r»  r<  r'  r>  ÚbatchÚo_sizesr€   r  r†   rH  rI  rE  r˜  s      ``     @@@@rp   Úupsample_nearestndrM  –  sZ  øøøøøø€ ð ‡N‚NÑÔÐØ�}Š}‰Œ€HØ�jŠj‰lŒl˜A˜2˜3˜3Ô€GØ�JŠJ‰LŒL˜˜1˜"˜Ô€EØ>Ð>°gÐ>Ñ>Ô>€Gåˆx‰=Œ=˜AÒÐÐÐØ€Gà:Ð:¥C¨°Ñ$9Ô$9Ð:Ñ:Ô:€JÝ˜hÑ'Ô'ð (ð (‰ˆˆ5ØÐØ %™KˆJ�q‰Møð	;ð 	;ð 	;ð 	;ð 	;ð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØ!�Ð!˜Ð!ð	ñ ô ð rr   úfloat | Nonec                ó*   — t          | ||fd¬¦  «        S )Nr3   ©r'  ©rM  ©r®   r»  r  s      rp   Úupsample_nearest1drS  Å  s   € å˜a ¨v¨i¸1Ð=Ñ=Ô=Ð=rr   c                ó,   — t          | ||fdd¬¦  «        S )Nr3   T©r'  r>  rQ  rR  s      rp   Ú_upsample_nearest_exact1drV  Ê  s   € å˜a ¨v¨i¸1ÀDÐIÑIÔIÐIrr   Úscales_hÚscales_wc                ó,   — t          | |||fd¬¦  «        S )Nr1   rP  rQ  ©r®   r»  rW  rX  s       rp   Úupsample_nearest2dr[  Ï  s    € õ ˜a ¨x¸Ð.BÀaÐHÑHÔHÐHrr   c                ó.   — t          | |||fdd¬¦  «        S )Nr1   TrU  rQ  rZ  s       rp   Ú_upsample_nearest_exact2dr]  Ö  s"   € õ ˜a ¨x¸Ð.BÀaÈtÐTÑTÔTÐTrr   Úscales_dc                ó.   — t          | ||||fd¬¦  «        S )Nr¾   rP  rQ  ©r®   r»  r^  rW  rX  s        rp   Úupsample_nearest3dra  Ý  s#   € õ ˜a ¨x¸À8Ð.LÐPQÐRÑRÔRÐRrr   c                ó0   — t          | ||||fdd¬¦  «        S )Nr¾   TrU  rQ  r`  s        rp   Ú_upsample_nearest_exact3drc  è  s-   € õ Ø	ˆ;˜ 8¨XÐ6¸!À4ðñ ô ð rr   c                ó:   ‡ — t          ˆ fd„|D ¦   «         ¦  «        S )Nc              3  óB   •K  — | ]}t          j        |‰¦  «        V — Œd S r»   rE  )r­   r  rÈ   s     €rp   r  z$_create_constants.<locals>.<genexpr>ö  s/   øè è € Ð6Ð6¨A•”˜a Ñ'Ô'Ð6Ð6Ð6Ð6Ð6Ð6rr   )r±   )rÈ   r�   s   ` rp   r  r  õ  s&   ø€ ÝÐ6Ð6Ð6Ð6°Ð6Ñ6Ô6Ñ6Ô6Ð6rr   c                óÞ   ‡‡‡— |                       ¦   «         Š|                      ¦   «         Šˆˆˆfd„}t          j        |                      ¦   «         |                      ¦   «         |‰¬¦  «        S )Nc                ó´   •— t          | ¦  «        } t          | ¦  «        t          ‰¦  «        k    sJ ‚‰D ]}‰|         dz
  | |         z
  | |<   Œ ‰| ¦  «        S r@  )rw   râ   )r€  rå   rd  rX  r˜  s     €€€rp   r·  zrev.<locals>.loaderÿ  sd   ø€ Ý�3‰iŒiˆÝ�3‰xŒx�3˜u™:œ:Ò%Ð%Ð%Ð%Øð 	3ð 	3ˆCØ˜cœ
 Q™¨#¨c¬(Ñ2ˆC�‰HˆHàˆx˜‰}Œ}Ðrr   rˆ  )rŠ  rã   rD   r  r|   rÓ   )r®   rd  r·  rX  r˜  s    ` @@rp   Úrevrh  ù  s|   øøø€ ð �}Š}‰Œ€HØ�JŠJ‰LŒL€Eðð ð ð ð ð ð õ ÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØð	ñ ô ð rr   ÚpaddingúSequence[int]rb  c                óp  — d„ } |¦   «         rdS t          |¦  «        dk    s%t          |                      ¦   «         ¦  «        dk    rdS |                      ¦   «          t          | t          j        ¦  «        r„t          | j        t          j        ¦  «        ret          | j        j        t          j        ¦  «        s0t          j
        r5t          | j        j        t          j        ¦  «        r| j        j        j        sdS |                      ¦   «          t	          j        | ¦  «        \  }}|j        }|d         dk    rdS |d         dk    s|d         dk    s|d         dk    rdS |d         }|dk    rdS |d         }|j        d         }	||	|z   k     rdS | j        j        j        }
|j        d         |j        d         |z   g}|t"          j        j        |
<   t)          | ||j        |j        d¬	¦  «        }t-          |d|	|	|z   d¬
¦  «        }t/          ||¦  «         t0          d         dxx         dz  cc<   |S )zÀ
    This optimization changes the semantics of padding from 'clone'
    style to 'view' style.

    Thanks to functionalization, this change can still maintain numerical
    correctness.
    c                 óà   — t           j        j        } | €dS t          | j        ¦  «        }t          |¦  «        dk    r1|d         j        t          j        j	        t          j
        j	        fv rdS dS )a  
        Conservatively check if padding can be fused with downstream op.
        1. if the downstream op is a sum, then there is little benefit to
           do inplace padding
        2. if the downstream op is a matmul, doing inplace padding can
           save membw.
        NTr3   r   F)rZ   rh   ri   r±   rj   râ   rl   r  Úmmr  Úaddmm)ri   rj   s     rp   Ú_padding_can_be_fusedz6inplace_constant_pad_nd.<locals>._padding_can_be_fused  sj   € õ ”wÔ+ˆØÐØ�4Ý�lÔ(Ñ)Ô)ˆÝˆu‰:Œ:˜Š?ˆ?˜u QœxœÝŒGŒOÝŒJÔð3
ð  
ð  
ð �5àˆtrr   Nr¿   r1   r3   r   r¾   FrÂ  )rå   r­  r®  rÁ  ÚinductorÚinplace_padding)râ   rã   râ  ry   r6   rG   r{   rÿ   r'  r4   Úcan_inplace_pad_graph_inputrå  rö   Úfreeze_layouträ  ré  r  rZ   rh   Úbuffer_to_padded_sizerÐ  rÍ  rÙ  Úfill_r   )r®   ri  rb  ro  rÑ  rá  r­  ÚnpadÚstride0ÚrowsizeÚbufnameÚpadded_sizeÚ	resized_xÚsliced_xs                 rp   Úinplace_constant_pad_ndr}    sJ  € ðð ð ð( ÐÑÔð Øˆtõ ˆ7�|„|�qÒÐ�C §
¢
¡¤Ñ-Ô-°Ò2Ð2Øˆtð
 ‡I‚I�K„K€Kõ
 �q�"œ,Ñ'Ô'ðå˜!œ&¥"¤-Ñ0Ô0ðõ �q”v”{¥BÔ$5Ñ6Ô6ð	õ Ô2ðõ ˜qœvœ{­B¬NÑ;Ô;ðð ŒvŒ{Ôðð ˆtØ‡O‚OÑÔÐåÔ(¨Ñ+Ô+�I€A€vØŒm€GØˆq„z�Q‚€Øˆtàˆq„z�Q‚€˜' !œ*¨š/˜/¨W°Q¬Z¸1ª_¨_Øˆtà�1Œ:€DØˆq‚y€yØˆtà�aŒj€GØŒk˜!Œn€Gà�˜4‘ÒÐØˆtàŒfŒkÔ€GØ”;˜q”> 6¤;¨q¤>°DÑ#8Ð9€KØ-8…A„GÔ! 'Ñ*ÝØ	ØØŒØŒØ16ðñ ô €Iõ �i Q¨g¸7ÀT¹>ÐQVÐWÑWÔW€HÝ	ˆ(�JÑÔÐåˆZÔÐ*Ð+Ð+Ô+¨qÑ0Ð+Ð+Ñ+ØÐrr   c           	     óÂ  — t          d„ |D ¦   «         ¦  «        sdS |                      ¦   «         }t          |¦  «        }t          t	          |ddd…         |ddd…         ¦  «        ¦  «        }d}d}t          |¦  «        D ]0\  }\  }	}
|	dk    r dS |
dk    r|� dS |dz
  |z
  }|
}Œ'|
dk     r dS Œ1|€dS |                      ¦   «         }|�|j        dk    rdS t          |¦  «        }|||<   |                      ¦   «         } t          |¦  «        |¦  «        } t          |¦  «        |||¬¦  «        }t          d         d	xx         dz  cc<   t          | |g|¦  «        S )
a7  Decompose right-pad into cat([x, fill], dim) and delegate to cat lowering.

    The cat lowering already has heuristics for choosing between pointwise_cat
    (fusion) and ConcatKernel (memory planning / zero-copy).  By routing through
    cat() we reuse those heuristics rather than duplicating them here.
    c              3  ó@   K  — | ]}t          |t          ¦  «        V — Œd S r»   )ry   rÌ   ©r­   rM  s     rp   r  z_pad_as_cat.<locals>.<genexpr>y  s,   è è € Ð3Ð3 a�z˜!�SÑ!Ô!Ð3Ð3Ð3Ð3Ð3Ð3rr   Nr1   r3   r   rú   r‘  rp  Úpad_rewritten_as_cat)rE  rã   râ   rw   r,  rx   r|   rþ   rÓ   r   rg  r   rŒ  )r®   ri  rb  rX  rè  Ú	pad_pairsÚpad_dimÚ
pad_amountr€   Úleftr²  rƒ   Ú	pad_shaperÈ   Úfill_value_typedÚ
pad_tensors                   rp   Ú_pad_as_catr‰  o  s³  € õ Ð3Ð3¨7Ð3Ñ3Ô3Ñ3Ô3ð Øˆtà�JŠJ‰LŒL€EÝˆu‰:Œ:€DÝ•S˜   1 œ w¨q¨t°!¨t¤}Ñ5Ô5Ñ6Ô6€Ið €GØ€JÝ% iÑ0Ô0ð 	ð 	Ñˆ‰=ˆD�%Ø�1Š9ˆ9Ø�4�4Ø�1Š9ˆ9ØÐ"Ø�t�tØ˜Q‘h ‘lˆGØˆJˆJØ�QŠYˆYØ�4�4ð ð €Øˆtð �\Š\‰^Œ^€FØÐ˜fœk¨UÒ2Ð2Øˆtõ �U‘”€IØ#€IˆgÑØ�KŠK‰MŒM€EØ+•} UÑ+Ô+¨JÑ7Ô7ÐØ5Õ#Ð$4Ñ5Ô5Ø˜ vðñ ô €Jõ ˆZÔÐ/Ð0Ð0Ô0°AÑ5Ð0Ð0Ñ0Ý��:ˆ Ñ(Ô(Ð(rr   c                óÊ  ‡‡‡‡‡‡‡— t          |¦  «        dz  dk    sJ ‚t          d„ |D ¦   «         ¦  «        rt          | ¦  «        S t          j        rt          | |‰¦  «        }|r|S t          | |‰¦  «        }|�|S |                      ¦   «         }t          t          t          t          |d d d…         |dd d…         ¦  «        ¦  «        ¦  «        ¦  «        Št          |¦  «        t          ‰¦  «        z
  Šg Š‰D ]>\  }}‰                     t          j        j                             |¦  «        |f¦  «         Œ?t          |d ‰…         ¦  «        }g Št          ‰|‰d …         ¦  «        D ]J\  \  }}	}
‰                     |
¦  «         |                     t!          j        |
|z   |	z   ¦  «        ¦  «         ŒKt          |¦  «        t          |¦  «        k    sJ ‚ t%          |                      ¦   «         ¦  «        ‰¦  «        Šˆˆˆˆˆfd„Šˆˆˆfd„}|                      ¦   «         Št+          j        |                      ¦   «         |                      ¦   «         ||¬¦  «        S )Nr1   r   c              3  ó"   K  — | ]
}|d k    V — ŒdS ©r   Nrª   r€  s     rp   r  z"constant_pad_nd.<locals>.<genexpr>§  s&   è è € Ð
#Ð
#�aˆ1�Š6Ð
#Ð
#Ð
#Ð
#Ð
#Ð
#rr   r3   c                óf  •‡ — g }t          ‰ ‰	d …         ‰‰¦  «        D ][\  }\  }}}|dk    r#|                     t          |d¦  «        ¦  «         |dk    r#|                     t          ||¦  «        ¦  «         Œ\t	          j        t          j        |¦  «        }t          j        |ˆ ˆ
fd„‰¦  «        S )Nr   c                 ó   •—  ‰‰ ¦  «        S r»   rª   )rf  r˜  s   €€rp   rp  z/constant_pad_nd.<locals>.mask.<locals>.<lambda>Î  s   ø€ ¨¨°©¬€ rr   )	r,  r}   Úrange_mask_lowÚrange_mask_highr8  rW  rY   rÿ  r   )rf  r  r€  r•  r–  r*  Úboundsrb  Ú
mask_sizesr'  r˜  s   `     €€€€€rp   r  zconstant_pad_nd.<locals>.maskÆ  s·   øø€ ØˆÝ(+¨E°!°"°"¬I°v¸zÑ(JÔ(Jð 	:ð 	:Ñ$ˆC‘�#�t˜fØ�aŠxˆxØ—’�N¨3°Ñ2Ô2Ñ3Ô3Ð3Ø�qŠyˆyØ—’�O¨C°Ñ8Ô8Ñ9Ô9Ð9øÝÔ¥¤¨$Ñ/Ô/ˆÝŒz˜$Ð 7Ð 7Ð 7Ð 7Ð 7¸ÑDÔDÐDrr   c                óþ   •— t          | d ‰…         ¦  «        }t          | ‰d …         ‰¦  «        D ] \  }\  }}|                     ||z
  ¦  «         Œ!t          |¦  «        t          | ¦  «        k    sJ ‚ ‰|¦  «        S r»   )rw   r,  r}   râ   )rf  r³  r€  r•  Ú_highÚbounds_precompr  r'  s        €€€rp   Ú	offset_fnz"constant_pad_nd.<locals>.offset_fnÐ  s†   ø€ Ý˜˜r ˜rœ‘O”Oˆ	Ý!$ U¨1¨2¨2¤Y°Ñ!?Ô!?ð 	(ð 	(ÑˆC‘�#�uØ×Ò˜S 3™YÑ'Ô'Ð'Ð'Ý�9‰~Œ~¥ U¡¤Ò+Ð+Ð+Ð+Øˆt�I‰ŒÐrr   rˆ  )râ   rE  rð  r4   rq  r}  r‰  rã   rw   rP  r,  r}   rZ   rh   rü   Úlookup_precomputed_sizerÔ   rU  r   rÓ   rŠ  rD   r  r|   )r®   ri  rb  r~   rX  ÚlÚhr»  r•  r–  r  r–  r‘  r•  r  r’  r'  r˜  s     `         @@@@@@rp   r�  r�  ¤  sš  øøøøøøø€ å�‰LŒL˜1Ñ Ò"Ð"Ð"Ð"Ý
Ð
#Ð
#˜7Ð
#Ñ
#Ô
#Ñ#Ô#ð Ý�Q‰xŒxˆåÔð Ý% a¨°*Ñ=Ô=ˆØð 	ØˆJõ �a˜ *Ñ
-Ô
-€CØ
€Øˆ
à�JŠJ‰LŒL€Eå•(�4¥ G¨C¨C¨a¨C¤L°'¸!¸$¸Q¸$´-Ñ @Ô @ÑAÔAÑBÔBÑCÔC€FÝˆE‰
Œ
•S˜‘[”[Ñ €Að 68€NØð Pð P‰ˆˆ1Ø×Ò�qœwÔ/×GÒGÈÑJÔJÈAÐNÑOÔOÐOÐOå�u˜R˜a˜R”y‘/”/€KØ€JÝ  ¨¨q¨r¨r¬Ñ3Ô3ð <ð <Ñ‰ˆˆd�TØ×Ò˜$ÑÔÐØ×Ò�5œ<¨¨s©
°TÑ(9Ñ:Ô:Ñ;Ô;Ð;Ð;Ýˆ{ÑÔ�s 5™zœzÒ)Ð)Ð)Ð)Ø-•˜qŸ{š{™}œ}Ñ-Ô-¨jÑ9Ô9€JðEð Eð Eð Eð Eð Eð Eð Eð Eðð ð ð ð ð ð ð �}Š}‰Œ€HÝÔØ�|Š|‰~Œ~Ø�kŠk‰mŒmØØð	ñ ô ð rr   r€   ú
sympy.Exprúsympy.Expr | intc                óÄ   — t          j        t          j        | t          j        ¦  «        t          j        t          j        |¦  «        t          j        ¦  «        ¦  «        S r»   )rY   rý  r}  r‹   rü  rÔ   r¬  )r€   r•  s     rp   r�  r�  à  sB   € ÝŒ6ÝŒ�q�%œ+Ñ&Ô&ÝŒ•u”} SÑ)Ô)­5¬;Ñ7Ô7ñô ð rr   c                ó    — t          j        t          j        | t          j        ¦  «        t          j        |t          j        ¦  «        ¦  «        S r»   )rY   rþ  r}  r‹   rü  )r€   r–  s     rp   r�  r�  ç  s8   € ÝŒ6ÝŒ�q�%œ+Ñ&Ô&ÝŒ�t�Uœ[Ñ)Ô)ñô ð rr   c                ód   — t          j        t          | |¦  «        t          | |¦  «        ¦  «        S r»   )rY   rÿ  r�  r�  )r€   r–  r•  s      rp   Ú
range_maskrŸ  î  s0   € ÝŒ8Ý�q˜#ÑÔÝ˜˜4Ñ Ô ñô ð rr   r;  c                ó    ‡ ‡‡‡‡‡‡‡— ‰                       ¦   «         ‰ d …         Š‰                      ¦   «         Š‰pdg‰z  Šˆˆˆˆˆˆˆ ˆfd„}|S )Nr   c                ó  •‡‡— | d ‰ …         Š| ‰ d …         Št          j        t          j        ˆˆˆ	fd„t	          ‰¦  «        D ¦   «         ¦  «        }‰rt          j        |ˆˆˆˆˆ
fd„‰¦  «        nt          j        |ˆˆˆfd„‰¦  «        S )Nc                ój   •— g | ]/}t          ‰|         ‰|         ‰|         z   ‰|          ¦  «        ‘Œ0S rª   )rŸ  )r­   r€   r™  ÚihÚ	padding_hs     €€€rp   r¯   z=constant_boundary_condition.<locals>.load.<locals>.<listcomp>  s<   ø€ ÐWÐWÐWÀq�Z˜˜1œ˜q œt i°¤lÑ2°Y¸q´\°MÑBÔBÐWÐWÐWrr   c                 óB   •—  t          ‰‰‰ ¬¦  «        g ‰¢‰¢¦  «        S )N©rå   )Úconstant_boundary_condition)rå   r£  Úpad_fill_valueÚprefixr®   s   €€€€€rp   rp  z;constant_boundary_condition.<locals>.load.<locals>.<lambda>	  s/   ø€ ÐOÕ3°A°~È3ÐOÑOÔOØ"�f�N˜r�Nñô € rr   c                 ó"   •—  ‰g ‰¢‰ ¢¦  «        S r»   rª   )r£  r©  r˜  s   €€€rp   rp  z;constant_boundary_condition.<locals>.load.<locals>.<lambda>  s   ø€ ¨(¨(°>°V°>¸b°>Ñ*BÔ*B€ rr   )r8  rW  rY   rÿ  r-  r   )rf  r  r£  r©  rå   rb  r™  r¨  ri  r¤  r®   r˜  s     @@€€€€€€€€rp   r¯  z)constant_boundary_condition.<locals>.loadý  sÔ   øøø€ Ø�u˜˜�u”ˆØ�C�4�5�5Œ\ˆåÔÝŒHàWÐWÐWÐWÐWÐWÍEÐRUÉJÌJÐWÑWÔWñ
ô 
ˆð ðP�CŒJØðð ð ð ð ð ð ð ð ñô ð õ ”˜DÐ"BÐ"BÐ"BÐ"BÐ"BÐ"BÀJÑOÔOð
	
rr   )rã   rŠ  )	r®   rb  ri  r¨  rå   r¯  r™  r¤  r˜  s	   ````` @@@rp   r§  r§  õ  s„   øøøøøøøø€ ð 	
�
Š
‰Œ�c�T�U�UÔ€AØ�}Š}‰Œ€HàÐ$˜A˜3 ™9€Ið
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð* €Krr   ©Údilationc               ój  — |€dgt          |¦  «        z  }t          | d||         z  z   ||         ||         dz
  z  z
  ||         dz
  z   ||         ¦  «        }|rÖt          | d||         z  z   ||         ||         dz
  z  z
  d||         dz
  z  z   ||         ¦  «        }t          j        j                             t          j        |dz
  ||         z  | z
  ||         z
  d¦  «        ¦  «        r|dz  }t          j        j                             t          j        ||¦  «        ¦  «        rd}n|}||fS )Nr3   r1   r   F)	râ   r+   rZ   rh   rü   rb  rÔ   r»  rc  )	r®   r€   Úkernel_sizeré  ri  Ú	ceil_moder¬  Úx_outÚx_alts	            rp   Úpooling_sizer²    s\  € ØÐØ�3�˜W™œÑ%ˆåØ	ˆA�˜”
‰NÑ˜X aœ[¨K¸¬N¸QÑ,>Ñ?Ñ?À6È!Ä9ÈqÁ=ÑQØˆqŒ	ñô €Eð
 ð ÝØØ�'˜!”*‰nñà�qŒk˜[¨œ^¨aÑ/Ñ0ñ1ð �6˜!”9˜q‘=Ñ!ñ"ð �1ŒIñ
ô 
ˆõ Œ7Ô×*Ò*ÝŒH�e˜a‘i 6¨!¤9Ñ,¨qÑ0°7¸1´:Ñ=¸qÑAÔAñ
ô 
ð 	ð �Q‰JˆEÝŒ7Ô×*Ò*­5¬8°E¸5Ñ+AÔ+AÑBÔBð 	àˆIˆIàˆEØ�)ÐÐrr   c               ól   — t          | |¦  «        } t          j        t          j        | ¦  «        }|dk    S )Né   )rT   r8  rW  Úoperatorr¼  )r®  Ún_dimÚwindow_sizes      rp   Ú%should_fallback_max_pool_with_indicesr¸  3  s0   € Ý˜{¨EÑ2Ô2€KÝÔ"¥8¤<°Ñ=Ô=€KØ˜ÒÐrr   ©Úassert_fallbackc               ó.  — |dk    rdg|z  }|dk    rdg|z  }|s|}t          ||¦  «        }t          ||¦  «        }t          ||¦  «        }t          ||¦  «        }t          | t          ¦  «        sJ ‚t          |¦  «        |k    sJ ‚t          |¦  «        |k    sJ ‚t          |¦  «        |k    sJ ‚t          |¦  «        |k    sJ ‚t          |                      ¦   «         ¦  «        |dz   |dz   fv sJ ‚t          ||¬¦  «        }|�||k    sJ ‚|||||fS )Nr   r3   r1   ©r¶  )rT   ry   rG   râ   rã   r¸  )r®   r®  ré  ri  r¬  r¶  rº  Úuse_fallbacks           rp   Úmax_pool_checksr¾  9  sQ  € ð �!‚|€|Ø�#˜‘+ˆØ�1‚}€}Ø�3˜‘;ˆØð Øˆå˜{¨EÑ2Ô2€KÝ˜& %Ñ(Ô(€FÝ˜7 EÑ*Ô*€GÝ˜H eÑ,Ô,€Hå�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜uÒ$Ð$Ð$Ð$Ýˆv‰;Œ;˜%ÒÐÐÐÝˆw‰<Œ<˜5Ò Ð Ð Ð Ýˆx‰=Œ=˜EÒ!Ð!Ð!Ð!Ýˆq�zŠz‰|Œ|ÑÔ ¨¡¨E°A©IÐ 6Ð6Ð6Ð6Ð6å8¸ÈEÐRÑRÔR€LØÐ"Ø˜Ò.Ð.Ð.Ð.à˜ ¨°<Ð?Ð?rr   c          
     ó  ‡‡‡‡‡‡‡‡— |                       ¦   «          | j        d ‰ …         }| j        ‰ d …         Št          ˆˆˆˆˆˆfd„t          ‰¦  «        D ¦   «         Ž \  }Š| j        }	|	t
          j        u rdn.|	j        rt          d¦  «        nt          j	        |	¦  «        j
        }
t          |¦  «        t          |¦  «        z   }t          ‰¦  «        s(t          ‰¦  «        st          d„ ‰D ¦   «         ¦  «        rt          | |
‰¬¦  «        Šn|                      ¦   «         Šˆˆˆˆˆfd„}t          j        d| |                      ¦   «         |	|	||‰¬¦  «        }t          j        d	| |                      ¦   «         t
          j        |	||‰¬¦  «        }t'          |j        j        t          ¦  «        r|                     ¦   «          t'          |j        j        t          ¦  «        r|                     ¦   «          ||fS )
Nc                óH   •— g | ]}t          ‰|         |‰‰‰‰‰¬ ¦  «        ‘ŒS )r«  ©r²  )r­   ra  r¯  Údhwr¬  r®  ri  ré  s     €€€€€€rp   r¯   z*_max_pool_with_offsets.<locals>.<listcomp>e  sM   ø€ ð 

ð 

ð 

ð õ Ø�A”˜˜;¨°¸ÈXðñ ô ð

ð 

ð 

rr   Fú-infc              3  ó"   K  — | ]
}|d k    V — ŒdS r“  rª   r`  s     rp   r  z)_max_pool_with_offsets.<locals>.<genexpr>u  s&   è è € Ð,EÐ,E°q¨Q°ªUÐ,EÐ,EÐ,EÐ,EÐ,EÐ,Err   r¦  c                ó�   •‡‡— | d ‰ …         }| ‰ d …         Šˆˆˆˆˆfd„t          ‰¦  «        D ¦   «         } ‰	g |¢|¢¦  «        S )Nc                óh   •— g | ].}‰|         ‰|         z  ‰|         ‰|         z  z   ‰|         z
  ‘Œ/S rª   rª   ©r­   r€   Úbhr¬  ri  Úreduction_idxré  s     €€€€€rp   r¯   z<_max_pool_with_offsets.<locals>.fn_inner.<locals>.<listcomp>}  sR   ø€ ð 
ð 
ð 
àð �ŒU�V˜A”YÑ =°Ô#3°h¸q´kÑ#AÑBÀWÈQÄZÑOð
ð 
ð 
rr   ©r-  )
r€  rÉ  r©  r£  rÈ  r¬  r¶  ri  ré  r˜  s
    `  @€€€€€rp   Úfn_innerz(_max_pool_with_offsets.<locals>.fn_innerz  s   øøø€ Ø�W�u�f�W”ˆØ�%���Œ\ˆð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
å˜5‘\”\ð
ñ 
ô 
ˆð ˆx˜˜&˜ 2˜Ñ'Ô'Ð'rr   r  ©r-  Ú
input_noderƒ   Ú	dst_dtyperì  r‡  r‰  Úreduction_rangesÚargmax)rJ  rŠ  r,  r-  rÈ   r‹   re   r¹  rb  r  r  rw   rF  r§  rŠ  rE   r  r|   rü  ry   r{   râ  )r®   r®  ré  ri  r¬  r¯  r¶  rK  Údhw_outrÈ   Ú	min_valuerš  rË  rí  ÚoffsetsrÂ  r˜  s    ``````        @@rp   Ú_max_pool_with_offsetsrÔ  V  sK  øøøøøøøø€ ð ‡N‚NÑÔÐØŒG�G�e�V�GÔ€EØ
Œ'�5�&�'�'Ô
€Cåð

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

õ ˜5‘\”\ð	

ñ 

ô 

ðÑ€GˆYð ŒG€Eð •E”JÐÐð 	ˆà$Ô6ÐR�e�F‰mŒmˆm½E¼KÈÑ<NÔ<NÔ<Rð õ �E‰{Œ{�T '™]œ]Ñ*€HÝ
ˆ7�|„|ð #•s˜9‘~”~ð #­Ð,EÐ,E¸HÐ,EÑ,EÔ,EÑ)EÔ)Eð #Ý.¨q°)ÀÐGÑGÔGˆˆà—=’=‘?”?ˆð(ð (ð (ð (ð (ð (ð (ð (ð (õ ÔØØØ�|Š|‰~Œ~ØØØØØ$ð	ñ 	ô 	€Fõ ÔØØØ�|Š|‰~Œ~Ý”+ØØØØ$ð	ñ 	ô 	€Gõ �&”+Ô"¥IÑ.Ô.ð à�ŠÑÔÐÝ�'”,Ô#¥YÑ/Ô/ð à�ŠÑÔÐà�7ˆ?Ðrr   c           
     ó   — t          |¦  «        }t          | |||||d¬¦  «        \  }}}}}t          j        d¬¦  «        5  t	          | ||||||¬¦  «        \  }}	|t          |	t          j        ¦  «        fcd d d ¦  «         S # 1 swxY w Y   d S )NFr¹  r´  ©Úunroll_reductions_thresholdr¼  )râ   r¾  r4   r   rÔ  r  r‹   rg  )
r®   r®  ré  ri  r¬  r¯  r¶  rÑ  rí  rÓ  s
             rp   Ú!_low_memory_max_pool_with_offsetsrØ  ¡  s  € õ �ÑÔ€Eõ 1@Ø	ØØØØØØð1ñ 1ô 1Ñ-€K�˜ (¨Aõ 
Œ°"Ð	5Ñ	5Ô	5ð 
5ð 
5Ý0ØØØØØØØð
ñ 
ô 
‰ˆ�ð •x ­¬Ñ4Ô4Ð4ð
5ð 
5ð 
5ð 
5ñ 
5ô 
5ð 
5ð 
5ð 
5ð 
5ð 
5ð 
5øøøð 
5ð 
5ð 
5ð 
5ð 
5ð 
5s   Á5BÂBÂ
BrÓ  r®  úSequence[int | torch.SymInt]Ú
input_sizeÚincrements_to_indexúlCallable[[Sequence[int | torch.SymInt], Sequence[int | torch.SymInt]], torch._inductor.virtualized.OpsValue]c                óZ  ‡‡‡‡‡‡— t          ‰¦  «        Š|                      ¦   «         Št          j        t	          j        t          j        ‰¦  «        ¦  «        Šˆˆˆˆˆˆfd„}t          j	        |  
                    ¦   «         t          j        ||                      ¦   «         ¬¦  «        }|S )Nc                óü   •—  ‰	| ¦  «        }t          j        |‰
¦  «        }t          j        |‰¦  «        } ‰| |¦  «        }t          j        t          j        |‰‰ d …         ¦  «        t          j        ¦  «        S r»   )rY   r‘  r5   Ú_flattened_index_to_ndr}  Ú_flatten_indexr‹   rü  )r€  rÍ  Úoffset_sympyrÉ  ÚidhwrÛ  rÚ  r®  r¶  Úoffsets_loaderr·  s        €€€€€€rp   Úoffsets_to_indicesz4_pool_offsets_to_indices.<locals>.offsets_to_indicesÑ  s{   ø€ Ø� Ñ$Ô$ˆÝÔ,¨V°[ÑAÔAˆÝ&Ô=¸lÈKÑXÔXˆØ"Ð" 3¨Ñ6Ô6ˆÝŒ~ÝÔ)¨$°
¸E¸6¸7¸7Ô0CÑDÔDÅeÄkñ
ô 
ð 	
rr   rˆ  )râ   rŠ  rÔ   rò  r8  rW  rµ  r¼  rD   r  r|   r‹   rü  rã   )	rÓ  r®  rÚ  rÛ  rä  rR  r¶  rã  r·  s	    ```  @@@rp   Ú_pool_offsets_to_indicesrå  Ä  s¾   øøøøøø€ õ �ÑÔ€EØ×(Ò(Ñ*Ô*€NÝ”-¥	Ô 0µ´¸{Ñ KÔ KÑLÔL€Kð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ ÔØ×!Ò!Ñ#Ô#ÝŒkØ#Ø×ÒÑ!Ô!ð	ñ ô €Gð €Nrr   c                ó\   ‡‡‡‡— t          |¦  «        Šˆˆˆˆfd„}t          | |||¦  «        S )Nc                ó\   •‡‡— | ‰ d …         Šˆˆˆˆˆfd„t          ‰¦  «        D ¦   «         S )Nc                óh   •— g | ].}‰|         ‰|         z  ‰|         ‰|         z  z   ‰|         z
  ‘Œ/S rª   rª   rÇ  s     €€€€€rp   r¯   zX_low_memory_max_pool_offsets_to_indices.<locals>.increments_to_index.<locals>.<listcomp>î  sR   ø€ ð 
ð 
ð 
àð �ŒU�V˜A”YÑ =°Ô#3°h¸q´kÑ#AÑBÀWÈQÄZÑOð
ð 
ð 
rr   rÊ  )r€  rÉ  rÈ  r¬  r¶  ri  ré  s    `@€€€€rp   rÛ  zD_low_memory_max_pool_offsets_to_indices.<locals>.increments_to_indexì  sY   øøø€ Ø�%���Œ\ˆð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
å˜5‘\”\ð
ñ 
ô 
ð 	
rr   )râ   rå  )rÓ  r®  rÚ  ré  ri  r¬  rÛ  r¶  s      ``` @rp   Ú'_low_memory_max_pool_offsets_to_indicesré  ã  s[   øøøø€ õ �ÑÔ€Eð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ $Ø�˜jÐ*=ñô ð rr   c           	     ó¶   — t          | |||||¬¦  «        \  }}}}}t          | ||||||¬¦  «        \  }}	t          |	|| j        | d …         |||¦  «        }
||
fS )Nr¼  )r¾  rÔ  ré  rŠ  )r®   r®  ré  ri  r¬  r¯  r¶  rÑ  r~   rÓ  rR  s              rp   Ú_max_pool_with_indicesrë  ø  s–   € õ 1@Ø	ˆ;˜ ¨¸ð1ñ 1ô 1Ñ-€K�˜ (¨Aõ *Ø	ˆ;˜ ¨°9ÀEðñ ô �L€Cˆõ 6ØØØ	Œ����ÔØØØñô €Gð �ˆ<Ðrr   c           	     ó.   — t          | |||||d¬¦  «        S ©Nr1   r¼  ©rë  ©r®   r®  ré  ri  r¬  r¯  s         rp   Úmax_pool2d_with_indicesrð    ó*   € õ "Ø	ˆ;˜ ¨°9ÀAðñ ô ð rr   c           	     ó.   — t          | |||||d¬¦  «        S ©Nr¾   r¼  rî  rï  s         rp   Úmax_pool3d_with_indicesrô  %  rñ  rr   c                ó   ‡‡‡‡‡‡‡‡‡‡‡— ‰dk    rddgŠ|dk    rddg}‰s‰Št          |t          ¦  «        sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          |¦  «        dk    sJ ‚t          |                     ¦   «         ¦  «        dv sJ ‚|                      ¦   «          |                      ¦   «         }t          |t          ¦  «        r¼t          |j        j        t          ¦  «        r�|j        j        }	|	                     ¦   «         }
|
€J ‚t          j
        d t          j        |
|	                     ¦   «         |	                     ¦   «         ¬¦  «        |	¬¦  «        }|                     ¦   «          |                     ¦   «         }n|                     ¦   «         }|d ur|d         dk    p|d uo|d         dk    }t          d„ |D ¦   «         ¦  «        rt!          | |‰‰‰|||¦  «        S |                     ¦   «         �^ }}Š|                      ¦   «         �^ }ŠŠ|                     ¦   «         Š|                      ¦   «         Št%          |                     ¦   «         ¦  «        }t'          ˆˆfd„t)          ‰d         dz  ¦  «        D ¦   «         ¦  «        Št'          ˆˆfd	„t)          ‰d         dz  ¦  «        D ¦   «         ¦  «        Š‰‰z  }|d
k    rt!          | |‰‰‰|||¦  «        S |                     ¦   «         Šˆˆˆˆˆˆˆˆˆˆˆfd„}t          j        |                      ¦   «         |                      ¦   «         ||¬¦  «        }|rt          j                             |¦  «        S |S )Nr   r3   r1   r  )rƒ   rÈ   r  rü  c              3  ó"   K  — | ]
}|d k    V — ŒdS r“  rª   r`  s     rp   r  z3max_pool2d_with_indices_backward.<locals>.<genexpr>d  s&   è è € Ð
$Ð
$�aˆ1�Š6Ð
$Ð
$Ð
$Ð
$Ð
$Ð
$rr   c              3  ó¼   •K  — | ]V}t          t          |‰d          ¦  «        t          d t          |‰d          z
  ‰d          ¦  «        ¦  «        z
  d¦  «        V — ŒWdS ©r   r3   N©r  r+   ©r­   r™  r®  ré  s     €€rp   r  z3max_pool2d_with_indices_backward.<locals>.<genexpr>q  ów   øè è € ð ð àõ 	�H�Q˜˜qœ	Ñ"Ô"¥S¨­H°Q¸ÀQ¼Ñ5GÈÐPQÌÑ,SÔ,SÑ%TÔ%TÑTÐVWÑXÔXðð ð ð ð ð rr   c              3  ó¼   •K  — | ]V}t          t          |‰d          ¦  «        t          dt          |‰d          z
  ‰d          ¦  «        ¦  «        z
  d ¦  «        V — ŒWdS ©r3   r   Nrù  ©r­   Úwr®  ré  s     €€rp   r  z3max_pool2d_with_indices_backward.<locals>.<genexpr>u  rû  rr   r´  c                ód  •— | �^ }}}t          j        |‰z  |z   t          j        ¦  «        }|‰d         z   }|‰d         z   }t          j        t	          |‰d         z
  ‰d         z   ‰d         ¦  «        t          j        ¦  «        }t          j        t	          |‰d         z
  ‰d         z   ‰d         ¦  «        t          j        ¦  «        }t          j        t	          |‰d         ¦  «        dz   t          j        ¦  «        }t          j        t	          |‰d         ¦  «        dz   t          j        ¦  «        }t          j        |t          j        dt          j        ¦  «        ¦  «        }t          j        |t          j        dt          j        ¦  «        ¦  «        }t          j        |t          j        ‰t          j        ¦  «        ¦  «        }t          j        |t          j        ‰t          j        ¦  «        ¦  «        }d }	t          ‰¦  «        D �]}
t          ‰¦  «        D �]}t          j	        |t          j        |
t          j        ¦  «        ¦  «        }t          j	        |t          j        |t          j        ¦  «        ¦  «        }g |¢t          j
        t          j        |t          j        |t          j        dt          j        ¦  «        ¦  «        ¦  «        ‰d         d¬¦  «        ‘t          j
        t          j        |t          j        |t          j        dt          j        ¦  «        ¦  «        ¦  «        ‰d         d¬¦  «        ‘} ‰|¦  «        } ‰|¦  «        }t          j        ||¦  «        }|	€5t          j        ||t          j        dt          j        ¦  «        ¦  «        }	�Œ�t          j        t          j        t          j        ||¦  «        t          j        ||¦  «        ¦  «        |¦  «        }t          j        |t          j	        |	|¦  «        |	¦  «        }	�Œ�Œ|	€J ‚|	S )Nr   r3   éþÿÿÿFrÐ  r¨  rû  )rY   r}  r‹   rE  r+   r  r~  r  r-  r³   r‘  r6  r2  rM  r3  rÿ  rþ  )r€  r©  r™  rÿ  Ú
index_testÚphstartÚpwstartÚphendÚpwendÚgradientÚph_Úpw_ÚphÚpwÚ
grad_indexÚindex_actualÚ	grad_partr   r  Úgrad_loaderÚh_window_sizer›  Úindices_sizer®  ri  Úpooled_heightÚpooled_widthré  Úw_window_sizeÚwidths                      €€€€€€€€€€€rp   r†   z,max_pool2d_with_indices_backward.<locals>.fn„  sƒ  ø€ Ø‰ˆ��AÝ”^ A¨¡I°¡Mµ5´;Ñ?Ô?ˆ
Ø�˜”
‰NˆØ�˜”
‰NˆÝ”.Ý�Q˜ QœÑ'¨&°¬)Ñ3°V¸A´YÑ?Ô?ÅÄñ
ô 
ˆõ ”.Ý�Q˜ QœÑ'¨&°¬)Ñ3°V¸A´YÑ?Ô?ÅÄñ
ô 
ˆõ ”�x¨¨6°!¬9Ñ5Ô5¸Ñ9½5¼;ÑGÔGˆÝ”�x¨¨6°!¬9Ñ5Ô5¸Ñ9½5¼;ÑGÔGˆå”+˜g¥s¤|°Aµu´{Ñ'CÔ'CÑDÔDˆÝ”+˜g¥s¤|°Aµu´{Ñ'CÔ'CÑDÔDˆÝ”˜E¥3¤>°-ÅÄÑ#MÔ#MÑNÔNˆÝ”˜E¥3¤>°,ÅÄÑ#LÔ#LÑMÔMˆàˆÝ˜Ñ'Ô'ð #	Wñ #	WˆCÝ˜]Ñ+Ô+ð "Wñ "W�Ý”W˜W¥c¤l°3½¼Ñ&DÔ&DÑEÔE�Ý”W˜W¥c¤l°3½¼Ñ&DÔ&DÑEÔE�ðØðåÔ)Ýœ B­¬°µs´|ÀAÅuÄ{Ñ7SÔ7SÑ(TÔ(TÑUÔUØ$ RÔ(Ø#ðñ ô ðõ Ô)Ýœ B­¬°µs´|ÀAÅuÄ{Ñ7SÔ7SÑ(TÔ(TÑUÔUØ$ RÔ(Ø#ðñ ô ð�
ð  .˜~¨jÑ9Ô9�Ø'˜K¨
Ñ3Ô3�	Ýœ˜|¨ZÑ8Ô8�àÐ#å"œyØ˜y­#¬,°s½E¼MÑ*JÔ*Jñ ô  �H‘Hõ œ8ÝœÝœF 2 uÑ-Ô-ÝœF 2 uÑ-Ô-ñô ð ñô �Dõ  #œy¨­s¬w°xÀÑ/KÔ/KÈXÑVÔV�H‘HñE"WðF Ð#Ð#Ð#Øˆrr   rˆ  )ry   rG   râ   rã   rJ  r  r{   rD   r|   r6   r'  rD  rÓ   Údecide_layoutrÎ  rF  Ú)fallback_max_pool2d_with_indices_backwardrŠ  rw   r  r-  r  r  r§  )Úgrad_outputr®   r®  ré  ri  r¬  r¯  rR  Ú	gO_strider{   rƒ   Úx_bufferÚx_strideÚis_channels_lastÚ_batchÚ_heightrÑ  rš  r·  r†   r~   r  r  r›  r  r  r  r  r  s     ```                @@@@@@@@rp   Ú max_pool2d_with_indices_backwardr  9  s>  øøøøøøøøøøø€ ð �!‚|€|Ø�a�&ˆØ�1‚}€}Ø�q�6ˆØð Øˆå�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ýˆv‰;Œ;˜!ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÝˆx‰=Œ=˜AÒÐÐÐÝˆq�zŠz‰|Œ|ÑÔ Ð&Ð&Ð&Ð&ð ×ÒÑÔÐØ×,Ò,Ñ.Ô.€Iå�!•YÑÔð (¥J¨q¬v¬{½IÑ$FÔ$Fð (ØŒvŒ{ˆØ—’Ñ"Ô"ˆØÐ!Ð!Ð!ÝÔ$ØÝÔ$ØØ—n’nÑ&Ô&Ø—]’]‘_”_ðñ ô ð
 ð
ñ 
ô 
ˆð 	×ÒÑ Ô Ð Ø×&Ò&Ñ(Ô(ˆˆà×%Ò%Ñ'Ô'ˆà ¨Ð,ÐA°¸!´ÀÒ1Að Ø˜ÐÐ3 )¨A¤,°!Ò"3ð õ Ð
$Ð
$˜8Ð
$Ñ
$Ô
$Ñ$Ô$ð 
å8Ø˜˜K¨°¸(ÀIÈwñ
ô 
ð 	
ð  Ÿjšj™lœlÑ€VˆW�eØ&1×&:Ò&:Ñ&<Ô&<Ñ#€Qˆ�|à×(Ò(Ñ*Ô*€NØ×)Ò)Ñ+Ô+€KÝ�A—J’J‘L”LÑ!Ô!€Håð ð ð ð ð å�{ 1”~¨Ñ)Ñ*Ô*ðñ ô ñ ô €Mõ ð ð ð ð ð å�{ 1”~¨Ñ)Ñ*Ô*ðñ ô ñ ô €Mð
   -Ñ/€Kà�RÒÐå8Ø˜˜K¨°¸(ÀIÈwñ
ô 
ð 	
ð ×#Ò#Ñ%Ô%€Lð9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9ð 9õv Ô
Ø×%Ò%Ñ'Ô'Ø×#Ò#Ñ%Ô%ØØð	ñ ô €Cð ð ÝŒ×4Ò4°SÑ9Ô9Ð9àˆ
rr   rû  c                ó>   ‡‡— |                       ¦   «         Šˆˆfd„}|S )Nc           
     óÒ  •‡ ‡‡‡	‡
— |\  ŠŠ	|\  ŠŠ
|\  }}t          j        t          j        t          j        ‰‰z   t          j        ¦  «        t          j        |t          j        ¦  «        ¦  «        t          j        t          j        ‰
‰	z   t          j        ¦  «        t          j        |t          j        ¦  «        ¦  «        ¦  «        }t          j        |ˆˆˆ	ˆ ˆ
ˆfd„‰¦  «        S )Nc                 ó2   •—  ‰g ‰¢‰ ‰z   ‘‰‰z   ‘¦  «        S r»   rª   )Úh_start_indexr£  Úiwr©  Úw_start_indexr˜  s   €€€€€€rp   rp  z3pad_adaptive_loader.<locals>.load.<locals>.<lambda>à  s+   ø€ �H�HÐN˜vÐN }°rÑ'9ÐN¸=È2Ñ;MÐNÑOÔO€ rr   )rY   rÿ  rþ  r}  r‹   rü  r   )r©  Ú
incrementsÚstart_indicesÚend_indicesÚh_end_indexÚw_end_indexr  r#  r£  r$  r%  Úpad_valr˜  s   `      @@@@€€rp   r¯  z!pad_adaptive_loader.<locals>.loadÎ  sÛ   øøøøøø€ Ø‰ˆˆBØ'4Ñ$ˆ�}Ø#.Ñ ˆ�[åŒxÝŒFÝ”˜}¨rÑ1µ5´;Ñ?Ô?Ý”˜{­E¬KÑ8Ô8ñô õ ŒFÝ”˜}¨rÑ1µ5´;Ñ?Ô?Ý”˜{­E¬KÑ8Ô8ñô ñ	
ô 	
ˆõ ŒzØØOÐOÐOÐOÐOÐOÐOÐOÐOØñ
ô 
ð 	
rr   rª  )r®   r+  r¯  r˜  s    ` @rp   Úpad_adaptive_loaderr,  Ë  s6   øø€ Ø�}Š}‰Œ€Hð
ð 
ð 
ð 
ð 
ð 
ð, €Krr   c                óÆ   — t          j        | ||¬¦  «        }t          j        |||¬¦  «        }t          j        | ||¬¦  «        }t          j        |||¬¦  «        }	||||	fS )N)Úout_dimÚinp_dim)r8  rK  )
rÒ  rÓ  Úh_inÚw_inÚh_outÚw_outr#  r)  r%  r*  s
             rp   Ú compute_indices_adaptive_poolingr4  ç  sm   € ÝÔ% k¸5È$ÐOÑOÔO€MÝÔ# I°uÀdÐKÑKÔK€KåÔ% k¸5È$ÐOÑOÔO€MÝÔ# I°uÀdÐKÑKÔK€Kà˜+ }°kÐAÐArr   c                ól   ‡‡‡‡‡‡— |\  }}|\  }}	t          | |||||	¦  «        \  ŠŠŠŠˆˆˆˆˆˆfd„}
|
S )Nc                ó<  •— | �^ }}} ‰|¦  «        } ‰|¦  «        } ‰|¦  «        } ‰|¦  «        }d }	t          j        t          ‰d         ¦  «        t          ‰d         ¦  «        ¦  «        D ]*\  }
} |||
|g||g||g¦  «        }|	€|}	Œ ‰||	¦  «        }	Œ+|	S rC  )r*  Úproductr-  )r€  r·  r©  rÈ  Úbwr#  r)  r%  r*  rí  r£  r$  rl  Úh_end_index_fnÚh_start_index_fnÚkernel_maxesÚ
pooling_fnÚw_end_index_fnÚw_start_index_fns                €€€€€€rp   r†   z _adaptive_pooling_fn.<locals>.fn   sÛ   ø€ Ø‰ˆ��Rà(Ð(¨Ñ,Ô,ˆØ$�n RÑ(Ô(ˆà(Ð(¨Ñ,Ô,ˆØ$�n RÑ(Ô(ˆàˆÝÔ'­¨l¸1¬oÑ(>Ô(>ÅÀlÐSTÄoÑ@VÔ@VÑWÔWð 
	1ð 
	1‰FˆB�Ø�&ØØ�R�Ø Ð.Ø˜kÐ*ñ	ô ˆCð ˆ~Ø��à#˜ C¨Ñ0Ô0��Øˆrr   ©r4  )rÒ  rÓ  r;  Úin_sizesÚ	out_sizesr<  r0  r1  r2  r3  r†   r9  r:  r=  r>  s     `  `     @@@@rp   Ú_adaptive_pooling_fnrB  ñ  s‚   øøøøøø€ ð �J€Dˆ$Ø�L€Eˆ5õ 	)Ø�Y  d¨E°5ñ	ô 	ñØØØØð
ð ð ð ð ð ð ð ð ð ð. €Irr   c                óp   ‡‡‡
‡‡‡‡— |\  }Š|\  }}t          | ||‰||¦  «        \  ŠŠ
ŠŠˆ
ˆˆˆˆˆˆfd„}	|	S )Nc                óò  •— | �^ }}} ‰|¦  «        } ‰|¦  «        } ‰|¦  «        } ‰|¦  «        }d }	d }
t          j        t          ‰d         ¦  «        t          ‰d         ¦  «        ¦  «        D ]ƒ\  }} ||||g||g||g¦  «        }t          j        ||z   ‰z  |z   |z   t
          j        ¦  «        }|
€|}
n)t          j        t          j        ||	¦  «        ||
¦  «        }
|	€|}	Œw ‰||	¦  «        }	Œ„|
S rC  )	r*  r7  r-  rY   r}  r‹   rü  rM  Úgt)r€  r·  r©  rÈ  r8  r#  r)  r%  r*  ÚmaxvalÚmaxindexr£  r$  rl  rf  r9  r:  r;  r<  r=  r1  r>  s                  €€€€€€€rp   r†   z)_adaptive_pooling_fn_with_idx.<locals>.fn)  s:  ø€ Ø‰ˆ��Rà(Ð(¨Ñ,Ô,ˆØ$�n RÑ(Ô(ˆà(Ð(¨Ñ,Ô,ˆØ$�n RÑ(Ô(ˆàˆØˆÝÔ'­¨l¸1¬oÑ(>Ô(>ÅÀlÐSTÄoÑ@VÔ@VÑWÔWð 	1ð 	1‰FˆB�Ø�&ØØ�R�Ø Ð.Ø˜kÐ*ñ	ô ˆCõ ”NØ Ñ# tÑ+¨mÑ;¸bÑ@Å%Ä+ñô ˆEð ÐØ ��åœ9¥S¤V¨C°Ñ%8Ô%8¸%ÀÑJÔJ�àˆ~Ø��à#˜ C¨Ñ0Ô0��àˆrr   r?  )rÒ  rÓ  r;  r@  rA  r<  r0  r2  r3  r†   r9  r:  r=  r1  r>  s     `  `    @@@@@rp   Ú_adaptive_pooling_fn_with_idxrH    s‰   øøøøøøø€ ð �J€Dˆ$Ø�L€Eˆ5õ 	)Ø�Y  d¨E°5ñ	ô 	ñØØØØð
!ð !ð !ð !ð !ð !ð !ð !ð !ð !ð !ðF €Irr   c                óÔ  ‡ ‡‡— ‰                       ¦   «         t          j        k    rt          d¦  «        ‚t	          ‰ t
          ¦  «        sJ ‚t          |¦  «        dk    sJ ‚‰                      ¦   «          ‰                      ¦   «         �^ }}}t          j
        j                             |¦  «        }t          j
        j                             |¦  «        }|\  }}||k    r||k    rt          ‰ ¦  «        S |dk    s|dk    r>g |¢|‘|‘}t          |‰                       ¦   «         ‰                      ¦   «         ¬¦  «        S ||z  dk    r9||z  dk    r0t!          ||¦  «        t!          ||¦  «        g}t#          ‰ |¦  «        S t%          ||z   dz
  |¦  «        }	t%          ||z   dz
  |¦  «        }
t'          |¦  «        ||gz   }‰                       ¦   «         }|	|
z  }|dk    rt)          ‰ |¦  «        S d„ }d„ }t+          |||	|
g||g||gt,          j        ¬	¦  «        Št1          t3          ‰ ¦  «        ¦  «        Šˆˆˆ fd
„}t5          j        ‰                      ¦   «         |||¬¦  «        }|S )Nz0'adaptive_avg_pool2d' not implemented for 'Long'r1   r   r‘  r3   r´  c                ó(   — t          | |z  |¦  «        S r»   ©r+   ©rf  r.  r/  s      rp   rÒ  z)_adaptive_avg_pool2d.<locals>.start_indexz  ó   € Ý˜ ™¨7Ñ3Ô3Ð3rr   c                ó:   — t          | dz   |z  |z   dz
  |¦  «        S r@  rK  rL  s      rp   rÓ  z'_adaptive_avg_pool2d.<locals>.end_index}  ó%   € Ý˜ ™ gÑ-°Ñ7¸!Ñ;¸WÑEÔEÐErr   ©rÒ  rÓ  r;  r@  rA  r<  c                óp   •— t          j         ‰| t          ‰¦  «        ¦  «         ‰| ‰¦  «        ¦  «        S r»   )rY   Útruedivr,  )r€  Úfn_sumÚones_loaderr®   s    €€€rp   r†   z _adaptive_avg_pool2d.<locals>.fn‹  s=   ø€ ÝŒ{ØˆF�3Õ+¨AÑ.Ô.Ñ/Ô/°°¸¸[Ñ1IÔ1Iñ
ô 
ð 	
rr   rˆ  )rÓ   r‹   rü  rØ  ry   rG   râ   rJ  rã   rZ   rh   rü   r_  rð  r™  r|   r+   Ú
avg_pool2drJ   rw   Úfallback_adaptive_avg_pool2drB  rY   r³   r,  Ú	ones_likerD   r  )r®   r»  rK  r0  r1  r2  r3  Úo_sizer®  Úh_kernel_maxÚw_kernel_maxrš  rÈ   r·  rÒ  rÓ  r†   ÚrvrS  rT  s   `                 @@rp   Ú_adaptive_avg_pool2dr\  T  s¢  øøø€ à‡{‚{�}„}�œÒ#Ð#åÐMÑNÔNÐNÝ�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ø‡N‚NÑÔÐàŸš™œÑ€UˆD�$åŒ7Ô×%Ò% dÑ+Ô+€DÝŒ7Ô×%Ò% dÑ+Ô+€Dà�L€Eˆ5ð ˆu‚}€}˜ š˜Ý�Q‰xŒxˆà�‚z€z�U˜a’Z�ZØ'�5Ð'˜%Ð' Ð'ˆÝ�V 1§;¢;¡=¤=¸¿º¹¼ÐHÑHÔHÐHØˆe�|�qÒÐ˜T E™\¨QÒ.Ð.Ý  eÑ,Ô,­h°t¸UÑ.CÔ.CÐDˆÝ˜!˜[Ñ)Ô)Ð)å˜D 5™L¨1Ñ,¨uÑ5Ô5€LÝ˜D 5™L¨1Ñ,¨uÑ5Ô5€Lå�E‰{Œ{˜e U˜^Ñ+€HØ�KŠK‰MŒM€Eà Ñ-€KØ�RÒÐå+¨A¨{Ñ;Ô;Ð;ð4ð 4ð 4ðFð Fð Fõ "ØØØ" LÐ1Ø˜�Ø˜%�.Ý”7ðñ ô €Fõ &¥i°¡l¤lÑ3Ô3€Kð
ð 
ð 
ð 
ð 
ð 
ð 
õ
 
Ô	Ø�|Š|‰~Œ~ØØØð	
ñ 
ô 
€Bð €Irr   c                ó0  ‡ ‡‡— ‰                       ¦   «         t          j        k    rt          d¦  «        ‚t	          ‰ t
          ¦  «        sJ ‚t          |¦  «        dk    sJ ‚‰                      ¦   «          ‰                      ¦   «         �^ }}}t          j
        j                             |¦  «        }t          j
        j                             |¦  «        }|\  }}|dk    s|dk    rlg |¢|‘|‘}t          |‰                       ¦   «         ‰                      ¦   «         ¬¦  «        t          |t          j        ‰                      ¦   «         ¬¦  «        fS ||z  dk    r||z  dk    rt          ‚t!          ||z   dz
  |¦  «        }t!          ||z   dz
  |¦  «        }	t#          |¦  «        ||gz   }
‰                       ¦   «         }||	z  }|dk    rt%          ‰ |¦  «        S d„ }d„ }t'          ||||	g||g||gt(          j        ¬	¦  «        Št-          ||||	g||g||gt(          j        ¬	¦  «        Šˆˆ fd
„}ˆˆ fd„}t/          j        ‰                      ¦   «         |||
¬¦  «        }t/          j        ‰                      ¦   «         t          j        ||
¬¦  «        }||fS )Nz,adaptive_max_pool2d not implemented for Longr1   r   r‘  r3   r´  c                ó(   — t          | |z  |¦  «        S r»   rK  rL  s      rp   rÒ  z(adaptive_max_pool2d.<locals>.start_indexÄ  rM  rr   c                ó:   — t          | dz   |z  |z   dz
  |¦  «        S r@  rK  rL  s      rp   rÓ  z&adaptive_max_pool2d.<locals>.end_indexÇ  rO  rr   rP  c           	     óR   •—  ‰| t          ‰t          d¦  «        ¦  «        ¦  «        S ©NrÃ  ©r,  rb  )r€  Úinner_func_max_valr®   s    €€rp   Úinner_fn_max_valz-adaptive_max_pool2d.<locals>.inner_fn_max_valÜ  ó'   ø€ Ø!Ð! #Õ':¸1½eÀF¹m¼mÑ'LÔ'LÑMÔMÐMrr   c           	     óR   •—  ‰| t          ‰t          d¦  «        ¦  «        ¦  «        S ra  rb  )r€  Úinner_func_max_idxr®   s    €€rp   Úinner_fn_max_idxz-adaptive_max_pool2d.<locals>.inner_fn_max_idxß  re  rr   rˆ  )rÓ   r‹   rü  rØ  ry   rG   râ   rJ  rã   rZ   rh   rü   r_  r™  r|   Ú
ValueErrorrJ   rw   Úfallback_adaptive_max_pool2drB  rY   r  rH  rD   r  )r®   r»  rK  r0  r1  r2  r3  rX  rY  rZ  rš  rÈ   r·  rÒ  rÓ  rd  rh  r[  Úrirg  rc  s   `                  @@rp   Úadaptive_max_pool2drl  Ÿ  s  øøø€ à‡{‚{�}„}�œÒ#Ð#åÐIÑJÔJÐJÝ�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ø‡N‚NÑÔÐàŸš™œÑ€UˆD�$åŒ7Ô×%Ò% dÑ+Ô+€DÝŒ7Ô×%Ò% dÑ+Ô+€Dà�L€Eˆ5à�‚z€z�U˜a’Z�ZØ'�5Ð'˜%Ð' Ð'ˆÝ�V 1§;¢;¡=¤=¸¿º¹¼ÐHÑHÔHÍ%Ø�%œ+¨a¯lªl©n¬nðK
ñ K
ô K
ð 
ð 	
ð ˆe�|�qÒÐ˜T E™\¨QÒ.Ð.åÐå˜D 5™L¨1Ñ,¨uÑ5Ô5€LÝ˜D 5™L¨1Ñ,¨uÑ5Ô5€Lå�E‰{Œ{˜e U˜^Ñ+€HØ�KŠK‰MŒM€Eà Ñ-€KØ�RÒÐå+¨A¨{Ñ;Ô;Ð;ð4ð 4ð 4ðFð Fð Fõ .ØØØ" LÐ1Ø˜�Ø˜%�.Ý”;ðñ ô Ðõ 7ØØØ" LÐ1Ø˜�Ø˜%�.Ý”;ðñ ô ÐðNð Nð Nð Nð Nð NðNð Nð Nð Nð Nð Nõ 
Ô	Ø�|Š|‰~Œ~ØØ!Øð	
ñ 
ô 
€Bõ 
Ô	Ø�|Š|‰~Œ~ÝŒkØ!Øð	
ñ 
ô 
€Bð ˆrˆ6€Mrr   c                ó‚   ‡ ‡‡‡‡‡‡— ‰‰         Š‰‰         Š‰‰         Š‰                       ¦   «         Šˆˆˆˆˆˆ ˆfd„}|S )Nc                ór  •— ‰                      ¦   «         }t          |¦  «        dk    rwt          | ¦  «        dk    r ‰d| d         ‰dz
  ‰
z
  g¦  «        }n^t          | ¦  «        dk    r! ‰| d         | d         ‰dz
  ‰
z
  g¦  «        }n* ‰dd‰dz
  ‰
z
  g¦  «        }n ‰g | ¢‰dz
  ‰
z
  ‘¦  «        }t          j        |‰                     ¦   «         ¦  «        }t          j        ‰‰z
  t
          j        ¦  «        }t          j        ‰dz
  t
          j        ¦  «        }t          j        t          j        |t
          j	        ¦  «        t          j        |t
          j	        ¦  «        ¦  «        }t          j
        t          j        |d¦  «        d|¦  «        }t          j        ||z   |z  ¦  «        t          j        ||z  ¦  «        z
  }t          j        |t
          j        ¦  «        }t          j        ||¦  «        }	t          j        t          j
        |	||¦  «        t          j        ‰¦  «        ¦  «        S )Nr¾   r3   r   r1   )rã   râ   rY   r}  rÓ   r‹   rü  rR  r  Úfloat64rM  r2  r  rþ  r‘  rÔ   rò  )r©  r€   Úsamples_shapeÚsampleÚi_exprÚdiffÚout_sz_exprr…  Úseq_ir  rå   Úin_szÚ	kernel_szÚndimsÚout_szÚsamplesÚsamples_loaders             €€€€€€€rp   r¯  z)_fractional_pooling_offsets.<locals>.load÷  sû  ø€ ð  ×(Ò(Ñ*Ô*ˆåˆ}ÑÔ Ò"Ð"Ý�6‰{Œ{˜aÒÐð (˜¨¨F°1¬I°u¸q±yÀ3±Ð(GÑHÔH��Ý�V‘” Ò!Ð!ð (˜¨°¬°F¸1´I¸uÀq¹yÈ3¹Ð(OÑPÔP��ð (˜¨¨A¨u°q©y¸3©Ð(?Ñ@Ô@��ð $�^Ð$> fÐ$>¨e°a©i¸#©oÐ$>Ñ?Ô?ˆFÝ”  7×#4Ò#4Ñ#6Ô#6Ñ7Ô7ˆÝŒ~˜e iÑ/µ´Ñ=Ô=ˆÝ”n V¨a¡Zµ´Ñ=Ô=ˆÝ”ÝŒL˜�uœ}Ñ-Ô-­s¬|¸KÍÌÑ/WÔ/Wñ
ô 
ˆõ ”	�#œ& ¨aÑ0Ô0°!°UÑ;Ô;ˆÝ”	˜6 F™?¨eÑ3Ñ4Ô4µs´yÀÈ%ÁÑ7PÔ7PÑPˆÝ”˜U¥E¤KÑ0Ô0ˆÝŒv�f˜kÑ*Ô*ˆÝÔ$¥S¤Y¨t°U¸DÑ%AÔ%AÅ5Ä=ÐQVÑCWÔCWÑXÔXÐXrr   rª  )rz  rv  ry  rw  rå   rx  r¯  r{  s   `````` @rp   Ú_fractional_pooling_offsetsr|  ñ  s   øøøøøøø€ Ø�CŒ[€FØ�#ŒJ€EØ˜#”€IØ×(Ò(Ñ*Ô*€Nð!Yð !Yð !Yð !Yð !Yð !Yð !Yð !Yð !Yð !Yð !YðF €Krr   c                ó*   — t          | |||d¬¦  «        S rí  ©Ú_fractional_max_pool©r®   r®  r»  Úrandom_sampless       rp   Úfractional_max_pool2dr‚    ó   € å  ;°¸^ÐSTÐUÑUÔUÐUrr   c                ó*   — t          | |||d¬¦  «        S ró  r~  r€  s       rp   Úfractional_max_pool3dr…  "  rƒ  rr   c                ó
  ‡‡‡‡‡‡‡‡— |                       ¦   «          | j        d ‰ …         | j        ‰ d …         c}Št          j        d¬¦  «        5  ˆˆˆˆˆfd„t	          ‰¦  «        D ¦   «         Š|                      ¦   «         Šˆˆˆfd„}ˆˆfd„Št          |¦  «        t          ‰¦  «        z   }|                      ¦   «         }t          j	        d| |  
                    ¦   «         ||||‰¬¦  «        }	t          j	        d| |  
                    ¦   «         t          j        |||‰¬¦  «        }
t          |	t          ¦  «        s
J |	¦   «         ‚t          |	j        j        t          ¦  «        r|	                     ¦   «          t          |
t          ¦  «        s
J |
¦   «         ‚t          |
j        j        t          ¦  «        r|
                     ¦   «          t#          |
‰| j        ‰¦  «        }|	|fcd d d ¦  «         S # 1 swxY w Y   d S )	Nr´  rÖ  c           
     ó:   •— g | ]}t          ‰‰‰‰‰|¬ ¦  «        ‘ŒS ))rz  rv  ry  rw  rx  rå   )r|  )r­   ra  Úinp_dhwr®  r¶  r»  r�  s     €€€€€rp   r¯   z(_fractional_max_pool.<locals>.<listcomp>,  sL   ø€ ð 

ð 

ð 

ð õ (Ø&ØØ"Ø%ØØðñ ô ð

ð 

ð 

rr   c                óL   •— | d ‰ …         } ‰g |¢ ‰| |¦  «        ¢¦  «        S r»   rª   )r€  rÉ  r©  rÛ  r¶  r˜  s      €€€rp   rË  z&_fractional_max_pool.<locals>.fn_inner:  s;   ø€ Ø˜˜5˜&˜”\ˆFØ�8ÐO˜fÐOÐ':Ð':¸3ÀÑ'NÔ'NÐOÑPÔPÐPrr   c                ór   •‡‡‡— | d ‰ …         Š| ‰ d …         Šˆˆˆˆfd„t          ‰¦  «        D ¦   «         S )Nc                óR   •— g | ]#} ‰|         ‰‰|         ¦  «        ‰|         z   ‘Œ$S rª   rª   )r­   ra  ÚbdhwÚdhw_index_fnr©  rÉ  s     €€€€rp   r¯   zE_fractional_max_pool.<locals>.increments_to_index.<locals>.<listcomp>A  sG   ø€ ð ð ð àð  �˜Q” ¨¨Q¬Ñ0Ô0°=ÀÔ3CÑCðð ð rr   rÊ  )r€  rÉ  rŒ  r©  r�  r¶  s    `@@€€rp   rÛ  z1_fractional_max_pool.<locals>.increments_to_index>  sd   øøøø€ Ø˜˜5˜&˜”\ˆFØ˜�v�w�w”<ˆDðð ð ð ð ð ð å˜u™œðñ ô ð rr   r  rÌ  rÐ  )rJ  rŠ  r4   r   r-  rŠ  rw   rÓ   rE   r  r|   r‹   rü  ry   rG   r{   râ  rå  )r®   r®  r»  r�  r¶  rK  rË  rš  rÈ   rí  rÓ  rR  r�  rÛ  rˆ  r˜  s    ````       @@@@rp   r  r  '  s›  øøøøøøøø€ Ø‡N‚NÑÔÐØ”W˜W˜u˜f˜WÔ% q¤w°¨v¨w¨wÔ'7€N€Eˆ7å	Œ°"Ð	5Ñ	5Ô	5ð =ð =ð

ð 

ð 

ð 

ð 

ð 

ð 

ð 

õ ˜5‘\”\ð

ñ 

ô 

ˆð —=’=‘?”?ˆð	Qð 	Qð 	Qð 	Qð 	Qð 	Qð 	Qð	ð 	ð 	ð 	ð 	ð 	õ ˜‘;”;¥ kÑ!2Ô!2Ñ2ˆØ—’‘”ˆÝÔ!Ø ØØ—<’<‘>”>ØØØØØ(ð	
ñ 	
ô 	
ˆõ Ô"Ø#ØØ—<’<‘>”>Ý”kØØØØ(ð	
ñ 	
ô 	
ˆõ ˜&¥)Ñ,Ô,Ð4Ð4¨fÑ4Ô4Ð,Ý�f”kÔ&­	Ñ2Ô2ð 	à�NŠNÑÔÐÝ˜'¥9Ñ-Ô-Ð6Ð6¨wÑ6Ô6Ð-Ý�g”lÔ'­Ñ3Ô3ð 	à�OŠOÑÔÐå*Ø�[ !¤'Ð+>ñ
ô 
ˆð �wˆð{=ð =ð =ð =ñ =ô =ð =ð =ð =ð =ð =ð =øøøð =ð =ð =ð =ð =ð =s   ÁFG8Ç8G<Ç?G<c                ó¼  ‡ ‡‡— ‰                       ¦   «          ‰                      ¦   «         �^ }}}t          j        j                             |¦  «        }t          j        j                             |¦  «        }|�^ }}}	||z  dk    r9||	z  dk    r0t          ‰ t          ||¦  «        t          ||	¦  «        gd¬¦  «        S t          ||¦  «        }
t          ||	¦  «        }d„ Šˆfd„}t          ‰||
|g||g||	gt          j        ¬¦  «        Šˆˆ fd„}t          j        ‰                      ¦   «         ‰                      ¦   «         |t!          |¦  «        ¬¦  «        }|S )	Nr   r3   )Údivisor_overridec                óL   — t          | |z  t          j        |¦  «        ¦  «        S r»   )r*   rÔ   rò  rL  s      rp   rÒ  z0upsample_nearest2d_backward.<locals>.start_index€  s    € Ý�u˜w‘­¬°gÑ(>Ô(>Ñ?Ô?Ð?rr   c                ó$   •—  ‰| dz   ||¦  «        S r@  rª   )rf  r.  r/  rÒ  s      €rp   rÓ  z.upsample_nearest2d_backward.<locals>.end_indexƒ  s   ø€ Øˆ{˜E A™I¨°Ñ9Ô9Ð9rr   rP  c                ó6   •—  ‰| t          ‰¦  «        ¦  «        S r»   )r,  )r€  rS  r®   s    €€rp   r†   z'upsample_nearest2d_backward.<locals>.fn�  s   ø€ Øˆv�cÕ.¨qÑ1Ô1Ñ2Ô2Ð2rr   rˆ  )rJ  rã   rZ   rh   rü   r_  rU  r+   rJ   rB  rY   r³   rD   r  r|   rÓ   rw   )r®   r»  rÚ  rW  rX  r  Úinp_hÚinp_wÚout_hÚout_wrY  rZ  rÓ  r†   r[  rS  rÒ  s   `              @@rp   Úupsample_nearest2d_backwardr—  k  s¢  øøø€ ð ‡N‚NÑÔÐàŸJšJ™LœLÑ€VˆU�EÝŒGÔ×&Ò& uÑ-Ô-€EÝŒGÔ×&Ò& uÑ-Ô-€Eð 'Ñ€VˆU�Eàˆu�}˜ÒÐ˜e e™m¨qÒ0Ð0ÝØ•˜ Ñ&Ô&­°¸Ñ(>Ô(>Ð?ÐRSð
ñ 
ô 
ð 	
õ ˜5 %Ñ(Ô(€LÝ˜5 %Ñ(Ô(€Lð@ð @ð @ð:ð :ð :ð :ð :õ "ØØØ" LÐ1Ø˜�Ø˜%�.Ý”7ðñ ô €Fð3ð 3ð 3ð 3ð 3ð 3õ 
Ô	Ø�|Š|‰~Œ~Ø�kŠk‰mŒmØå�JÑÔð
ñ 
ô 
€Bð €Irr   rª   c           
     ó0   — t          | ||||||d¬¦  «        S )Nr1   r¦  ©Ú_avg_poolnd©r®   r®  ré  ri  r¯  Úcount_include_padr�  s          rp   rU  rU  �  ó3   € õ Ø	ØØØØØØØð	ñ 	ô 	ð 	rr   c           
     ó0   — t          | ||||||d¬¦  «        S )Nr¾   r¦  r™  r›  s          rp   Ú
avg_pool3drŸ  ³  r�  rr   c                óþ  ‡‡‡‡‡‡‡‡— ‰s‰Š‰sdg‰z  Št          ‰‰¦  «        Št          ‰‰¦  «        Št          ‰‰¦  «        Št          | t          ¦  «        sJ ‚t          ‰¦  «        ‰k    sJ ‚t          ‰¦  «        ‰k    sJ ‚t          ‰¦  «        ‰k    sJ ‚t          |                      ¦   «         ¦  «        ‰dz   ‰dz   fv sJ ‚|                      ¦   «          |                      ¦   «         d ‰ …         }|                      ¦   «         ‰ d …         Št          ˆˆˆˆˆfd„t          ‰¦  «        D ¦   «         Ž \  }	}
t          ‰¦  «        st          |
¦  «        rt          | d‰¬¦  «        Šd}n|  
                    ¦   «         Šd}t          |¦  «        t          |	¦  «        z   }|                      ¦   «         }t          | t          j        d¬	¦  «        }ˆˆˆˆfd
„}t!          j        t$          j        ‰¦  «        }|dk    rHt          d„ t          ‰‰¦  «        D ¦   «         ¦  «        r!t(          ‰dz
           } || ‰‰‰‰‰|¦  «        S |dk    rt+          j        d¬¦  «        nt/          j        ¦   «         }|                      ¦   «         }|€J ‚|5  t5          j        d| |||||‰¬¦  «        }d d d ¦  «         n# 1 swxY w Y   t9          |j        d¦  «        r3t          |j        j        t4          ¦  «        r|                     ¦   «          |r|r|r|n|}t?          ||¦  «        }nDˆˆˆˆˆˆfd„}tA          j        |                      ¦   «         |||¬¦  «        }t?          ||¦  «        }tC          ||¦  «        S )Nr   r3   r1   c           
     óD   •— g | ]}t          ‰|         |‰‰‰‰¦  «        ‘ŒS rª   rÁ  )r­   r€   r¯  r™  r®  ri  ré  s     €€€€€rp   r¯   z_avg_poolnd.<locals>.<listcomp>í  s?   ø€ ð 

ð 

ð 

àõ ˜˜1œ˜q +¨v°wÀ	ÑJÔJð

ð 

ð 

rr   rû  r¦  TF)rÝ   rÜ   c                ó’   •‡‡— | d ‰ …         }| ‰ d …         Š|Šˆˆˆˆfd„t          ‰¦  «        D ¦   «         Š ‰g |¢‰¢¦  «        S )Nc                óV   •— g | ]%}‰|         ‰|         z  ‰|         z   ‰|         z
  ‘Œ&S rª   rª   )r­   r€   rÈ  r£  ri  ré  s     €€€€rp   r¯   z1_avg_poolnd.<locals>.fn_inner.<locals>.<listcomp>  s8   ø€ ÐIÐIÐI¸ˆb�Œe�f˜Q”iÑ " Q¤%Ñ'¨'°!¬*Ñ4ÐIÐIÐIrr   rÊ  )	r€  rÉ  r©  rÈ  r£  rå   ri  ré  r˜  s	      @@€€€€rp   rË  z_avg_poolnd.<locals>.fn_inner  sh   øøø€ Ø�U�s�d�U”ˆØ�#���ŒZˆØˆØIÐIÐIÐIÐIÐIÐI½eÀC¹j¼jÐIÑIÔIˆØˆx˜˜&˜ 2˜Ñ'Ô'Ð'rr   r´  c              3  óŠ   K  — | ]>\  }}t           j        j                             t	          j        ||¦  «        ¦  «        V — Œ?d S r»   )rZ   rh   rü   Ústatically_known_truerÔ   ÚNe)r­   r  rf  s      rp   r  z_avg_poolnd.<locals>.<genexpr>  sW   è è € ð  ð  áˆAˆqõ 	
ŒÔ×.Ò.­u¬x¸¸1©~¬~Ñ>Ô>ð ð  ð  ð  ð  ð  rr   rÖ  r«  rÌ  r{   c                óÂ  •— | ‰ d …         }g }t          ‰¦  «        D ]£}||         ‰|         z  ‰|         z
  }t          |‰
|         z   ‰	|         ‰|         z   ¦  «        }‰s&t          |d¦  «        }t          |‰	|         ¦  «        }t          j        ||z
  t
          j        ¦  «        }|                     |¦  «         Œ¤t          j	        t          j
        |¦  «        S r;  )r-  r.   r-   rY   r}  r‹   rE  r}   r8  rW  r¼  )r€  rÈ  Údivide_factorsr€   ÚhstartÚhendÚfactorrœ  rå   r™  r®  ri  ré  s          €€€€€€rp   Úfn_countz_avg_poolnd.<locals>.fn_count;  sÕ   ø€ Ø�c�T�U�U”ˆBàˆNÝ˜3‘Z”Zð .ð .�Ø˜Aœ ¨¤Ñ*¨W°Q¬ZÑ7�Ý˜6 K°¤NÑ2°A°a´D¸7À1¼:Ñ4EÑFÔF�Ø(ð +Ý  ¨™^œ^�FÝ˜t Q q¤T™?œ?�DÝœ¨¨v©µu´{ÑCÔC�Ø×%Ò% fÑ-Ô-Ð-Ð-ÝÔ#¥C¤G¨^Ñ<Ô<Ð<rr   rˆ  )"rT   ry   rG   râ   rã   rJ  r,  r-  rF  r§  rŠ  rw   rÓ   rì   r   rr  r8  rW  rµ  r¼  Úfallbacks_avg_poolndr4   r   Ú
contextlibÚnullcontextr|   rE   r  r  r{   râ  Údiv_primrD   r  )r®   r®  ré  ri  r¯  rœ  r�  rå   rK  r2  Ú
ceil_modesÚhad_paddingrš  rÈ   Úoutput_dtyperË  r·  ÚfallbackÚcontextrƒ   r[  Údivisorrí  r¬  Údivide_factorr™  r˜  s    ````` `                 @@rp   rš  rš  Ð  sx  øøøøøøøø€ ð ð ØˆØð Ø�#˜‘)ˆÝ˜{¨CÑ0Ô0€KÝ˜& #Ñ&Ô&€FÝ˜7 CÑ(Ô(€Gå�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜sÒ"Ð"Ð"Ð"Ýˆv‰;Œ;˜#ÒÐÐÐÝˆw‰<Œ<˜3ÒÐÐÐÝˆq�zŠz‰|Œ|ÑÔ  q¡¨#°©'Ð 2Ð2Ð2Ð2Ð2à‡N‚NÑÔÐØ�JŠJ‰LŒL˜˜3˜$˜Ô€EØ	�
Š
‰Œ�c�T�U�UÔ€Aåð

ð 

ð 

ð 

ð 

ð 

ð 

ð 

å˜3‘Z”Zð

ñ 

ô 

ðÑ€Eˆ:õ ˆ7�|„|ð •s˜:‘”ð Ý.¨q°#¸3Ð?Ñ?Ô?ˆØˆˆà—=’=‘?”?ˆØˆå�E‰{Œ{�T %™[œ[Ñ(€HØ�KŠK‰MŒM€Eå%Ø	Ý;ÔCØ!ðñ ô €Lð(ð (ð (ð (ð (ð (ð (ð (õ Ô"¥8¤<°Ñ=Ô=€Kà�RÒÐ�Cð  ð  å˜ VÑ,Ô,ð ñ  ô  ñ ô Ðõ (¨¨a©Ô0ˆØˆxØØØØØØØñ
ô 
ð 	
ð ˜"ÒÐõ 	Œ°Ð4Ñ4Ô4Ð4åÔ#Ñ%Ô%ð ð �\Š\‰^Œ^€FØÐÐÐà	ð 

ð 

ÝÔØ ØØØ"ØØØØ(ð	
ñ 	
ô 	
ˆð

ð 

ð 

ñ 

ô 

ð 

ð 

ð 

ð 

ð 

ð 

øøøð 

ð 

ð 

ð 

õ ˆrŒw˜ÑÔð ¥J¨r¬w¬|½YÑ$GÔ$Gð à
�
Š
‰Œˆàð -Ð*ð -Ø&6ÐGÐ"Ð"¸KˆÝ˜"˜gÑ&Ô&ˆˆð	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=ð 	=õ "Ô(Ø—<’<‘>”>ØØØð	
ñ 
ô 
ˆõ ˜"˜mÑ,Ô,ˆå�F˜EÑ"Ô"Ð"s   ÊJ=Ê=KËKc                ó¬  ‡‡‡‡‡‡‡‡‡‡‡‡‡‡— ‰�‰dk    s
J d¦   «         ‚‰s‰Š‰sddgŠt          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          |                     ¦   «         ¦  «        dv sJ ‚|                      ¦   «          |                     ¦   «         �^ }ŠŠt          ‰d‰‰‰|¦  «        \  }	}
t          ‰d‰‰‰|¦  «        \  }}|                      ¦   «         Š‰d         p‰d         p|
p|Š|                      ¦   «         �^ }ŠŠt          |                     ¦   «         ¦  «        }|                     ¦   «         }t          ˆˆfd„t          ‰d         dz  ¦  «        D ¦   «         ¦  «        Št          ˆˆfd„t          ‰d         dz  ¦  «        D ¦   «         ¦  «        Š‰‰z  }|dk    rt          | |‰‰‰|‰‰¦  «        S ˆˆˆˆˆfd	„Šˆˆˆˆˆˆˆˆˆˆˆˆfd
„}t          j        |                      ¦   «         |||¬¦  «        }|S )Nr   údivisor must be not zeror1   r  r3   c              3  ó¼   •K  — | ]V}t          t          |‰d          ¦  «        t          d t          |‰d          z
  ‰d          ¦  «        ¦  «        z
  d¦  «        V — ŒWdS rø  rù  rú  s     €€rp   r  z&avg_pool2d_backward.<locals>.<genexpr>‚  rû  rr   c              3  ó¼   •K  — | ]V}t          t          |‰d          ¦  «        t          dt          |‰d          z
  ‰d          ¦  «        ¦  «        z
  d ¦  «        V — ŒWdS rý  rù  rþ  s     €€rp   r  z&avg_pool2d_backward.<locals>.<genexpr>†  rû  rr   r´  c           	     óÊ  •— t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        ‰d         t          j        ¦  «        }t          j        t          j        | |¦  «        |¦  «        }t          j        t          j        ||¦  «        |¦  «        }	t          j        t          j        ||¦  «        t          j        t          j        ‰t          j        ¦  «        |¦  «        ¦  «        }
t          j        t          j        |	|¦  «        t          j        t          j        ‰t          j        ¦  «        |¦  «        ¦  «        }t          j	        |t          j        dt          j        ¦  «        ¦  «        }t          j	        |	t          j        dt          j        ¦  «        ¦  «        }	t          j        |
t          j        ‰t          j        ¦  «        ¦  «        }
t          j        |t          j        ‰t          j        ¦  «        ¦  «        }t          j        t          j        |
|¦  «        t          j        ||	¦  «        ¦  «        }|S )z{
        This computes the scaling factor that we will divide an element
        by when `count_include_pad=False`
        r   r3   )
rY   r~  r‹   rE  r6  r¼  r  r³   r}  r  )r
  r  Ústride_hÚstride_wÚpad_hÚpad_wÚkernel_hÚkernel_wr©  Úwstartrª  Úwendr·  Úheightr®  ri  ré  r  s                €€€€€rp   Ú!compute_pool_size_without_paddingz>avg_pool2d_backward.<locals>.compute_pool_size_without_padding™  sò  ø€ õ
 ”<  q¤	­5¬;Ñ7Ô7ˆÝ”<  q¤	­5¬;Ñ7Ô7ˆÝ”˜W QœZ­¬Ñ5Ô5ˆÝ”˜W QœZ­¬Ñ5Ô5ˆÝ”< ¨A¤µ´Ñ<Ô<ˆÝ”< ¨A¤µ´Ñ<Ô<ˆÝ”�œ  XÑ.Ô.°Ñ6Ô6ˆÝ”�œ  XÑ.Ô.°Ñ6Ô6ˆÝŒ{ÝŒG�F˜HÑ%Ô%ÝŒG•C”N 6­5¬;Ñ7Ô7¸Ñ?Ô?ñ
ô 
ˆõ Œ{ÝŒG�F˜HÑ%Ô%ÝŒG•C”N 5­%¬+Ñ6Ô6¸Ñ>Ô>ñ
ô 
ˆõ ”˜V¥S¤\°!µU´[Ñ%AÔ%AÑBÔBˆÝ”˜V¥S¤\°!µU´[Ñ%AÔ%AÑBÔBˆÝŒ{˜4¥¤°½¼Ñ!DÔ!DÑEÔEˆÝŒ{˜4¥¤°µu´{Ñ!CÔ!CÑDÔDˆÝœ¥¤¨¨fÑ 5Ô 5µs´w¸tÀVÑ7LÔ7LÑMÔMˆØÐrr   c                ó  •— | �^ }}}|‰d         z   }|‰d         z   }t          j        t          |‰d         z
  ‰d         z   ‰d         ¦  «        t          j        ¦  «        }t          j        t          |‰d         z
  ‰d         z   ‰d         ¦  «        t          j        ¦  «        }t          j        t          |‰d         ¦  «        dz   t          j        ¦  «        }t          j        t          |‰d         ¦  «        dz   t          j        ¦  «        }t          j        |t          j        dt          j        ¦  «        ¦  «        }t          j        |t          j        dt          j        ¦  «        ¦  «        }t          j        |t          j        ‰t          j        ¦  «        ¦  «        }t          j        |t          j        ‰t          j        ¦  «        ¦  «        }d }t          ‰¦  «        D �]}	t          ‰¦  «        D �]ý}
t          j	        |t          j        |	t          j        ¦  «        ¦  «        }t          j	        |t          j        |
t          j        ¦  «        ¦  «        }‰�‰}n"‰s‰s‰d         ‰d         z  }n ‰||¦  «        }t          j
         ‰g |¢t          j        t          j        |t          j        |t          j        dt          j        ¦  «        ¦  «        ¦  «        ‰d¬¦  «        ‘t          j        t          j        |t          j        |t          j        dt          j        ¦  «        ¦  «        ¦  «        ‰d¬¦  «        ‘¦  «        |¦  «        }t          j        t          j        ||¦  «        t          j        ||¦  «        ¦  «        }|€5t          j        ||t          j        dt          j        ¦  «        ¦  «        }�ŒÔt          j        |t          j	        ||¦  «        |¦  «        }�Œÿ�Œ|€J ‚|S )Nr   r3   FrÐ  rû  )rY   r}  r+   r‹   rE  r  r~  r  r-  r³   rR  r‘  r6  rÿ  rþ  rM  r3  )r€  r©  r™  rÿ  r  r  r  r  r  r  r	  r
  r  r  Úpartr  rÆ  rœ  r�  r  r  r²  r®  ri  r  r  ré  r  s                   €€€€€€€€€€€€rp   r†   zavg_pool2d_backward.<locals>.fnµ  s‰  ø€ Ø‰ˆ��AØ�˜”
‰NˆØ�˜”
‰NˆÝ”.Ý�Q˜ QœÑ'¨&°¬)Ñ3°V¸A´YÑ?Ô?ÅÄñ
ô 
ˆõ ”.Ý�Q˜ QœÑ'¨&°¬)Ñ3°V¸A´YÑ?Ô?ÅÄñ
ô 
ˆõ ”�x¨¨6°!¬9Ñ5Ô5¸Ñ9½5¼;ÑGÔGˆÝ”�x¨¨6°!¬9Ñ5Ô5¸Ñ9½5¼;ÑGÔGˆå”+˜g¥s¤|°Aµu´{Ñ'CÔ'CÑDÔDˆÝ”+˜g¥s¤|°Aµu´{Ñ'CÔ'CÑDÔDˆÝ”˜E¥3¤>°-ÅÄÑ#MÔ#MÑNÔNˆÝ”˜E¥3¤>°,ÅÄÑ#LÔ#LÑMÔMˆàˆÝ˜Ñ'Ô'ð *	Rñ *	RˆCÝ˜]Ñ+Ô+ð )Rñ )R�Ý”W˜W¥c¤l°3½¼Ñ&DÔ&DÑEÔE�Ý”W˜W¥c¤l°3½¼Ñ&DÔ&DÑEÔE�à#Ð/Ø,�E�EØ&ð F¨kð FØ'¨œN¨[¸¬^Ñ;�E�Eà=Ð=¸bÀ"ÑEÔE�Eå”{Ø�KðØ#ðåÔ1Ý #¤Ø$&­¬°µs´|ÀAÅuÄ{Ñ7SÔ7SÑ(TÔ(Tñ!"ô !"ð !.Ø&+ðñ ô ðõ  Ô1Ý #¤Ø$&­¬°µs´|ÀAÅuÄ{Ñ7SÔ7SÑ(TÔ(Tñ!"ô !"ð !-Ø&+ðñ ô ðñô ð& ñ)ô �õ. ”xÝ”F˜2˜uÑ%Ô%Ý”F˜2˜uÑ%Ô%ñô �ð Ð#Ý"œy¨¨tµS´\À#ÅuÄ}Ñ5UÔ5UÑVÔV�H‘Hå"œy¨­s¬w°xÀÑ/FÔ/FÈÑQÔQ�H‘HñS)RðT Ð#Ð#Ð#Øˆrr   rˆ  )ry   rG   râ   rã   rJ  r²  rŠ  rw   rÓ   r  r-  Úfallback_avg_pool2d_backwardrD   r  r|   )r  r®   r®  ré  ri  r¯  rœ  r�  rÑ  Ú_h_outÚ
ceil_mode1Ú_w_outÚ
ceil_mode2rš  rÈ   r·  r†   r[  rÆ  r  r  r²  rÅ  r  r  r  r  s     ``` ``          @@@@@@@@@rp   Úavg_pool2d_backwardrÎ  Y  s?  øøøøøøøøøøøøøø€ ð Ð#Ð'7¸1Ò'<Ð'<Ð'<Ð>XÑ'<Ô'<Ð<Øð ØˆØð Ø�a�&ˆå�k¥9Ñ-Ô-Ð-Ð-Ð-Ý�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ýˆv‰;Œ;˜!ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÝˆq�zŠz‰|Œ|ÑÔ Ð&Ð&Ð&Ð&à×ÒÑÔÐàŸ
š
™œÑ€Qˆ�å%Ø��; ¨°ñô Ñ€FˆJõ & e¨Q°¸VÀWÈiÑXÔXÑ€FˆJà×)Ò)Ñ+Ô+€Kà˜!”*ÐF ¨¤
ÐF¨jÐF¸J€Kà&1×&:Ò&:Ñ&<Ô&<Ñ#€Qˆ�|Ý�A—J’J‘L”LÑ!Ô!€HØ�KŠK‰MŒM€Eåð ð ð ð ð å�{ 1”~¨Ñ)Ñ*Ô*ðñ ô ñ ô €Mõ ð ð ð ð ð å�{ 1”~¨Ñ)Ñ*Ô*ðñ ô ñ ô €Mð
   -Ñ/€KØ�RÒÐå+ØØØØØØØØñ	
ô 	
ð 		
ðð ð ð ð ð ð ð ð ð8?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?ð ?õB 
Ô	Ø×%Ò%Ñ'Ô'ØØØð	
ñ 
ô 
€Bð €Irr   c                ój  ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ — ‰�‰dk    s
J d¦   «         ‚‰s‰Š‰sg d¢Št          | t          ¦  «        sJ ‚t          |t          ¦  «        sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          ‰¦  «        dk    sJ ‚t          |                     ¦   «         ¦  «        dv sJ ‚|                      ¦   «          |                     ¦   «         �^ }ŠŠŠ t          ‰d‰‰‰|¦  «        \  }	}
t          ‰d‰‰‰|¦  «        \  }}t          ‰ d‰‰‰|¦  «        \  }}|                      ¦   «         Št          ‰¦  «        p|
p|p|Š|                      ¦   «         �^ }ŠŠŠt          |                     ¦   «         ¦  «        }| 	                    ¦   «         }ˆˆfd„t          d¦  «        D ¦   «         \  ŠŠŠ‰‰z  ‰z  }|d	k    rt          | |‰‰‰|‰‰¦  «        S ˆˆˆˆˆˆ fd
„Šˆˆˆˆˆˆˆˆˆˆˆˆˆˆfd„}t          j        |                      ¦   «         |||¬¦  «        }|S )Nr   r¹  )r   r   r   r¾   )r¿   rÀ   r3   r1   c              3  ó€   •‡K  — | ]7Št          ˆˆˆfd „t          ‰‰         dz  ¦  «        D ¦   «         ¦  «        V — Œ8dS )c           
   3  ó�   •K  — | ]@}t          |‰‰         z  t          d |‰‰         z
  ‰‰         z  ¦  «        z
  d¦  «        V — ŒAdS rø  )r  )r­   ra  r€   r®  ré  s     €€€rp   r  z0avg_pool3d_backward.<locals>.<genexpr>.<genexpr>2  sj   øè è € ð 
ð 
àõ ��V˜A”Y‘¥ Q¨¨[¸¬^Ñ);ÀÀqÄ	Ñ(IÑ!JÔ!JÑJÈAÑNÔNð
ð 
ð 
ð 
ð 
ð 
rr   r1   N)r  r-  )r­   r€   r®  ré  s    @€€rp   r  z&avg_pool3d_backward.<locals>.<genexpr>1  s…   øøè è € ð 3ð 3ð
 õ	 	ð 
ð 
ð 
ð 
ð 
ð 
å˜; qœ>¨AÑ-Ñ.Ô.ð
ñ 
ô 
ñ 	
ô 	
ð3ð 3ð 3ð 3ð 3ð 3rr   é}   c           	     ó@  •— d„ ‰D ¦   «         \  }}}d„ ‰D ¦   «         \  }}}d„ ‰D ¦   «         \  }	}
}d„ t          | ||g|||g|||g¦  «        D ¦   «         \  }}}d„ t          |||g|	|
|g‰‰‰g|||g¦  «        D ¦   «         \  }}}d„ |||fD ¦   «         \  }}}d„ t          |||g‰‰‰g¦  «        D ¦   «         \  }}}t          j        t          j        t          j        ||¦  «        t          j        ||¦  «        ¦  «        t          j        ||¦  «        ¦  «        }|S )Nc              3  óT   K  — | ]#}t          j        |t          j        ¦  «        V — Œ$d S r»   ©rY   r~  r‹   rE  rÝ  s     rp   r  zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>H  s0   è è € Ð'UÐ'UÈ­¬°Q½¼Ñ(DÔ(DÐ'UÐ'UÐ'UÐ'UÐ'UÐ'Urr   c              3  óT   K  — | ]#}t          j        |t          j        ¦  «        V — Œ$d S r»   rÕ  r€  s     rp   r  zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>I  s0   è è € ÐMÐMÀ�sœ|¨A­u¬{Ñ;Ô;ÐMÐMÐMÐMÐMÐMrr   c              3  óT   K  — | ]#}t          j        |t          j        ¦  «        V — Œ$d S r»   rÕ  )r­   r  s     rp   r  zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>J  sA   è è € ð (
ð (
Ø-.�CŒL˜�EœKÑ(Ô(ð(
ð (
ð (
ð (
ð (
ð (
rr   c              3  ón   K  — | ]0\  }}}t          j        t          j        ||¦  «        |¦  «        V — Œ1d S r»   )rY   r6  r¼  )r­   rM  rf  Úpads       rp   r  zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>N  sR   è è € ð "
ð "
á��1�cõ ŒG•C”G˜A˜q‘M”M 3Ñ'Ô'ð"
ð "
ð "
ð "
ð "
ð "
rr   c           
   3  óÐ   K  — | ]a\  }}}}t          j        t          j        ||¦  «        t          j        t          j        |t          j        ¦  «        |¦  «        ¦  «        V — Œbd S r»   )rY   r  r³   r}  r‹   rE  )r­   r­  r  rå   rÙ  s        rp   r  zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>T  sw   è è € ð 

ð 

ñ #��q˜#˜sõ ŒKÝ”˜˜qÑ!Ô!¥3¤7­3¬>¸#½u¼{Ñ+KÔ+KÈSÑ#QÔ#Qñô ð

ð 

ð 

ð 

ð 

ð 

rr   c              3  óz   K  — | ]6}t          j        |t          j        d t          j        ¦  «        ¦  «        V — Œ7dS rŒ  ©rY   r  r~  r‹   rE  )r­   r­  s     rp   r  zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>_  sP   è è € ð "
ð "
àõ ŒK˜�sœ|¨A­u¬{Ñ;Ô;Ñ<Ô<ð"
ð "
ð "
ð "
ð "
ð "
rr   c              3  ó€   K  — | ]9\  }}t          j        |t          j        |t          j        ¦  «        ¦  «        V — Œ:d S r»   ©rY   r  r}  r‹   rE  )r­   r®  rå   s      rp   r  zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>c  sT   è è € ð 
ð 
á��Sõ ŒK˜�Sœ^¨Cµ´Ñ=Ô=Ñ>Ô>ð
ð 
ð 
ð 
ð 
ð 
rr   )r,  rY   r¼  r6  )Úpdr
  r  Ústride_dr½  r¾  Úpad_dr¿  rÀ  Úkernel_drÁ  rÂ  Údstartr©  rÃ  Údendrª  rÄ  r·  ÚdepthrÅ  r®  ri  ré  r  s                      €€€€€€rp   rÆ  z>avg_pool3d_backward.<locals>.compute_pool_size_without_paddingG  s¹  ø€ Ø'UÐ'UÈfÐ'UÑ'UÔ'UÑ$ˆ�(˜HØMÐMÀWÐMÑMÔMÑˆˆu�eð(
ð (
Ø2=ð(
ñ (
ô (
Ñ$ˆ�(˜Hð"
ð "
å Ø�R˜�˜x¨°8Ð<¸uÀeÈUÐ>Sñô ð"
ñ "
ô "
Ñˆ�˜ð

ð 

õ '*Ø˜ Ð(Ø˜8 XÐ.Ø˜ Ð&Ø˜˜uÐ%ñ	'ô 'ð	

ñ 

ô 

Ñˆˆd�Dð"
ð "
à  &¨&Ð1ð"
ñ "
ô "
Ñˆ�˜ð
ð 
å  t¨TÐ 2°U¸FÀEÐ4JÑKÔKð
ñ 
ô 
Ñˆˆd�Dõ œÝŒG•C”G˜D &Ñ)Ô)­3¬7°4¸Ñ+@Ô+@ÑAÔAÅ3Ä7È4ÐQWÑCXÔCXñ
ô 
ˆð Ðrr   c                óX  •— | �^ }}}}d„ t          |||g‰¦  «        D ¦   «         \  }}}d„ t          |||g‰‰!¦  «        D ¦   «         \  }}}d„ t          |||g‰!¦  «        D ¦   «         \  }}	}
d„ |||fD ¦   «         \  }}}d„ t          ||	|
g‰‰‰ g¦  «        D ¦   «         \  }}	}
d }t          ‰¦  «        D �]o}t          ‰¦  «        D �][}t          ‰"¦  «        D �]G}d„ t          |||g|||g¦  «        D ¦   «         \  }}}‰�‰}n,‰s‰s‰d         ‰d         z  ‰d	         z  }n ‰|||¦  «        }t          j         ‰g |¢t          j        t          j        |t          j        |t          j        dt          j	        ¦  «        ¦  «        ¦  «        ‰d
¬¦  «        ‘t          j        t          j        |t          j        |	t          j        dt          j	        ¦  «        ¦  «        ¦  «        ‰d
¬¦  «        ‘t          j        t          j        |t          j        |
t          j        dt          j	        ¦  «        ¦  «        ¦  «        ‰ d
¬¦  «        ‘¦  «        |¦  «        }t          j
        t          j
        t          j        ||¦  «        t          j        ||	¦  «        ¦  «        t          j        ||
¦  «        ¦  «        }|€5t          j        ||t          j        dt          j        ¦  «        ¦  «        }�Œt          j        |t          j        ||¦  «        |¦  «        }�ŒI�Œ]�Œq|€J ‚|S )Nc              3  ó&   K  — | ]\  }}||z   V — Œd S r»   rª   )r­   r  rÙ  s      rp   r  z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>n  s*   è è € ÐAÐA™v˜q #�1�s‘7ÐAÐAÐAÐAÐAÐArr   c              3  ó„   K  — | ];\  }}}t          j        t          ||z
  |z   |¦  «        t          j        ¦  «        V — Œ<d S r»   ©rY   r}  r+   r‹   rE  )r­   r  r  rf  s       rp   r  z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>p  s\   è è € ð %
ð %
á��1�aõ ŒN�8 A¨¡E¨A¡I¨qÑ1Ô1µ5´;Ñ?Ô?ð%
ð %
ð %
ð %
ð %
ð %
rr   c              3  ó|   K  — | ]7\  }}t          j        t          ||¦  «        d z   t          j        ¦  «        V — Œ8dS r“  ré  )r­   r  rf  s      rp   r  z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>u  sU   è è € ð 
ð 
á��1õ ŒN�8 A q™>œ>¨AÑ-­u¬{Ñ;Ô;ð
ð 
ð 
ð 
ð 
ð 
rr   c              3  óz   K  — | ]6}t          j        |t          j        d t          j        ¦  «        ¦  «        V — Œ7dS rŒ  rÜ  )r­   Úpstarts     rp   r  z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>z  sP   è è € ð %
ð %
àõ ŒK˜¥¤¨Qµ´Ñ <Ô <Ñ=Ô=ð%
ð %
ð %
ð %
ð %
ð %
rr   c              3  ó€   K  — | ]9\  }}t          j        |t          j        |t          j        ¦  «        ¦  «        V — Œ:d S r»   rÞ  )r­   ÚpendÚ
pooled_dims      rp   r  z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>~  sT   è è € ð 
ð 
á ��jõ ŒK˜�cœn¨Z½¼ÑEÔEÑFÔFð
ð 
ð 
ð 
ð 
ð 
rr   c              3  ó€   K  — | ]9\  }}t          j        |t          j        |t          j        ¦  «        ¦  «        V — Œ:d S r»   )rY   r³   r~  r‹   rE  )r­   rì  Úp_s      rp   r  z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>Š  sT   è è € ð "ð "á&˜F Bõ œ ­¬°R½¼Ñ(EÔ(EÑFÔFð"ð "ð "ð "ð "ð "rr   r   r3   r1   FrÐ  rû  )r,  r-  rY   rR  r‘  r  r6  r~  r‹   rE  rÿ  rþ  rM  r3  r³   )#r€  r©  ra  r™  rÿ  Úpdstartr  r  Úpdendr  r  r  Úpd_r  r	  rß  r
  r  r  rÈ  r  rÆ  rœ  Úd_window_sizer�  r  r  r²  r®  ri  Úpooled_depthr  r  ré  r  s#                        €€€€€€€€€€€€€€rp   r†   zavg_pool3d_backward.<locals>.fnl  sÚ  ø€ ØÑˆ��A�qØAÐA­¨a°°A¨Y¸Ñ)@Ô)@ÐAÑAÔA‰ˆˆ1ˆað%
ð %
å  1 a˜y¨+°vÑ>Ô>ð%
ñ %
ô %
Ñ!ˆ�˜'ð

ð 
å˜Q  1˜I vÑ.Ô.ð
ñ 
ô 
Ñˆˆu�eð
%
ð %
à" G¨WÐ5ð%
ñ %
ô %
Ñ!ˆ�˜'ð
ð 
å$'Ø˜˜uÐ%¨°mÀ\Ð'Rñ%ô %ð
ñ 
ô 
Ñˆˆu�eð ˆå˜Ñ'Ô'ð 8	Vñ 8	VˆCÝ˜]Ñ+Ô+ð 7Vñ 7V�Ý  Ñ/Ô/ð 6Vñ 6V�Cð"ð "å*-Ø$ g¨wÐ7¸#¸sÀC¸ñ+ô +ð"ñ "ô "‘J�B˜˜Bð (Ð3Ø 0˜˜Ø*ð N°+ð NØ +¨A¤°¸Q´Ñ ?À+ÈaÄ.Ñ P˜˜à AÐ AÀ"ÀbÈ"Ñ MÔ M˜åœ;Ø#˜ðØ!'ðå #Ô 5Ý$'¤KØ(*­C¬G°E½3¼<ÈÍ5Ì;Ñ;WÔ;WÑ,XÔ,Xñ%&ô %&ð %1Ø*/ð!"ñ !"ô !"ðõ !$Ô 5Ý$'¤KØ(*­C¬G°E½3¼<ÈÍ5Ì;Ñ;WÔ;WÑ,XÔ,Xñ%&ô %&ð %2Ø*/ð!"ñ !"ô !"ðõ  !$Ô 5Ý$'¤KØ(*­C¬G°E½3¼<ÈÍ5Ì;Ñ;WÔ;WÑ,XÔ,Xñ%&ô %&ð %1Ø*/ð!"ñ !"ô !"ð!ñô ð4 ñ7ô �Dõ< œ8Ýœ¥¤¨¨EÑ!2Ô!2µC´F¸2¸uÑ4EÔ4EÑFÔFÝœ˜r 5Ñ)Ô)ñô �Dð  Ð'Ý#&¤9Ø  $­¬°S½%¼-Ñ(HÔ(Hñ$ô $˜™õ $'¤9¨Tµ3´7¸8ÀTÑ3JÔ3JÈHÑ#UÔ#U˜™ñm6Vñ7Vðp Ð#Ð#Ð#Øˆrr   rˆ  )ry   rG   râ   rã   rJ  r²  rŠ  rF  rw   rÓ   r-  Úfallback_avg_pool3d_backwardrD   r  r|   )!r  r®   r®  ré  ri  r¯  rœ  r�  r  Ú_d_outÚceil_mode_drÊ  Úceil_mode_hrÌ  Úceil_mode_wrÑ  rš  rÈ   r·  r†   r[  rÆ  rõ  rå  r  r  r²  rÅ  rö  r  r  r  r  s!     ``` ``             @@@@@@@@@@@@rp   Úavg_pool3d_backwardrü    s9  øøøøøøøøøøøøøøøøø€ ð Ð#Ð'7¸1Ò'<Ð'<Ð'<Ð>XÑ'<Ô'<Ð<Øð ØˆØð Ø�)�)ˆå�k¥9Ñ-Ô-Ð-Ð-Ð-Ý�a�Ñ#Ô#Ð#Ð#Ð#Ýˆ{ÑÔ˜qÒ Ð Ð Ð Ýˆv‰;Œ;˜!ÒÐÐÐÝˆw‰<Œ<˜1ÒÐÐÐÝˆq�zŠz‰|Œ|ÑÔ Ð&Ð&Ð&Ð&à×ÒÑÔÐà$%§J¢J¡L¤LÑ!€VˆU�F˜Eå&Øˆq�+˜v w°	ñô Ñ€FˆKõ 'Ø��; ¨°ñô Ñ€FˆKõ 'Øˆq�+˜v w°	ñô Ñ€FˆKð ×)Ò)Ñ+Ô+€KÝ�g‘,”,ÐK +ÐK°ÐKÀ€Kà4?×4HÒ4HÑ4JÔ4JÑ1€Qˆ�m \Ý�A—J’J‘L”LÑ!Ô!€HØ�KŠK‰MŒM€Eð3ð 3ð 3ð 3ð 3õ
 �q‘”ð3ñ 3ô 3Ñ/€M�= -ð   -Ñ/°-Ñ?€KØ�SÒÐå+ØØØØØØØØñ	
ô 	
ð 		
ð#ð #ð #ð #ð #ð #ð #ð #ð #ð #ðJUð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uð Uõn 
Ô	Ø×%Ò%Ñ'Ô'ØØØð	
ñ 
ô 
€Bð €Irr   c                óÆ  — |                       ¦   «         }t          |t          ¦  «        r|g}n|st          t	          |¦  «        ¦  «        }t	          |¦  «        dk    r t          |¦  «        dv sJ d|› �¦   «         ‚g S t          |¦  «        }t          t	          |¦  «        ¦  «        D ]}||         dk     r.||xx         t	          |¦  «        rt	          |¦  «        ndz  cc<   d||         cxk    rt	          |¦  «        k     s#n t	          |¦  «        dk    r||         dk    sJ ‚Œ€t	          t          |¦  «        ¦  «        t	          |¦  «        k    s
J d¦   «         ‚|S )Nr   )rª   rE  r  zinvalid axis: r3   zreduction axis not unique)rã   ry   rÌ   r-  râ   r±   rw   r)   )r®   r  r  r€   s       rp   Ú_validate_reduction_axisrþ  Ì  sb  € Ø�:Š:‰<Œ<€DÝ�$�ÑÔð  ØˆvˆˆØð  Ý•S˜‘Y”YÑÔˆÝ
ˆ4�y„y�A‚~€~Ý�T‰{Œ{Ð/Ð/Ð/Ð/Ð1HÀ$Ð1HÐ1HÑ/Ô/Ð/Øˆ	Ý�‰:Œ:€DÝ•3�t‘9”9ÑÔð Mð MˆØ�Œ7�QŠ;ˆ;Ø�ˆGˆGŒG¥C¨¡I¤IÐ4•s˜4‘y”y�y°1Ñ4ˆGˆG‰GØ�D˜”GÐ'Ð'Ò'Ð'�c $™iœiÒ'Ð'Ð'Ð'­C°©I¬I¸ªN¨N¸tÀA¼wÈ!º|¸|¸|ÐLøÝ�z˜$ÑÔÑ Ô ¥C¨¡I¤IÒ-Ð-Ð-Ð/JÑ-Ô-Ð-Ø€Krr   )r-  c               ó  ‡‡‡‡‡‡‡— |�t          | |¦  «        } |                      ¦   «         Št          t                   t	          | |¦  «        ¦  «        }g }g Šg Šg Št          t          ‰¦  «        ¦  «        D ]g}||v r1‰                     |¦  «         ‰                     ‰|         ¦  «         Œ7‰                     |¦  «         |                     ‰|         ¦  «         ŒhdŠt          | ¦  «        p't          j
        | ¦  «        dk    ot          j        dk    }|dv rÑt          ‰¦  «        dk    r¾|r¼t          | j        t          ¦  «        rdŠnŸt          | j        t          j        ¦  «        sCt          | j        t          j        ¦  «        rat          | j        j        t          j        ¦  «        r=|                      ¦   «         }	|	                     ¦   «         p|	                     ¦   «          Šˆˆˆˆˆˆˆfd„}
‰r)t-          ‰¦  «        }‰D ]}t.          j        j        ||<   Œn|}|                      ¦   «         Št7          |                      ¦   «         |p|                      ¦   «         |                      ¦   «         |
|‰¬¦  «        S )	NFrú   Úcpp)rÐ  ÚargminÚargmax_valueÚargmin_valueÚargmax_with_valueÚargmin_with_valuer3   Tc                ó   •‡ — t          |¦  «        t          ‰¦  «        k    sJ ‚‰
r0t          ‰ ¦  «        t          ‰¦  «        k    sJ ‚ˆ fd„‰D ¦   «         Š t          ‰ ¦  «        t          ‰¦  «        k    sJ ‚d gt          ‰ ¦  «        t          |¦  «        z   z  }t          j        t          ‰‰ ¦  «        t          ‰|¦  «        ¦  «        D ]
\  }}|||<   Œ ‰	|¦  «        }‰rid„ |D ¦   «         }|d         }t	          dt          |¦  «        ¦  «        D ]}|‰|         z  ||         z   }Œ|t          j        |t          j        ¦  «        fS |S )Nc                ó    •— g | ]
}‰|         ‘ŒS rª   rª   )r­   r€   rf  s     €rp   r¯   z9_make_reduction_inner.<locals>.loader.<locals>.<listcomp>  s   ø€ Ð0Ð0Ð0 !�U˜1”XÐ0Ð0Ð0rr   c                ó6   — g | ]}t          j        |¦  «        ‘ŒS rª   rÜ  r¦  s     rp   r¯   z9_make_reduction_inner.<locals>.loader.<locals>.<listcomp>  s    € Ð?Ð?Ð?¨!•e”l 1‘o”oÐ?Ð?Ð?rr   r   r3   )	râ   r*  r+  r,  r-  rY   r}  r‹   rü  )rf  Úreduction_indexr³  r€  Úvarr  ÚrindexÚ
linear_idxr€   Úinner_loaderÚkeepdimsÚkept_idxÚreduced_idxÚreduced_sizesÚshould_compute_logical_indexr  s   `        €€€€€€€rp   r·  z%_make_reduction_inner.<locals>.loader  su  øø€ Ý�?Ñ#Ô#¥s¨;Ñ'7Ô'7Ò7Ð7Ð7Ð7Øð 	1Ý�u‘:”:¥ T¡¤Ò*Ð*Ð*Ð*Ø0Ð0Ð0Ð0 xÐ0Ñ0Ô0ˆEÝ�5‰zŒz�S ™]œ]Ò*Ð*Ð*Ð*Ø�F�c %™jœj­3¨Ñ+?Ô+?Ñ?Ñ@ˆ	Ý!œÝ�˜%Ñ Ô ¥# k°?Ñ"CÔ"Cñ
ô 
ð 	!ð 	!‰HˆC�ð !ˆI�c‰NˆNØ�˜YÑ'Ô'ˆð (ð 		DØ?Ð?¨Ð?Ñ?Ô?ˆFð   œˆJÝ˜1�c &™kœkÑ*Ô*ð Gð G�Ø'¨-¸Ô*:Ñ:¸VÀA¼YÑF�
�
à�3œ>¨*µe´kÑBÔBÐCÐCàˆrr   )rƒ   rÎ  rì  r‡  r‰  rÏ  )r  rã   r)   rÌ   rþ  r-  râ   r}   r?   r6   Úget_device_typer4   Úcpu_backendry   r{   rC   rû   rÿ   ÚBufferrÌ  Úis_transposedÚis_contiguousrw   rÔ   rQ  rR  rŠ  r:  r|   rÓ   )r®   r  r  rÈ   r]  r-  Ú
kept_sizesr€   Ú supports_logical_index_argreducerá  r·  rš  r  r  r  r  r  r  s     `         @@@@@@rp   Ú_make_reduction_innerr  Þ  s¯  øøøøøøø€ ð ÐÝ�Q˜ÑÔˆØ�:Š:‰<Œ<€DÝ•cŒ?Õ3°A°tÑ<Ô<Ñ=Ô=€Dà€JØ€HØ€MØ€KÝ•3�t‘9”9ÑÔð 'ð 'ˆØ�ˆ9ˆ9Ø×Ò˜qÑ!Ô!Ð!Ø× Ò   a¤Ñ)Ô)Ð)Ð)à�OŠO˜AÑÔÐØ×Ò˜d 1œgÑ&Ô&Ð&Ð&ð $)Ð Ý'0°¡|¤|ð (Ý
Ô˜1ÑÔ Ò&ÐF­6Ô+=ÀÒ+Fð %ð 	ð
ð	
ð 	
õ �ÑÔ Ò"Ð"Ø,ð #õ �a”f�kÑ*Ô*ð 	Ø+/Ð(Ð(Ý˜œ¥Ô 2Ñ3Ô3ð 	Ý�q”v�rœ}Ñ-Ô-ð	Ý2<¸Q¼V¼[Í"Ì)Ñ2TÔ2Tð	ð —\’\‘^”^ˆFà×$Ò$Ñ&Ô&ÐD¨f×.BÒ.BÑ.DÔ.DÐ*Dð )ðð ð ð ð ð ð ð ð ð ð ð6 ð Ý˜‘:”:ˆØð 	&ð 	&ˆAÝœ'œ+ˆH�Q‰KˆKð	&ð ˆà—=’=‘?”?€LÝØ�|Š|‰~Œ~Ø'Ð8¨1¯;ª;©=¬=Ø—+’+‘-”-ØØØ&ðñ ô ð rr   r-  r\   úCallable[..., TensorBox]c                ó    ‡ ‡— dd dœdˆˆ fd„}|S )NFrÎ   rd   rG   c               ó^  •— ‰dv rK|                       ¦   «         t          j        k    r)t          | ¦  «        rt	          | t          j        ¦  «        } t          | |||‰‰¬¦  «        }t          j        d‰| dœ|¤Ž}t          |j
        j
        t          ¦  «        r|                     ¦   «          |S )N)rÐ  r  ©r  r  rÈ   r]  r-  ©r-  rÍ  rª   )rÓ   r‹   re   r?   r  rE  r  rE   r  ry   r{   râ  )r®   r  r  rÈ   r  rí  r]  r-  s         €€rp   rÂ  zmake_reduction.<locals>.inner>  sÁ   ø€ ð
 Ð2Ð2Ð2Ø—’‘”¥¤Ò+Ð+Ý˜!‘”ð ,õ ˜�EœKÑ(Ô(ˆAÝ&ØØØØØ"7Ø)ð
ñ 
ô 
ˆõ Ô!ÐX°ÈAÐXÐXÐQWÐXÐXˆÝØŒKÔÝñ
ô 
ð 	ð �NŠNÑÔÐØˆrr   rô   )rd   rG   rª   )r-  r]  rÂ  s   `` rp   Úmake_reductionr   ;  s?   øø€ ð°Tð ð ð ð ð ð ð ð ð ð4 €Lrr   ú"Callable[..., Sequence[TensorBox]]c                ó   ‡ — ddˆ fd„}|S )NFrd   úSequence[TensorBox]c                ó„   •— t          | ||d |                      ¦   «         ‰¬¦  «        }t          j        j        d‰| dœ|¤ŽS )Nr  r  rª   )r  rÓ   r6   ÚArgReductionr  )r®   r  r  r  r-  s       €rp   rÂ  z,make_arg_with_value_reduction.<locals>.inner^  sa   ø€ Ý&ØØØØØ"#§+¢+¡-¤-Ø)ð
ñ 
ô 
ˆõ ŒÔ%ð 
Ø)°að
ð 
Ø;Að
ð 
ð 	
rr   rô   )rd   r#  rª   )r-  rÂ  s   ` rp   Úmake_arg_with_value_reductionr&  [  s-   ø€ ð
ð 
ð 
ð 
ð 
ð 
ð 
ð €Lrr   c               ó  — |�t          | |¦  «        } t          | |¦  «        }t          |                      ¦   «         |                      ¦   «         f|                      ¦   «         f|                      ¦   «         |¬¦  «        S )N)rƒ   ÚdtypesÚ	inner_fnsr  r  )r  rÄ  r:  r|   rÓ   rŠ  rã   )r®   r  rÈ   s      rp   Ú_make_scan_innerr*  n  sr   € ØÐÝ�Q˜ÑÔˆÝ˜˜DÑ!Ô!€DåØ�|Š|‰~Œ~Ø—’‘”ÐØ—=’=‘?”?Ð$Ø�ZŠZ‰\Œ\Øðñ ô ð rr   rÎ   c               ór  ‡— |�t          | |¦  «        } |                      ¦   «         Št          | |¦  «        }|                      ¦   «         }|t          j        t          j        fv rt          | t          j        ¦  «        } t          | ||¦  «        }t          ˆfd„|D ¦   «         ¦  «        }t          j        ||                      ¦   «         |                      ¦   «         ¬¦  «        }t          j        |t          |                     ¦   «         ¦  «        ¦  «        }t          t!          ||¦  «        |¦  «        S )Nc              3  ó(   •K  — | ]}‰|         V — Œd S r»   rª   ©r­   r€   r  s     €rp   r  zmean.<locals>.<genexpr>‡  ó'   øè è € Ð0Ð0 a˜$˜qœ'Ð0Ð0Ð0Ð0Ð0Ð0rr   re  )r  rã   rþ  rÓ   r‹   ru  rt  rb  Úsum_rW   r6   r=   r|   r<   r  rw   Údiv)r®   r  ÚkeepdimrÈ   r³  Ú
sum_resultÚdenomr  s          @rp   r0  r0  |  s   ø€ àÐÝ�Q˜ÑÔˆØ�:Š:‰<Œ<€DÝ# A tÑ,Ô,€Dà—;’;‘=”=€LØ�œ¥u¤~Ð6Ð6Ð6Ý�Q�œÑ$Ô$ˆÝ�a˜˜wÑ'Ô'€JÝÐ0Ð0Ð0Ð0¨4Ð0Ñ0Ô0Ñ0Ô0€EÝÔ e°1·;²;±=´=ÈÏÊÉÌÐXÑXÔX€EÝÔ˜e¥T¨*×*=Ò*=Ñ*?Ô*?Ñ%@Ô%@ÑAÔA€EÝ•C˜
 EÑ*Ô*¨LÑ9Ô9Ð9rr   c                ó˜  ‡
— |€d}|                       ¦   «         Š
t          | |¦  «        }t          | |d¬¦  «        }|r|                     ¦   «          t	          t          | |¦  «        ¦  «        }t          |||¦  «        }t          ˆ
fd„|D ¦   «         ¦  «        }|rt          ||z
  d¦  «        }t          j
        ||                      ¦   «         |                      ¦   «         ¬¦  «        }t          j        |t          |                      ¦   «         ¦  «        ¦  «        }t!          ||¦  «        }	|s|	fS |r|nt#          ||¦  «        }|	|fS )Nr3   T)r1  c              3  ó(   •K  — | ]}‰|         V — Œd S r»   rª   r-  s     €rp   r  z var_mean_sum_.<locals>.<genexpr>š  r.  rr   r   re  )rã   rþ  r0  râ  Úsquarer6  r/  rW   r-   r6   r=   rÓ   r|   r<   r  rw   r0  rg  )r®   r  Ú
correctionr1  Úreturn_meanÚx_meanÚdiffsr2  r3  Úx_varr  s             @rp   Úvar_mean_sum_r<  �  sG  ø€ ØÐØˆ
à�:Š:‰<Œ<€DÝ# A tÑ,Ô,€DÝ�!�T 4Ð(Ñ(Ô(€FØð Ø�ŠÑÔÐå•3�q˜&‘>”>Ñ"Ô"€EÝ�e˜T 7Ñ+Ô+€JåÐ0Ð0Ð0Ð0¨4Ð0Ñ0Ô0Ñ0Ô0€EØð +Ý�E˜JÑ&¨Ñ*Ô*ˆÝÔ e°1·;²;±=´=ÈÏÊÉÌÐXÑXÔX€EÝÔ˜e¥T¨*×*=Ò*=Ñ*?Ô*?Ñ%@Ô%@ÑAÔA€EÝ�
˜EÑ"Ô"€EØð ØˆxˆàÐ9ˆVˆV¥G¨F°DÑ$9Ô$9€FØ�&ˆ=Ðrr   c                ó  — t          | |¦  «        }t          | ||d d ¬¦  «        }|d         }t          |d         ¦  «        }|                      ¦   «         }d}d}	|t          j        t          j        fv }
|r|j        dk    rt          j	        j
        }nO|rA|j        dk    r6t          | ¦  «        r'|
r%t          j        j        }	t          j        j
        }d}nt          j        }t          |t           j        ¦  «        sdS t%          |¦  «        }||k    st          |¦  «        d	k    rdS |	rt          j        |cxk     r|	k     rn ndS |sdS t'          j        j        d|d
dœ|¤Ž\  }}t,          j        j                             |d	¦  «        S )N©r  r  rÈ   r]  r‰  rÏ  Fr   rú   r§  Tr3   r«  )ra  r-  rª   )rþ  r  rW   r|   r‹   rt  ru  rþ   r4   r   Úuse_two_step_variance_thresholdr?   ÚtritonÚuse_two_step_variance_min_numelr×  ry   rÔ   r¬  rÌ   r6   rE   Ú
num_splitsrZ   rh   rü   rÅ  )r®   r  r1  Úinput_dtyper  r‰  ra  rƒ   Úcheck_for_splitÚ	min_numelÚis_cuda_two_step_dtypeÚ	thresholdrÑ  rÜ  s                 rp   Úuse_two_step_variancerH  §  s»  € õ $ A tÑ,Ô,€DÝ"Ø	�˜w¨dÈ$ðñ ô €Fð �HÔ€FÝ# FÐ+=Ô$>Ñ?Ô?€OØ�\Š\‰^Œ^€FØ€OØ€IØ(­U¬^½U¼]Ð,KÐKÐØð 	7�&”+ Ò&Ð&õ ”JÔ>ˆ	ˆ	Ø	ð 7�F”K 6Ò)Ð)­i¸©l¬lÐ)Ð?UÐ)Ý”MÔAˆ	Ý”MÔAˆ	ØˆˆåÔ6ˆ	å�o¥u¤}Ñ5Ô5ð Øˆuå˜/Ñ*Ô*€OØ˜Ò"Ð"¥m°FÑ&;Ô&;¸qÒ&@Ð&@Øˆuàð •VÔ7¸/ÐUÐUÒUÐUÈIÒUÐUÐUÐUÐUØˆuàð ØˆtåŒ|Ô&ð Ø'Øðð ð ðð �H€A€uõ
 Œ7Ô×0Ò0°¸Ñ:Ô:Ð:rr   c               ój  ‡‡‡‡‡— ‰€dŠt          | ||d d ¬¦  «        }|                     d¦  «        }|                     d¦  «         |                     d¦  «         t          j        j        d|fd|                      ¦   «         dœ|¤Ž\  }}}	|                     ¦   «          |                      ¦   «         Š|                      ¦   «         Št          | |¦  «        }t          ˆfd„|D ¦   «         ¦  «        Šd	„ Šˆˆˆˆfd
„}
 t          |
¦  «        |¦  «        }|r|                     ¦   «          ||fS |fS )Nr3   r>  r‡  rÎ  rì  Úwelford_reduce)r)  r-  rÈ   c              3  ó(   •K  — | ]}‰|         V — Œd S r»   rª   r-  s     €rp   r  z$var_mean_welford_.<locals>.<genexpr>ï  s'   øè è € Ð1Ð1 q˜4 œ7Ð1Ð1Ð1Ð1Ð1Ð1rr   c                óÒ   — t          | t          j        ¦  «        r9| j        s2t	          j        t	          j        | t          j        ¦  «        |¦  «        S t	          j	        | |¦  «        S r»   )
ry   rÔ   rÕ   Ú	is_numberrY   r  r}  r‹   rü  r~  rg  s     rp   Úget_constant_or_index_exprz5var_mean_welford_.<locals>.get_constant_or_index_exprñ  sS   € Ý�a�œÑ$Ô$ð 	G¨Q¬[ð 	GÝ”<¥¤¨qµ%´+Ñ >Ô >ÀÑFÔFÐFÝŒ|˜A˜uÑ%Ô%Ð%rr   c                ó”   •—  ‰‰‰¦  «        } ‰‰‰¦  «        }t          j        d‰¦  «        }| t          j        |||z
  ¦  «        z  S r;  )rY   r~  r  )r{   ÚcÚNÚzeror7  rÈ   rN  Úrnumels       €€€€rp   rE  z#var_mean_welford_.<locals>.scale_fnö  sS   ø€ Ø&Ð& z°5Ñ9Ô9ˆØ&Ð& v¨uÑ5Ô5ˆÝŒ|˜A˜uÑ%Ô%ˆØ•c”k $¨¨A©Ñ.Ô.Ñ.Ð.rr   rª   )r  rÑ  r6   ÚWelfordReductionr  rÓ   râ  rã   rþ  rW   rÃ  )r®   r  r7  r1  r8  r  r·  r0  Úm2rÑ  rE  r
  rÈ   rN  rS  r  s     `         @@@@rp   Úvar_mean_welford_rV  Ù  sz  øøøøø€ ØÐØˆ
å"Ø	�˜w¨dÈ$ðñ ô €Fð �ZŠZ˜
Ñ#Ô#€FØ
‡J‚Jˆ{ÑÔÐØ
‡J‚Jˆ{ÑÔÐåÔ%Ô,ð Ø�)Ø'Ø�kŠk‰mŒmðð ð ð	ð �K€Dˆ"ˆað ‡J‚J�L„L€Là�KŠK‰MŒM€EØ�:Š:‰<Œ<€DÝ# A tÑ,Ô,€DÝÐ1Ð1Ð1Ð1¨DÐ1Ñ1Ô1Ñ1Ô1€Fð&ð &ð &ð
/ð /ð /ð /ð /ð /ð /ð /ð #�.˜Ñ
"Ô
" 2Ñ
&Ô
&€Càð Ø�Š‰ŒˆØ�DˆyÐØˆ6€Mrr   c               ó\  ‡— |                       ¦   «         Št          ‰¦  «        }t          | |d¬¦  «        } t          | ||||¬¦  «        }t          j        j        st          | ||‰¬¦  «        rt          di |¤Žnt          di |¤Ž}t          ˆfd„|D ¦   «         ¦  «        }|s|d         n|S )NFr  )r®   r  r7  r1  r8  )r  r1  rC  c              3  ó<   •K  — | ]}t          |‰d ¬¦  «        V — ŒdS )Fr  Nrr  )r­   r®   r1  s     €rp   r  z#var_mean_helper_.<locals>.<genexpr>  s2   øè è € ÐFÐF¸!•8˜A˜y¨uÐ5Ñ5Ô5ÐFÐFÐFÐFÐFÐFrr   r   rª   )rÓ   r   r  r:  r4   ÚmtiaÚdisable_welford_reductionrH  r<  rV  r±   )	r®   r  r7  r1  r8  rê   r  rX  r1  s	           @rp   Úvar_mean_helper_r[    sç   ø€ Ø—’‘”€IÝ)¨)Ñ4Ô4€MÝ��M¨Ð.Ñ.Ô.€AÝØ
ØØØØðñ ô €Fõ ŒKÔ1ð	)õ %Ø˜ g¸9ðñ ô ð	)�ÐÐ˜ÐÐÐõ Ð(Ð( Ð(Ð(ð õ ÐFÐFÐFÐF¸vÐFÑFÔFÑFÔF€FØ'Ð3ˆ6�!Œ9ˆ9¨VÐ3rr   )r7  r1  c               ó*   — t          | |||d¬¦  «        S )NF©r  r7  r1  r8  ©r[  ©r®   r  r7  r1  s       rp   Úvar_r`    s$   € åØ	� °WÈ%ðñ ô ð rr   c               ó*   — t          | |||d¬¦  «        S )NTr]  r^  r_  s       rp   Úvar_meanrb  $  s$   € åØ	� °WÈ$ðñ ô ð rr   c                ó.  — |dk     r$t          t          j        | ¦  «        | |¦  «        S |dk    rt          j        d|¦  «        S |dk    r| S t          | |dz  |¦  «        }t          j        ||¦  «        }|dz  dk    rt          j        || ¦  «        }|S )Nr   r3   r1   )Úpow_recursiverY   r  r~  r¼  )r®   rY  rÈ   rí  s       rp   rd  rd  +  s›   € Øˆ1‚u€uÝ�Sœ^¨AÑ.Ô.°°°EÑ:Ô:Ð:ØˆA‚v€vÝŒ|˜A˜uÑ%Ô%Ð%ØˆA‚v€vØˆå˜1˜a 1™f eÑ,Ô,€FÝŒW�V˜VÑ$Ô$€FØ	ˆA‰�!‚|€|Ý”˜ Ñ#Ô#ˆØ€Mrr   c                ó,   — t          j        | |¦  «        S r»   )rY   r-  ©r  rW  s     rp   Ú
pow_nativerg  :  s   € åŒ7�1�a‰=Œ=Ðrr   )r  c                óZ  ‡ ‡‡— t          ‰t          ¦  «        r1‰                     ¦   «         rt          ‰ t	          ‰¦  «        ¦  «        S t          ‰t          ¦  «        r‰dk    rt          ‰ ¦  «        S t          ‰t          ¦  «        r‰dk    rt          ‰ ¦  «        S t          d„ ‰ ‰fD ¦   «         ¦  «        }t          |¦  «        }t          ‰t          ¦  «        od‰cxk     odk     nc p|o‰dk    }|ri‰  	                    ¦   «         Šˆ ˆˆfd„}t          j        ‰                      ¦   «         ‰                      ¦   «         |‰                      ¦   «         ¬¦  «        S t          ‰ t          ¦  «        rL‰ dk    rt!          ‰d¦  «        S ‰ d	k    r0t#          ‰                     ¦   «         ¦  «        rt%          ‰¦  «        S |rZt          ‰ t          ¦  «        rt'          ‰ ‰¦  «        S t          ‰t          ¦  «        rt)          ‰ ‰¦  «        S t+          ‰ ‰¦  «        S t-          ‰ ‰¦  «        S )
NrD  r3   c              3  ór   K  — | ]2}t          |t          j        ¦  «        ¯|                     ¦   «         V — Œ3d S r»   )ry   r6   rG   rÓ   r¬   s     rp   r  zpow.<locals>.<genexpr>R  s;   è è € ÐNÐN 1µ*¸QÅÄÑ2MÔ2MÐN�—’‘”ÐNÐNÐNÐNÐNÐNrr   iàÿÿÿé    r   c                ó\   •— t           ‰| ¦  «        ‰‰                     ¦   «         ¦  «        S r»   )rd  rÓ   )r€  r  rW  r·  s    €€€rp   r†   zpow.<locals>.fn\  s%   ø€ Ý   ¨¡¤¨a°·²±´Ñ?Ô?Ð?rr   rˆ  r1   )ry   rb  rÖ   r-  rÌ   Úsqrtrð  rs  r!   rŠ  rD   r  r|   rÓ   rã   r"   rq  r    Úexp2Úfallback_pow_scalarÚfallback_pow_tensor_scalarÚfallback_pow_tensor_tensorrg  )r  rW  rÈ   Úis_integer_powÚembed_exponentr†   r·  s   ``    @rp   r-  r-  H  s1  øøø€ å�!•UÑÔð  §¢¡¤ð Ý�1•c˜!‘f”f‰~Œ~ÐÝ	�A•uÑ	Ô	ð  ! s¢( (Ý�A‰wŒwˆÝ	�A•sÑ	Ô	ð   Q¢ Ý�Q‰xŒxˆõ ÐNÐN¨¨A¨ÐNÑNÔNÑNÔN€EÝ% eÑ,Ô,€Nõ   ¥3Ñ'Ô'ð ØˆaˆˆŠˆ�"ŠˆˆˆÐ3˜Ð2¨A°ªFð ð ð 
Ø—’‘”ˆð	@ð 	@ð 	@ð 	@ð 	@ð 	@ð 	@õ ÔØ—<’<‘>”>Ø—+’+‘-”-ØØ—:’:‘<”<ð	
ñ 
ô 
ð 	
õ �!•VÑÔð Ø�Š6ˆ6Ý˜Q ‘?”?Ð"à�Š6ˆ6•n Q§[¢[¡]¤]Ñ3Ô3ˆ6Ý˜‘7”7ˆNàð 4å�a�Ñ Ô ð 	4Ý& q¨!Ñ,Ô,Ð,Ý˜�6Ñ"Ô"ð 	4Ý-¨a°Ñ3Ô3Ð3å-¨a°Ñ3Ô3Ð3å�a˜ÑÔÐrr   c                ó<  — t          | t          ¦  «        r| j        }n| }t          |t          ¦  «        r|j        }t          |t          j        ¦  «        s¡t          j        |                      ¦   «         |                      ¦   «         | 	                    ¦   «         |  
                    ¦   «         ¬¦  «        }t          |t          t          f¦  «        sJ ‚|j        }t          |t          j        ¦  «        sJ ‚t          |t          j        ¦  «        ri|                     ¦   «         sU|                     ¦   «         sAt          |j        t          j        ¦  «        s"|                     ¦   «          |j        |_        | S t          j                             |||¬¦  «         | S )Nrˆ  ©Úunsafe_alias)ry   rG   r{   r6   rÿ   rD   r  r|   rÓ   rŠ  rã   r:   r@   Úis_input_bufferÚis_module_bufferÚ	NopKernelrâ  rÿ  Úrealize_into)Úchangedrl  ru  Úchanged_datarn   s        rp   rË  rË  y  s  € Ý�'�9Ñ%Ô%ð Ø”|ˆˆàˆÝ�#•yÑ!Ô!ð ØŒhˆå�c�2œ=Ñ)Ô)ð 
.åÔØ×%Ò%Ñ'Ô'Ø×#Ò#Ñ%Ô%Ø—_’_Ñ&Ô&Ø×#Ò#Ñ%Ô%ð	
ñ 
ô 
ˆõ ˜$¥­:Ð 6Ñ7Ô7Ð7Ð7Ð7ØŒiˆÝ˜#�rœ}Ñ-Ô-Ð-Ð-Ð-å�,¥¤Ñ.Ô.ð 	Ø×$Ò$Ñ&Ô&ð	ð ×(Ò(Ñ*Ô*ð	õ �lÔ'­¬Ñ6Ô6ð		ð 	�Š‰ŒˆØœHˆÔØˆåÔ!×.Ò.Øˆ\¨ð /ñ ô ð ð €Nrr   c                ó>   — t          | t          | |¦  «        ¦  «        S r»   )rË  rq  )r®   rb  s     rp   ru  ru  ž  s   € å�Q�	 ! ZÑ0Ô0Ñ1Ô1Ð1rr   c                óú   — | |u r| S t          ||                      ¦   «         ¦  «        }t          ||                      ¦   «         ¦  «        }t	          ||                      ¦   «         ¦  «        }t          | |¦  «        S r»   ©r   r|   r  rÓ   rU  rã   rË  )r	  rÌ  r  s      rp   r  r  £  sg   € à
ˆc€z€zàˆ
Ý
�C˜ŸšÑ)Ô)Ñ
*Ô
*€CÝ
�3˜Ÿš™œÑ
(Ô
(€CÝ
��c—l’l‘n”nÑ
%Ô
%€CÝ�S˜#ÑÔÐrr   c                ó,   — t          j        | |¦  «        S r»   )rY   Úfloordivrf  s     rp   r€  r€  ®  ó   € åŒ<˜˜1ÑÔÐrr   c                ó,   — t          j        | |¦  «        S r»   )rY   Útruncdivrf  s     rp   rƒ  rƒ  ³  r�  rr   c                ó,   — t          j        | |¦  «        S r»   )rY   Údiv_rnrf  s     rp   Ú_div_rnr†  ¸  s   € åŒ:�a˜ÑÔÐrr   c                óž  — t          | ¦  «        ot          |¦  «        }t          | ¦  «        ot          |¦  «        }|dk    r;|r
J d¦   «         ‚|rt          | |¦  «        nt          t	          | |¦  «        ¦  «        S |dk    r;|r
J d¦   «         ‚|rt          | |¦  «        nt          t          | |¦  «        ¦  «        S t          | |¦  «        S )Nrz  z5floordiv operands can not be boolean at the same timer  z5truncdiv operands can not be boolean at the same time)rØ   rÛ   r€  rz  r†  rƒ  r  r0  )r  rW  Úrounding_modeÚboth_integerÚboth_booleans        rp   Údiv_moder‹  ½  sÖ   € å" 1Ñ%Ô%Ð<­/¸!Ñ*<Ô*<€LÝ" 1Ñ%Ô%Ð<­/¸!Ñ*<Ô*<€Lð ˜ÒÐØÐXÐXÐ!XÑXÔXÐð
 ".ÐG�x˜˜1‰~Œ~ˆ~µ5½ÀÀA¹¼Ñ3GÔ3GÐGØ˜ÒÐØÐXÐXÐ!XÑXÔXÐØ!-ÐC�x˜˜1‰~Œ~ˆ~µ5½¸QÀ¹¼Ñ3CÔ3CÐCÝˆq�!‰9Œ9Ðrr   c                óÐ   — t          | ¦  «        ot          |¦  «        }|rt          | |¦  «        S t          t          j        j        ¦  «        } t          |¦  «        | |¦  «        S r»   )rÛ   Úlogical_andrB   r  r¼  r$  rÃ  )r  rW  Ú	both_boolr†   s       rp   r¼  r¼  Ñ  s`   € å Ñ"Ô"Ð9¥°qÑ'9Ô'9€IØð (Ý˜1˜aÑ Ô Ð å�œÔ*Ñ+Ô+ˆØ!�~˜bÑ!Ô! ! QÑ'Ô'Ð'rr   rt  úir.Constant | Nonec                óL  — t          | t          j        ¦  «        rt          | j        ¦  «        S t          | t          j        ¦  «        r!t          |                      ¦   «         ¦  «        S t          | t          j        ¦  «        r| S t          | t          j        ¦  «        sdS t          j
        j                             |                      ¦   «         ¦  «        }t          j        |¦  «        5  t!          j        t          j        dd¦  «        5   | j        |                      ¦   «         Ž }ddd¦  «         n# 1 swxY w Y   ddd¦  «         n# 1 swxY w Y   t          |t          j
        j        j        ¦  «        sJ ‚t          |j        t          j        ¦  «        r|j        S dS )z:Try convert an arbitrary IR node into an ir.Constant valueNÚallow_indexingT)ry   r6   r@   Úget_constant_valuer{   r:   râ  r  ÚLoopsr‹   Ú	_inductorÚops_handlerÚExtractConstantsHandlerr|   rZ   Úset_ops_handlerr   ÚobjectrD  r‡  Úinner_fn_argsÚvirtualizedÚOpsValuer  )r®   r  r~   s      rp   r’  r’  Û  sÖ  € õ
 �!•R”]Ñ#Ô#ð *Ý! !¤&Ñ)Ô)Ð)Ý�!•R”[Ñ!Ô!ð 3Ý! !§-¢-¡/¤/Ñ2Ô2Ð2Ý�!•R”[Ñ!Ô!ð Øˆõ �a�œÑ"Ô"ð ØˆtåŒoÔ)×AÒAÀ!Ç,Â,Á.Ä.ÑQÔQ€Gå	Ô˜'Ñ"Ô"ð-ð -åŒ•RÔ&Ð(8¸$Ñ?Ô?ð-ð -ð ˆaŒj˜!Ÿ/š/Ñ+Ô+Ð,ˆð	-ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -ð -ð -ð -ñ -ô -ð -ð -ð -ð -ð -ð -øøøð -ð -ð -ð -õ �c�5œ?Ô6Ô?Ñ@Ô@Ð@Ð@Ð@Ý�#”)�Rœ[Ñ)Ô)ð ØŒyÐØˆ4s6   Ã,!EÄD6Ä*EÄ6D:	Ä:EÄ=D:	Ä>EÅEÅEc                óŠ  — t          d„ | |fD ¦   «         ¦  «        }|rt          | |¦  «        S t          |¦  «        x}�j|                      ¦   «         j        dk    rM|j        dk    r(t          j        t          d¦  «        |j        ¦  «        }n
d|j        z  }t          | |¦  «        S d„ } t          |¦  «        | |¦  «        S )Nc              3  óR   K  — | ]"}t          |¦  «        pt          |¦  «        V — Œ#d S r»   )rÛ   rØ   r¬   s     rp   r  zdiv_prim.<locals>.<genexpr>ý  s7   è è € ÐOÐOÀ1•o aÑ(Ô(Ð>­O¸AÑ,>Ô,>ÐOÐOÐOÐOÐOÐOrr   rú   r   Úinfr;  c                 ó   — t          j        | Ž S r»   )rY   rR  rN  s    rp   r†   zdiv_prim.<locals>.fn  s   € ÝŒ{˜DÐ!Ð!rr   )rE  rƒ  r’  r|   rþ   r  ÚmathÚcopysignrb  r¼  rÃ  )r  rW  Úis_integralr¶  r  r†   s         rp   r°  r°  û  sÔ   € åÐOÐOÈÈAÈÐOÑOÔOÑOÔO€Kàð Ý˜˜1‰~Œ~Ðõ & aÑ(Ô(Ð(ˆÐ5¸!¿,º,¹.¼.Ô:MÐQVÒ:VÐ:Vð Œ=˜AÒÐÝœ¥u¨U¡|¤|°W´]ÑCÔCˆJˆJà˜wœ}Ñ,ˆJÝ�1�jÑ!Ô!Ð!ð"ð "ð "ð �>˜"ÑÔ˜a Ñ#Ô#Ð#rr   c                ób   — t          | |ft          j        ¬¦  «        \  } }t          | |¦  «        S r%  )ry  r   ÚINT_TO_FLOATr°  rf  s     rp   r0  r0    s9   € õ Ø	
ˆAˆÕ$CÔ$Pðñ ô �D€A€qõ �A�q‰>Œ>Ðrr   c                ó‚   — t          | ¦  «        pt          | ¦  «        }|rd„ }nd„ } t          |¦  «        | |¦  «        S )Nc                ó,   — t          j        | |¦  «        S r»   )rY   Úmodrf  s     rp   r†   zfmod.<locals>.fn%  s   € Ý”7˜1˜a‘=”=Ð rr   c                ó,   — t          j        | |¦  «        S r»   )rY   Úfmodrf  s     rp   r†   zfmod.<locals>.fn*  s   € Ý”8˜A˜q‘>”>Ð!rr   )rÛ   rØ   rÃ  )r  rW  r¢  r†   s       rp   r©  r©    sc   € å! !Ñ$Ô$Ð:­¸Ñ(:Ô(:€Kàð "ð	!ð 	!ð 	!ð 	!ð
	"ð 	"ð 	"ð �>˜"ÑÔ˜a Ñ#Ô#Ð#rr   c               óâ   — t          |                      ¦   «         ¦  «        s!t          |                      ¦   «         ¦  «        r|€t          j        }t          d|¬¦  «        } || |||¬¦  «        S )Nr«  rï  rÎ   ©r!   rÓ   r   r‹   rü  r   ©r®   r  r  rÈ   r†   s        rp   r/  r/  0  sk   € õ 	˜Ÿš™œÑ'Ô'ðÝ+;¸A¿KºK¹M¼MÑ+JÔ+Jðà
ˆ-Ý”ˆå	˜°UÐ	;Ñ	;Ô	;€BØˆ2ˆa��x uÐ-Ñ-Ô-Ð-rr   c                óÖ  — t          |                      ¦   «         ¦  «        s!t          |                      ¦   «         ¦  «        r|€t          j        }t          |                      ¦   «         ¦  «        dk    r.|dv sJ ‚|p|                      ¦   «         }t          | |d¬¦  «        S d„ }t          | ||¬¦  «        }t          j
        j        d	i |¤d|i¤Ž\  }|€t          | ||¬¦  «        S |S )
Nr   ©r   r¨  Tr  c                ó>   — | \  }|\  }t          j        ||¦  «        fS r»   )rY   r³   ©Úa_tupleÚb_tupler  rW  s       rp   Ú
combine_fnzcumsum.<locals>.combine_fnN  ó#   € Ø‰ˆØ‰ˆÝ”˜˜1‘”ÐÐrr   ©r  rÈ   r³  ©rå   rÈ   rª   )r!   rÓ   r   r‹   rü  râ   rã   r  r*  r6   ÚScanr  Úfallback_cumsum©r®   r  rÈ   r³  r  rí  s         rp   Úcumsumrº  B  s÷   € õ 	˜Ÿš™œÑ'Ô'ðÝ+;¸A¿KºK¹M¼MÑ+JÔ+Jðà
ˆ-Ý”ˆå
ˆ1�:Š:‰<Œ<ÑÔ˜AÒÐØ�wˆˆˆˆØÐ&˜Ÿš™œˆÝ˜˜5 tÐ,Ñ,Ô,Ð,ð ð  ð  õ
 ˜a d°%Ð8Ñ8Ô8€FÝ””Ð?Ð? Ð?Ð?°JÐ?Ð?Ð?�I€VØ€~Ý˜q d°%Ð8Ñ8Ô8Ð8Ø€Mrr   c                óÖ  — t          |                      ¦   «         ¦  «        s!t          |                      ¦   «         ¦  «        r|€t          j        }t          |                      ¦   «         ¦  «        dk    r.|dv sJ ‚|p|                      ¦   «         }t          | |d¬¦  «        S d„ }t          | ||¬¦  «        }t          j
        j        d	i |¤d|i¤Ž\  }|€t          | ||¬¦  «        S |S )
Nr   r®  Tr  c                ó>   — | \  }|\  }t          j        ||¦  «        fS r»   )rY   r¼  r°  s       rp   r³  zcumprod.<locals>.combine_fnf  r´  rr   rµ  r³  r¶  rª   )r!   rÓ   r   r‹   rü  râ   rã   r  r*  r6   r·  r  Úfallback_cumprodr¹  s         rp   Úcumprodr¾  Z  s÷   € õ 	˜Ÿš™œÑ'Ô'ðÝ+;¸A¿KºK¹M¼MÑ+JÔ+Jðà
ˆ-Ý”ˆå
ˆ1�:Š:‰<Œ<ÑÔ˜AÒÐØ�wˆˆˆˆØÐ&˜Ÿš™œˆÝ˜˜5 tÐ,Ñ,Ô,Ð,ð ð  ð  õ
 ˜a d°%Ð8Ñ8Ô8€FÝ””Ð?Ð? Ð?Ð?°JÐ?Ð?Ð?�I€VØ€~Ý  t°5Ð9Ñ9Ô9Ð9Ø€Mrr   c                ó*  — d„ }|                       ¦   «         }t          |                      ¦   «         ¦  «        dk    r|dv sJ ‚t          | ¦  «        S t	          | ||¬¦  «        }t          j        j        di |¤d|i¤Ž\  }|€t          | |¬¦  «        S |S )Nc           	     ó   — | \  }|\  }t          j        ||¦  «        }t          j        ||¦  «        }||k    t          j        |¦  «         z  }t          j        |t          j        t          j        ||z
  ¦  «        ¦  «        |z   |¦  «        fS r»   )rY   r  r  ro  rM  Úlog1pÚexp)r±  r²  r  rW  Úmin_vÚmax_vr  s          rp   Úlog_add_exp_helperz(logcumsumexp.<locals>.log_add_exp_helpert  s�   € Ø‰ˆØ‰ˆÝ”˜A˜qÑ!Ô!ˆÝ”˜A˜qÑ!Ô!ˆØ˜’¥C¤I¨eÑ$4Ô$4Ð#4Ñ5ˆÝ”	˜$¥¤	­#¬'°%¸%±-Ñ*@Ô*@Ñ AÔ AÀEÑ IÈ1ÑMÔMÐOÐOrr   r   r®  rµ  r³  r¦  rª   )	rÓ   râ   rã   rð  r*  r6   r·  r  Úfallback_logcumsumexp)r®   rå   rÅ  rÈ   r  rí  s         rp   ÚlogcumsumexprÇ  r  s¬   € ðPð Pð Pð �KŠK‰MŒM€EÝ
ˆ1�:Š:‰<Œ<ÑÔ˜AÒÐØ�gˆ~ˆ~ˆ~ˆ~Ý�Q‰xŒxˆå˜a c°Ð7Ñ7Ô7€FÝ””ÐGÐG ÐGÐGÐ4FÐGÐGÐG�I€VØ€~Ý$ Q¨CÐ0Ñ0Ô0Ð0Ø€Mrr   c                óê  ‡— t          |                      ¦   «         ¦  «        dk    r0‰dv sJ ‚t          | ¦  «        t          | t          j        ¬¦  «        fS |                      ¦   «         }t          j        d|d¬¦  «        }t          | ‰|¬¦  «        }|t          j        f|d<   |  
                    ¦   «         ˆfd	„f|d
<   t          j        j        di |¤d|i¤Ž\  }}|€t          | ‰¬¦  «        S ||fS )Nr   r®  rÎ   rÐ  F©rÈ   Úarg_break_ties_leftrµ  r(  c                óN   •— t          j        | ‰         t          j        ¦  «        S r»   ©rY   r}  r‹   rü  ©r€  r  s    €rp   rp  zcummax.<locals>.<lambda>—  ó   ø€ •C”N 3 t¤9­e¬kÑ:Ô:€ rr   r)  r³  r¦  rª   )râ   rã   rð  r  r‹   rü  rÓ   r6   Úget_reduction_combine_fnr*  rŠ  r·  r  Úfallback_cummax©r®   r  rÈ   r³  r  r(  rR  s    `     rp   ÚcummaxrÒ  ˆ  ó
  ø€ å
ˆ1�:Š:‰<Œ<ÑÔ˜AÒÐØ�wˆˆˆˆÝ�Q‰xŒx� A­U¬[Ð9Ñ9Ô9Ð9Ð9à�KŠK‰MŒM€EÝÔ,Ø˜°5ðñ ô €Jõ ˜a d°%Ð8Ñ8Ô8€FØ�uœ{Ð+€Fˆ8Ñà	�Š‰ŒØ:Ð:Ð:Ð:ð€Fˆ;Ñõ ”g”nÐEÐE vÐEÐE¸*ÐEÐEÐE�O€FˆGØ€~Ý˜q dÐ+Ñ+Ô+Ð+Ø�7ˆ?Ðrr   c                óê  ‡— t          |                      ¦   «         ¦  «        dk    r0‰dv sJ ‚t          | ¦  «        t          | t          j        ¬¦  «        fS |                      ¦   «         }t          j        d|d¬¦  «        }t          | ‰|¬¦  «        }|t          j        f|d<   |  
                    ¦   «         ˆfd	„f|d
<   t          j        j        di |¤d|i¤Ž\  }}|€t          | ‰¬¦  «        S ||fS )Nr   r®  rÎ   r  FrÉ  rµ  r(  c                óN   •— t          j        | ‰         t          j        ¦  «        S r»   rÌ  rÍ  s    €rp   rp  zcummin.<locals>.<lambda>®  rÎ  rr   r)  r³  r¦  rª   )râ   rã   rð  r  r‹   rü  rÓ   r6   rÏ  r*  rŠ  r·  r  Úfallback_cumminrÑ  s    `     rp   Úcumminr×  Ÿ  rÓ  rr   c               óâ   — t          |                      ¦   «         ¦  «        s!t          |                      ¦   «         ¦  «        r|€t          j        }t          d|¬¦  «        } || |||¬¦  «        S )Nr$  rï  rÎ   r«  r¬  s        rp   r$  r$  ¶  sk   € õ 	˜Ÿš™œÑ'Ô'ðÝ+;¸A¿KºK¹M¼MÑ+JÔ+Jðà
ˆ-Ý”ˆå	˜°eÐ	<Ñ	<Ô	<€BØˆ2ˆa��x uÐ-Ñ-Ô-Ð-rr   rR  útuple[int, ...]c                ó¶  ‡— t           j        j        }|€dS t          ¦   «         Š|j        D ]“}|j        dk    r„|j        t          j        u rqt          |j
        ¦  «        dk    rYt          |j
        d         t          ¦  «        r9t          |j        ¦  «        dk    r ‰                     |j
        d         ¦  «         Œ‘ dS t          ˆfd„| D ¦   «         ¦  «        S )NTrg   r1   r3   r   c              3  ó    •K  — | ]}|‰v V — Œ	d S r»   rª   )r­   rf  Úused_indicess     €rp   r  z7_current_node_uses_all_tuple_outputs.<locals>.<genexpr>Ó  s(   øè è € Ð:Ð:¨ˆu˜Ð$Ð:Ð:Ð:Ð:Ð:Ð:rr   )rZ   rh   ri   r)   rj   rk   rl   rµ  Úgetitemrâ   r�   ry   rÌ   r³   rE  )rR  ri   ro   rÜ  s      @rp   Ú$_current_node_uses_all_tuple_outputsrÞ  Á  sÕ   ø€ Ý”7Ô'€LØÐØˆtå$.¡L¤L€LØÔ"ð 
ð 
ˆàŒG�Ò&Ð&Ø”�xÔ/Ð/Ð/Ý�D”I‘” !Ò#Ð#Ý˜4œ9 Qœ<­Ñ-Ô-ð $õ �4”:‰Œ Ò"Ð"Ø× Ò  ¤¨1¤Ñ.Ô.Ð.øà�4�4åÐ:Ð:Ð:Ð:°'Ð:Ñ:Ô:Ñ:Ô:Ð:rr   c                ól   — t          | t          j        ¦  «        }  t          d¦  «        | ||¬¦  «        S )NrF  ©r  r  )r  r‹   re   r   ©r®   rå   r1  s      rp   Ú
reduce_anyrâ  Ö  s2   € å�•E”JÑÔ€AØ �>˜%Ñ Ô  ¨°wÐ?Ñ?Ô?Ð?rr   c                ó^  — |�št          | ¦  «        rg|                      ¦   «         t          j        k    rEt	          d¦  «        rt          | ||¬¦  «        S t          | ||¬¦  «        t          | ||¬¦  «        fS t          | ||¬¦  «        t          | ||¬¦  «        fS t          | d |¬¦  «        S ©N)r   r3   rà  )	r?   rÓ   r‹   re   rÞ  Úreduce_argmax_with_valueÚreduce_argmax_valueÚreduce_argmaxÚreduce_amaxrá  s      rp   Ú
reduce_maxré  Ü  óÄ   € à
€Ý�Q‰<Œ<ð 	˜AŸKšK™MœM­U¬ZÒ7Ð7Ý3°FÑ;Ô;ð OÝ/°¸ÀgÐNÑNÔNÐNå# A¨C¸'ÐBÑBÔBÝ˜a c°GÐ<Ñ<Ô<ðð õ
 ˜ ¨gÐ6Ñ6Ô6Ý˜! #°Ð8Ñ8Ô8ð
ð 	
õ
 �q˜t¨gÐ6Ñ6Ô6Ð6rr   c                ó^  — |�št          | ¦  «        rg|                      ¦   «         t          j        k    rEt	          d¦  «        rt          | ||¬¦  «        S t          | ||¬¦  «        t          | ||¬¦  «        fS t          | ||¬¦  «        t          | ||¬¦  «        fS t          | d |¬¦  «        S rä  )	r?   rÓ   r‹   re   rÞ  Úreduce_argmin_with_valueÚreduce_argmin_valueÚreduce_argminÚreduce_aminrá  s      rp   Ú
reduce_minrð  î  rê  rr   Úxor_sumr  r  rÐ  rï  r  r  r  r  r  Ú
logical_or)rœ  r�  r›  ©Ústablerå   Ú
descendingc          	     ó0  — |€d}|                       ¦   «         }|                      ¦   «         }t          t          |¦  «        |¦  «        }t          |¦  «        dk    r+t	          | ¦  «        t          d|t          j        |¦  «        fS t          |¦  «        r||         nd}t          j	        j
        rt          j        }nt          j        }t          j        j                             t#          j        |t          j        |¦  «        j        ¦  «        ¦  «        st+          | |||¬¦  «        S t-          |dd||d¬¦  «        }dgt          |¦  «        z  }	t          |¦  «        r||	|<   t/          ||	¦  «        }t1          ||¦  «        }t2          j                             || j        |j        f|                      ¦   «         |                     ¦   «         f||||¬¦  «        \  }
}|
€t+          | |||¬¦  «        S |€J ‚|
t=          |t          j        ¦  «        fS )NFr   r3   ró  r.  )rƒ   r(  r)  r  r  rô  rõ  )rã   r|   r   râ   rð  rc  r‹   rü  r4   r@  Údecompose_sort_opsrE  Úint16rZ   rh   rü   rb  rÔ   r½  r  r  Úsort_fallbackr,  r  rU  r6   ÚSortr  rÈ   rŠ  r  )r®   rô  rå   rõ  rŠ  rƒ   ré  Ú	idx_dtyperR  Ú
view_shaper(  s              rp   Úsort_stablerý    sö  € à€~Øˆà�JŠJ‰LŒL€EØ�\Š\‰^Œ^€FÝ
�3˜u™:œ: sÑ
+Ô
+€CÝ
ˆ5�z„z�Q‚€Ý�Q‰xŒx�˜q &­%¬+°uÑ=Ô=Ð=Ð=å  ™ZœZÐ.ˆu�SŒzˆz¨Q€Hõ „}Ô'ð  Ý”Kˆ	ˆ	å”Kˆ	ÝŒ7Ô×*Ò*ÝŒ��5œ; yÑ1Ô1Ô5Ñ6Ô6ñô ð Oõ ˜Q v°3À:ÐNÑNÔNÐNåØ˜ ¨¸6ÐQVðñ ô €Gð �•s˜5‘z”zÑ!€JÝ
ˆ5�z„zð #Ø"ˆ
�3‰Ý�7˜JÑ'Ô'€GÝ�W˜eÑ$Ô$€Gå”g—n’nØØ”˜œÐ'Ø—=’=‘?”? G×$7Ò$7Ñ$9Ô$9Ð:ØØØØð %ñ ô �O€FˆGð €~Ý˜Q v°3À:ÐNÑNÔNÐNàÐÐÐØ•8˜G¥U¤[Ñ1Ô1Ð1Ð1rr   c                ó(   — t          | d||¬¦  «        S )NFró  )rý  )r®   rå   rõ  s      rp   Úsortrÿ  I  s   € å�q ¨C¸JÐGÑGÔGÐGrr   c                óJ  — t           j        j        st          | ¦  «        S |                      ¦   «         }t          j        t          j        |t          j
        d¦  «        ¦  «        }t          | |g¦  «        }t          |d¬¦  «        \  }}|dz
  dz  }t          |d|¦  «        S )Nr3   r   r¦  r1   )r4   r@  r÷  Úmedian_fallbackrã   r8  rW  rµ  r¼  rÔ   r¬  r  rý  rÕ  )r¶  r  rW  ÚflatÚsorted_valsrÑ  r  s          rp   Úmedian_defaultr	  ]  s‘   € åŒ=Ô+ð %Ý˜tÑ$Ô$Ð$Ø�=Š=‰?Œ?€DÝÔ�Xœ\¨4µ´¸qÑ1AÔ1AÑBÔB€EÝ��u�gÑÔ€DÝ  ¨1Ð-Ñ-Ô-�N€K�Ø	�‰�qÑ€AÝ�+˜q !Ñ$Ô$Ð$rr   c                ó  — t           j        j        st          | ||¦  «        S |                      ¦   «         }t          |¦  «        }|dk    r=t          | ¦  «        t          d|                      ¦   «         t          j
        |¦  «        fS t          ||¦  «        }t          | d|¬¦  «        \  }}||         }|dz
  dz  }t          |||¦  «        }	t          |||¦  «        }
|r t          |	|¦  «        }	t          |
|¦  «        }
|	|
fS )Nr   T©rô  rå   r3   r1   )r4   r@  r÷  Úmedian_dim_fallbackrã   râ   rð  rc  r|   r‹   rü  r   rý  rÕ  r‰  )r¶  rå   r1  rŠ  rè  r	  Úsorted_idxsr'  r  r(  rR  s              rp   Ú
median_dimr		  i  sý   € åŒ=Ô+ð 7Ý" 4¨¨gÑ6Ô6Ð6Ø�MŠM‰OŒO€EÝˆu‰:Œ:€DØˆq‚y€yÝ�T‰{Œ{�E ! T§_¢_Ñ%6Ô%6½¼ÀUÑKÔKÐKÐKÝ
˜4 Ñ
%Ô
%€CÝ*¨4¸À#ÐFÑFÔFÑ€K�ØˆcŒ
€AØ	
ˆQ‰�1‰€AÝ�K  aÑ(Ô(€FÝ�[ # qÑ)Ô)€GØð *Ý˜6 3Ñ'Ô'ˆÝ˜G SÑ)Ô)ˆØ�7ˆ?Ðrr   c                ó  ‡‡‡‡‡‡‡‡ — t           j        j        st          | ||¦  «        S |                      ¦   «         }t          |¦  «        }|                      ¦   «         }|dk    r+t          | ¦  «        t          d|t          j
        |¦  «        fS t          ||¦  «        }t          | d|¬¦  «        \  }}||         }t          |ddt          j
        |d¬¦  «        }	t          j        d¦  «        g|z  }
||
|<   t!          |	|
¦  «        }	t#          |	|¦  «        }	|	                     ¦   «         Šˆfd„}t'          j        t+          |¦  «        t          j
        ||¬¦  «        }t-          |||¦  «        }|                     ¦   «         Š |                     ¦   «         Š|	                     ¦   «         Šˆˆˆ fd	„}t'          j        t+          |¦  «        t          j        ||¬¦  «        }|                     ¦   «         Š|	                     ¦   «         Šˆˆfd
„}t'          j        t+          |¦  «        t          j
        ||¬¦  «        }t1          ||¦  «        \  }}|	                     ¦   «         Š|                     ¦   «         Šˆˆfd„}t'          j        t+          |¦  «        t          j
        ||¬¦  «        }t3          ||d¬¦  «        }t-          |||¦  «        }t-          |||¦  «        }|s t5          ||¦  «        }t5          ||¦  «        }||fS )z9Lower aten.mode via sort-based decomposition or fallback.r   Tr	  r3   Fr.  c           	     óÚ   •— t          j        t          j         ‰| ¦  «        t          j        dt          j        ¦  «        ¦  «        t          j        dt          j        ¦  «        ¦  «        S rl  )rY   r  r6  r~  r‹   rü  )r€  Úpositions_loader0s    €rp   Úprev_pos_fnz!mode_default.<locals>.prev_pos_fn—  sQ   ø€ ÝŒ{ÝŒGÐ%Ð% cÑ*Ô*­C¬L¸½E¼KÑ,HÔ,HÑIÔIÝŒL˜�EœKÑ(Ô(ñ
ô 
ð 	
rr   rˆ  c           
     óê   •— t          j        t          j         ‰| ¦  «         ‰| ¦  «        ¦  «        t          j         ‰| ¦  «        t          j        dt
          j        ¦  «        ¦  «        ¦  «        S r;  )rY   Úor_Úner2  r~  r‹   rü  )r€  Úpositions_loaderÚshifted_loaderÚsorted_loaders    €€€rp   Úis_boundary_fnz$mode_default.<locals>.is_boundary_fn¬  sc   ø€ ÝŒwÝŒF�=�= Ñ%Ô% ~ ~°cÑ':Ô':Ñ;Ô;ÝŒFÐ#Ð# CÑ(Ô(­#¬,°q½%¼+Ñ*FÔ*FÑGÔGñ
ô 
ð 	
rr   c                óŽ   •— t          j         ‰| ¦  «         ‰| ¦  «        t          j        dt          j        ¦  «        ¦  «        S rˆ  )rY   rM  r~  r‹   rü  )r€  Úis_boundary_loaderÚpositions_loader2s    €€rp   Úboundary_pos_fnz%mode_default.<locals>.boundary_pos_fn½  sD   ø€ ÝŒyØÐ˜sÑ#Ô#ØÐ˜cÑ"Ô"ÝŒL˜�Uœ[Ñ)Ô)ñ
ô 
ð 	
rr   c                ó²   •— t          j        t          j         ‰| ¦  «         ‰| ¦  «        ¦  «        t          j        dt          j        ¦  «        ¦  «        S r@  )rY   r³   r6  r~  r‹   rü  )r€  Úlast_boundary_loaderÚpositions_loader3s    €€rp   Ú
run_len_fnz mode_default.<locals>.run_len_fnÒ  sO   ø€ ÝŒwÝŒGÐ%Ð% cÑ*Ô*Ð,@Ð,@ÀÑ,EÔ,EÑFÔFÝŒL˜�EœKÑ(Ô(ñ
ô 
ð 	
rr   rà  )r4   r@  r÷  Úmode_fallbackrã   râ   r|   rð  rc  r‹   rü  r   rý  r,  rÔ   r¬  r  rU  rŠ  rD   r  rL   r–  re   rÒ  rç  rg  )!r¶  rå   r1  rŠ  rè  rƒ   r	  r	  r'  Ú	positionsÚpos_view_shaper	  Úprev_positionsÚshifted_valsr	  Úis_boundaryr	  Úboundary_posÚlast_boundaryrÑ  r	  Úrun_lenÚmax_posÚ	mode_valsÚ	mode_idxsr	  r	  r	  r	  r	  r	  r	  r	  s!                            @@@@@@@@rp   Úmode_defaultr)	  }  sm  øøøøøøøø€ õ Œ=Ô+ð 1Ý˜T 3¨Ñ0Ô0Ð0Ø�MŠM‰OŒO€EÝˆu‰:Œ:€DØ�_Š_ÑÔ€FØˆq‚y€yÝ�T‰{Œ{�E ! V­U¬[¸%Ñ@Ô@Ð@Ð@Ý
˜4 Ñ
%Ô
%€CÝ*¨4¸À#ÐFÑFÔFÑ€K�ØˆcŒ
€Aõ Ø	�˜¥%¤+°fÈEðñ ô €Iõ ”m AÑ&Ô&Ð'¨$Ñ.€NØ€N�3ÑÝ�Y Ñ/Ô/€IÝ�y %Ñ(Ô(€Ið "×-Ò-Ñ/Ô/Ðð
ð 
ð 
ð 
ð 
õ Ô%Ý˜VÑ$Ô$ÝŒkØØð	ñ ô €Nõ ˜+ s¨NÑ;Ô;€Là×+Ò+Ñ-Ô-€MØ!×-Ò-Ñ/Ô/€NØ ×,Ò,Ñ.Ô.Ðð
ð 
ð 
ð 
ð 
ð 
ð 
õ Ô"Ý˜VÑ$Ô$ÝŒjØØð	ñ ô €Kð %×0Ò0Ñ2Ô2ÐØ!×-Ò-Ñ/Ô/Ðð
ð 
ð 
ð 
ð 
ð 
õ Ô#Ý˜VÑ$Ô$ÝŒkØ Øð	ñ ô €Lõ ˜l¨CÑ0Ô0Ñ€M�1ð "×-Ò-Ñ/Ô/ÐØ(×4Ò4Ñ6Ô6Ðð
ð 
ð 
ð 
ð 
ð 
õ ÔÝ˜VÑ$Ô$ÝŒkØØð	ñ ô €Gõ ˜G¨#¸Ð=Ñ=Ô=€GÝ�{ C¨Ñ1Ô1€IÝ�{ C¨Ñ1Ô1€Iàð ,Ý˜I sÑ+Ô+ˆ	Ý˜I sÑ+Ô+ˆ	à�iÐÐrr   c                ó²  — t           j        j        st          | ||||¦  «        S |                      ¦   «         }t          |¦  «        }|dk    r=t          | ¦  «        t          d|                      ¦   «         t          j
        |¦  «        fS t          ||¦  «        }t          | d||¬¦  «        \  }}t          ||d|¦  «        }	t          ||d|¦  «        }
|	|
fS )Nr   Tró  )r4   r@  r÷  Útopk_fallbackrã   râ   rð  rc  r|   r‹   rü  r   rý  rÙ  )r¶  r  rå   Úlargestrˆ  rŠ  rè  r	  r	  r(  rR  s              rp   Útopkr-	  ë  sÔ   € åŒ=Ô+ð <Ý˜T 1 c¨7°FÑ;Ô;Ð;Ø�MŠM‰OŒO€EÝˆu‰:Œ:€DØˆq‚y€yÝ�T‰{Œ{�E ! T§_¢_Ñ%6Ô%6½¼ÀUÑKÔKÐKÐKÝ
˜4 Ñ
%Ô
%€CÝ*Ø�T˜s¨wð ñ  ô  Ñ€K�õ �K  a¨Ñ+Ô+€FÝ�[ # q¨!Ñ,Ô,€GØ�7ˆ?Ðrr   c                óú  — t           j        j        st          | |||¦  «        S |                      ¦   «         }t          |¦  «        }|dk    r=t          | ¦  «        t          d|                      ¦   «         t          j
        |¦  «        fS t          ||¦  «        }t          | d|¬¦  «        \  }}t          |||dz
  ¦  «        }t          |||dz
  ¦  «        }	|r t          ||¦  «        }t          |	|¦  «        }	||	fS )Nr   Tr	  r3   )r4   r@  r÷  Úkthvalue_fallbackrã   râ   rð  rc  r|   r‹   rü  r   rý  rÕ  r‰  )
r¶  r  rå   r1  rŠ  rè  r	  r	  r(  rR  s
             rp   Úkthvaluer0	  ü  sñ   € åŒ=Ô+ð 8Ý   q¨#¨wÑ7Ô7Ð7Ø�MŠM‰OŒO€EÝˆu‰:Œ:€DØˆq‚y€yÝ�T‰{Œ{�E ! T§_¢_Ñ%6Ô%6½¼ÀUÑKÔKÐKÐKÝ
˜4 Ñ
%Ô
%€CÝ*¨4¸À#ÐFÑFÔFÑ€K�å�K  a¨!¡eÑ,Ô,€FÝ�[ # q¨1¡uÑ-Ô-€GØð *Ý˜6 3Ñ'Ô'ˆÝ˜G SÑ)Ô)ˆØ�7ˆ?Ðrr   c                ó<   — t          | |t          j        |¬¦  «        S )N©rö   rÝ   rž  )r%  r   r¤  )rk   rö   rž  s      rp   Úregister_pointwise_numericr3	    s(   € ÝØ
ØÝ;ÔHØ'ð	ñ ô ð rr   útorch._ops.OpOverloadPacketc                ó`   — t          | j        ¦  «         t          | t          j        ¬¦  «        S r%  )rV   r$  r%  r   r¤  rŽ  s    rp   Ú register_pointwise_numeric_ldf64r6	    s2   € Ý'¨¬Ñ4Ô4Ð4ÝØ
Ý;ÔHðñ ô ð rr   )rœ  )r  c               óœ  ‡‡‡‡‡	‡
— t          | ||t          j        ¬¦  «        Š|                      ¦   «         Š|                     ¦   «         Š|                     ¦   «         Š	|                      ¦   «         }‰j        o|duo|j        dv Š
ˆˆˆˆ	ˆ
ˆfd„}t          j        |                      ¦   «         ‰||  	                    ¦   «         ¬¦  «        S )az  
    Computes self + value * tensor1 * tensor2 using FMA for better precision.

    Matches eager CUDA kernel order: self + value * (tensor1 * tensor2)
    This is computed as: fma(value, tensor1 * tensor2, self)

    Note: FMA is only used for floating-point types on non-AMD GPUs. For integer types,
    we fall back to regular arithmetic since FMA doesn't support integers.

    For floating-point types, we use mul_rn (round-to-nearest multiplication)
    to force rounding of the product before the FMA. This prevents Triton's
    compiler from fusing the multiplication with the FMA, matching eager's
    rounding behavior.
    r{  N©r§  Úxpuc                óæ  •—  ‰| ¦  «        } ‰| ¦  «        } ‰	| ¦  «        }‰dk    r‰
rt          j        |||¦  «        S ‰
rt          j        ||¦  «        }nt          j        ||¦  «        }t	          ‰t
          j        ¦  «        rt          j        ‰‰¦  «        }nt          j        ‰‰¦  «        }‰
rt          j        |||¦  «        S t          j	        |t          j        ||¦  «        ¦  «        S r@  )
rY   r  Úmul_rnr¼  ry   rÔ   rá   r}  r~  r³   )r€  Úself_valÚt1_valÚt2_valÚt1_times_t2rš  rÈ   r  Ú	t1_loaderÚ	t2_loaderÚuse_fmar  s         €€€€€€rp   r‡  zaddcmul.<locals>.inner_fnN  sô   ø€ Ø�;˜sÑ#Ô#ˆØ�˜3‘”ˆØ�˜3‘”ˆà�AŠ:ˆ:˜'ˆ:Ý”7˜6 6¨8Ñ4Ô4Ð4ð ð 	2õ œ* V¨VÑ4Ô4ˆKˆKåœ' &¨&Ñ1Ô1ˆKõ �e�Uœ[Ñ)Ô)ð 	4Ýœ¨¨uÑ5Ô5ˆJˆJåœ e¨UÑ3Ô3ˆJàð 	Gå”7˜: {°HÑ=Ô=Ð=õ ”7˜8¥S¤W¨Z¸Ñ%EÔ%EÑFÔFÐFrr   rˆ  )
rì   r   rr  rŠ  r|   r¹  rþ   rD   r  rã   ©r¶  Útensor1Útensor2r  rƒ   r‡  rÈ   r  r@	  rA	  rB	  s      `  @@@@@rp   ÚaddcmulrF	  +  s  øøøøøø€ õ  ØØØÝ;ÔCð	ñ ô €Eð ×"Ò"Ñ$Ô$€KØ×#Ò#Ñ%Ô%€IØ×#Ò#Ñ%Ô%€Ið �_Š_ÑÔ€FàÔð 	+Ø˜$Ðð	+àŒK˜?Ð*ð ðGð Gð Gð Gð Gð Gð Gð Gð Gð Gõ< ÔØ�ŠÑ Ô ØØØ�}Š}‰Œð	ñ ô ð rr   c               óÀ  ‡‡‡‡‡	‡
— t          | ||t          j        ¬¦  «        Š|                      ¦   «         Š|                     ¦   «         Š|                     ¦   «         Š	|                      ¦   «         }‰j        ot          j        j         o|duo|j	        dv Š
ˆˆˆˆ	ˆ
ˆfd„}t          j        |                      ¦   «         ‰||                      ¦   «         ¬¦  «        S )a¯  
    Computes self + value * (tensor1 / tensor2) using FMA for better precision.

    Matches eager CUDA kernel order: self + value * (tensor1 / tensor2)
    This is computed as: fma(value, tensor1 / tensor2, self)

    For value=1: self + tensor1 / tensor2 (no FMA needed, just add the division)
    For value!=1: fma(value, div_rn(tensor1, tensor2), self)

    Note: FMA is only used for floating-point types on non-AMD GPUs. For integer types,
    we fall back to regular arithmetic since FMA doesn't support integers.

    We use div_rn (round-to-nearest division) to force proper rounding, preventing
    Triton from fusing operations in ways that change the rounding behavior.
    r{  Nr8	  c                óà  •—  ‰| ¦  «        } ‰| ¦  «        } ‰	| ¦  «        }‰
rt          j        ||¦  «        }nt          j        ||¦  «        }‰dk    rt          j        ||¦  «        S t	          ‰t
          j        ¦  «        rt          j        ‰‰¦  «        }nt          j        ‰‰¦  «        }‰
rt          j	        |||¦  «        S t          j        |t          j
        ||¦  «        ¦  «        S r@  )rY   r…  rR  r³   ry   rÔ   rá   r}  r~  r  r¼  )r€  r<	  r=	  r>	  Ú	t1_div_t2rš  rÈ   r  r@	  rA	  rB	  r  s         €€€€€€rp   r‡  zaddcdiv.<locals>.inner_fn™  sì   ø€ Ø�;˜sÑ#Ô#ˆØ�˜3‘”ˆØ�˜3‘”ˆð ð 	4Ýœ
 6¨6Ñ2Ô2ˆIˆIåœ F¨FÑ3Ô3ˆIà�AŠ:ˆ:å”7˜8 YÑ/Ô/Ð/õ �e�Uœ[Ñ)Ô)ð 	4Ýœ¨¨uÑ5Ô5ˆJˆJåœ e¨UÑ3Ô3ˆJàð 	Eå”7˜: y°(Ñ;Ô;Ð;õ ”7˜8¥S¤W¨Z¸Ñ%CÔ%CÑDÔDÐDrr   rˆ  )rì   r   r¤  rŠ  r|   r¹  r‹   rº  r»  rþ   rD   r  rã   rC	  s      `  @@@@@rp   ÚaddcdivrJ	  t  s"  øøøøøø€ õ" ØØØÝ;ÔHð	ñ ô €Eð ×"Ò"Ñ$Ô$€KØ×#Ò#Ñ%Ô%€IØ×#Ò#Ñ%Ô%€Ið �_Š_ÑÔ€FàÔð 	+Ý”Ô!Ð!ð	+à˜$Ðð	+ð ŒK˜?Ð*ð	 ðEð Eð Eð Eð Eð Eð Eð Eð Eð Eõ: ÔØ�ŠÑ Ô ØØØ�}Š}‰Œð	ñ ô ð rr   r  rH  Úlogical_not)r›  )rÝ   r
  r]  Úidentityc                ó:  — |                       ¦   «         t          j        t          j        t          j        t          j        t          j        fv rt          | dt          j        ¬¦  «        S t          d¦  «        } t          |t          j        ¬¦  «        | ¦  «        S )NFrÎ   Úsignbitrï  )
rÓ   r‹   re   rh  Úuint16Úuint32Úuint64rq  rB   rÃ  rr  s     rp   rN	  rN	  ÿ  sz   € à‡{‚{�}„}ÝŒ
ÝŒÝŒÝŒÝŒðð ð õ ˜˜E­¬Ð4Ñ4Ô4Ð4Ý	�YÑ	Ô	€BØ?�>˜"µE´JÐ?Ñ?Ô?ÀÑBÔBÐBrr   )rà  Úpointwise_overrides_datac              #  ó(  ‡K  — t           |         Št          | ‰j        d ¦  «        }|€d S ˆfd„}t          |t          j        j        ¦  «        r.|                     ¦   «         D ]}|‰j         ||¦  «        fV — Œd S |‰j         ||¦  «        fV — d S )Nc                ó4   •— ‰j         €t          | ¦  «        S d S r»   )r@  r  )rk   r{   s    €rp   Úmake_triton_fallbackz6_get_pointwise_overrides.<locals>.make_triton_fallback0   s!   ø€ ØŒ;ÐÝ# BÑ'Ô'Ð'ð Ðrr   )	rR	  r½  rö   ry   r‹   rŒ   r´   r¶   rÝ   )Únsrö   rk   rU	  Úolr{   s        @rp   Ú_get_pointwise_overridesrX	  *   s×   øè è € Ý# DÔ)€DÝ	��T”Y Ñ	%Ô	%€BØ	€zØˆð(ð (ð (ð (ð (õ �"•e”jÔ1Ñ2Ô2ð EØ—/’/Ñ#Ô#ð 	Ið 	IˆBØ�dÔ.Ð0DÐ0DÀRÑ0HÔ0HÐHÐHÐHÐHÐHð	Ið 	Ið �$Ô*Ð,@Ð,@ÀÑ,DÔ,DÐDÐDÐDÐDÐDÐDrr   r2	  c                óz   ‡— | t           |<   t                               | ¦  «         ˆfd„}t          | |¦  «         d S )Nc                 óž   •—  ‰| i |¤Ž}g }t          | d         |¦  «        D ]*\  }}|                     t          ||d¬¦  «        ¦  «         Œ+|S )Nr   Trt  )r,  r}   rË  )r�   r  ÚresultsÚmut_resultsrè   rí  Úoutplace_ops         €rp   r†   z$register_foreach_inplace.<locals>.fn|   sk   ø€ Ø�+˜tÐ. vÐ.Ð.ˆØˆÝ˜t Aœw¨Ñ0Ô0ð 	Jð 	J‰KˆC�Ø×Ò�y¨¨fÀ4ÐHÑHÔHÑIÔIÐIÐIàÐrr   )rc   rÒ  r³   r=  )Úaten_opÚoutplace_aten_opr]	  r†   s     ` rp   Úregister_foreach_inplacer`	  x   sT   ø€ Ø07ÕÐ,Ñ-Ý×Ò˜GÑ$Ô$Ð$ðð ð ð ð õ ˜w¨Ñ+Ô+Ð+Ð+Ð+rr   c                ó@   ‡— t          | d ¬¦  «        ˆfd„¦   «         }|S )Nr{  c                 ó�   •—  ‰| i |¤Ž}t          || d                              ¦   «         ¦  «        }t          | d         |¦  «        S r;  )r  rÓ   rË  )r�   r  rí  r]	  s      €rp   r†   zregister_inplace.<locals>.fn©   sJ   ø€ à�˜dÐ- fÐ-Ð-ˆÝ˜& $ q¤'×"3Ò"3Ñ"5Ô"5Ñ6Ô6ˆÝ˜˜aœ &Ñ)Ô)Ð)rr   )rL  )r^	  r]	  r†   s    ` rp   Úregister_inplacerc	  ¨   s;   ø€ Ý�w°DÐ9Ñ9Ô9ð*ð *ð *ð *ñ :Ô9ð*ð
 €Irr   c                ó   — d S r»   rª   r  s      rp   Úsym_constrain_rangere	  Ò   ó   € àˆ4rr   c                ó¤   — t           j        j        j        d         }t	          |t
          j        ¦  «        r|j        j        S t          |¦  «        S ræ  ©
rZ   rh   ri   r�  ry   r‹   rù  rn   rú  rÌ   ©r  rå   rl  s      rp   r±  r±  ×   ó=   € å
Œ'Ô
Ô
# EÔ
*€CÝ�#•u”|Ñ$Ô$ð ØŒxŒ}Ðå�3‰xŒxˆrr   c                ó¤   — t           j        j        j        d         }t	          |t
          j        ¦  «        r|j        j        S t          |¦  «        S ræ  rh	  ri	  s      rp   Ú
sym_striderl	  à   rj	  rr   c                ó*   — |                       ¦   «         S r»   )r”  ©r  s    rp   Ú	sym_numelro	  é   s   € à�;Š;‰=Œ=Ðrr   c                ó´   — t          | t          ¦  «        r| j        j        S t          | t          t
          t          f¦  «        rt          j        | ¦  «        S | S r»   )	ry   r(   rn   rú  rÌ   rb  re   rÔ   rò  r×   s    rp   Ú_unwrap_symbolic_magic_argrq	  î   sL   € Ý�!•XÑÔð ØŒvŒ{ÐÝ�!•c�5¥$Ð'Ñ(Ô(ð  ÝŒ}˜QÑÔÐØ€Hrr   )Ú_funcc                óŠ  — t           j        j        }|�|j                             d¦  «        nd }t          |t          ¦  «        r|j        j        S t          d„ t          j        ||                     ¦   «         ¦  «        D ¦   «         ¦  «        r. | d„ |D ¦   «         i d„ |                     ¦   «         D ¦   «         ¤ŽS  | |i |¤ŽS )Nrl  c              3  óX   K  — | ]%}t          |t          t          j        f¦  «        V — Œ&d S r»   )ry   r(   rÔ   rá   r¬   s     rp   r  zwrapped.<locals>.<genexpr>þ   sG   è è € ð 
ð 
àõ �q�8¥U¤[Ð1Ñ2Ô2ð
ð 
ð 
ð 
ð 
ð 
rr   c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r»   ©rq	  r¬   s     rp   r  zwrapped.<locals>.<genexpr>!  s+   è è € Ð>Ð>°AÕ,¨QÑ/Ô/Ð>Ð>Ð>Ð>Ð>Ð>rr   c                ó4   — i | ]\  }}|t          |¦  «        “ŒS rª   rv	  r  s      rp   r"  zwrapped.<locals>.<dictcomp>!  s'   € ÐOÐOÐO¹¸¸1�1Õ0°Ñ3Ô3ÐOÐOÐOrr   )rZ   rh   ri   r�  r�  ry   r(   rn   rú  rF  r*  r+  r(  r&  )rr	  r�   r  rn   r   s        rp   r7  r7  ø   sä   € åŒwÔ#ˆØ+/Ð+;�4”9—=’= Ñ'Ô'Ð'ÀˆÝ�h¥Ñ)Ô)ð 	&Ø”=Ô%Ð%Ýð 
ð 
å”_ T¨6¯=ª=©?¬?Ñ;Ô;ð
ñ 
ô 
ñ 
ô 
ð 	ð �5Ø>Ð>¸Ð>Ñ>Ô>ðàOÐOÀÇÂÁÄÐOÑOÔOðð ð ð ˆu�dÐ%˜fÐ%Ð%Ð%rr   c                 ó˜   — t          | ¦  «        dk    r*t          | d         t          t          f¦  «        r| d         } t	          j        | Ž S rl  )râ   ry   rw   r±   rÔ   ÚAddrN  s    rp   Úsym_sumrz	  	!  s?   € õ ˆ4�y„y�A‚~€~�* T¨!¤W­tµU¨mÑ<Ô<€~Ø�AŒwˆÝŒ9�dÐÐrr   c                ó    — t          d¦  «        ‚)NzHelpful for debuggingr¤   )r¶  r�   r  s      rp   Úfoobarr|	  !  s   € å
Ð5Ñ
6Ô
6Ð6rr   c                óH   — |                       ¦   «          t          | ¦  «        S r»   )râ  rð  r×   s    rp   Ú_realizer~	  !  s   € à‡I‚I�K„K€KÝ�‰8Œ8€Orr   c                óX   — |                       ¦   «          t          j        | |¦  «         | S r»   )râ  r6   ÚResizeStorageBytes)Úvariablerš  s     rp   Úresize_storage_bytes_r‚	  !  s,   € à×ÒÑÔÐÝÔ˜( HÑ-Ô-Ð-Ø€Orr   c                ó    — |                       ¦   «          |                      ¦   «          t          j        t          j        | |¦  «        ¦  «        S r»   )râ  rG   r  r6   ÚSetSourceTensorKernel)r¶  Úsource_tensors     rp   Úset__source_tensorr†	  $!  s?   € à‡L‚L�N„N€NØ×ÒÑÔÐÝÔ�BÔ4°T¸=ÑIÔIÑJÔJÐJrr   r  c                óú   — | |u r| S t          ||                      ¦   «         ¦  «        }t          ||                      ¦   «         ¦  «        }t	          ||                      ¦   «         ¦  «        }t          | |¦  «        S r»   r~  )r	  rÌ  s     rp   Ú
fsdp_copy_rˆ	  -!  sg   € à�#ˆ:ˆ:àˆJÝ˜˜SŸ^š^Ñ-Ô-Ñ.Ô.ˆÝ�s˜CŸMšM™OœOÑ,Ô,ˆÝ�S˜#Ÿ,š,™.œ.Ñ)Ô)ˆÝ˜˜cÑ"Ô"Ð"rr   c               ó~  ‡‡‡‡— t          | t          ¦  «        sJ ‚t          |t          t          f¦  «        sJ ‚|€t          j        }|t          j        k    rt          d|› �¦  «        ‚|t          j        k    rt          |¦  «        dk    sJ ‚|t          j
        k    rt          |¦  «        dk    sJ ‚|                      ¦   «         Š|                      ¦   «         }|                      ¦   «         }t	          j        ¦   «         rat          j        j        j        rKt%          |¦  «        rt'          d¦  «        Šn.t)          |¦  «        rt	          j        |¦  «        j        ŠndŠndŠt.          j        j                             ‰d¦  «        rt7          |‰||¬¦  «        S |                      ¦   «         }|d uot;          d	„ |D ¦   «         ¦  «        }|rt=          | ‰g¦  «        }nPt          | j        t@          j!        ¦  «        r| j         "                    ¦   «         | _        tG          | ‰gd
g¦  «        }| $                    ¦   «         Št@          j%         &                    ||¦  «        }tA          j'        ||||¦  «         (                    ¦   «         Šˆˆˆˆfd„}	tS          j*        |||	t          |¦  «        ¬¦  «        }
|
S )Nzunsupported memory format: r¿   rÀ   ÚnanTrû  r   r‘  c              3  ó`   K  — | ])}t           j        j                             |d ¦  «        V — Œ*dS rŒ  )rZ   rh   rü   rÇ  rÝ  s     rp   r  zresize.<locals>.<genexpr>]!  sH   è è € ð 2ð 2Ø;<�ŒÔ×0Ò0°°AÑ6Ô6ð2ð 2ð 2ð 2ð 2ð 2rr   r3   c                óö   •‡—  ‰| ¦  «        Št          j        ‰t          j        ¦  «        }t          j        ‰t          j        ¦  «        }t          j        ||¦  «        }t          j        |ˆˆfd„‰¦  «        S )Nc                 ó   •—  ‰‰ g¦  «        S r»   rª   )Ú
flat_indexÚflat_loaders   €€rp   rp  z*resize.<locals>.inner_fn.<locals>.<lambda>q!  s   ø€ ¨¨°Z°LÑ(AÔ(A€ rr   )rY   r}  r‹   rü  rþ  r   )	r€  Úflat_index_exprÚlimitr  rŽ	  r�	  Ú	old_numelÚout_indexerÚuninitialized_vals	       @€€€€rp   r‡  zresize.<locals>.inner_fnl!  sl   øø€ Ø �[ Ñ%Ô%ˆ
Ýœ.¨µU´[ÑAÔAˆÝ”˜y­%¬+Ñ6Ô6ˆÝŒv�o uÑ-Ô-ˆÝŒz˜$Ð AÐ AÐ AÐ AÐ AÐCTÑUÔUÐUrr   rˆ  )+ry   rG   rw   r±   r‹   Úcontiguous_formatÚpreserve_formatrØ  Úchannels_lastrâ   Úchannels_last_3dr”  rÓ   rv  r…  rä  r„  Úfill_uninitialized_memoryr    rb  r!   r  r  rZ   rh   rü   rÇ  rŒ  r  rF  r  r{   r6   r:   râ  rÐ  rŠ  rD  Ú stride_ordered_for_memory_formatrè  rF  rD   r  )r®   r  r  rÈ   rƒ   r­  Úhas_overlappingÚx_flatÚ
out_strider‡  r~   r�	  r’	  r“	  r”	  s              @@@@rp   Úresizerž	  8!  s×  øøøø€ å�a�Ñ#Ô#Ð#Ð#Ð#Ý�d�T¥5˜MÑ*Ô*Ð*Ð*Ð*àÐÝÔ/ˆØ�Ô-Ò-Ð-ÝÐH¸ÐHÐHÑIÔIÐIà�Ô+Ò+Ð+Ý�4‰yŒy˜AŠ~ˆ~ˆ~ˆ~Ø�Ô.Ò.Ð.Ý�4‰yŒy˜AŠ~ˆ~ˆ~ˆ~à—’‘”€IØ�KŠK‰MŒM€EØ×"Ò"Ñ$Ô$€Fõ 	Ô2Ñ4Ô4ð åŒKÔ%Ô?ð õ ˜%Ñ Ô ð 	%Ý % e¡¤ÐÐÝ˜eÑ$Ô$ð 	%Ý %¤¨EÑ 2Ô 2Ô 6ÐÐà $ÐÐð  Ðå„wÔ×/Ò/°	¸1Ñ=Ô=ð IÝ�DÐ+°5ÀÐHÑHÔHÐHà× Ò Ñ"Ô"€GØ TÐ)ð ­cð 2ð 2Ø@Gð2ñ 2ô 2ñ /ô /€Oð ð 1å�a˜)˜Ñ%Ô%ˆˆõ �a”f�bœkÑ*Ô*ð 	*Ø”V×'Ò'Ñ)Ô)ˆAŒFÝ˜A 	˜{¨Q¨CÑ0Ô0ˆØ×$Ò$Ñ&Ô&€KÝÔ"×CÒCÀDÈ-ÑXÔX€JÝ”. ¨°°jÑAÔA×NÒNÑPÔP€KðVð Vð Vð Vð Vð Vð Vð Võ Ô
Ø˜U¨X½dÀ4¹j¼jðñ ô €Cð €Jrr   )Úauto_functionalizedc                ó¬   — ddl m} |                     |¦  «        }t          j        | ||i |¥|¥¬¦  «         d„ |                     ¦   «         D ¦   «         S )Nr   )Úkernel_side_table)Ú
kernel_idxÚgridÚtma_descriptor_metadataÚkernel_argsc                óD   — i | ]\  }}t          |t          ¦  «        ¯||“ŒS rª   r  )r­   rÚ  rl  s      rp   r"  z'triton_kernel_wrap_.<locals>.<dictcomp>‘!  s-   € ÐRÐRÐR™˜˜cµzÀ#ÅyÑ7QÔ7QÐRˆC�ÐRÐRÐRrr   )Ú*torch._higher_order_ops.triton_kernel_wrapr¡	  Úget_constant_argsr6   ÚUserDefinedTritonKernelr&  )r¢	  Úconstant_args_idxr£	  r¤	  r  r¡	  Úconstant_argss          rp   Útriton_kernel_wrap_r¬	  !  sz   € ð MÐLÐLÐLÐLÐLà%×7Ò7Ð8IÑJÔJ€MÝÔØØØ 7Ø/�vÐ/ Ð/ð	ñ ô ð ð SÐR V§\¢\¡^¤^ÐRÑRÔRÐRrr   ú-list[ir.TensorBox | ir.ShapeAsConstantBuffer]c                óX  — t          d„ | g|¢D ¦   «         ¦  «        rFd}t          j        j        j                             dd ¦  «        x}r|› d|› �}|t          j        _        t          j         	                    | |||¦  «        }t          t          t          j	        |¦  «        ¦  «        S )Nc              3  ó^   K  — | ](}t          |t          ¦  «        ot          |¦  «        V — Œ)d S r»   r¥  r¬   s     rp   r  zcond.<locals>.<genexpr>š!  s7   è è € Ð
MÐ
M°a�:�a�Ñ Ô Ð1¥Y¨q¡\¤\Ð
MÐ
MÐ
MÐ
MÐ
MÐ
Mrr   z"control flow operator: torch.cond.râ  rã  )rF  rZ   rh   ri   r�  r�  rè  r6   ÚConditionalr  rw   ÚmaprG   )ÚpredÚtrue_fnÚfalse_fnÚoperandsr    râ  rí  s          rp   rŸ   rŸ   ”!  s¨   € õ Ð
MÐ
M¸DÐ;LÀ8Ð;LÐ
MÑ
MÔ
MÑMÔMð 0Ø2ˆÝœ'Ô.Ô3×7Ò7¸ÀtÑLÔLÐLˆ;ð 	9ØÐ8Ð8¨;Ð8Ð8ˆCØ,/�ŒÔ)åŒ^×"Ò" 4¨°(¸HÑEÔE€FÝ••IÔ$ fÑ-Ô-Ñ.Ô.Ð.rr   c                óª  — t           j        sbt          d„ ||z   D ¦   «         ¦  «        rFd}t          j        j        j                             dd ¦  «        x}r|› d|› �}|t          j        _        t          j
                             | ||||¦  «        }t          |t          ¦  «        sJ ‚t          t          t          j
        j        |¦  «        ¦  «        S )Nc              3  ó^   K  — | ](}t          |t          ¦  «        ot          |¦  «        V — Œ)d S r»   r¥  r¬   s     rp   r  zwhile_loop.<locals>.<genexpr>¨!  sK   è è € ð *ð *àõ 	�1•fÑÔÐ.¥)¨A¡,¤,ð*ð *ð *ð *ð *ð *rr   z(control flow operator: torch.while_loop.râ  rã  )r4   rç  rF  rZ   rh   ri   r�  r�  rè  r6   Ú	WhileLoopr  ry   r   rw   r±	  Ú_maybe_wrap_as_tensor_box)Úcond_fnÚbody_fnÚcarried_inputsÚadditional_inputsÚstack_outputr    râ  rí  s           rp   Ú
while_loopr¿	  ¤!  sã   € õ Ô!ð 0¥cð *ð *àÐ"3Ñ3ð*ñ *ô *ñ 'ô 'ð 0ð 9ˆÝœ'Ô.Ô3×7Ò7¸ÀtÑLÔLÐLˆ;ð 	9ØÐ8Ð8¨;Ð8Ð8ˆCØ,/�ŒÔ)åŒ\× Ò Ø�˜.Ð*;¸\ñô €Fõ �f�hÑ'Ô'Ð'Ð'Ð'Ý••B”LÔ:¸FÑCÔCÑDÔDÐDrr   )r¾	  Úsubgraph_fnúir.SubgraphÚ
identifierc                ó~   — t          j        j        | g|¢R Ž }t          t	          t
          j        |¦  «        ¦  «        S r»   )r6   ÚInvokeSubgraphr  rw   r±	  rG   )rÀ	  rÂ	  rµ	  rí  s       rp   Úinvoke_subgraphrÅ	  ½!  s8   € åÔÔ% kÐ=°HÐ=Ð=Ð=€FÝ••IÔ$ fÑ-Ô-Ñ.Ô.Ð.rr   rö  útorch.fx.GraphModulec                óÚ  — t           }t          | j        j        ¦  «        D �]0\  }}|j        dk    r0|t
          j        j        vsJ ‚||         t
          j        j        |<   ŒA|j        dk    rTt
          j                             |¦  «        \  }}t          j	        j
                             t
          j        |||¦  «        }Œ |t
          j        j        vsJ ‚t
          j        j        }	 |t
          j        _        t
          j                             |¦  «        t
          j        j        |<   |t
          j        _        �Œ# |t
          j        _        w xY w|t           u rt          d¦  «        ‚|S )a  Process nodes from a FX graph by executing them through V.graph.

    This is a common pattern for executing a subgraph's nodes:
    - Placeholder nodes are mapped to the provided args
    - Output nodes return their result
    - Other nodes are executed via V.graph.run_node

    r  rX  zNo output node found in graph)Ú_MISSINGrx   rh   Únodesrk   rZ   ÚenvÚfetch_args_kwargs_from_envr‹   r�  ÚInterpreterrX  ri   Úrun_noderØ  )rö  r�   rX  r€   rn   Úoutput_argsr  Úsaved_current_nodes           rp   Úprocess_subgraph_nodesrÐ	  Æ!  s:  € õ €Få˜\Ô/Ô5Ñ6Ô6ð :ñ :‰ˆˆ4ØŒ7�mÒ#Ð#Ø�qœwœ{Ð*Ð*Ð*Ð*Ø $ Q¤�AŒGŒK˜ÑØØŒW˜Ò Ð Ý"#¤'×"DÒ"DÀTÑ"JÔ"JÑˆK˜Ý”XÔ)×0Ò0µ´¸$ÀÈVÑTÔTˆFˆFà�qœwœ{Ð*Ð*Ð*Ð*å!"¤Ô!5Ðð:Ø'+•”Ô$Ý$%¤G×$4Ò$4°TÑ$:Ô$:•””˜DÑ!à'9•”Ô$Ñ$øÐ'9•”Ô$Ð9Ð9Ð9Ð9à•ÐÐÝÐ:Ñ;Ô;Ð;à€Ms   Ã(AD=Ä=E)Úcontrol_depsc                óp  — t           j        j        j        d         }t	          |t
          ¦  «        sJ ‚g }t          | |d¬¦  «        D ]¼\  }}d„ t          j        |¦  «        D ¦   «         }|D ]=}| 	                    ¦   «          | 
                    |                     ¦   «         ¦  «         Œ>t	          |t          j        j        ¦  «        r:t           j        j                             |g ¦  «        }	|                     |	¦  «         Œ½t           j        j        j        }
d}t%          |¦  «        |z   t%          |
¦  «        k    sJ ‚t%          t           j        j        ¦  «        }t%          |j        j                             d¬¦  «        ¦  «        t%          |¦  «        k    sJ ‚t-          |j        t/          |¦  «        ¦  «        }| sJ ‚t           j        j        |d…         }d	„ |D ¦   «         }|r#|t           j        j        t           j        j        <   |D ]<}|D ]7}|j        }|€J ‚t           j        j        |                              |¦  «         Œ8Œ=d
„ |D ¦   «         }|rÙ|r×t7          d„ |j        j        j        D ¦   «         ¦  «        }|r­|D ]ª}t	          |t:          j        ¦  «        sJ ‚|D ]‰}t          j        |¦  «        D ]r}t	          |t>          ¦  «        sŒ|                      ¦   «         }|€Œ/t;          j!        t;          j"        |¬¦  «        ||¦  «        }|j#         
                    |¦  «         ŒsŒŠŒ«|S )aS  
    Lower control_deps_op by ensuring dependencies are realized and tracking them.

    The control_deps_op HOP makes dependencies explicit in the graph. During lowering:
    1. Realize all additional dependencies to ensure they're computed
    2. Execute the target operation normally
    3. Track the dependencies for the scheduler
    r   T)Ústrictc                ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS rª   )ry   r>   )r­   Údep_leafs     rp   r¯   z,control_deps_op_lowering.<locals>.<listcomp>ÿ!  s8   € ð 
ð 
ð 
àÝ˜(¥FÑ+Ô+ð
Øð
ð 
ð 
rr   r1   r  rŽ  Nc                ó¶   — g | ]V}t          |t          j        ¦  «        r:|j        ®#t          |j        t          j        ¦  «        ¯B|                     ¦   «         ‘ŒWS r»   )ry   r6   r  rö   rá  Ú
NoneLayoutrç  ©r­   rk   s     rp   r¯   z,control_deps_op_lowering.<locals>.<listcomp>&"  s`   € ð ð ð àÝ�b�"œ)Ñ$Ô$ðð ŒGÐÝ�r”y¥"¤-Ñ0Ô0ð  ð 	�Š‰Œð  ÐÐrr   c                óÆ   — g | ]^}t          |t          j        ¦  «        rB|j        ®#t          |j        t          j        ¦  «        ¯Bt          |t          j        ¦  «        °\|‘Œ_S r»   )ry   r6   r  rö   rá  r×	  ÚMutationOutputrØ	  s     rp   r¯   z,control_deps_op_lowering.<locals>.<listcomp>E"  sm   € ð ð ð àÝ�b�"œ)Ñ$Ô$ðð ŒGÐÝ�r”y¥"¤-Ñ0Ô0ð  å˜2�rÔ0Ñ1Ô1ð  ð 	ð  ÐÐrr   c              3  óp   K  — | ]1}|j         d k    o!|j        t          j        j        j        j        u V — Œ2dS )rg   N)rk   rl   r‹   rY   ÚstreamsÚwait_streamr  )r­   r'  s     rp   r  z+control_deps_op_lowering.<locals>.<genexpr>O"  sZ   è è € ð 
ð 
ð ð ŒD�OÒ#ð BØ”�EœIÔ-Ô9ÔAÐAð
ð 
ð 
ð 
ð 
ð 
rr   rr  )$rZ   rh   ri   r�   ry   r±   r,  r‘  r’  râ  r}   rç  r‹   r�  rž  Ú_void_ctrl_dep_op_namesr�  r'  râ   Ú
operationsrö  Ú
find_nodesrÐ	  rw   Úoperation_nameÚadditional_buffer_depsr³   rF  rÉ	  r6   r  r>   r|   rÚ	  r×	  Úmutation_outputs)Úadditional_depsrÀ	  r�   Úoriginal_dep_nodesÚ	dep_namesÚdepÚ	orig_nodeÚdep_ir_nodesÚdep_ir_nodeÚfoundÚoriginal_argsÚ
arg_offsetÚoperation_lenrX  Únew_opsÚ
void_namesrk   Údep_nameÚop_nameÚvoid_opsÚhas_wait_streamÚvoid_oprè   Úarg_leafrƒ   Úmut_outs                             rp   Úcontrol_deps_op_loweringrø	  í!  s¨  € õ œÔ-Ô2°1Ô5ÐÝÐ(­%Ñ0Ô0Ð0Ð0Ð0à€IÝ˜oÐ/AÈ$ÐOÑOÔOð $ð $‰ˆˆYð
ð 
å"Ô.¨sÑ3Ô3ð
ñ 
ô 
ˆð
 (ð 	5ð 	5ˆKØ×ÒÑ!Ô!Ð!Ø×Ò˜[×1Ò1Ñ3Ô3Ñ4Ô4Ð4Ð4Ý�i¥¤¤Ñ/Ô/ð 	$Ý”GÔ3×7Ò7¸	À2ÑFÔFˆEØ×Ò˜UÑ#Ô#Ð#øå”GÔ(Ô-€MØ€JÝˆt‰9Œ9�zÑ!¥S¨Ñ%7Ô%7Ò7Ð7Ð7Ð7å�œÔ*Ñ+Ô+€MÝˆ{Ô'Ô-×8Ò8¸MÐ8ÑJÔJÑKÔKÍsÐSWÉyÌyÒXÐXÐXÐXõ $ KÔ$<½dÀ4¹j¼jÑIÔI€FàÐÐˆ?åŒgÔ    Ô0€Gðð àðñ ô €Jð ð KØ@J�ŒÔ'­¬Ô(<Ñ=ð ð Bð BˆØ!ð 	Bð 	BˆHØÔ'ˆGØÐ&Ð&Ð&ÝŒGÔ*¨7Ô3×7Ò7¸ÑAÔAÐAÐAð	Bðð àðñ ô €Hð ð A�Dð Aåð 
ð 
ð !Ô-Ô3Ô9ð
ñ 
ô 
ñ 
ô 
ˆð
 ð 	AØ#ð Að A�Ý! '­2¬?Ñ;Ô;Ð;Ð;Ð;Øð 
Að 
A�CÝ$*Ô$6°sÑ$;Ô$;ð 	Að 	A˜Ý)¨(µFÑ;Ô;ð %Ø$Ø!)×!4Ò!4Ñ!6Ô!6˜Ø!˜>Ø$Ý"$Ô"3ÝœM°Ð8Ñ8Ô8¸(ÀGñ#ô #˜ð  Ô0×7Ò7¸Ñ@Ô@Ð@Ð@ð	Að
Að €Mrr   )Úschemec               ó„  — d }t           j        j        j                             dd ¦  «        }|€J ‚t          | j        j        j        ¦  «        D �]o\  }}|j        dk    r||         t           j        j	        |<   Œ,|j        dk    �rt           j         
                    |¦  «        \  }}t          j        ||                     ¦   «         ¦  «        D ]‰}	|	                     ¦   «          |j        r6t           j        j                             |	                     ¦   «         ¦  «         t           j        j                             |	                     ¦   «         ¦  «         ŒŠt(          j        j                             t           j        |||¦  «        }�Œ>t           j                             |¦  «        t           j        j	        |<   �Œq|S )NÚquant_optionsr  rX  )rZ   rh   ri   r�  r�  rx   rö  rÉ	  rk   rÊ	  rË	  r*  r+  r(  râ  Úcodegen_low_precisionÚlow_precision_codegen_opsr³   rã  Úinvoke_quant_opsr‹   r�  rÌ	  rX  rÍ	  )
rÀ	  rù	  rµ	  rX  rû	  r€   rn   r�   r  r  s
             rp   Úinvoke_quant_tracerrÿ	  f"  so  € à€FÝ”GÔ(Ô-×1Ò1°/À4ÑHÔH€MØÐ$Ð$Ð$å˜[Ô5Ô;ÔAÑBÔBð 7ñ 7‰ˆˆ4ØŒ7�mÒ#Ð#Ø (¨¤�AŒGŒK˜ÑØàŒW˜Ò Ñ Ýœ7×=Ò=¸dÑCÔC‰LˆD�&å”_ T¨6¯=ª=©?¬?Ñ;Ô;ð Eð E�Ø—	’	‘”�à Ô6ð RÝ”GÔ5×9Ò9¸!×:NÒ:NÑ:PÔ:PÑQÔQÐQå”Ô(×,Ò,¨Q×-AÒ-AÑ-CÔ-CÑDÔDÐDÐDå”XÔ)×0Ò0µ´¸$ÀÀfÑMÔMˆF‰Få !¤× 0Ò 0°Ñ 6Ô 6�AŒGŒK˜ÑÑà€Mrr   r³  r½	  útuple[Any, ...]c                óD  ‡‡‡— ddl mŠm} dt          |¦  «        z  }d„ | j        j        j        D ¦   «         }||d …         }t          |¦  «        t          ‰¦  «        k    rt          d¦  «        ‚g }t          ‰|¦  «        D ]B\  }}	t          |t          t          j        f¦  «        r|	j        r|                     |¦  «         ŒC|rt          d¦  «        ‚ˆfd„t          j        ||¦  «        D ¦   «         }
|
                     ‰¦  «          || |
¦  «        Šˆˆfd„}t%          |d	         d	d ¬
¦  «        }t'          d„ |D ¦   «         ¦  «        |d<   t'          d„ |D ¦   «         ¦  «        |d<   t)          j        j        d|ddœ|¤Ž}|d	         €t          d¦  «        ‚|S )Nr3   )ÚInputDescriptorÚlower_pointwise_subgraphr1   c                ó(   — g | ]}|j         d k    ¯|‘ŒS )r  rŽ  )r­   rn   s     rp   r¯   z$associative_scan.<locals>.<listcomp>ˆ"  s+   € ð ð ð ØÀÄÈ=Ò@XÐ@XˆÐ@XÐ@XÐ@Xrr   z/Unable to generate code for associative_scan opz_Unable to generate code for associative_scan op, because there are unsupported lifted argumentsc                ór   •— g | ]3} ‰|                      ¦   «         |                     ¦   «         ¬ ¦  «        ‘Œ4S )r‘  )rÓ   r|   )r­   r®   r
  s     €rp   r¯   z$associative_scan.<locals>.<listcomp>›"  sH   ø€ ð ð ð àð 	ˆ˜aŸkšk™mœm°A·L²L±N´NÐCÑCÔCðð ð rr   c                ód   •—  ‰g t          j        | ¦  «        ¢t          j        |¦  «        ¢‰¢R Ž S r»   )r‘  r’  )ÚlhsÚrhsr½	  Úlowered_combine_fns     €€rp   Úwrapped_combine_fnz,associative_scan.<locals>.wrapped_combine_fn¢"  sM   ø€ Ø!Ð!ð 
ÝÔ Ñ$Ô$ð
åÔ Ñ$Ô$ð
ð ð
ð 
ð 
ð 	
rr   r   rµ  c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r»   r¨  r¬   s     rp   r  z#associative_scan.<locals>.<genexpr>ª"  s*   è è € Ð7Ð7¨q˜QŸ[š[™]œ]Ð7Ð7Ð7Ð7Ð7Ð7rr   r(  c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r»   rª  r¬   s     rp   r  z#associative_scan.<locals>.<genexpr>«"  s*   è è € Ð<Ð<°A §¢¡¤Ð<Ð<Ð<Ð<Ð<Ð<rr   r)  F)r³  Úcan_fallback_to_atenrª   )rõ  r
  r
  râ   rö  rh   rÉ	  rØ  r,  ry   rÌ   rÔ   rá   rj   r}   r*  r+  r'  r*  r±   r6   r·  r  )r³  Úxsr½	  r
  Únum_scan_inputsÚplaceholdersÚadditional_placeholdersÚunsupported_inputsrè   r  Úsubgraph_inputsr

  r  rí  r
  r	
  s     `           @@rp   Úassociative_scanr
  ƒ"  s6  øøø€ àLÐLÐLÐLÐLÐLÐLÐLà�#˜b™'œ'‘k€Oðð Ø#Ô0Ô6Ô<ðñ ô €Lð +¨?Ð+;Ð+;Ô<ÐÝ
Ð"Ñ#Ô#¥sÐ+<Ñ'=Ô'=Ò=Ð=ÝÐLÑMÔMÐMð ÐÝÐ 1Ð3JÑKÔKð +ð +Ñˆˆ[Ý˜#¥¥U¤[Ð1Ñ2Ô2ð 	+°kÔ6Gð 	+Ø×%Ò% cÑ*Ô*Ð*øØð 
Ýð+ñ
ô 
ð 	
ð
ð ð ð å”  RÑ(Ô(ðñ ô €Oð ×ÒÐ,Ñ-Ô-Ð-Ø1Ð1°*¸oÑNÔNÐð
ð 
ð 
ð 
ð 
ð 
õ ˜b œe¨!°4Ð8Ñ8Ô8€FÝÐ7Ð7°BÐ7Ñ7Ô7Ñ7Ô7€Fˆ8ÑÝÐ<Ð<¸Ð<Ñ<Ô<Ñ<Ô<€Fˆ;ÑÝŒWŒ^ð Ø%Ø"ðð ð ðð €Fð
 ˆa„yÐÝÐLÑMÔMÐMØ€Mrr   c                ó   — d S r»   rª   )Útokenss    rp   Ú_sink_tokensr
  ¶"  rf	  rr   c                 ó   — d S r»   rª   rª   rr   rp   Ú_make_tokenr
  »"  rf	  rr   c                óR  — ddl m}m}  ||¦  «        }|€Î|t          j        j        j        u r¶ddlm}m	} | 
                    ¦   «         }	|	r˜|	j                             t          j        j        j        ¦  «        }
|
rht          |
|¦  «        sJ ‚|
                     |d         ¦  «        }|r9t          |¦  «        dk    s
J d¦   «         ‚t!          t#          |¦  «        ¦  «        }t          t$          j        j        ¦  «        }|t*          v r/t+          |         |i |¤Ž}t-          j        t0          d„ |¦  «         n0d„ }t-          j        |t5          j        j        |g|¢R i |¤Ž¦  «        }t          t$          j        j        |d…         ¦  «        dk    sJ d	|› d
�¦   «         ‚|r®t$          j        j                             |¦  «        }t$          j        j        |d…         D ]\}d„ |_        |rP|                      ¦   «         }t$          j        j!        |          "                    |                      ¦   «         ¦  «         Œ]|t$          j        j        |<   	 d„ }t-          j        |||f¦  «        \  }} ||||¦  «        }nm# tF          $ r`}tI          |¦  «        }tJ           &                    d||¦  «         t          |tN          tP          f¦  «        r| g|¢R cY d}~S | |fcY d}~S d}~ww xY wt          |j)        ¦  «        dk    r| |fS t          |j)        ¦  «        dk    r| |fS | g|¢R S )z
    We lower the operator directly, and then we add StarDep dependencies to all
    the newly created nodes in the graph.
    r   )Ú_get_effectÚ_get_schemaN)ÚInvokeSubgraphCacheÚTracingContextr3   zMultiple effects NYIc                ó*   — |                       ¦   «         S r»   )râ  rn	  s    rp   rp  zwith_effects.<locals>.<lambda>á"  s   € °!·)²)±+´+€ rr   c                ób   — t          | t          j        ¦  «        r|                      ¦   «         n| S r»   rú  r×   s    rp   rü  z"with_effects.<locals>.wrap_tensorsä"  rý  rr   zCNo operation nodes were generated when lowering effectful operator ú.c                 ó   — dS rÒ   rª   rª   rr   rp   rp  zwith_effects.<locals>.<lambda>ô"  s   € ¨d€ rr   c                óL  — t          | t          j        ¦  «        r|                      ¦   «         S t          | t          ¦  «        r`	 | j        }t          |d¦  «        r.t          |j        d¦  «        r|j                             ¦   «         S n# t          t          f$ r Y nw xY w| S | S )Nr{   Úget_example)
ry   r6   ÚTorchBindObjectÚ	get_valuerG   r{   r  r$
  ÚAttributeErrorr¥   )r  rí  s     rp   Úconvert_ir_to_valuez)with_effects.<locals>.convert_ir_to_valueÿ"  s¶   € Ý˜!�RÔ/Ñ0Ô0ð Ø—{’{‘}”}Ð$Ý˜A�yÑ)Ô)ð ðØœf�GÝ˜w¨Ñ/Ô/ð :µGØœ mñ5ô 5ð :ð  'œ|×7Ò7Ñ9Ô9Ð9øøÝ&Õ(;Ð<ð ð ð Ø�Dðøøøð �ØˆHs   ÁAB ÂBÂBz5Failed to get schema for %s: %s. Assuming list output)*Útorch._higher_order_ops.effectsr
  r
  r‹   rY   Úhigher_orderrÅ	  Útorch._guardsr
  r
  Útry_getÚhop_dispatch_set_cacheÚ	get_cachery   Úget_effectsrâ   rs  rÏ  rZ   rh   rß	  r`   r‘  rÎ  rG   rþ  r6   rÿ  r  Úeffectful_opsr�  Úhas_side_effectsrç  Úadditional_star_depsr³   rØ  r¡   r1  r2  r±   rw   Úreturns)Útokenrk   r�   r  r
  r
  Úeffect_typer
  r
  Útracing_ctxÚinvoke_subgraph_cacheÚeffectsrî	  rí  rü  Úprev_effect_bufferÚnew_oprò	  r(
  Úschema_argsÚschema_kwargsÚschemaÚeÚ	error_msgs                           rp   Úwith_effectsr@
  À"  s¾  € ð IÐHÐHÐHÐHÐHÐHÐHð �+˜b‘/”/€KØÐ˜r¥U¤YÔ%;Ô%KÐKÐKØEÐEÐEÐEÐEÐEÐEÐEà$×,Ò,Ñ.Ô.ˆØð 
	6Ø$/Ô$F×$PÒ$PÝ”	Ô&Ô6ñ%ô %Ð!ð %ð 6Ý!Ð"7Ð9LÑMÔMÐMÐMÐMà/×;Ò;¸DÀ¼GÑDÔD�Øð 6Ý˜w™<œ<¨1Ò,Ð,Ð,Ð.DÑ,Ô,Ð,Ý"&¥t¨G¡}¤}Ñ"5Ô"5�Kõ �œÔ*Ñ+Ô+€Mð 
�Y€€Ý˜2” Ð/¨Ð/Ð/ˆåÔ�YÐ(=Ð(=¸vÑFÔFÐFÐFð	Lð 	Lð 	Lõ ”Ø�"Ô+Ô2°2ÐG¸ÐGÐGÐGÀÐGÐGñ
ô 
ˆõ �qŒwÔ! - . .Ô1Ñ2Ô2°QÒ6Ð6Ð6ØSÈbÐSÐSÐSñ 7Ô6Ð6ð ð 
ÝœWÔ2×6Ò6°{ÑCÔCÐÝ”gÔ(¨¨¨Ô8ð 	Yð 	YˆFà&2 lˆFÔ#Ø!ð YØ Ÿ/š/Ñ+Ô+�Ý”Ô,¨WÔ5×9Ò9Ð:L×:UÒ:UÑ:WÔ:WÑXÔXÐXøð õ 	
ŒÔ˜kÑ*ð #ð	ð 	ð 	õ$ &,¤_Ø $¨ ñ&
ô &
Ñ"ˆ�]ð �˜R ¨mÑ<Ô<ˆˆøÝð #ð #ð #Ý˜‘F”Fˆ	Ý�ŠØCÀRÈñ	
ô 	
ð 	
õ �f�u¥d˜mÑ,Ô,ð 	#ØÐ#˜FÐ#Ð#Ð#Ð#Ð#Ð#Ð#Ð#à˜6�?Ð"Ð"Ð"Ð"Ð"Ð"øøøøð#øøøõ ˆ6Œ>ÑÔ˜aÒÐØ�vˆÐÝ	ˆVŒ^Ñ	Ô	 Ò	!Ð	!Ø�vˆÐàÐ˜ÐÐÐs+   É*I> É>
K(ÊAK#ËK(ËK#ËK(Ë#K()Úregister_comm_loweringsÚregister_symm_mem_loweringsc                óÖ  — t          | |ddd¬¦  «        }t          j        j                             t          |d         ¦  «        ¦  «        }t          j        j                             |t          j        ¦  «        rt          j
        d| ddœ|¤Ž\  }}||fS t          | |d¬¦  «        }t          t          j                 t          | |¦  «        ¦  «        }t!          ||d¬¦  «        }||fS )	z
    Lowering inductor_prims.prepare_softmax_online to compute max/sum with
    online softmax reductions when profitable.
    TNr>  rÏ  r1   )rÍ  Ú
num_output)r  rª   )r  rZ   rh   rü   ÚsimplifyrW   Ústatically_known_geqr4   r×  rA   r  rè  r`   r  rÂ  r6  r/  )	r®   rå   r  rS  Ú
max_tensorÚ
sum_tensorr1  rÂ  Úxsums	            rp   Úprepare_softmax_onlinerJ
  .#  sû   € õ #Ø	�˜d¨$Àdðñ ô €Fõ ŒWÔ×&Ò&¥}°VÐ<NÔ5OÑ'PÔ'PÑQÔQ€Få„wÔ×,Ò,Ø•Ô2ñô ð õ "8Ô!>ð "
Ø Qð"
ð "
Ø*0ð"
ð "
Ñˆ
�Jð ˜:Ð%Ð%å˜1˜c¨DÐ1Ñ1Ô1ˆÝ�œÔ!¥# a¨¡,¤,Ñ/Ô/ˆÝ�C˜ tÐ,Ñ,Ô,ˆØ�TˆzÐrr   c                óæ  — t          ¦   «         st          d¦  «        ‚|                      ¦   «         }|t          j        t          j        t          j        fvrt          d|› �¦  «        ‚|t          j        k    rt          | t          j        ¦  «        } t          j
        t          j        ddt          j        dd¬¦  «        } t          |¦  «        | ¦  «        }t          |t          j        ¦  «        S )zü
    Lowering for cvt_e8m0_rceil. Uses PTX cvt.rp.satfinite.ue8m0x2.f32 on NVIDIA SM100+.

    The PTX instruction takes 2 float32 and outputs 2 e8m0 packed in uint16.
    Currently we pass 0.0 as the second input and only use the low byte result.
    zMcvt_e8m0_rceil requires NVIDIA SM100+ (Blackwell) for PTX instruction supportzAcvt_e8m0_rceil requires float32, float16, or bfloat16 input, got z)cvt.rp.satfinite.ue8m0x2.f32 $0, 0.0, $1;z=h,rTr3   )ÚasmÚconstraintsrÈ   Úis_pureÚpack)rO   r¥   rÓ   r‹   r3  ru  rt  ri  r  r8  rK  rY   Úinline_asm_elementwiserO	  rÃ  rh  )rß   rÈ   r†   rí  s       rp   Úcvt_e8m0_rceil_loweringrQ
  H#  så   € õ $Ñ%Ô%ð 
Ý!Ø[ñ
ô 
ð 	
ð �MŠM‰OŒO€EØ•U”]¥E¤Mµ5´>ÐBÐBÐBÝØWÐPUÐWÐWñ
ô 
ð 	
ð
 •”ÒÐÝ�s�EœMÑ*Ô*ˆå	Ô	ÝÔ"Ø7ØÝŒlØØð
ñ 
ô 
€Bð  �^˜BÑÔ Ñ$Ô$€FÝ�F�EœKÑ(Ô(Ð(rr   )rN
  rO
  c           	     óB  ‡ ‡‡‡‡‡‡— t          |Ž }t          d„ |D ¦   «         ¦  «        Šd„ |D ¦   «         Šˆ ˆˆˆˆˆˆfd„}t          j                             |d                              ¦   «         ‰|t          |d                              ¦   «         ¦  «        ¬¦  «        S )Nc              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r»   r¨  r¦  s     rp   r  z/lower_inline_asm_elementwise.<locals>.<genexpr>v#  s*   è è € Ð;Ð;¨S˜Ÿš™œÐ;Ð;Ð;Ð;Ð;Ð;rr   c                ó6   — g | ]}|                      ¦   «         ‘ŒS rª   rª  r¦  s     rp   r¯   z0lower_inline_asm_elementwise.<locals>.<listcomp>w#  s"   € Ð3Ð3Ð3 Sˆs�ŠÑ Ô Ð3Ð3Ð3rr   c           
     óÞ   •‡ — t          ˆ fd„‰D ¦   «         ¦  «        }t          j        |‰‰‰‰‰	‰dœŽ}‰t          j        t          j        fv rt          j        |t          j        ¦  «        }|S )Nc              3  ó.   •K  — | ]} |‰¦  «        V — Œd S r»   rª   )r­   r·  r€  s     €rp   r  zAlower_inline_asm_elementwise.<locals>.inner_fn.<locals>.<genexpr>z#  s+   øè è € Ð7Ð7 V�V�V˜C‘[”[Ð7Ð7Ð7Ð7Ð7Ð7rr   )rL
  rM
  rÈ   rN
  rO
  Úinput_dtypes)r±   rY   rP
  r‹   ru  rt  r  r3  )
r€  Úvalsrí  Úasm_strrM
  rÈ   rW
  rN
  r·  rO
  s
   `  €€€€€€€rp   r‡  z.lower_inline_asm_elementwise.<locals>.inner_fny#  s€   øø€ ÝÐ7Ð7Ð7Ð7¨wÐ7Ñ7Ô7Ñ7Ô7ˆÝÔ+ØØØ#ØØØØ%ð
ð 
ð 
ˆð •U”]¥E¤NÐ3Ð3Ð3Ý”\ &­%¬-Ñ8Ô8ˆFØˆrr   r   rˆ  )r)  r±   r6   rD   r  r|   rw   rã   )	rY
  rM
  rÈ   rN
  rO
  r[  r‡  rW
  r·  s	   `````  @@rp   Úlower_inline_asm_elementwiserZ
  n#  sÐ   øøøøøøø€ õ  Ð'€FåÐ;Ð;°FÐ;Ñ;Ô;Ñ;Ô;€LØ3Ð3¨FÐ3Ñ3Ô3€Gðð ð ð ð ð ð ð ð ð ð õ$ Œ<×ÒØ�aŒy×#Ò#Ñ%Ô%ØØÝ�F˜1”I×&Ò&Ñ(Ô(Ñ)Ô)ð	 ñ ô ð rr   )r   )Úquantized_lowerings)Újagged_loweringsÚmkldnn_loweringsc              #  óŒ  K  — t          | t          j        j        ¦  «        s
J d¦   «         ‚t                               | ¦  «        }	  t          | ¦  «        t          | ¦  «        ¦  «         dV — |r|t          | <   dS t                               | ¦  «         dS # |r|t          | <   w t                               | ¦  «         w xY w)z^
    A context manager to force fallback an op. Used in unit test
    for FallbackKernel.
    z+Only OpOverload to make the clean up easierN)	ry   r‹   rŒ   r�   r`   r�  rL  r  rÑ  )rk   Úold_handlers     rp   Úforce_fallbackr`
  ¨#  sÒ   è è € õ �b�%œ*Ô/Ñ0Ô0ð ð Ø5ñô Ð0õ —-’- Ñ#Ô#€KðØÕ˜"ÑÔÕ.¨rÑ2Ô2Ñ3Ô3Ð3Øˆˆˆàð 	Ø'�I�b‰MˆMˆMå�MŠM˜"ÑÔÐÐÐøð ð 	Ø'�I�b‰MˆMå�MŠM˜"ÑÔÐÐøøøs   Á)B Â)Cr¥  )rs   rt   rd   ru   )r†   r‡   rd   rˆ   )r‘   r’   rd   r“   )rŸ   re   r    r¡   rd   r¢   )r†   r·   r¸   r¹   rd   r¢   )rÈ   rÉ   rd   rÊ   )r®   r	   rd   rÐ   )r®   r	   rd   rÙ   )r�   r	   rÝ   r   rÜ   re   rd   rÊ   )rk   rñ   rò   r¡   rd   re   )r®   rG   rƒ   rø   rd   rG   )r�   r  r  r  r  re   rÝ   r	  r
  re   rd   r  )rî   r3  r4  r‡   rd   r‡   )
r4  r‡   r  re   rÝ   r	  r
  re   r>  r_   )rÝ   r	  rd   rI  r¥  )r[  r\  r]  r^  rÝ   r	  rd   r_  )rn   rŒ  rd   re   )NNNFFN)r†   r‡   r]  r^  r™  rš  r›  rˆ   rœ  re   r�  re   rž  rŸ  rd   r   )Fr…  )rÆ  rÇ  rœ  re   rÈ  r¡   rd   rÉ  )
rØ  rÚ  rÛ  rÌ   rÐ  rÇ  rÔ  re   rd   rÌ  )FT)r®   rG   rÈ   rÊ   ré  re   r°  re   )r®   rG   rÈ   rÊ   )r®   rG   rƒ   rø   )F)r®   rG   r'  rG   r»   )r®   rG   rX  rž  rd   rG   rE  )rÖ  rG   r  rG   r  rG   r  rÌ   r  rÌ   r  rÌ   rÈ   rÊ   rd   rG   )rÖ  rG   r  rG   r  rG   r  rÌ   r  rÌ   r  rÌ   rÈ   rÊ   r1  r^  rd   rG   )rÖ  rG   r  rb  r  rÌ   r  rÌ   r  rÌ   rÈ   rÊ   rd   rG   )rÖ  rG   r  rb  r  rÌ   r  rÌ   r  rÌ   rÈ   rÊ   r1  r^  rd   rG   )rÖ  rG   r  rG   r  rG   r  rÌ   r  rÌ   rÈ   rÊ   rd   rG   )rÖ  rG   r  rG   r  rG   r  rÌ   r  rÌ   rÈ   rÊ   r1  r^  rd   rG   )r[  rO  rå   rÌ   rd   rP  )r   r   r3   )rÍ  rÌ   r³  rÌ   r´  rÌ   r  )T)r„   r  )rn   r  )NTFN)rƒ   rø   )
r  r†  rG  rG   r‡  r¡   rÍ  rÌ   r…  rÊ   )
r•  rÌ   r–  rÌ   r  r†  rG  rG   rÍ  rÌ   )rœ  rG   rd   r�  )rœ  rG   rd   rG   )rœ  rG   rd   r¥  )rœ  rG   rf  rž  r¨  rÊ   rd   r	   )rµ  rG   r¶  rG   r±  re   r²  re   r³  rP  r´  r·  rd   rG   )rÖ  rG   rÆ  rG   r±  re   r²  re   )r3   )rå   rÌ   rf  rÌ   )r   NNr3   )NNN)r¨  FF)rå   rÌ   )r&  r3  rå   rÌ   rW  rP  r  re   )rå   rÌ   rW  rP  )rå   rÌ   r  re   )r1   F)r<  r=  r'  rÌ   r>  re   )r  rN  )rW  rN  rX  rN  )r^  rN  rW  rN  rX  rN  )r®   rG   ri  rj  rb  rb  rd   r·  )r€   rš  r•  r›  )r€   rš  r–  rš  )r€   rš  r–  rš  r•  rš  )Nr;  N)
rÓ  rG   r®  rÙ  rÚ  rÙ  rÛ  rÜ  rd   rG   )Nr   r3   F)rû  )NNNN)rª   r   FTN)r-  r\   rd   r  )r-  r\   rd   r!  rô   )r®   rt  rd   r�  )rR  rÙ  rd   re   )r¨  F)r¨  TT)rk   r4	  )rd   r­	  )rÀ	  rÁ	  rÂ	  r¡   )rö  rÆ	  r�   r  )rÀ	  rÁ	  )r³  rÁ	  r½	  r 
  r¦  (b  Ú
__future__r   r®  r‚  r8  r*  Úloggingr   rµ  r)  rÈ  r  Úcollectionsr   Úcollections.abcr   r   r   r   Útypingr	   r
   r   r   r   Útyping_extensionsr   Úunittest.mockr   rÔ   r‹   Ú$torch.ao.quantization.fx._decomposedÚtorch.fxÚtorch.utils._pytreerä  Ú_pytreer‘  Útorch._dynamo.utilsr   Ú*torch._functorch._aot_autograd.descriptorsr   r   Ú(torch._higher_order_ops.associative_scanr   r§	  r   Ú"torch._library.fake_class_registryr   Útorch._library.opaque_objectr   Útorch._library.utilsr   Útorch._prims_commonr   r   r   r   r   r   r   r   r    r!   r"   Útorch.fx.experimental.sym_noder#   r$   r§  r%   r&   r'   r(   Útorch.utils._ordered_setr)   Útorch.utils._sympy.functionsr*   r+   r,   r-   r.   r/   r0   Ú_dynamo.utilsr2   Ú r4   r5   r6   r7   Údecompositionr8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   rR   rS   rT   rU   rV   rW   rX   rš  rY   rZ   r[   r•  r\   r]   r^   ÚFALLBACK_ALLOW_LISTÚ	getLoggerr$  r1  r`   Ú__annotations__ra   rb   rŒ   r�   rC  r  Útr_c10dr  r²   Ú_higher_order_opsrþ  rm   rÒ  rc   Úquantized_decomposedr“  rq   r…   r�   rŽ   r§   r«   r½   rÐ  rô  rU  rÎ  ÚbmmÚconvolutionÚconvolution_backwardrð  rô  r  rm  r[  r]  Ú_int_mmrh  rg  rø  rE  rü  ru  r3  ro  Ú	complex32Ú	complex64re   rt  rÍ   rÏ   rØ   rÛ   rì   rð   r÷   r  r2  r=  rH  rr  rL  rZ  ry  r‹  r˜  rÃ  rÄ  rÙ  rÓ  r  r  r
  r  r  rÈ   r  r   Ú
device_putr"  r%  r¤  r&  r7  rF  rJ  rM  r)  ÚaliasÚdetachÚdetach_ÚliftÚview_ofrZ  r  r[  rg  ri  rm  ro  ru  rw  rz  r}  r  r  rU  r�  r�  r�  Ú_unsafe_viewÚreshaper¡  r¶  ÚslicerÉ  rÙ  rò  r
  Úquantize_per_channelr$  r+  r    r.  Ú_functional_assert_asyncr1  Údequantize_per_channelr8  Úquantize_per_tensorr=  Údequantize_per_tensorr@  rm  rK  rN  rd  rŒ  rÇ  rÉ  rÍ  rÕ  rÜ  rÞ  rá  rì  r‰  rð  rÄ  rö  r  Úcacher  r  r  r!  r7  r:  ÚrngprimsrJ  rL  rQ  Ú	bernoullirM  rU  rX  Ú	lru_cacher\  r_  r=  re  rb  rd  rj  ri  rh  ÚrandintÚ	rand_likeÚ
randn_likeÚrandint_likeÚrrelu_with_noise_functionalrÜ	  Úrecord_eventÚ
wait_eventÚsynchronize_eventÚsynchronize_deviceÚforce_stride_orderrp  rG  rs  rz  rv  Úlookup_seedr{  r„  Úrandomr”  Úrand_eager_offsetÚrand_eager_offsetsr›  r   r¤  r§  r¯  rÃ  rR  r¾  Ú	NO_OPMATHrÌ  rÑ  rÓ  rš   r§  rÙ  r˜   rœ   rõ  r  Ú_adaptive_avg_pool3dÚadaptive_max_pool3dÚ*_scaled_dot_product_attention_math_for_mpsÚuniformÚexponentialÚ_pdist_forwardÚsoft_margin_loss_backwardÚ_fused_rms_normr9	  Ú_is_compiledÚembedding_dense_backwardrY  Únative_layer_normÚ_cdist_forwardÚ_cdist_backwardÚ
_trilinearÚsegment_reduceÚ_segment_reduce_backwardÚhistcÚ	histogramÚbin_ctÚ_histogramdd_bin_edgesÚ_histogramdd_from_bin_ctsÚaddbmmÚ_addmm_activationÚ_grouped_mmÚ
_cudnn_rnnÚ_cudnn_rnn_backwardÚ
miopen_rnnÚmiopen_rnn_backwardÚ_embedding_bagÚ_embedding_bag_forward_onlyÚ_embedding_bag_backwardÚ*_embedding_bag_per_sample_weights_backwardÚ_fused_moving_avg_obs_fq_helperÚ*_fused_moving_avg_obs_fq_helper_functionalÚ max_pool3d_with_indices_backwardÚ_adaptive_avg_pool2d_backwardÚ_adaptive_avg_pool3d_backwardÚadaptive_max_pool2d_backwardÚadaptive_max_pool3d_backwardÚfractional_max_pool2d_backwardÚfractional_max_pool3d_backwardÚreplication_pad1d_backwardÚreplication_pad2d_backwardÚupsample_linear1d_backwardÚupsample_bicubic2d_backwardÚupsample_trilinear3d_backwardÚgrid_sampler_2d_backwardÚ_pdist_backwardÚ	nanmedianÚmultinomialrò  Úresize_Ú
resize_as_Ú_linalg_detÚlinalg_householder_productÚlinalg_inv_exÚlinalg_ldl_factor_exÚlinalg_ldl_solveÚ	linalg_luÚlinalg_lu_factor_exÚlinalg_lu_solveÚlinalg_matrix_expÚ	linalg_qrÚ_linalg_slogdetÚ_linalg_solve_exÚlinalg_solve_triangularÚ_linalg_svdÚ	lu_unpackÚormqrÚ_linalg_check_errorsÚlinalg_pinvÚatol_rtol_tensorÚ_linalg_eighÚtriangular_solveÚlinalg_cholesky_exÚcholesky_inverseÚcholesky_solveÚgeqrfÚ_fft_r2cÚnonzeroÚbincountÚ_unique2Ú
unique_dimÚunique_consecutiveÚunique_dim_consecutiveÚgcdÚ_thnn_fused_lstm_cellÚ_primsÚ	rng_primsÚrun_and_save_rng_stateÚrun_with_rng_stateÚgraphsafe_run_with_rng_stateÚrun_dtensor_rng_opÚ_amp_update_scale_Ú_amp_update_scaleÚmasked_scatterÚmasked_scatter_backwardr  ÚangleÚ_efficientzerotensorÚ(_sparse_coo_tensor_with_dims_and_tensorsÚ	to_sparseÚ
_to_sparser  rû  Ú#_scaled_dot_product_flash_attentionÚ	quantizedÚ,_scaled_dot_product_flash_attention_backwardÚ#_scaled_dot_product_cudnn_attentionÚ,_scaled_dot_product_cudnn_attention_backwardÚ+_scaled_dot_product_flash_attention_for_cpuÚ4_scaled_dot_product_flash_attention_for_cpu_backwardÚ0_scaled_dot_product_fused_attention_overrideableÚ9_scaled_dot_product_fused_attention_overrideable_backwardÚ_flash_attention_forwardÚ_flash_attention_backwardÚ_efficient_attention_forwardÚ_efficient_attention_backwardÚindex_reduceÚrepeat_interleaveÚ_weight_norm_interface_backwardré  rð  r  r$  r  r,  ÚarangeÚ
start_stepr/  r4  r<  r>  Úscalar_tensorrO  Ú
LongTensorrQ  rW  rY  r[  rc  rq  rg  r™  rf  rQ  r  rW  Ú
zeros_likerz  r~  rp  r†  rŠ  rŒ  r–  rŸ  r®  rÁ  rÄ  rÃ  rf  rÓ  rÛ  rÝ  rß  rê  rå  rï  rØ  r  Úfallback__unsafe_masked_indexr  Ú,fallback__unsafe_masked_index_put_accumulaterÁ  r  r  r   r  r*  r(  r.  r%  rM  rS  rV  ra  rc  r  rh  r}  r‰  r�  r�  r�  rŸ  r§  r²  r¸  r¾  rÔ  rØ  rå  ré  rë  r  r,  r4  rB  rH  r\  rV  rl  rj  r|  r‚  r…  r  r—  rŸ  Ú
avg_pool1dr­  rš  rÉ  rü  r÷  rþ  r  r   r&  r*  r0  r<  rH  rV  r[  r
  r`  rb  rd  rg  r-  ÚTensor_Tensorrp  ÚScalarrn  ÚTensor_Scalarro  rË  ru  r  r€  rƒ  r†  r0  r‹  r¼  r’  r°  Útrue_divider©  r«  r/  rº  r¸  r¾  r½  rÇ  rÆ  rÒ  rÐ  r×  rÖ  r$  rÞ  rF  râ  r  ré  r  rð  rñ  r1  rè  r2  rï  rÐ  rç  r  rî  ræ  rí  rå  rì  r³   rÿ  rô  rù  rý  r-	  r+	  r0	  r/	  Úmedianr	  rå   r	  r‡  r	  r	  r		  r)	  r3	  r6	  ÚrsqrtrÂ  rm  Úexpm1Úrelurô  rl  r6  r6  rF	  rJ	  Ú_foreach_addcmulÚ_foreach_addcmul_scalarÚ_foreach_addcdivÚ_foreach_addcdiv_scalarÚcosÚsinÚabsÚbitwise_andÚbitwise_left_shiftÚbitwise_notÚ
bitwise_orÚbitwise_right_shiftÚbitwise_xorÚlgammaÚerfÚspecial_erfrÁ  ÚtanÚtanhr�  rK	  rò  Úlogical_xorr  r  Ú	clamp_minÚ	clamp_maxÚnegr  Ú	remainderÚsignrN	  Ú	_neg_viewÚlerþ  rý  rE  r2  r	  ÚcoshÚsinhÚacosÚacoshÚasinÚasinhÚatan2ÚatanÚatanhr¡  ÚerfcÚerfinvÚhypotÚlog10Úlog2Ú	nextafterÚcodegen.commonrà  rR	  rX	  rö   rk   rÝ   rž  Ú_foreach_addÚListÚforeach_add_listÚforeach_add_scalarÚ_foreach_mulÚforeach_mul_listÚforeach_mul_scalarÚ_foreach_subÚ_foreach_negÚ_foreach_absÚ_foreach_powÚScalarAndTensorÚ_foreach_divÚforeach_div_listÚforeach_div_scalarÚ_foreach_sqrtÚ_foreach_rsqrtÚ_foreach_maximumÚ_foreach_minimumÚ_foreach_clamp_minÚ_foreach_clamp_maxÚ_foreach_reciprocalÚ_foreach_signÚ_foreach_cloneÚ_foreach_copyÚforeach_copyr`	  Ú_foreach_add_Ú_foreach_mul_Ú_foreach_div_Ú_foreach_copy_Ú_foreach_addcmul_Ú_foreach_addcdiv_rc	  Úadd_Úbitwise_and_Úbitwise_left_shift_Úbitwise_not_Úbitwise_or_Úbitwise_right_shift_Úbitwise_xor_Úmul_Údiv_ÚTensor_modeÚlogical_and_Úlogical_not_Úlogical_or_Úlogical_xor_Úsub_Úrelu_Úsigmoid_Ú__and__Ú
__lshift__Ú__or__Ú
__rshift__Ú__xor__Ú__iand__Ú__ilshift__Ú__ior__Ú__irshift__Ú__ixor__re	  r±  rÌ   rl	  ro	  rq	  r&  ÚmethodÚfuncr7  rz	  r|	  Ú_inductor_testrâ  r~	  rp  r‚	  Úset_Úsource_Tensorr†	  Úfsdprˆ	  rž	  Ú*torch._higher_order_ops.auto_functionalizerŸ	  r¬	  r*
  rŸ   r¿	  Úwhile_loop_stack_outputrK  rÅ	  r˜  rÈ	  rÐ	  Ú.torch._inductor.fx_passes.control_dependenciesrÑ	  rø	  Úinvoke_quantrÿ	  r
  r
  r
  r@
  Úcomm_loweringrA
  rB
  rJ
  Úcvt_e8m0_rceilrQ
  rP
  rZ
  r   r[
  Úregister_quantized_opsÚregister_woq_mm_opsr\
  r]
  Úregister_jagged_opsÚcontextmanagerr`
  rª   rr   rp   ú<module>r      s>X  ðØ "Ð "Ð "Ð "Ð "Ð "Ð "à Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø €€€Ø 	€	€	€	Ø 
€
€
€
Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AÐ AØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'Ø Ð Ð Ð Ð Ð à €€€à €€€Ø +Ð +Ð +Ð +Ø €€€Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø (Ð (Ð (Ð (Ð (Ð (ðð ð ð ð ð ð ð ð IÐ HÐ HÐ HÐ HÐ HØ UÐ UÐ UÐ UÐ UÐ UØ ?Ð ?Ð ?Ð ?Ð ?Ð ?Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø :Ð :Ð :Ð :Ð :Ð :ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð MÐ LÐ LÐ LÐ LÐ LÐ LÐ Lðð ð ð ð ð ð ð ð ð ð ð ð 0Ð /Ð /Ð /Ð /Ð /ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð -Ð ,Ð ,Ð ,Ð ,Ð ,Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø =Ð =Ð =Ð =Ð =Ð =Ð =Ð =ðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð$ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð"  Ð Ð Ð Ð Ð Ð Ð ð ð +Ø Ð Ð Ð Ð Ð Ø*Ð*Ð*Ð*Ð*Ð*ð €WˆT�]„]€Ø€Yˆt�_„_€ð !�jà Øðñô Ð ð €gÔ˜Ñ!Ô!€Ø@B€	Ð BÐ BÐ BÑ BàBD€Ð DÐ DÐ DÑ DàTVÐ Ð VÐ VÐ VÑ VØ-ˆJ�u”zÔ,Ô-Ñ/Ô/€	Ø„y„~€Ø
Œ)Ô
€ØŒ	Œ€Ø9˜
 5¤:Ô#8Ô9Ñ;Ô;Ð Ø/ˆj˜œÔ.Ô/Ø
ÔÔ)Ð*ñô €ð
 8�j ¤Ô!6Ô7Ñ9Ô9Ð ØNPÐ Ð PÐ PÐ PÑ PØ”yÔ5Ð àØ'ð*Ð &ñð ð ð ñð ð ð ñ0ð ð ð ñBð Bð Bð BñFð Fð Fð Fð
8ð 8ð 8ñ3ð 3ð 3ð 3ð Ð àŒØÔØŒØÔ ØŒØÔØÔ!ØÔ$ØÔ$ØÔ-ØŒØÔØÔ&ØŒðñô ð ð, „{Ø„zØ„{Ø„{Ø„{Ø„}Ø„}Ø„}Ø„Ø„ØŒØŒ
ØŒðð €ñ.ð ð ð ñ"ð "ð "ð "ñ#ð #ð #ð #ð "'ðCð Cñ Cð Cð Cð Cð(ð ð ñð ð ð ñð ð ð ñ(Oð Oð Oð Oñdð ð ð ñ42ð 2ð 2ð 2ðn à,Ô4ØØðñ ð ð ð ð*#ð #ð #ð8 15ØBFñCñ Cð Cð Cð CðLð ð ñ6ð ð ð ðB 15Ø+/Ø=AØØ#Ø04ñrñ rð rð rð rðj �Ð)°Ð8Ñ8Ô8€ð
 Øñ9ñ 9ð 9ð 9ð 9ñx#/ð #/ð #/ð #/ðN UYñEñ Eð Eð Eð Eð2 Ð�5Ô*Ô7ÈTÐRÑRÔRð)ð )ñ SÔRð)ðX Ð�5Ô-À4ÐHÑHÔHñNð Nð Nñ IÔHðNð* @Eð 5ð 5ñ 5ð 5ð 5ð 5ð0 Ð�4”9”?¸Ð=Ñ=Ô=ñ&ð &ð &ñ >Ô=ð&ð ;@Èeð Kð Kñ Kð Kð Kð Kð Ð�5Ô#¸Ð>Ñ>Ô>ñFñ Fð Fð Fñ ?Ô>ðFð 
ØØ7Ô?ØØØ $ØØØð,ð ,ð ,ð ,ð^ $Ð #ØØ7ÔDØðñ ô ð ð Ð�4”:¨À4ÐHÑHÔHñð ð ñ IÔHðð>ð ð ð> €Ñ Ô Ð ð Øñ	
ð 
ð 
ð 
ð Ð�4”:¨ÀDÐIÑIÔIðð ñ JÔIðð0 Ð�4Ô)°UÐPTÐUÑUÔUðð ñ VÔUðð. Ð�D”J ¤¨T¬\¸4¼9ÀeÄmÐTÑUÔUðð ñ VÔUðð €7ˆ4�ÑÔð ,Ø&ÐÐ�d”oÑ&Ô& sÑ+Ô+Ð+ð Ð�4”<°TÐ:Ñ:Ô:ñBð Bð Bñ ;Ô:ðBð, Ð�4Ô$¸$Ð?Ñ?Ô?ñ"ð "ð "ñ @Ô?ð"ð Ð�D”M�?Ñ#Ô#ñð ð ñ $Ô#ðð Ð�4”:ÑÔðCð Cñ ÔðCð Ð�4”:ÑÔðCð Cñ ÔðCð Ð�4”9ÑÔð!ð !ñ Ôð!ð Ð�4”:ÑÔð!ð !ñ Ôð!ð Ð�4”:Ô%Ñ&Ô&ð%ð %ñ 'Ô&ð%ð Ð�4”:ÑÔð!ð !ñ Ôð!ð Ð�4”;°DÐ9Ñ9Ô9ð>ð >ñ :Ô9ð>ð> Ð�5Ô)¸tÐDÑDÔDð
ð 
ñ EÔDð
ð Ð�4”>°tÐ<Ñ<Ô<ð#ð #ñ =Ô<ð#ð Ð�4”;ÑÔð4ð 4ñ  Ôð4ðn Ð�4Ô$¸$Ð?Ñ?Ô?ØÐ�4”9°$Ð7Ñ7Ô7ØÐ�4”<°TÐ:Ñ:Ô:ñ1ð 1ð 1ñ ;Ô:ñ 8Ô7ñ @Ô?ð1ð Ð�4”<°TÐ:Ñ:Ô:ð>ð >ñ ;Ô:ð>ð&!ð &!ð &!ðR Ð�4”:°4Ð8Ñ8Ô8Ø˜1 #¤+°A¸Tð ~ð ~ð ~ñ 9Ô8ð~ðB Ð�4”?¸Ð=Ñ=Ô=ð
 ñ	0Jð .2ð0Jð 0Jð 0Jð 0Jñ >Ô=ð0Jðf Ð�4Ô#¸Ð>Ñ>Ô>ñð ð ñ ?Ô>ðð Ð�4Ô'¸TÐBÑBÔBñð ð ñ CÔBðñ
Bð Bð Bð BðJ ÐÐ'Õ<ÐRVÐWÑWÔWñ/ð /ð /ñ XÔWñ/ðdð ñ ð$ Ð�4Õ%Õ)Ñ*Ô*ð$ð $ñ +Ô*ñ$ð Ð�4Õ0Õ4Ñ5Ô5ð$ð $ñ 6Ô5ñ$ð ÐØÕ/ÀTðñ ô ð %)ð/ð /ñ /ð /ð /ñô ñ/ðd ÐØÕ,Ô4È$ðñ ô ñ!ð !ð !ñô ñ!ðH ÐØÕ.Ô6ÈDðñ ô ð %)ð!ð !ñ !ð !ð !ñô ñ!ðH ÐØÕ,Õ3Èðñ ô ñ/ð /ð /ñô ñ/ðd ÐØÕ.Õ5È4ðñ ô ð %)ð,ð ,ñ ,ð ,ð ,ñô ñ,ñ^Lð Lð Lñ Lð^ Ð�4•8ÑÔñv:ð v:ð v:ñ Ôñv:ðr Ð�4•=°dÐ;Ñ;Ô;ñ5Eñ 5Eð 5Eð 5Eñ <Ô;ñ5Eðp Ð�4Õ%¸4Ð@Ñ@Ô@ñ6ñ 6ð 6ð 6ñ AÔ@ñ6ð Ð�4Õ(¸dÐCÑCÔCññ ð ð ñ DÔCñð Ð�4•;°DÐ9Ñ9Ô9ðIð Iñ :Ô9ñIðX Ð�4•:°4Ð8Ñ8Ô8ñ&ð &ð &ñ 9Ô8ñ&ðR Ð�4Õ(¸dÐCÑCÔCñ ð  ð  ñ DÔCñ ð Ð�4•;°DÐ9Ñ9Ô9ñð ð ñ :Ô9ñð Ð�4•;°DÐ9Ñ9Ô9ðDð Dñ :Ô9ñDð8 Ð�4•>°tÐ<Ñ<Ô<ðð ñ =Ô<ñð Ð�4•?¸Ð=Ñ=Ô=ðð ñ >Ô=ññð ð ñ ð Ð�4•8ÑÔñð ð ñ Ôññð ð ñ ð$ …ðð ñ „ññ#ñ #ð #ð #ñ #ñL
3ñ 
3ð 
3ð 
3ñ 
3ñ%6ñ %6ð %6ð %6ñ %6ðT Ø	ØØñ5Nð 5Nð 5Nñ 5Nðp	,ð 	,ñ 	,ð Ð�5”9Õ%Õ1ÀtÐLÑLÔLð#+ð #+ñ MÔLñ#+ðL Ð�4Õ&¸DÐAÑAÔAðGð Gñ BÔAñGð Ð�4•?¸Ð=Ñ=Ô=ðð ñ >Ô=ñð Ð�4•>Õ#¸Ð>Ñ>Ô>ð'ð 'ñ ?Ô>ñ'ð Ð�4•<Ñ Ô ðð ñ !Ô ñð €Õ�QÑÔðBð Bñ ÔñBð/ð /ñ /ð
 )Ñ(¨­Ô):Ñ;Ô;Ñ Ø*Ñ*¨4­9Õ+>Ñ?Ô?Ñ Ø)Ñ)¨$­*Ô*<Ñ=Ô=Ñ Ø+Ñ+¨D­JÕ,@ÑAÔAÑ Ø �ˆd�lÑ Ô Ð Ø �ˆd�n¨dÐ 3Ñ 3Ô 3Ð 3Ø �ˆd�o¨tÐ 4Ñ 4Ô 4Ð 4Ø �ˆdÕ°Ð 6Ñ 6Ô 6Ð 6Ø �ˆdÕ.Ñ /Ô /Ð /ð �ˆeŒiÕÕ,Ô4Ñ 5Ô 5Ð 5Ø �ˆeŒiÕÕ*Ô2Ñ 3Ô 3Ð 3Ø �ˆeŒiÕÕ1Ô9Ñ :Ô :Ð :Ø �ˆeŒiÕÕ2Ô:Ñ ;Ô ;Ð ;ð Ð�4•9ÑÔðJð Jñ ÔñJð Ð�4•:ÑÔðJð Jñ ÔñJð Ð�>Õ4È$ÐOÑOÔOñLð Lñ PÔOñLð
 Ð�>Õ&¸DÐAÑAÔAñKñ Kð Kñ BÔAñKð Ð�>Õ'¸TÐBÑBÔBñJð Jñ CÔBñJð
 Ð�>Õ-À4ÐHÑHÔHñ	ð 	ñ IÔHñ	ññ ð ñ ð( Ð�>Õ(¸dÐCÑCÔCð Ø$œ}ñ5ð 5ñ 5ñ 5ð 5ñ DÔCñ5ðp �ˆnÕ.Ñ /Ô /Ð /Ø �ˆnÕ/Ñ 0Ô 0Ð 0ð Ð�>Õ)¸tÐDÑDÔDàLMñð ñ ñ ð ñ EÔDññ8ñ ð ñ ñ8ñ 8ð 8ñ 8ñ.ñ .ð .ñ .ñ	8ñ 	8ð 	8ñ 	8ð Ð�4Õ$Õ+ÀÐFÑFÔFð
 ØØØ#ñZð Zñ Zñ Zð Zñ GÔFñZðz ÐØ…NÕÐ/NÕ/Xðñ ô ð Øñ5ð 5ñ 5ñ 5ð 5ñô ñ5ñpð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñð ñ ñ ð ñ ñð ñ ñD=ð =ñ =ð Ð ØÕÔÑ!Kñô ð ñ
dð dñ dðP �ˆdÕ'Ñ (Ô (Ð (Ø �ˆdÕ&¸Ð =Ñ =Ô =Ð =Ø �ˆdÕ=Ñ >Ô >Ð >ð �ˆd�l Ñ 'Ñ 'Ô 'Ð 'Ø �ˆdÕÔ&¨UÑ 3Ñ 3Ô 3Ð 3Ø �ˆdÕ!Ñ#5Ñ 6Ô 6Ð 6Ø �ˆdÕ,°5Ñ 9Ñ 9Ô 9Ð 9Ø �ˆdÕ"¨Ñ /Ñ /Ô /Ð /Ø…9×ÓÑÔð Ø�MØÕ%¨Eññ ô ð ð 	…:×ÓÑÔð Ø�MØÕ Uññ ô ð ð
 �ˆdÕ!Ñ "Ô "Ð "Ø �ˆdÕ"Ñ #Ô #Ð #ð �ˆd�oÑ Ô Ð ð �ˆdÕ!Ô)Ñ *Ô *Ð *Ø �ˆdÕ+Ô3Ñ 4Ô 4Ð 4ð �ˆd�jÑ Ô Ð Ø �ˆd�nÕ#Ñ $Ô $Ð $Ø �ˆdÕ)Ô1Ñ 2Ô 2Ð 2Ø �ˆdÕ,Ô4Ñ 5Ô 5Ð 5ð �ˆd�kÑ Ô Ð Ø �ˆdÕ$¨5Ñ 1Ñ 1Ô 1Ð 1à �ˆdÕ¡Ñ .Ô .Ð .ð �ˆd�o™}Ñ -Ô -Ð -Ø �ˆdÕ&Ñ(:Ñ ;Ô ;Ð ;Ø �ˆd�o™}Ñ -Ô -Ð -Ø �ˆdÕ&Ñ(:Ñ ;Ô ;Ð ;ð �ˆdÕ!Ñ#5Ñ 6Ô 6Ð 6Ø �ˆdÕ.Ñ0BÑ CÔ CÐ CØ �ˆdÕ*Ñ +Ô +Ð +Ø �ˆdÕ=Ñ >Ô >Ð >Ø �ˆdÕ=Ñ >Ô >Ð >Ø �ˆdÕ2Ñ 3Ô 3Ð 3Ø �ˆdÕ=Ñ >Ô >Ð >ð �ˆdÕ3Ñ 4Ô 4Ð 4Ø �ˆdÕ0±-Ñ @Ô @Ð @Ø �ˆdÕ0Ñ 1Ô 1Ð 1Ø �ˆdÕ/Ñ 0Ô 0Ð 0Ø �ˆdÕ/Ñ 0Ô 0Ð 0Ø �ˆdÕ1Ñ 2Ô 2Ð 2Ø �ˆdÕ1Ñ 2Ô 2Ð 2Ø �ˆdÕ-Ñ .Ô .Ð .Ø �ˆdÕ-Ñ .Ô .Ð .Ø �ˆdÕ-Ñ .Ô .Ð .Ø �ˆdÕ.Ñ0BÑ CÔ CÐ CØ �ˆdÕ0Ñ 1Ô 1Ð 1Ø �ˆdÕ+Ñ ,Ô ,Ð ,Ø �ˆdÕ"Ñ$6Ñ 7Ô 7Ð 7ð �ˆd�nÑ Ô Ð Ø �ˆdÕÔ&¨UÑ 3Ñ 3Ô 3Ð 3Ø �ˆd�mÑ Ô Ð à �ˆd�lÑ Ô Ð Ø �ˆd�oÑ Ô Ð ð �ˆdÕÑ Ô Ð Ø �ˆdÕ-Ñ .Ô .Ð .Ø �ˆdÕ Ñ !Ô !Ð !Ø �ˆdÕ'Ñ (Ô (Ð (Ø �ˆdÕ#Ñ $Ô $Ð $Ø �ˆd�nÑ Ô Ð Ø �ˆdÕ&Ñ 'Ô 'Ð 'Ø �ˆdÕ"Ñ #Ô #Ð #Ø �ˆdÕ$Ñ %Ô %Ð %Ø �ˆd�nÑ Ô Ð Ø �ˆdÕ"Ñ #Ô #Ð #Ø �ˆdÕ#Ñ $Ô $Ð $Ø �ˆdÕ*Ñ +Ô +Ð +Ø �ˆdÕÑ Ô Ð Ø �ˆd�nÑ Ô Ð Ø �ˆd�jÑ Ô Ð Ø �ˆdÕ'Ñ (Ô (Ð (Ø �ˆdÕÕ/Ñ 0Ô 0Ð 0Ø �ˆdÕÑ  Ô  Ð  Ø �ˆdÕ#Ñ $Ô $Ð $Ø �ˆdÕ%Ñ &Ô &Ð &Ø �ˆdÕ#Ñ $Ô $Ð $Ø �ˆdÕ!Ñ "Ô "Ð "Ø �ˆd�jÑ Ô Ð Ø �ˆd�mÑ Ô Ð ð �ˆd�lÔ"Ñ #Ô #Ð #ð �ˆd�mÔ#¨%Ñ 0Ñ 0Ô 0Ð 0Ø �ˆd�mÔ#¨%Ñ 0Ñ 0Ô 0Ð 0Ø �ˆd�oÔ%¨EÑ 2Ñ 2Ô 2Ð 2Ø �ˆdÕ%Ô-°EÑ :Ñ :Ô :Ð :Ø �ˆdÕ)Ô1¸Ñ >Ñ >Ô >Ð >ð �ˆd�hÔ UÑ +Ñ +Ô +Ð +Ø �ˆdÕ(©-Ñ 8Ô 8Ð 8Ø �ˆe�lÕ$Õ;Ñ <Ô <Ð <Ø �ˆe�lÕ$Õ7Ñ 8Ô 8Ð 8Ø �ˆe�lÕ$ÕAÑ BÔ BÐ BØ �ˆe�lÕ$Õ7Ñ 8Ô 8Ð 8ð
 �ˆdÕ%Ô-°EÑ :Ñ :Ô :Ð :Ø �ˆdÕ$Ô,°5Ñ 9Ñ 9Ô 9Ð 9ð
 �ˆdÕ!Ñ "Ô "Ð "Ø �ˆdÕ*Ñ +Ô +Ð +ð �ˆdÕ"Ñ$6Ñ 7Ô 7Ð 7Ø �ˆd�jÑ Ô Ð ð �ˆdÕ'Ñ (Ô (Ð (ð �ˆdÕ;Ñ <Ô <Ð <Ø �ˆd�nÑ Ô Ð Ø �ˆd�oÑ Ô Ð ð �ØÕ0Ô8ÙØ	ññ ô ð ð
 �ØÕ9ÔAÙØ	ññ ô ð ð
 �ØÕ,Ô4ÙØ	ññ ô ð ð
 �ØÕ,Õ6Ø	ññ ô ð ð �ØÕ5Ô=ÙØ	ññ ô ð ð
 �ØÕ,Ô4ÙØ	ññ ô ð ð
 �ØÕ5Ô=ÙØ	ññ ô ð ð
 �ØÕ4Ô<ÙØ	ññ ô ð ð
 �ØÕ=ÔEÙØ	ññ ô ð ð
 �ØÕ9ÔAÙØ	ññ ô ð ð
 �ØÕBÔJÙØ	ññ ô ð ð
 �ˆdÕ+Ô3±_Ñ EÔ EÐ EØ �ˆdÕ+Õ5Ñ 6Ô 6Ð 6Ø �ˆdÕ,Ô4±oÑ FÔ FÐ FØ �ˆdÕ/Ô7¹Ñ IÔ IÐ IØ �ˆdÕ0Ô8¹/Ñ JÔ JÐ Jð �ˆdÕÑ  Ô  Ð  Ø �ˆdÕ$Õ+¸TÐ BÑ BÔ BÐ Bà �ˆdÕ2Ô:Ñ<NÑ OÔ OÐ Oð
 Ð�4•9°$Ð7Ñ7Ô7ññ ð ñ 8Ô7ñð* Ð�4•:ÑÔØ"ñ 	ð 	ñ 	ð 	ñ Ôñ	ñ3ð 3ñ 3ñ
ð ñ ñ*ð ñ ð €7ˆ4Ñ"Ñ#Ô#ð =Ø+ÐÐ�dÕ*Ñ+Ô+©OÑ<Ô<Ð<ð Ð�5•:ÑÔñð ñ Ôñð( Ð�4•;Õ)¸tÐDÑDÔDð 
ñð
 ØØØØñð ñ ð ñ EÔDñð. Ð�4Õ&¸DÐAÑAÔAñ ñ  ð  ñ BÔAñ ðF Ð�4Õ%¸4Ð@Ñ@Ô@ñAñ Að Añ AÔ@ñAñHð ñ ð Ð�E•L $Õ"4°eÕ6IÐJÑKÔKØ t°DÀUñ <ð <ñ <ð <ñ LÔKñ<ð~ Ð�5•?Ñ#Ô#ñ4ñ 4ð 4ñ $Ô#ñ4ð Ð�5Õ#Ñ$Ô$ñ+ð +ñ %Ô$ñ+ð Ð�4Õ+Ñ,Ô,ñ)"ð )"ñ -Ô,ñ)"ðX Ð�4Õ&Ñ'Ô'ñð ñ (Ô'ñð Ð�4Õ/Ñ0Ô0à%)ñØ59À$ñð ñ ð ñ 1Ô0ññð ñ ñ<Kð Kñ Kñð ñ ð> Ð�E•K ¥Ð,Ñ-Ô-ð ØØØØñð ñ ð ñ .Ô-ññ ð ñ ñ.>ð >ñ >ð 0ÐÐ˜t�Ñ/Ô/Ð0BÑ0BÁ5Ñ0IÔ0IÑJÔJ�
ØÑÐ1Ñ1°!Ñ4Ô4Ñ5Ô5�	ØÑÐ 2Ñ 2°1Ñ 5Ô 5Ñ6Ô6�
ñð ñ ð  Ð�4•>Ñ"Ô"Ø $¨T¸$È4ñ ð ñ ð ñ #Ô"ñð Ð�4Õ%Ñ&Ô&à¨°TÀdñð ñ ð ñ 'Ô&ñð@ Ð�4Õ)Ñ*Ô*à"¨4¸Èñð ñ ð ñ +Ô*ñð" Ð�5Õ%Ô-Ñ.Ô.ñAð Añ /Ô.ñAð Ð�E•J ¥	Ð*Ñ+Ô+ñ:ð :ñ ,Ô+ñ:ð
 Ð�4•;°DÐ9Ñ9Ô9ñ!ñ !ð !ñ :Ô9ñ!ðH Ð�4•>°tÐ<Ñ<Ô<ññ ð ñ =Ô<ññB#ð #ñ #ðF ñFñ Fð Fñ FñRð ñ ñ"1ñ "1ð "1ñ "1ðJ Ð�4•:°4Ð8Ñ8Ô8ñ
ð 
ñ 9Ô8ñ
ð Ð�4Õ%¸4Ð@Ñ@Ô@ñ/ð /ñ AÔ@ñ/ð Ð�4•>°tÐ<Ñ<Ô<ññ ð ñ =Ô<ñð Ð�4Õ)Ñ*Ô*ññ ð ñ +Ô*ññ;ð ;ñ ;ñð ñ ð. Ð�4•?¸Ð=Ñ=Ô=ññ ð ñ >Ô=ñð Ð�>Õ4È$ÐOÑOÔOññ ð ñ PÔOññsñ sð sñ sðl !1Ñ 0ØÕÔ%¸5ñ!ñ !ô !Ñ ð 0@Ñ/?ØÕ,Ô4È%ñ0ñ 0ô 0Ñ ,ð
 Ð�4Õ,À$ÐGÑGÔGñð ñ HÔGñð, Ð�4Õ;ÐQUÐVÑVÔVñ	Pð 	Pñ WÔVñ	Pð ñ1ð 1ñ „ñ1ð Ð�4Õ*ÀÐEÑEÔEññ ð ñ FÔEñð Ð�4•<°TÐ:Ñ:Ô:ñ9ñ 9ð 9ñ ;Ô:ñ9ð Øñð ñ ñ ð ñ ðD Ð�4•=°dÐ;Ñ;Ô;ØAEñ :ð :ñ :ñ :ð :ñ <Ô;ñ:ð" Ð�4Õ#¸Ð>Ñ>Ô>ñ3ñ 3ð 3ñ ?Ô>ñ3ð Ð�4Õ$¸$Ð?Ñ?Ô?ñ6ñ 6ð 6ñ @Ô?ñ6ð Ð�4Õ&¸DÐAÑAÔAñPñ Pð Pñ BÔAñPð Ð�4Õ'¸TÐBÑBÔBØPTñ qð qñ qñ qð qñ CÔBñqðp Øñ,ñ ,ñ ,ð ,ñ ,ð^ Ð�4Õ*Ô2Ñ3Ô3ñ>ñ >ñ >ð >ñ 4Ô3ñ>ð Ð�4Õ1Ô9Ñ:Ô:ñJñ Jñ Jð Jñ ;Ô:ñJð Ð�4Ô*Ô2Ñ3Ô3àLPñIñ Iñ Ið Iñ 4Ô3ðIð Ð�4Ô1Ô9Ñ:Ô:àLPñUñ Uñ Uð Uñ ;Ô:ðUð Ð�4Õ*Ô2Ñ3Ô3ð "Ø!Ø!ñSñ Sñ Sð Sñ 4Ô3ñSð Ð�4Õ1Ô9Ñ:Ô:ð "Ø!Ø!ñ	ñ 	ñ 	ð 	ñ ;Ô:ñ	ñ7ð 7ñ 7ð Ð�5•9Ô$Ñ%Ô%ñð ñ &Ô%ññ*]ñ ]ð ]ñ ]ñ@2)ñ 2)ð 2)ñ 2)ðj Ð�4Õ'¸TÐBÑBÔBñ8ñ 8ð 8ñ CÔBñ8ñvñ ð ñ ññ ð ñ ññ ð ñ ð :>ññ ð ñ ð@ MQñ ð ñ ð ñ ñ<ð ñ ð JNñ@ð @ñ @ð @ñ @ñ:Hð Hñ HðV Ð�5Õ:ÐPTÐUÑUÔUð ñ5ñ 5ð 5ñ VÔUñ5ñDñ ð ñ ð> ÐØ	Õ1Àtðñ ô ñð ñô ññ$ð ñ ð< Ð�4Ô/ÀTÐJÑJÔJð ØØØñ
ñ 
ð 
ñ KÔJð
ð Ð�4Ô/ÀTÐJÑJÔJð ØØØñ
ñ 
ð 
ñ KÔJð
ð -=Ñ,<ØÔ)Ô1Øñ-ñ -ô -Ñ )ð Ð�4Ô8ÈdÐSÑSÔSñNð Nñ TÔSðNñbñ ð ñ ñ8Bð Bñ Bñ&ð &ñ &ñR2ð 2ñ 2ðj  0Ñ/ØÕÔ%¸5ñ ñ  ô  Ñ ð
 Ð�4Õ,Ñ-Ô-ñBð Bñ .Ô-ñBðJ  0Ñ/ØÕÔ$¸%ñ ñ  ô  Ñ ð
 Ð�4Õ+Ñ,Ô,ñNð Nñ -Ô,ñNñb)ð )ñ )ðX Ð�4Õ-Ñ.Ô.ñVð Vñ /Ô.ñVð Ð�4Õ-Ñ.Ô.ñVð Vñ /Ô.ñVñAð Añ AðH Ð�4Õ3Ô;Ñ<Ô<àBFñ.ñ .ð .ñ =Ô<ñ.ðb Ð�4”?¸Ð=Ñ=Ô=ð ØØØØññ ð ñ >Ô=ðð* Ð�4•?¸Ð=Ñ=Ô=ð ØØØØññ ð ñ >Ô=ñð, Ñ�T•_Ô,À%ÑHÑHÔHØÑ�T”_Ô,À%ÑHÑHÔHØÑ�T•_Ô,À%ÑHÑHÔHðÑ ñA#ð A#ñ A#ðH  0Ñ/ØÔÔ$¸%ñ ñ  ô  Ñ ð
 Ð�4Ô+ÀÐFÑFÔFð ñbñ bð bñ GÔFðbðJ  0Ñ/ØÕÔ$¸%ñ ñ  ô  Ñ ð
 Ð�4Õ+ÀÐFÑFÔFð ñDñ Dð Dñ GÔFñDñNð ñ ð& HLñZð Zñ Zð Zñ Zð| :>ññ ñ ð ñ ñ@ñ ð ñ ñ&ð ñ ð Ð�4•9ÑÔñ:¨tñ :ð :ñ :ð :ñ Ôñ:ñ ð ñ ñ4/;ð /;ñ /;ñd(ð (ñ (ñV4ð 4ñ 4ð2 Ð�D•H˜e�iÐ(Ñ)Ô)ñ T°5ñ ð ñ ð ñ *Ô)ñð Ð�4•=Ñ!Ô!ñ¨°uñ ð ñ ð ñ "Ô!ññð ñ ð ñð ñ „ñð .Ñ-Ø…HÕ°ññ ô Ñ ð 'Ñ& t¥x¥ÈEÑRÑRÔRÑ Ø-Ñ-Ø…HÕ°ññ ô Ñ ð
 Ð�4•8 tÑ,Ñ,Ô,ñ-ð -ñ -Ô,ñ-ñ`"ñ "ð "ñ "ðJ Ð�4•:ÑÔñ2ð 2ñ Ôñ2ð Ð�4•:°4Ð8Ñ8Ô8ññ ð ñ 9Ô8ñð ñð ñ „ñð ñð ñ „ñð ñð ñ „ñð Ð�4•8 tÑ,Ñ,Ô,ññ ð ñ -Ô,ñð& Ð�D•H�:¨Ñ.Ñ.Ô.ñ(ð (ñ /Ô.ñ(ññ ð ñ ð@ Ð�E•I�;¨$Ñ/Ñ/Ô/ñ$ð $ñ 0Ô/ñ$ð. ÐØ	Õ�t•x•Ð'ØØ7ÔDðñ ô ñ
ð ñô ñ
ð Ð�D•I˜u�zÐ*°dÑ;Ñ;Ô;ñ$ð $ñ <Ô;ñ$ð  Ð�D•H˜e�iÐ(Ñ)Ô)ñ.°ñ .ð .ñ .ð .ñ *Ô)ñ.ð #Ñ" 4¥;Ô#6Ñ7Ô7�Ø#Ñ# D¥LÔ$8Ñ9Ô9Ñ Ø(Ñ(¨Õ):Ô)BÑCÔCÑ Ø"Ñ" 4¥;Ô#6Ñ7Ô7�Ø"Ñ" 4¥;Ô#6Ñ7Ô7�ð Ð�4•;ÑÔññ ð ñ  Ôñð. Ð�4•<Ñ Ô ññ ð ñ !Ô ñð. Ð�4Õ$Ñ%Ô%ñð ñ &Ô%ñð* Ð�4•;°DÐ9Ñ9Ô9ññ ð ñ :Ô9ñð, Ð�4•;°DÐ9Ñ9Ô9ññ ð ñ :Ô9ñð, Ð�4•9ÑÔñ.°ñ .ð .ñ .ð .ñ Ôñ.ñ;ñ ;ð ;ñ ;ð* Ð�4•8ÑÔñ@ñ @ð @ñ Ôñ@ð
 Ð�4•8°Ð6Ñ6Ô6ñ7ñ 7ð 7ñ 7Ô6ñ7ð" Ð�4•8°Ð6Ñ6Ô6ñ7ñ 7ð 7ñ 7Ô6ñ7ð" !Ð Ð �%•-Ñ  Ô   ¡±	Ñ!:Ô!:Ñ ;Ô ;Ð ;Ø*ÐÐ ¥	Ñ*Ô*¨>©>¹%Ñ+@Ô+@ÑAÔA�Ø*ÐÐ ¥	Ñ*Ô*¨>©>¹%Ñ+@Ô+@ÑAÔA�Ø.Ð!Ð! $¥+Ñ.Ô.Ø�N‘8°5´;Ñ?Ñ?Ô?ñô �ð /Ð!Ð! $¥+Ñ.Ô.Ø�N‘8°5´;Ñ?Ñ?Ô?ñô �ð %‘n¡^Ñ4Ô4Ñ Ø$‘n¡^Ñ4Ô4Ñ Ø8Ñ8Ñ9LÑMÔMÑ Ø8Ñ8Ñ9LÑMÔMÑ àÐØ…HØØÙ ,ñ	ñ ô �ð !Ñ  ¥Õ!1ÀuÑMÑMÔM�ð Ð�4•9Õ#¸Ð>Ñ>Ô>Ø! r°eñ -2ð -2ñ -2ð -2ñ ?Ô>ñ-2ð` Ð�4•9Ô$¸$Ð?Ñ?Ô?ñHñ Hð Hñ @Ô?ñHð !Ñ  ¥Ô!2ÈÑNÑNÔN�Ø$Ñ$ T¥]Ô%:ÐPUÑVÑVÔVÑ Ø"Ñ" 4¥;Ô#6ÈEÑRÑRÔR�Ø&Ñ& t¥{¥ÈEÑRÑRÔRÑ Ø Ñ  ¥Ô!2ÈÑNÑNÔN�ð Ð�4•;Ô&¸DÐAÑAÔAñ%ð %ñ BÔAñ%ð Ð�4•;•?¸Ð=Ñ=Ô=ññ ð ñ >Ô=ñð& Ð�4•9Ô$¸$Ð?Ñ?Ô?ñj ñ j ð j ñ @Ô?ñj ðZ Ð�4•9Ô$¸$Ð?Ñ?Ô?ññ ð ñ @Ô?ñð  Ð�4•=Ô(¸dÐCÑCÔCññ ð ñ DÔCññ$ñ ð ñ ññ ð ñ ð 	#Ñ" 4¥:Ñ.Ô.�Ø&Ñ& t¥xÑ0Ô0�Ø!Ñ! $¥)Ñ,Ô,�Ø"Ñ" 4¥:Ñ.Ô.�ØÐ˜$�)Ñ$Ô$�Ø
*Ñ
*¨4­<Ñ
8Ô
8�Ø'Ñ'¨­	Ñ2Ô2�Ø	Ð	˜D�KÑ	(Ô	(�ØÐ˜�¨tÑ4Ñ4Ô4�ð Ð�4•<¨4Ñ0Ñ0Ô0Ø-.ñ Eð Eñ Eð Eñ 1Ô0ñEðP Ð�4•<¨4Ñ0Ñ0Ô0Ø-.ñ Fð Fñ Fð Fñ 1Ô0ñFðR 5Ð4ØÕÕ ¡'°tÉ'ññ ô Ñ ð 5Ð4ØÕÕ ¡'°tÉ'ññ ô Ñ ð
 !Ñ   ¥Ñ *Ô *Ð *Ø  Ñ   ¥Ñ *Ô *Ð *ØÐ˜�Ñ"Ô"�Ø Ð  Õ!1Ñ2Ô2�Ø'Ð'¨Õ(?Ñ@Ô@Ñ Ø Ð ØÕ±-ññ ô �ð  Ð ¥Ñ0Ô0�
Ø(Ð(¨Õ)AÑBÔBÑ Ø Ð  Õ!1Ñ2Ô2�Ø Ñ ˜4�;Ñ 'Ô 'Ð 'Ø Ñ  ¥Ñ*Ô*�ðÐ Ð ØÕÐ*IÔ*Vðñ ô áñô ð ð Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�8Ñ $Ô $Ð $Ø Ñ ˜4�9Ñ %Ô %Ð %Ø  Ñ   ¤Ñ *Ô *Ð *Ø Ð ØÕØØØœ*ñ	ñ ô �ð !Ð ØÕØØØœ*ñ	ñ ô �ð  ÐØ…OØØØœ*ñ	ñ ô �
ð !Ð ØÕØØØœ*ñ	ñ ô �ð Ð
˜T�\Ñ
*Ô
*�Ø
Ð
˜T�\Ñ
*Ô
*�Ø !Ð Ð �$•.Ñ !Ô !¡'Ñ *Ô *Ð *Ø !Ð Ð �$•.Ñ !Ô !¡'Ñ *Ô *Ð *ØÐ˜�Ñ"Ô"�ØÐ˜�Ñ"Ô"�Ø'Ñ'¨­Ñ8Ô8�
Ø Ð �4•>Ñ "Ô "Ð "ØÐ˜$�)ÁÑLÑLÔL�Ø Ð �4”9Ñ Ô Ð ð Ð�4•<Ñ Ô ñ
Cð 
Cñ !Ô ñ
Cð "Ð Ð �$•.Ñ !Ô !¡#Ñ &Ô &Ð &à Ð �4•7°%´*Ñ =Ñ =Ô =Ð =Ø Ð �4•7°%´*Ñ =Ñ =Ô =Ð =Ø Ð �4•7°%´*Ñ =Ñ =Ô =Ð =ØÐ˜�°u´zÑBÑBÔB�Ø Ð �4•7°%´*Ñ =Ñ =Ô =Ð =Ø Ð �4•7°%´*Ñ =Ñ =Ô =Ð =à Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�=Ñ )Ô )Ð )Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�;Ñ 'Ô 'Ð 'Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�:Ñ &Ô &Ð &Ø Ñ ˜4�9Ñ %Ô %Ð %Ø Ñ ˜4�>Ñ *Ô *Ð *à DÑ DÑ DÑ DÑ DÑ DÑ DÐ DñEð Eñ Eñ" %ð 
ð 
�DØ4LÑ4LØ‰dñ5ô 5ð 
ð 
Ñ0‰Ñ¡ð 	ÐÙÙÙ 3Ù+ñ		
ñ 	
ô 	
ð 	
ð 	
ð 5MÑ4LØ‰tñ5ô 5ð 
ð 
Ñ0‰Ñ¡ð 	ÐÙÙÙ 3Ù+ñ		
ñ 	
ô 	
ð 	
ð 	
ð
ð .Ð-ØÕÕ™C¨Tññ ô Ñ ð 0Ð/ØÕÕ™c¨tññ ô Ñ ð Ð ˜4Õ,Õ3±SÀdÑ KÑ KÔ KÐ KØ-Ð-¨dÕ.?Õ.DÁcÑJÔJÑ Ø Ð ˜4Õ,Õ3±SÑ 9Ô 9Ð 9Ø/Ð/°Õ0AÕ0HÉ#ÑNÔNÑ Ø Ð ˜4Õ,Õ1±3ÀDÑ IÑ IÔ IÐ IØ Ð ˜4Õ,Õ3±SÀdÑ KÑ KÔ KÐ KØ Ð ˜4Õ,Ô4±cÑ :Ô :Ð :Ø Ð ˜4Õ,Ô4±cÑ :Ô :Ð :Ø Ð ˜4Õ,Õ3±SÑ 9Ô 9Ð 9Ø Ð ˜4Õ,Õ1±3Ñ 7Ô 7Ð 7Ø Ð ˜4Õ,Õ<¹cÑ BÔ BÐ BØ-Ð-¨dÕ.?Õ.DÁcÑJÔJÑ Ø Ð ˜4Õ,Õ3±SÑ 9Ô 9Ð 9Ø/Ð/°Õ0AÕ0HÉ#ÑNÔNÑ Ø Ð ˜4Õ-©tÑ 4Ô 4Ð 4Ø Ð ˜4Õ.±Ñ 6Ô 6Ð 6Ø Ð ˜4Õ0Õ5±wÑ ?Ô ?Ð ?Ø Ð ˜4Õ0Õ7¹Ñ AÔ AÐ AØ Ð ˜4Õ0Õ5±wÑ ?Ô ?Ð ?Ø Ð ˜4Õ0Õ7¹Ñ AÔ AÐ AØ Ð ˜4Õ2Õ7¹Ñ AÔ AÐ AØ Ð ˜4Õ2Õ9¹7Ñ CÔ CÐ CØ Ð ˜4Õ2Õ7¹Ñ AÔ AÐ AØ Ð ˜4Õ2Õ9¹7Ñ CÔ CÐ CØ Ð ˜4Õ3±ZÑ @Ô @Ð @Ø Ð ˜4Õ-©tÑ 4Ô 4Ð 4Ø Ð ˜4Õ.±Ñ 6Ô 6Ð 6Ø)Ð)¨$Õ*<¹dÑCÔC�ñ,ð ,ñ ,ð Ñ ØÕÕ˜TÕ.Õ3Ñ5Eñô ð ð Ñ ØÕÕ˜tÕ0Õ7Ñ9Kñô ð ð Ñ ØÕÕ˜TÕ.Õ3Ñ5Eñô ð ð Ñ ØÕÕ˜tÕ0Õ7Ñ9Kñô ð ð Ñ ØÕÕ˜TÕ.Õ3Ñ5Eñô ð ð Ñ ØÕÕ˜tÕ0Õ7Ñ9Kñô ð ð Ñ ØÕÔ Õ!3Ô!;¹\ñô ð ð Ñ ØÕÕ!ØÕÕ Ùñô ð ð
 Ñ ØÕÕ!ØÕÕ Ùñô ð ñð ñ ð Ñ �•™CÑ  Ô  Ð  Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �Õ)Ñ+=Ñ >Ô >Ð >Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �Õ!¡:Ñ .Ô .Ð .Ø Ñ �Õ*Ñ,?Ñ @Ô @Ð @Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �•™CÑ  Ô  Ð  Ø Ñ �•Õ!¡3Ñ 'Ô 'Ð 'Ø Ñ �•Õ&©Ñ 1Ô 1Ð 1Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �Õ!¡:Ñ .Ô .Ð .Ø Ñ �Õ"¡KÑ 0Ô 0Ð 0Ø Ñ �•™CÑ  Ô  Ð  Ø Ñ �•™TÑ "Ô "Ð "Ø Ñ �•¡Ñ (Ô (Ð (ð  Ð Ð �$•,Ñ Ô ¡Ñ ,Ô ,Ð ,Ø "Ð Ð �$•/Ñ "Ô "Ñ#5Ñ 6Ô 6Ð 6Ø Ð Ð �$•+Ñ Ô ™zÑ *Ô *Ð *Ø "Ð Ð �$•/Ñ "Ô "Ñ#6Ñ 7Ô 7Ð 7Ø Ð Ð �$•,Ñ Ô ¡Ñ ,Ô ,Ð ,à Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �•˜t�{Ñ +Ô +Ð +Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �• ¥Ñ -Ô -Ð -ð Ð�4Õ+Ñ,Ô,ññ ð ñ -Ô,ñð Ð�4•=Õ$Ñ%Ô%ñð ñ &Ô%ñð Ð�4•?Õ&Ñ'Ô'ñð ñ (Ô'ñð Ð�4•>Ñ"Ô"ñð ñ #Ô"ññð ñ ð (�MÕ'Ñ)Ô)ð &ð &�L�F‰DàÐÐ)Ð)©&Ñ1Ô1Ñ2Ô2Ù!ñ &ð &ñ &ð &ñ 3Ô2ñ&ð &ð  Ð�5•=Ñ!Ô!ñð ñ "Ô!ñð Ð�4•<Ñ Ô ñ7ð 7ñ !Ô ñ7ð Ð�5”9Õ+Õ3Ñ4Ô4ñð ñ 5Ô4ñð
 Ð�5”9Õ%Õ;Ñ<Ô<ñð ñ =Ô<ñð Ð�5”9”>Õ&Õ4Ñ5Ô5ñKð Kñ 6Ô5ñKð €7ˆ5Œ9�>™7Ñ#Ô#ð 
#àÐ�u”y•~Õ+Ô3Ñ4Ô4ñ#ð #ñ 5Ô4ñ#ð Ð�5”9”>Õ(Ñ)Ô)Ø%)ñ =ð =ñ =ð =ñ *Ô)ñ=ð@ KÑ JÑ JÑ JÑ JÐ Jð �Ñ!Ñ "Ô "Ð "ð ÐÐ1Ñ2Ô2ñSð Sñ 3Ô2ñSð( Ð�5”9Õ)Õ.ÀDÐIÑIÔIñ/ñ /ð /ñ JÔIñ/ð Ð�5”9Õ)Õ4È$ÐOÑOÔOñEñ Eð Eñ PÔOñEð&Ð Ð Ø	„IÕÕ2Èðñ ô à€)Õ‘J¨TÑ2Ñ2Ô2ñ4ô 4ð 4ð
 Ð�5”9Õ)Õ9ÈtÐTÑTÔTñ/ñ /ð /ñ UÔTñ/ð
 ‰6‰8Œ8�ñ ñ  ð  ñ  ðH HÑ GÑ GÑ GÑ GÐ Gð Ð‘<°TÐ:Ñ:Ô:ñuð uñ ;Ô:ñuðp Ð�5Ô*Õ7ÈTÐRÑRÔRØDHñ ð ñ ñ ð ñ SÔRñð8 ÐÐ&¸DÐAÑAÔAñ/ñ /ð /ñ BÔAñ/ðd Ð�5”9”?Õ/Ô7Ñ8Ô8ñð ñ 9Ô8ñð Ð�5”9”?Õ.Ô6Ñ7Ô7ñð ñ 8Ô7ñð Ð�5”9Õ)Õ6ÈDÐQÑQÔQñc ð c ñ RÔQñc ðL PÑ OÑ OÑ OÑ OÑ OÑ OÐ Oð Ñ Ñ Ô Ð Ø Ñ Ñ Ô Ð ð Ð�>Õ8ÈdÐSÑSÔSñð ñ TÔSñð2 Ð�>Õ0ÀdÐKÑKÔKñ")ð ")ñ LÔKñ")ðJ ÐØ	ÔÕ2Èðñ ô ð 37¸Qñð ñ ð ñô ñðF Ñ Ð Ñ Ñ Ð ð Ð ‘Ñ Ô Ð à !Ñ !Ð !Ñ !Ñ !Ð !ð +Ñ Õ *Ñ ,Ô ,Ð ,Ø 'Ñ Õ 'Ñ )Ô )Ð )ðñ ð ñ ñ ñ ñ ð ð %Ñ Õ $Ñ &Ô &Ð &ð Õññ ð ñ Ôñð ð rr   