§
    ŠŠtj†• ã            -       óÞz  — d dl 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l
mZ d dlZd dlmZ d dlmZmZmZ d dlmZmZmZmZ d d	lmZ d d
lmZmZ d dlmZmZmZm Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0 d dl1m2Z2m3Z3 d dl4m5Z6 d dl7m8Z8m9Z9 d dl:m;Z<  e	d¦  «        Z= ed¦  «        Z>ej?        j@        Z@ejA         B                    ddd¦  «        ZC eDd¦  «        \  ZEZFZGd„ ZHd„ ZIdeee>e=f         gee>e=f         f         fd„ZJde!fd„ZKd„ ZLd„ ZM eJe@jN        e@jO        g¦  «         e0¦   «         dddejP        ddfd „¦   «         ¦   «         ZQ eJe@jR        jS        e@jR        jT        g¦  «         e0¦   «         d!„ ¦   «         ¦   «         ZU eJe@jV        jS        e@jV        jT        g¦  «         e0¦   «         �dsd"„¦   «         ¦   «         ZW eJe@jX        jS        e@jX        jT        g¦  «         e0¦   «         	 	 �dtd#ed$eYd%eYd&ed'ed(ed)ed*eZd+eZd,e[d-ed.ed/ed0ed1ed2ed3ed4ed5ej        dz  d6eYdz  def*d7„¦   «         ¦   «         Z\ eJe@j]        jS        e@j]        jT        g¦  «         e0¦   «         d8d9œd:„¦   «         ¦   «         Z] eJe@j^        ¦  «         e0¦   «         d;„ ¦   «         ¦   «         Z^ eJe@j_        jS        e@j_        jT        e@j`        jS        e@j`        jT        g¦  «         e0d<d=¦  «        d>„ ¦   «         ¦   «         Za eJe@jb        jS        e@jb        jT        g¦  «         e0¦   «         d?„ ¦   «         ¦   «         Zbd@„ Zc�dudAedBedeY         dCeZfdD„Ze eJe@jf        jS        e@jf        jT        g¦  «         e0¦   «         dE„ ¦   «         ¦   «         ZgdZhdBedeY         fdF„Zi eJe@jj        jS        e@jj        jT        g¦  «         e0¦   «         dG„ ¦   «         ¦   «         Zk eJe@jl        jm        ¦  «        ddHœdI„¦   «         Zn eJe@jl        jS        ¦  «        ejo        ddddJœdK„¦   «         Zp eJe@jq        jS        e@jq        jT        g¦  «         e0¦   «         ejo        ddddJœdL„¦   «         ¦   «         Zr eJe@jq        js        e@jq        jt        g¦  «         e0¦   «         ejo        ddddJœdM„¦   «         ¦   «         Zu eJe@jv        jS        e@jv        jT        g¦  «         e0¦   «         dddddJœdN„¦   «         ¦   «         Zw eJe@jx        jS        ¦  «        dO„ ¦   «         Zy eJe@jz        jS        ¦  «        dP„ ¦   «         Z{dQ„ Z| eJe@j}        jS        ¦  «        �dvdT„¦   «         Z~ eJe@j        jS        ¦  «        �dvdU„¦   «         Z€ eJe@j�        jS        e@j�        jT        g¦  «         e0¦   «         dAedBedeY         dVeYdWeYfdX„¦   «         ¦   «         Z‚ eJe@jƒ        jS        ¦  «        �dudY„¦   «         Z„dZ„ Z… eJe@j†        jS        ¦  «        d[„ ¦   «         Z‡ eJe@jˆ        ¦  «        	 	 	 �dwd\ed]ed^ed_edz  d`e‰dz  daejŠ        dz  fdb„¦   «         Z‹ eJe@jŒ        ¦  «        	 �dsdceddedeedaejŠ        dz  fdf„¦   «         Z� eJe@jŽ        ¦  «        dgdgddhœd\edceddedeedaejŠ        dz  f
di„¦   «         Z� eJe@j�        ¦  «        	 	 	 	 	 	 	 �dxdjej        dkej        d_edz  dledz  daejŠ        dz  dmeZdneYdoeYdpeYfdq„¦   «         Z‘ eJe@j’        jS        ¦  «        drdsœdAedBeYdteduej        dve‰dweZdefdx„¦   «         Z“ eJe@j”        jS        ¦  «        drdsœdAedBeYdteduej        dve‰dweZdefdy„¦   «         Z• e0¦   «          eJe@j–        jS        ¦  «        dz„ ¦   «         ¦   «         Z— eJe@j˜        jS        ¦  «        dddd ddd{œd|edve‰d}edz  d=edz  d~edz  deYd€eZdefd�„¦   «         Z™ eJe@jš        jS        e@jš        j›        g¦  «         e0¦   «         d‚„ ¦   «         ¦   «         Zœ eJe@jš        j�        ¦  «        �dudƒ„¦   «         Zž eJe@jŸ        jS        e@jŸ        j›        g¦  «         e0¦   «         d„„ ¦   «         ¦   «         Z  eJe@jŸ        j�        ¦  «        �dud…„¦   «         Z¡ eJe@j¢        jS        ¦  «        d†„ ¦   «         Z£ eJe@j¢        jT        ¦  «        d‡„ ¦   «         Z¤ eJe@j¥        jS        ¦  «        dˆ„ ¦   «         Z¦ eJe@j¥        j§        ¦  «        d‰„ ¦   «         Z¨ eJe@j©        jS        ¦  «        dŠ„ ¦   «         Zª eJe@j«        jS        ¦  «        dddddd‹œdŒ„¦   «         Z¬ eJe@j­        jS        ¦  «        �dtd�„¦   «         Z­ eJe@j®        jS        ¦  «        �dwdŽ„¦   «         Z¯ eJe@j°        jS        ¦  «        �dtd�„¦   «         Z° eJe@j±        jS        ¦  «        d�„ ¦   «         Z² eJe@j³        j§        ¦  «        d‘„ ¦   «         Z´dAed’e‰fd“„ZµdAed”ed•e‰fd–„Z¶	 �dyd—ed’e‰d˜eZfd™„Z·�dzd”ed’e‰dše‰fd›„Z¸d”edœed�eZd’e‰fdž„Z¹	 �d{d e‰dŸed\ed¡e‰fd¢„Zºd£e‰fd¤„Z» eJe@j¼        jS        e@j¼        j½        g¦  «         e0d¥d¦¦  «        �d|d”ed£e‰d¨eZfd©„¦   «         ¦   «         Z¾ eJe@j¿        jS        e@jÀ        jT        g¦  «         e0¦   «         d\edefdª„¦   «         ¦   «         ZÁ eJe@jÂ        g¦  «         e0d¥d¦¦  «        d\efd«„¦   «         ¦   «         ZÃd#edefd¬„ZÄ eJe@jÅ        ¦  «         e0¦   «         dAed”ed­eZdefd®„¦   «         ¦   «         ZÅ eJe@jÆ        ¦  «         e0¦   «         �dudAed”ed­eZdefd¯„¦   «         ¦   «         ZÆ eJe@jÇ        ¦  «         e0¦   «         �dudAed­eZdefd°„¦   «         ¦   «         ZÇ eJe@jÈ        ¦  «         e0¦   «         �dudAed­eZdefd±„¦   «         ¦   «         ZÈ eJe@jÉ        jS        ¦  «        �d}d”ed­eZd²eZfd³„¦   «         ZÉ eJe@jÊ        jS        e@jÊ        jT        g¦  «         e0¦   «         d\ed´edefdµ„¦   «         ¦   «         ZÊ eJe@jË        jS        ¦  «        �dud”ed²eZfd¶„¦   «         ZÌ eJe@jÍ        jS        e@jÍ        jT        g¦  «         e0d·d¸d¹¦  «        dddºœdAed»eZd²eZdeÎeeef         fd¼„¦   «         ¦   «         ZÏ eJe@jÐ        jS        e@jÐ        jT        g¦  «         e0¦   «         dd½œd·ed¸edœed»eZdef
d¾„¦   «         ¦   «         ZÑ eJe@jÒ        jS        e@jÒ        jT        g¦  «         e0d¿d§dÀ¦  «        drdÁœd”edÂeZdeÎeeef         fdÃ„¦   «         ¦   «         ZÓ eJe@jÔ        jS        e@jÔ        jT        g¦  «         e0dÄd¸d¹¦  «        drddÅœd”edÂeZd²eZdeÎeeef         fdÆ„¦   «         ¦   «         ZÕ eJe@jÖ        jS        e@jÖ        jT        g¦  «         e0¦   «         drddÇœdÄed¸edœed�eZdÈeZdefdÉ„¦   «         ¦   «         Z× eJe@jØ        ¦  «         e0d¿d§dÀ¦  «        	 	 �d~dÄed¸edÊeZdËeZdeÎeeef         f
dÌ„¦   «         ¦   «         ZÙdÍe‰deÎeZeZf         fdÎ„ZÚ eJe@jÛ        jS        e@jÛ        jT        g¦  «         e0dÏdÐ¦  «        �dd”edÍe‰deÎeef         fdÒ„¦   «         ¦   «         ZÜ eJe@jÝ        jS        e@jÝ        jÞ        g¦  «         e0dÓdÔdÄd¸¦  «        d”edeÎeeeef         fdÕ„¦   «         ¦   «         ZÝ eJe@jß        jS        ¦  «        	 	 	 �d€d”edÖeZd×eZdØe‰dz  fdÙ„¦   «         ZàdÚedÛedeÎedeY         edeY         f         fdÜ„ZádÚedÛed•e‰dz  deÎeef         fdÝ„Zâd\edÞedeZfdß„Zã eJe@jä        ¦  «        drddddddàœd”edœed�eZd²eZdŸedz  dÄedz  d¸edz  d¹edz  deÎeeeef         fdá„¦   «         Zä eJe@jå        jS        e@jå        jT        g¦  «        drdddâœd”edœed­eZd�eZdãeZdäedz  defdå„¦   «         Zæ eJe@jç        ¦  «         e0dædçdr¬è¦  «        	 	 	 �d�dAed”ed­eZdéeZdãeZdeÎeef         fdê„¦   «         ¦   «         Zè eJe@jé        jS        ¦  «        dë„ ¦   «         Zê eJe@jë        ¦  «         e0¦   «         	 	 �d‚d\ed´edÞed�eZdéeZdefdì„¦   «         ¦   «         Zëdí„ Zìdî„ Zí eJe@jî        ¦  «         e0¦   «         dï„ ¦   «         ¦   «         Zï eJe@jð        ¦  «         e0¦   «         dð„ ¦   «         ¦   «         Zñdñ„ Zò eJe@jó        ¦  «         e0dò¦  «        dó„ ¦   «         ¦   «         Zô eJe@jõ        ¦  «         e0dò¦  «        dô„ ¦   «         ¦   «         Zödõ„ Z÷ eJe@jø        ¦  «         e0¦   «         dö„ ¦   «         ¦   «         Zù eJe@jú        ¦  «         e0¦   «         d÷„ ¦   «         ¦   «         Zû eJe@jü        jS        ¦  «        dø„ ¦   «         Zý eJe@jþ        jS        e@jþ        jÿ        e@�j         jS        e@�j         jÿ        g¦  «         e0dò¦  «        dù„ ¦   «         ¦   «         �Zdú„ �Z eJe@�j        ¦  «         e0¦   «         dû„ ¦   «         ¦   «         �Z eJe@�j        ¦  «         e0¦   «         dü„ ¦   «         ¦   «         �Z eJe@�j        jS        e@�j        jÿ        e@�j        jS        e@�j        jÿ        g¦  «         e0dò¦  «        dý„ ¦   «         ¦   «         �Z	 eJe@�j
        ¦  «         e0¦   «         �dƒdAedÿe[def�d „¦   «         ¦   «         �Z eJe@�j        ¦  «         e0¦   «         �dedAedÿe[�dedef
�d„¦   «         ¦   «         �Z eJe@�j        jS        e@�j        jT        g¦  «         e0dr¬è¦  «        dgdg�dœ�d„¦   «         ¦   «         �Z eJe@�j        jS        e@�j        jT        g¦  «         e0¦   «         ddHœ�d„¦   «         ¦   «         �Z eJe@�j        j[        ¦  «        �d„�d„¦   «         �Z eJe@�j        �j        ¦  «        �d„�d	„¦   «         �Z eJe@�j        jS        e@�j        jT        g¦  «         e0¦   «         �ds�d
„¦   «         ¦   «         �Z eJe@�j        jS        ¦  «        	 	 �d}�d„¦   «         �Z eJe@�j        ¦  «         e0dr¬è¦  «        �dsdaejŠ        dz  f�d„¦   «         ¦   «         �Z�d„ �Z�d…�d„�Z	 �ds�dej        d]ej        �dedeY         eYz  �dedeY         eYz  �dedeY         eYz  �deZ�deY�dedeY         eYz  dz  f�d„�Z�d„ �Z eJe@�j         jS        ¦  «        �dej        d]ej        d_ej        dz  �dej        dz  �dej        dz  �deZ�de[�de[f�d„¦   «         �Z! eJe@�j"        jS        ¦  «        �dej        d]ej        d_ej        dz  �dedeY         �dedeY         �dedeY         �deZ�dedeY         �deYf�d„¦   «         �Z# eJe@�j$        jS        ¦  «        	 �dy�dej        d]ej        d_ej        dz  �dedeY         �dedeY         �dedeY         �d eZ�dedeY         �deY�d!eZ�d"eZ�d#eZ�d$eZf�d%„¦   «         �Z%e�j&        �j'        �r%ejA         B                    �d&dd¦  «        �Z( eJej?        �j)        �j*        jS        ¦  «        �d'„ ¦   «         �Z+ eJej?        �j)        �j,        jS        ¦  «        �d(„ ¦   «         �Z-e�j&        �j.        rEejA         B                    �d)dd¦  «        �Z/ eJej?        �j0        �j1        ¦  «        �d*„ ¦   «         �Z2ejA         B                    �d+dd¦  «        �Z3 eJej?        �j4        �j5        jS        ¦  «         eJej?        �j4        �j6        jS        ¦  «         eJej?        �j4        �j6        �j7        ¦  «        �d,„ ¦   «         ¦   «         ¦   «         �Z8 eJej?        �j4        �j5        �j9        ¦  «         eJej?        �j4        �j5        �j:        ¦  «        �d-„ ¦   «         ¦   «         �Z; eJej?        �j4        �j<        jS        ¦  «         eJej?        �j4        �j<        �j7        ¦  «        �d.„ ¦   «         ¦   «         �Z= eJej?        �j4        �j<        �j9        ¦  «         eJej?        �j4        �j<        �j:        ¦  «        �d/„ ¦   «         ¦   «         �Z> eJej?        �j4        �j?        jS        ¦  «         eJej?        �j4        �j@        jS        ¦  «        �d0„ ¦   «         ¦   «         �ZAejA         B                    �d1dd¦  «        �ZB eJej?        �jC        �jD        ¦  «        	 	 	 	 �d†�d5„¦   «         �ZE eJej?        �jC        �jF        ¦  «        �d6„ ¦   «         �ZG�d7„ �ZH eJe@�jI        ¦  «        d\ej        �d8e[�d9eY�d:ejŠ        dej        f
�d;„¦   «         �ZJ eJe@�jK        jS        ¦  «        	 	 	 	 	 �d‡�d<„¦   «         �ZL�d=„ �ZM eJe@�jN        jS        ¦  «        �d>„ ¦   «         �ZO eJe@�jP        ¦  «         e0¦   «         	 	 	 	 	 �d‡�d?„¦   «         ¦   «         �ZQ eJe@�jR        ¦  «         e0dò¦  «        �d@„ ¦   «         ¦   «         �ZS eJe@�jT        jS        ¦  «        �dA„ ¦   «         �ZU eJe@�jV        jS        ¦  «        �dB„ ¦   «         �ZW eJe@�jX        jS        ¦  «        �dC„ ¦   «         �ZY eJe@�jZ        ¦  «         e0dò¦  «        �dD„ ¦   «         ¦   «         �Z[�dEedše‰f�dF„�Z\ eJe@�j]        ¦  «         e0däd=¦  «        �dG„ ¦   «         ¦   «         �Z^ eJe@�j_        ¦  «         e0dò¦  «        �dH„ ¦   «         ¦   «         �Z` eJe@�ja        ¦  «         e0däd=¦  «        �dI„ ¦   «         ¦   «         �Zb eJe@�jc        ¦  «         e0dò¦  «        �dJ„ ¦   «         ¦   «         �Zd eJe@�je        j        ¦  «        �ds�dK„¦   «         �Zf eJe@�jg        jS        e@�jg        jT        g¦  «         e0¦   «         �dL„ ¦   «         ¦   «         �Zh eJe@�ji        jS        e@�ji        jT        g¦  «         e0¦   «         d8�dMœ�dNeYf�dO„¦   «         ¦   «         �Zi eJej?        j@        �jj        jS        ej?        j@        �jj        jT        g¦  «         e0¦   «         �dP„ ¦   «         ¦   «         �Zj eJe@�jk        j        e@�jl        j        g¦  «        �dQ„ ¦   «         �Zm eJe@�jn        jS        g¦  «        �dR„ ¦   «         �Zo eJe@�jp        jS        e@�jp        jT        g¦  «         e0dr¬è¦  «        dgdg�dœ�dS„¦   «         ¦   «         �Zq eJe@�jr        j        g¦  «        �dT„ ¦   «         �Zs eJe@�jt        jS        e@�ju        jS        g¦  «        dd�dUœ�dV„¦   «         �Zv eJe@�jw        jS        g¦  «        dd�dUœ�dW„¦   «         �Zx eJe@�jy        g¦  «         e0¦   «         �dX„ ¦   «         ¦   «         �Zz eJe@�j{        g¦  «        �dY„ ¦   «         �Z| eJe@�j}        g¦  «        �dZ„ ¦   «         �Z~ eJe@�j        g¦  «        �d[„ ¦   «         �Z€ eJe@�j�        g¦  «        �d\„ ¦   «         �Z‚ eJe@�jƒ        g¦  «        �d]„ ¦   «         �Zƒ�d^eY�d_eYdeYf�d`„�Z„�da„ �Z… eJe@�j†        g¦  «        d_edz  f�db„¦   «         �Z‡ eJe@�jˆ        g¦  «        �dc„ ¦   «         �Z‰ eJe@�jŠ        g¦  «        �dd„ ¦   «         �Z‹ eJe@�jŒ        jS        ¦  «        �de„ ¦   «         �Z� eJe@�jŽ        ¦  «         e0¦   «         �df„ ¦   «         ¦   «         �Z� eJe@�j�        jS        ¦  «        	 	 	 	 	 	 �dˆ�dg„¦   «         �Z‘ eJe@�j’        jS        ¦  «        �dh„ ¦   «         �Z“�dy�di„�Z” eJe@�j•        jS        e@�j•        jT        g¦  «         e0¦   «         �d‰d�djœ�dk„¦   «         ¦   «         �Z– eJe@�j—        jS        e@�j˜        jS        g¦  «        �dl„ ¦   «         �Z™ eJe@�j—        j�        e@�j—        �jš        e@�j˜        j�        e@�j˜        �jš        e@�j›        jS        e@�j›        �jœ        g¦  «         e0d<d=¦  «        �dŠ�dm„¦   «         ¦   «         �Z� eJe@�jž        jS        ¦  «        �dn„ ¦   «         �ZŸ eJe@�j         jS        ¦  «        �do„ ¦   «         �Z¡ eJe@�j¢        jS        ¦  «        �dp„ ¦   «         �Z£ eJe@�j¤        �j¥        e@�j¤        j        e@�j¦        jS        e@�j§        jS        e@�j¨        jS        g¦  «        �dq„ ¦   «         �Z© eJe@�jª        �j¥        e@�jª        j        g¦  «        �dr„ ¦   «         �Z« eJe@�j¬        �j¥        e@�j­        �j¥        e@�j¬        j        e@�j­        j        g¦  «        �d4�ds„¦   «         �Z® eJe@�j¯        �j¥        e@�j°        �j¥        g¦  «        �d4�dt„¦   «         �Z± eJe@�j²        jS        e@�j²        �j³        g¦  «        �du„ ¦   «         �Z´�dv„ �Zµ eJe@�j¶        j        e@�j¶        �j¥        g¦  «        �dw„ ¦   «         �Z· eJe@�j¸        j        e@�j¸        �j¥        g¦  «        �dx„ ¦   «         �Z¹ eJe@�jº        jS        ¦  «        �dy„ ¦   «         �Z» eJe@�j¼        j        e@�j¼        �j¥        g¦  «        �dz„ ¦   «         �Z½ eJe@�j¾        j        e@�j¾        �j¥        g¦  «        �d{„ ¦   «         �Z¿ eJe@�jÀ        jS        ¦  «        �d|„ ¦   «         �ZÁ eJe@�jÂ        j        ¦  «         e0¦   «         �d4def�d}„¦   «         ¦   «         �ZÃ eJe@�jÄ        g¦  «         e0¦   «         	 �d‹�d€„¦   «         ¦   «         �ZÅ eJe@�jÆ        g¦  «        	 �d‹�d�„¦   «         �ZÇ eJe@�jÈ        g¦  «        	 �d‹�d‚„¦   «         �ZÉ eJe@�jÊ        jS        e@�jË        jS        g¦  «        �du�dƒ„¦   «         �ZÌ eJe@�jÍ        �j¥        ¦  «        �d„„ ¦   «         �ZÎ eJe@�jÏ        jS        ¦  «        �d…„ ¦   «         �ZÐ eJe@�jÑ        ¦  «        �d†„ ¦   «         �ZÒ eJe@�jÓ        ¦  «         e0¦   «         �d‡„ ¦   «         ¦   «         �ZÔ eJe@�jÕ        ¦  «        �dˆ„ ¦   «         �ZÖ eJe@�j×        jS        ¦  «        �du�d‰„¦   «         �ZØ�dt�dŠ„�ZÙ eJe@�jÚ        jS        e@�jÚ        jT        g¦  «         e0dr¬è¦  «        �d‹„ ¦   «         ¦   «         �ZÛ eJe@�jÚ        jŠ        e@�jÚ        �jÜ        g¦  «         e0dr¬è¦  «        �dŒ„ ¦   «         ¦   «         �ZÝ�d�„ �ZÞ�dŽ„ �Zß�d�„ �Zà�d�„ �Zá	 �dud\e�d‘eY�d’eY�d“eY�d”eY�d•eY�d–eY�d—eY�d˜eY�d™eY�dšeY�d›eY�dœeY�d�eY�džeY�dŸeY�d eY�d¡eY�d¢eY�d£eYd e‰�d¤eZf,�d¥„�Zâ�d¦„ �Zãd\e�dEe�d‘eY�d’eY�d“eY�d”eY�d•eY�d–eY�d—eY�d˜eY�d™eY�dšeY�džeY�dŸeY�d eY�d¡eY�d¢eY�d£eYd e‰f&�d§„�Zä�d¨„ �Zå eJe@�jæ        ¦  «         e0dò¦  «        �d©„ ¦   «         ¦   «         �Zç eJe@�jè        jS        ¦  «        	 	 	 	 �d†�dª„¦   «         �Zé eJe@�jê        jS        ¦  «        �d«„ ¦   «         �Zë eJe@�jì        ¦  «         e0däd=¦  «        	 	 	 	 �d†�d¬„¦   «         ¦   «         �Zí eJe@�jî        ¦  «         e0dò¦  «        �d­„ ¦   «         ¦   «         �Zïd\e�d®ef�d¯„�Zð G �d°„ �d±e¦  «        �Zñd\e�d®e�d²eYf�d³„�Zò eJe@�jó        jS        ¦  «        �d´„ ¦   «         �Zô eJe@�jõ        ¦  «         e0¦   «         �dµ„ ¦   «         ¦   «         �Zõ eJe@�jö        ¦  «         e0dò�d¶¦  «        �d·„ ¦   «         ¦   «         �Zö eJe@�j÷        jS        g¦  «        �d¸„ ¦   «         �Z÷ eJe@�jø        jS        ¦  «        	 	 	 	 	 �dŒ�d¹„¦   «         �Zø eJe@�jù        jS        e@�jù        jT        g¦  «         e0¦   «         ddddd�dºœ�d»„¦   «         ¦   «         �Zú eJe@�jû        jS        e@�jû        jT        g¦  «         e0¦   «         ddddd�dºœ�d¼„¦   «         ¦   «         �Zü eJe@�jý        jS        ¦  «        �d½„ ¦   «         �Zþ eJe@�jÿ        jS        ¦  «        �d��d¾„¦   «         �Z  eJe@�j        jS        ¦  «        �dŽ�d¿„¦   «         �Z�dÀ„ �Z�dydBeY�dÁeY�dÂeZf�dÃ„�Z�dÄ„ �Z�dÅ„ �Z eJe@�j        jS        ¦  «        �du�dÆ„¦   «         �Z�du�dÇ„�Z	�ds�dÈ„�Z
�dÉ„ �Z�ds�dÊ„�Z�d��dË„�Z eJe@�j        jS        ¦  «        �dÌ„ ¦   «         �Z eJe@�j        ¦  «        �dÍ„ ¦   «         �Z eJe@�j        �j        e@�j        �j        e@�j        �j        e@�j        �j        g¦  «         e0¦   «         �ds�dÎ„¦   «         ¦   «         �Z eJe@�j        �j        e@�j        �j        e@�j        �j        e@�j        �j        g¦  «        �ds�dÏ„¦   «         �Z eJe@�j        jS        g¦  «        	 	 	 	 �d��dÐe�dÑe�dÒe�dÓe[�dÔeZ�dÕeZ�d8e[dz  f�dÖ„¦   «         �Z eJe@�j        �jC        g¦  «        	 	 	 	 �d��dÐe�dÑe�dÒe�d×edz  �dØedz  �dÙedz  �dÓe[�dÔeZ�dÕeZ�d8e[dz  f�dÚ„¦   «         �Z�dÐe�dÛeÎeY�dÜf         f�dÝ„�Z eJe@�j        g¦  «        	 	 	 	 �d��dÐe�dÑe�dÒe�dÞedz  �dßeZ�dÓe[�dÔeZ�dÕeZ�d8e[dz  f�dà„¦   «         �Z eJe@�j         g¦  «        	 	 	 	 	 �d‘�dÐe�dÑe�dÒe�dÞedz  �dÓe[�dÔeZ�dÕeZ�d8e[dz  f�dá„¦   «         �Z! eJe@�j"        ¦  «        d�dâœ�dãe�dÐe�dÑe�dÒe�dÞe�däedeZ         däe�dåe�dæe�dçe�dèeY�déeY�dÓe[�dÔeZ�dêe�dëe�d8e[dz  f"�dì„¦   «         �Z# eJe@�j$        g¦  «        	 �ds�dãe�dÐe�dÑe�dÒedäe�dåe�dæe�dçe�dèeY�déeY�dÓe[�dÔeZ�dêe�dëe�d8e[dz  f�dí„¦   «         �Z% eJe@�j&        g¦  «        	 	 	 	 �d’�dÐe�dÑe�dÒe�dÓe[�dÔeZ�dîedz  �d8e[dz  f�dï„¦   «         �Z' eJe@�j(        g¦  «        	 	 �dt�dãe�dÐe�dÑe�dÒedäe�dåe�dÓe[�dÔeZ�dîedz  �d8e[dz  f�dð„¦   «         �Z) eJe@�j*        g¦  «        	 	 	 	 	 	 �d“�dÐe�dÑe�dÒe�dîedz  �dÓe[�dÔeZ�dñedz  �d8e[dz  �dòeZdeÎeef         f�dó„¦   «         �Z+ eJe@�j,        g¦  «        	 	 	 �d”�dÐe�dÑe�dÒe�dÞedz  �dßeZ�dÔeZ�d8e[dz  f�dô„¦   «         �Z- eJe@�j.        g¦  «        	 	 �d•�dãe�dÐe�dÑe�dÒe�dÞedz  däe�dåe�dêe�dëe�dÓe[�däedeZ         �dÔeZ�d8e[dz  f�dõ„¦   «         �Z/ eJe@�j0        g¦  «        	 �ds�dãe�dÐe�dÑe�dÒedäe�dåe�dêe�dëe�dÞe�dæe�dçe�dèeY�déeY�dÓe[�dÔeZ�d8e[dz  f �dö„¦   «         �Z1 eJe@�j2        jS        g¦  «        	 	 	 	 	 	 	 �d–�dÐe�dÑe�dÒe�dæedz  �dçedz  �dèeY�déeY�dÓe[�dÔeZ�dÕeZ�d8e[dz  �d÷eYdz  �døeYdz  �dùedz  �dúedz  �dûedz  �düeYdz  f"�dý„¦   «         �Z3 eJe@�j4        jS        g¦  «        	 	 	 	 	 	 	 �d–däe�dÐe�dÑe�dÒe�dæedz  �dçedz  �dèeY�déeY�dÓe[�dÔeZ�dÕeZ�d8e[dz  �d÷eYdz  �døeYdz  �dùedz  �dúedz  �dûedz  �düeYdz  f$�dþ„¦   «         �Z5 eJe@�j2        �jC        g¦  «        	 	 	 	 	 �dŒ�dÐe�dÑe�dÒe�dæedz  �dçedz  �dèeY�déeY�dÓe[�dÔeZ�dÕeZ�d×edz  �dØedz  �dÙedz  �d8e[dz  �d÷eYdz  �døeYdz  �dùedz  �dúedz  f$�dÿ„¦   «         �Z6 eJe@�j7        g¦  «        	 	 	 �dw�dãe�dÐe�dÑe�dÒedäe�dåe�dæe�dçe�dèeY�déeY�dÓe[�dÔeZ�dêe�dëe�d8e[dz  �d÷eYdz  �døeYdz  f"�d „¦   «         �Z8 eJe@�j9        g¦  «        	 	 	 	 	 �d—�dÐe�dÑe�dÒed_edz  �dedz  �dedz  �deYdz  �deYdz  �dÓe[�deY�dßeZ�d8e[dz  �dedz  �dedz  �deYdz  f�d	„¦   «         �Z: eJe@�j;        g¦  «        	 	 	 �d��dãe�dÐe�dÑe�dÒed_edz  �dedz  �dedz  �de�j<        �de�j<        �dåe�dÓe[�dêe�dëe�deY�d
eZ�d8e[dz  �deYdz  �deZf$�d„¦   «         �Z=	 	 	 	 �d˜dAej        deej        �dej        �dej        d_ej        dz  �dej        dz  daejŠ        dz  �deZf�d„�Z> eJe@�j?        jS        g¦  «        	 	 	 	 �d˜dAej        deej        �dej        �dej        d_ej        dz  �dej        dz  daejŠ        dz  �deZf�d„¦   «         �Z@	 	 	 	 	 �d™dAej        deej        �dedej                 �dede8         �dedej                 �dede8         d_ej        dz  daejŠ        dz  �dede9         dz  �dede9         dz  �deZf�d„�ZA eJe@�jB        jS        g¦  «        	 	 	 	 �d˜dAej        deej        �dedej                 �dede8         �dede9         �dedej                 �dede8         �dede9         d_ej        dz  �dejŠ        dz  �dedeY         dz  �deZf�d„¦   «         �ZC eJe@�jD        �jE        e@�jD        �jF        g¦  «         e0¦   «         �dy�d„¦   «         ¦   «         �ZG eJe@�jH        �jE        ¦  «        �dy�d„¦   «         �ZI eJe@�jJ        jS        e@�jJ        jT        g¦  «         e0¦   «         �duddHœ�d„¦   «         ¦   «         �ZK�d„ �ZL�d „ �ZM eJe@�jN        jS        e@�jO        jS        g¦  «        �ds�d!„¦   «         �ZN eJe@�jP        jS        e@�jQ        jS        g¦  «        �dt�d"„¦   «         �ZP eJe@�jR        jS        e@�jS        jS        g¦  «        	 	 �dt�dEe�d#eeYe�j<        z           �d$eeYe�j<        z           �d%e[dz  �d&e[dz  f
�d'„¦   «         �ZR eJe@�jT        jS        e@�jU        jS        g¦  «        �dw�d(„¦   «         �ZT eJe@�jV        jS        e@�jV        �jW        e@�jV        �jœ        e@�jV        �jX        g¦  «        �dš�d)„¦   «         �ZY�d*„ �ZZ eJe@�j[        jS        ¦  «        	 	 �dt�d+„¦   «         �Z\ eJe@�j]        jS        ¦  «        �d,„ ¦   «         �Z] eJe@�j^        jS        ¦  «        �d-„ ¦   «         �Z^ eJe@�j_        jS        ¦  «        �d.„ ¦   «         �Z_�d/„ �Z`�d0„ �Za eJe@�jb        jS        e@�jc        jS        g¦  «        �d‰�d1„¦   «         �Zd eJe@�je        jS        ¦  «        �d›�d2„¦   «         �Ze eJe@�jf        jS        ¦  «        �dœ�d3„¦   «         �Zg eJe@�jh        ¦  «         e0¦   «         	 �d��d4„¦   «         ¦   «         �Zi eJe@�jj        jS        e@�jj        �jœ        g¦  «         e0d<d=¦  «        �dŠ�d5„¦   «         ¦   «         �Zke�jl        �Zm�d6„ �Zn eJe@�jo        jS        ¦  «        �d7„ ¦   «         �Zo eJe@�jp        jS        ¦  «        �d8„ ¦   «         �Zp eJe@�jq        jS        ¦  «        �d9„ ¦   «         �Zr eJe@�js        jS        ¦  «        �d:„ ¦   «         �Zs eJe@�jt        j        e@�jt        �ju        g¦  «         e0¦   «         dd�d;œ�d<„¦   «         ¦   «         �Zv eJe@�jt        �j¥        e@�jt        �jw        g¦  «        dd�d;œdAe'�d=e�d>eZ�d?eZf�d@„¦   «         �Zx eJe@�jy        g¦  «         e0¦   «         �dž�dB„¦   «         ¦   «         �Zz eJe@�j{        jS        e@�j|        jS        e@�j}        jS        g¦  «        	 	 �dt�dC„¦   «         �Z~ eJe@�j        jS        e@�j€        jS        g¦  «        	 	 �dt�dD„¦   «         �Z� eJe@�j‚        jS        ¦  «        �dE„ ¦   «         �Z‚ eJe@�jƒ        jS        e@�jƒ        jT        g¦  «         e0¦   «         �dw�dF„¦   «         ¦   «         �Zƒ eJej?        j@        �j„        ¦  «        �dG„ ¦   «         �Z„ eJej?        j@        �j…        ¦  «        �dH„ ¦   «         �Z… eJe@�j†        ¦  «         e0¦   «         dddd�dIœ�dJ„¦   «         ¦   «         �Z‡�dK„ �Zˆ eJe@�j‰        ¦  «        �dL„ ¦   «         �ZŠ eJe@�j‹        ¦  «        	 �dŸ�dM„¦   «         �ZŒ eJe@�j�        ¦  «        	 �dŸ�dN„¦   «         �ZŽ eJe@�j�        ¦  «        	 �dŸ�dO„¦   «         �Z� eJe@�j‘        ¦  «         e0¦   «         dd�dPœ�dQ„¦   «         ¦   «         �Z’ eJe@�j“        ¦  «         e0¦   «         �dReYdAedef�dS„¦   «         ¦   «         �Z” eJe@�j•        ¦  «        dAef�dT„¦   «         �Z– eJe@�j—        ¦  «         e0dr¬è¦  «        dAedef�dU„¦   «         ¦   «         �Z— eJe@�j˜        ¦  «         e0¦   «         dAedef�dV„¦   «         ¦   «         �Z˜�dW„ �Z™	 	 	 	 	 �d™�dXe�dYe�dej        dz  �dej        dz  �dZedz  d_edz  �dej        dz  daejŠ        dz  �deZf�d[„�Zš eJe@�j›        ¦  «         e0¦   «         	 	 	 �dw�dXe�dYe�dZedz  d_edz  daejŠ        dz  def�d\„¦   «         ¦   «         �Zœ eJe@�j�        g¦  «        	 	 	 	 	 �d™�dXej        �dYej        �dej        �dej        �dZej        dz  d_ej        dz  �dej        dz  daejŠ        dz  �deZf�d]„¦   «         �Zž eJe@�jŸ        �j¥        ¦  «        �d �d^„¦   «         �Z  eJe@�j¡        ¦  «         e0¦   «         �d_edBeY�d`eZdef�da„¦   «         ¦   «         �Z¢ eJe@�j£        ¦  «         e0¦   «         �d3�db„¦   «         ¦   «         �Z¤ eJe@�j¥        ¦  «         e0¦   «         	 	 	 �d¡d]ed=e�dceY�ddeZ�deeZdef�df„¦   «         ¦   «         �Z¥ eJe@�j¦        jS        ¦  «        	 �d¢d<ed~ede         �dgedeY         �dhe[f�di„¦   «         �Z§�dj„ �Z¨ eJe@�j©        jS        ¦  «        	 	 	 	 �d£�dk„¦   «         �Zª�dl„ �Z« �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À        ¦  «         �dm„ �ZÁ eJe@�jÂ        ¦  «         e0¦   «         �dn„ ¦   «         ¦   «         �ZÂ eJe@�jÃ        ¦  «         e0¦   «         dg�doœ�dp„¦   «         ¦   «         �ZÃ eJe@�jÄ        ¦  «         e0¦   «         dg�doœ�dq„¦   «         ¦   «         �ZÄ �eÁe@�jÂ        ¦  «        �ZÅ �eÁe@�jÃ        ¦  «        �ZÆ �eÁe@�jÄ        ¦  «        �ZÇd dl1Zd d�lÈZd d�lÉZ�dr„ �ZÊ �eÊ¦   «          dS (¤  é    N)ÚCallableÚSequence)ÚEnum)Úwraps)ÚTypeVar)Ú	ParamSpec)ÚSymBoolÚSymFloatÚTensor)Ú_add_op_to_registryÚ_convert_out_paramsÚglobal_decomposition_tableÚ
meta_table)Ú
OpOverload)Ú_prim_elementwise_metaÚ$ELEMENTWISE_PRIM_TYPE_PROMOTION_KIND)ÚBoolLikeÚcorresponding_complex_dtypeÚcorresponding_real_dtypeÚelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚ	FloatLikeÚIntLikeÚmake_channels_last_strides_forÚmake_contiguous_strides_forÚNumberÚ
NumberTypeÚsuggest_memory_formatÚsym_minÚ
TensorLike)Ú_maybe_convert_to_dtypeÚ_maybe_resize_outÚ_resize_output_checkÚ_safe_copy_outÚout_wrapper)Ú_broadcast_shapesÚ_maybe_broadcast)Ú_config)ÚScalingTypeÚSwizzleType)Ú_pytreeÚ_TÚ_PÚatenÚIMPLÚMetaé   c                 ó   — | |z   dz
  |z  S ©Né   © ©ÚaÚbs     úW/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_meta_registrations.pyÚceil_divr:   :   s   € Ø�‰E�A‰I˜!ÑÐó    c                 ó   — | |z   dz
  |z  |z  S )z$Rounds up x to nearest multiple of yr4   r5   ©ÚxÚys     r9   Úround_upr@   >   s   € à�‰U�Q‰Y˜1Ñ Ñ!Ð!r;   Úreturnc                 ó   ‡ — ˆ fd„}|S )Nc                 ó\   •‡ — t          ‰ ¦  «        Š ˆ fd„}t          j        |‰¦  «         ‰ S )Nc                 ó4   •— t          t          | ‰¦  «         d S ©N)r   r   )ÚopÚfns    €r9   Úregisterz0register_meta.<locals>.wrapper.<locals>.registerG   s   ø€ Ý¥
¨B°Ñ3Ô3Ð3Ð3Ð3r;   )r   ÚpytreeÚ	tree_map_)rG   rH   rF   s   ` €r9   Úwrapperzregister_meta.<locals>.wrapperD   sD   øø€ Ý  Ñ$Ô$ˆð	4ð 	4ð 	4ð 	4ð 	4õ 	Ô˜ 2Ñ&Ô&Ð&Øˆ	r;   r5   )rF   rK   s   ` r9   Úregister_metarL   C   s#   ø€ ðð ð ð ð ð €Nr;   Útype_promotionc                 ó†   ‡— t          j        |d| iŽ\  }Šˆfd„|D ¦   «         }t          |Ž }t          |dt          j        iŽS )NÚtype_promotion_kindc                 ó0   •— g | ]}t          |‰¦  «        ‘ŒS r5   )r!   )Ú.0r>   Úresult_dtypes     €r9   ú
<listcomp>z$elementwise_meta.<locals>.<listcomp>Y   s$   ø€ ÐCÐCÐC¸Õ# A |Ñ4Ô4ÐCÐCÐCr;   rM   )Úutilsr   r'   r   r   ÚDEFAULT)rM   ÚargsÚ_rR   s      @r9   Úelementwise_metarX   P   sp   ø€ õ
 Ô.Ø	ðà*ðð �O€A€|ð DÐCÐCÐC¸dÐCÑCÔC€Dõ ˜TÐ"€Dõ "Ø	ðÝBÔJðð ð r;   c                 ó¶   — t           j        t           j        t           j        t           j        t           j        t           j        i}|                     | | ¦  «        S rE   )ÚtorchÚ	complex32ÚhalfÚcfloatÚfloatÚcdoubleÚdoubleÚget)ÚdtypeÚfrom_complexs     r9   ÚtoRealValueTyperd   d   s<   € åŒ�œÝŒ•e”kÝŒ•u”|ð€Lð
 ×Ò˜E 5Ñ)Ô)Ð)r;   c                 óx   ‡ ‡— t          t          ‰ g|¢R Ž ¦  «        Št          j        ‰‰ k    ˆˆ fd„¦  «         d S )Nc                  ó   •— d‰› d‰ › �S )Nzoutput with shape z# doesn't match the broadcast shape r5   )Úbroadcasted_shapeÚ
self_shapes   €€r9   ú<lambda>z)check_inplace_broadcast.<locals>.<lambda>q   s   ø€ Ðg ZÐgÐgÐTeÐgÐg€ r;   )Útupler&   rZ   Ú_check)rh   Ú
args_shaperg   s   ` @r9   Úcheck_inplace_broadcastrm   m   sX   øø€ ÝÕ/°
ÐH¸ZÐHÐHÐHÑIÔIÐÝ	„LØ˜ZÒ'ØgÐgÐgÐgÐgñô ð ð ð r;   Fc	                 óÐ  ‡ ‡‡‡‡	— t          ‰ t          j        ¦  «        r,t          j        ‰                      ¦   «         dk    d„ ¦  «         t          ‰t          j        ¦  «        r,t          j        ‰                     ¦   «         dk    d„ ¦  «         t          d„ ‰ ‰‰fD ¦   «         ¦  «        rVt          j        t          j        ¦   «         ¦  «        Š	‰€‰	ŠnAt          j        t          j	        ‰¦  «        ˆ	ˆfd„¦  «         n‰pt          j        ¦   «         Št          ‰t          j
        ¦  «        st          dt          ‰¦  «        › �¦  «        ‚t          j        t          ‰t          ¦  «        ˆˆ ˆfd„¦  «         t          ‰t          ¦  «        st          dt          ‰¦  «        › �¦  «        ‚t          j        ‰dk    d	„ ¦  «         t          j        ‰f‰|d
||¬¦  «        S )Nr   c                  ó   — dS ©Nz:linspace only supports 0-dimensional start and end tensorsr5   r5   r;   r9   ri   z(meta_linspace_logspace.<locals>.<lambda>…   ó   € ÐP€ r;   c                  ó   — dS rp   r5   r5   r;   r9   ri   z(meta_linspace_logspace.<locals>.<lambda>Š   rq   r;   c              3   ó@   K  — | ]}t          |t          ¦  «        V — Œd S rE   )Ú
isinstanceÚcomplex)rQ   Úargs     r9   ú	<genexpr>z)meta_linspace_logspace.<locals>.<genexpr>�   s,   è è € Ð
CÐ
C¨�:�c�7Ñ#Ô#Ð
CÐ
CÐ
CÐ
CÐ
CÐ
Cr;   c                  ó   •— d‰ › d‰› �S )Nzlinspace(): inferred dtype z& can't be safely cast to passed dtype r5   )Údefault_complex_dtyperb   s   €€r9   ri   z(meta_linspace_logspace.<locals>.<lambda>–   s   ø€ ÐzÐ6KÐzÐzÐsxÐzÐz€ r;   zdtype must be torch.dtype, got c                  óˆ   •— dt          ‰¦  «        j        › dt          ‰ ¦  «        j        › dt          ‰¦  «        j        › d�S )Nz4received an invalid combination of arguments - got (ú, ú))ÚtypeÚ__name__)ÚendÚstartÚstepss   €€€r9   ri   z(meta_linspace_logspace.<locals>.<lambda>    sY   ø€ ð HÝ€u�+„+ÔðHð HÝ˜s™)œ)Ô,ðHð HÝ04°U±´Ô0DðHð Hð H€ r;   zsteps must be IntLike, got c                  ó   — dS )Nz$number of steps must be non-negativer5   r5   r;   r9   ri   z(meta_linspace_logspace.<locals>.<lambda>¥   s   € Ð%K€ r;   Úmeta©rb   ÚlayoutÚdeviceÚ
pin_memoryÚrequires_grad)rt   rZ   r   rk   ÚdimÚanyrT   r   Úget_default_dtypeÚis_complex_dtyperb   ÚAssertionErrorr}   Ú_check_typer   Úempty)
r€   r   r�   Úbaserb   r†   r…   r‡   rˆ   ry   s
   ``` `    @r9   Úmeta_linspace_logspacer‘   u   s  øøøøø€ õ �%�œÑ&Ô&ð 
ÝŒØ�IŠI‰KŒK˜1ÒØPÐPñ	
ô 	
ð 	
õ �#•u”|Ñ$Ô$ð 
ÝŒØ�GŠG‰IŒI˜ŠNØPÐPñ	
ô 	
ð 	
õ
 Ð
CÐ
C°°s¸EÐ/BÐ
CÑ
CÔ
CÑCÔCð 3Ý %Ô AÝÔ#Ñ%Ô%ñ!
ô !
Ðð ˆ=Ø)ˆEˆEåŒLÝÔ& uÑ-Ô-ØzÐzÐzÐzÐzñô ð ð ð
 Ð2�Ô0Ñ2Ô2ˆÝ�e�Uœ[Ñ)Ô)ð NÝÐL½tÀE¹{¼{ÐLÐLÑMÔMÐMõ 
ÔÝ�5�'Ñ"Ô"ð	Hð 	Hð 	Hð 	Hð 	Hð 	Hñô ð õ
 �e�WÑ%Ô%ð JÝÐH½4À¹;¼;ÐHÐHÑIÔIÐIÝ	„L�˜!’ÐKÐKÑLÔLÐLåŒ;Ø	ˆØØØØØ#ðñ ô ð r;   c                 ó  ‡— t          j        ‰j        t           j        k    ˆfd„¦  «         t          j        |                      ¦   «         dk    o‰                     ¦   «         dk     d„ ¦  «         |                      ‰j        ¦  «        S )Nc                  ó   •— d‰ j         › �S )Nz2take(): Expected a long tensor for index, but got ©rb   ©Úindexs   €r9   ri   zmeta_take.<locals>.<lambda>·   s   ø€ ÐRÀUÄ[ÐRÐR€ r;   r   c                  ó   — dS )Nz*take(): tried to take from an empty tensorr5   r5   r;   r9   ri   zmeta_take.<locals>.<lambda>¼   s   € Ð<€ r;   )rZ   rk   rb   ÚlongÚ_check_indexÚnumelÚ	new_emptyÚshape)Úselfr–   s    `r9   Ú	meta_takerž   ±   s‰   ø€ õ 
„LØŒ•u”zÒ!ØRÐRÐRÐRñô ð õ
 
ÔØ�ZŠZ‰\Œ\˜QÒÐ5 5§;¢;¡=¤=°AÒ#5Ð6Ø<Ð<ñô ð ð �>Š>˜%œ+Ñ&Ô&Ð&r;   c                 ó*   — t          j        | ¦  «        S rE   ©rZ   Ú
empty_like©r�   Ú	generators     r9   Úmeta__standard_gammar¤   Á   ó   € õ Ô˜DÑ!Ô!Ð!r;   ÚsrcÚ	embed_dimÚ	num_headsÚ
qkv_weightÚqkv_biasÚproj_weightÚ	proj_biasÚuse_geluÚ
norm_firstÚepsÚnorm_weight_1Únorm_bias_1Únorm_weight_2Únorm_bias_2Úffn_weight_1Ú
ffn_bias_1Úffn_weight_2Ú
ffn_bias_2ÚmaskÚ	mask_typec                 ó®   — | j         rt          d¦  «        ‚|                      ¦   «         dk    r|                      ¦   «         S t	          j        | ¦  «        S )NzR_transformer_encoder_layer_fwd fake implementation does not support nested tensorsr   )Ú	is_nestedÚNotImplementedErrorrš   ÚclonerZ   r¡   )r¦   r§   r¨   r©   rª   r«   r¬   r­   r®   r¯   r°   r±   r²   r³   r´   rµ   r¶   r·   r¸   r¹   s                       r9   Ú#meta__transformer_encoder_layer_fwdr¾   Ç   sW   € ð: „}ð 
Ý!Ø`ñ
ô 
ð 	
ð ‡y‚y�{„{�aÒÐØ�yŠy‰{Œ{ÐÝÔ˜CÑ Ô Ð r;   éÿÿÿÿ©r‰   c                óJ  ‡ ‡‡— ‰ j         }‰j         }t          j        ||k    d„ ¦  «         t          j        ‰                      ‰¦  «        dk    o‰                     ‰¦  «        dk    ˆˆˆ fd„¦  «         t	          ‰ j        ‰j        ¦  «        }‰                      |¦  «        S )Nc                  ó   — dS )Nz=linalg.cross: inputs must have the same number of dimensions.r5   r5   r;   r9   ri   zlinalg_cross.<locals>.<lambda>ô   ó   € ÐO€ r;   r1   c                  óf   •— d‰ › d‰                      ‰ ¦  «        › d‰                      ‰ ¦  «        › �S )Nzlinalg.cross: inputs dimension z must have length 3. Got ú and ©Úsize)r‰   Úotherr�   s   €€€r9   ri   zlinalg_cross.<locals>.<lambda>ø   sG   ø€ ð:¨cð :ð :Ø—9’9˜S‘>”>ð:ð :Ø(-¯
ª
°3©¬ð:ð :ð r;   )ÚndimrZ   rk   rÇ   r&   rœ   r›   )r�   rÈ   r‰   Úx_dÚy_dÚ	out_shapes   ```   r9   Úlinalg_crossrÍ   í   s·   øøø€ ð Œ)€CØ
Œ*€CÝ	„LØˆsŠ
ØOÐOñô ð õ 
„LØ�	Š	�#‰Œ˜!ÒÐ4 §
¢
¨3¡¤°1Ò 4ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ " $¤*¨e¬kÑ:Ô:€IØ�>Š>˜)Ñ$Ô$Ð$r;   c                 ó‚   — t          | d¦  «         t          | d¦  «         t          j        | t          j        ¬¦  «        S )Nzlinalg.matrix_exp©Úmemory_format)ÚsquareCheckInputsÚcheckFloatingOrComplexrZ   r¡   Úcontiguous_format©r�   s    r9   Úlinalg_matrix_exprÕ     s?   € õ �dÐ/Ñ0Ô0Ð0Ý˜4Ð!4Ñ5Ô5Ð5ÝÔ˜DµÔ0GÐHÑHÔHÐHr;   ÚvaluesÚindicesc                 ó  — t          j        | j        | j        | j        ¬¦  «        }t          j        | j        | j        t           j        ¬¦  «        }|                      ¦   «         dk    r | j        dk    rt          || j        ¦  «         ||fS )N©r†   rb   r   )	rZ   r�   rœ   r†   rb   Úint64rš   rÉ   Úmaybe_wrap_dim)r�   r‰   rÖ   r×   s       r9   Ú	cummaxminrÜ   	  su   € õ
 Œ[˜œ¨D¬K¸t¼zÐJÑJÔJ€FÝŒk˜$œ*¨T¬[ÅÄÐLÑLÔL€GØ‡z‚z�|„|�qÒÐ˜TœY¨!š^˜^å�s˜DœIÑ&Ô&Ð&Ø�7ˆ?Ðr;   c                 ól   — t          || j        ¦  «         t          j        | t          j        ¬¦  «        S ©NrÏ   )rÛ   rÉ   rZ   r¡   rÓ   )r�   r‰   s     r9   Úlogcumsumexprß     s/   € õ �3˜œ	Ñ"Ô"Ð"ÝÔ˜DµÔ0GÐHÑHÔHÐHr;   c                óº  ‡‡— |j         }t          |¦  «        }||z
  }t          t          |¦  «        ¦  «        }d„ t          |¦  «        D ¦   «         Š|D ]}	d‰|	<   Œˆfd„|D ¦   «         }
|
t          |¦  «        z   }t          |
¦  «        }|                     ¦   «         Š|d |…         }|                     ˆfd„d¬¦  «         |||d …         z   }|                     |¦  «        }dgt          |j        |d …         ¦  «        z   }|                     |¦  «        }| 	                    d¦  «        }||d<   t          |¦  «        }t          t          |¦  «        ¦  «        D ]}|||                  ||dz   <   Œ|  
                    |t          j        ¬	¦  «         d
„ t          |¦  «        D ¦   «         }d}|dz
  }|dk    r=||                      d¦  «        z  |||         <   ||||                  z  }|dz  }|dk    °=t          ||¦  «        D ]&}|                      d||z
  z   ¦  «        |||         <   Œ'|                      |||                      ¦   «         ¦  «         | S )Nc                 ó   — g | ]}d ‘ŒS ©Fr5   ©rQ   rW   s     r9   rS   z_exec_fft.<locals>.<listcomp>+  s   € Ð5Ð5Ð5 A˜%Ð5Ð5Ð5r;   Tc                 ó$   •— g | ]}‰|         °
|‘ŒS r5   r5   )rQ   ÚdÚis_transformed_dims     €r9   rS   z_exec_fft.<locals>.<listcomp>0  s$   ø€ Ð@Ð@Ð@�!Ð*<¸QÔ*?Ð@ˆAÐ@Ð@Ð@r;   c                 ó   •— ‰|          S rE   r5   )r>   Úself_stridess    €r9   ri   z_exec_fft.<locals>.<lambda>6  s   ø€ ˜<¨œ?€ r;   ©ÚkeyÚreverser¿   r   r4   rÏ   c                 ó   — g | ]}d ‘ŒS ©r   r5   rã   s     r9   rS   z_exec_fft.<locals>.<listcomp>F  s   € Ð*Ð*Ð*˜�1Ð*Ð*Ð*r;   )rÉ   ÚlenÚlistÚrangeÚstrideÚsortÚpermuterœ   ÚreshaperÇ   Úresize_rZ   rÓ   Úas_strided_Ústorage_offset)Úoutr�   Ú	out_sizesr‰   ÚforwardrÉ   Úsignal_ndimÚ
batch_dimsÚdim_permuterå   ÚleftÚ	batch_endÚtmpÚinputÚbatched_sizesÚ
batch_sizeÚbatched_out_sizesÚiÚout_stridesÚbatch_numelræ   rè   s                       @@r9   Ú	_exec_fftr  #  s‹  øø€ ØŒ9€DÝ�c‘(”(€KØ˜Ñ#€Jõ •u˜T‘{”{Ñ#Ô#€Kà5Ð5­¨t©¬Ð5Ñ5Ô5ÐØð %ð %ˆØ $Ð˜1ÑÐð AÐ@Ð@Ð@�{Ð@Ñ@Ô@€DØ�˜c™œÑ"€KÝ�D‘	”	€Ià—;’;‘=”=€LØ
�j�y�jÔ
!€CØ‡H‚HÐ*Ð*Ð*Ð*°D€HÑ9Ô9Ð9Ø˜ I J JÔ/Ñ/€KØ�LŠL˜Ñ%Ô%€Eð �D�4 ¤¨J¨K¨KÔ 8Ñ9Ô9Ñ9€MØ�MŠM˜-Ñ(Ô(€Eà—’˜A‘”€JØ!€M�!ÑÝ˜]Ñ+Ô+ÐÝ•3�s‘8”8‰_Œ_ð 5ð 5ˆØ#,¨S°¬VÔ#4Ð˜!˜a™%Ñ Ð Ø‡K‚KÐ!µÔ1H€KÑIÔIÐIð +Ð*�e D™kœkÐ*Ñ*Ô*€KØ€KØ�Q‰€AØ
ˆqŠ&ˆ&Ø&1°C·J²J¸q±M´MÑ&Aˆ�K ”NÑ#Ø�y ¨Q¤Ô0Ñ0ˆØ	ˆQ‰ˆð ˆqŠ&ˆ&õ �:˜tÑ$Ô$ð Gð GˆØ&)§j¢j°°a¸*±nÑ1EÑ&FÔ&Fˆ�K ”NÑ#Ð#Ø‡O‚O�I˜{¨C×,>Ò,>Ñ,@Ô,@ÑAÔAÐAà€Jr;   r�   r‰   Úexclude_lastc                 óÐ   ‡— t          |¦  «        }|                      ¦   «         Št          |¦  «        t          |¦  «        z
  }t	          |d |…         ˆfd„d¬¦  «        |d |…<   |S )Nc                 ó   •— ‰|          S rE   r5   )r  rè   s    €r9   ri   z_sort_dims.<locals>.<lambda>Y  s   ø€ ¨°a¬€ r;   Tré   )rï   rñ   rî   ÚintÚsorted)r�   r‰   r	  Úsorted_dimsr   rè   s        @r9   Ú
_sort_dimsr  T  st   ø€ Ý�s‘)”)€KØ—;’;‘=”=€LÝ
ˆkÑ
Ô
�S Ñ.Ô.Ñ
.€CÝØ�D�S�DÔÐ8Ð8Ð8Ð8À$ðñ ô €K���Ñð Ðr;   c                 ó„  ‡
— t          j        | j        j        ¦  «         |s|                      ¦   «         S t          | ¦  «        dk    rJt           j        j                             ¦   «         s'|  	                    |  
                    ¦   «         ¦  «        S |  
                    ¦   «         }|  	                    |¦  «        }t          | ¦  «        dk    r$t          | |¦  «        }t          || |||¬¦  «        S t          |¦  «        }| }	 |                     ¦   «         Š
|                     ˆ
fd„d¬¦  «         t!          t"          t%          |¦  «        ¦  «        }|t%          |¦  «        |z
  d …         }	t          ||||	|¬¦  «         |d t%          |¦  «        |z
  …         }|s|S || u r|}|  	                    |¦  «        }n||}}Œ½)NÚcpuÚcuda©rú   Tc                 ó   •— ‰|          S rE   r5   ©r  Ústridess    €r9   ri   zmeta_fft_c2c.<locals>.<lambda>v  s   ø€  w¨q¤z€ r;   ré   )rZ   rk   rb   Ú
is_complexr½   Údevice_hintÚbackendsÚmklÚis_availabler›   rÇ   r  r  rï   rñ   rò   ÚminÚcufft_max_ndimrî   )r�   r‰   Únormalizationrú   rù   Úoutputr  Úworking_tensorÚmax_dimsÚ	last_dimsr  s             @r9   Úmeta_fft_c2cr#  `  s¿  ø€ õ 
„L�”Ô&Ñ'Ô'Ð'Øð Ø�zŠz‰|Œ|Ðå�4ÑÔ˜EÒ!Ð!­%¬.Ô*<×*IÒ*IÑ*KÔ*KÐ!Ø�~Š~˜dŸiši™kœkÑ*Ô*Ð*à—	’	‘”€IØ�^Š^˜IÑ&Ô&€FÝ�4ÑÔ˜FÒ"Ð"Ý   sÑ+Ô+ˆÝ˜  y°+ÀwÐOÑOÔOÐOõ �s‘)”)€KØ€Nð<Ø ×'Ò'Ñ)Ô)ˆØ×ÒÐ1Ð1Ð1Ð1¸4ÐÑ@Ô@Ð@Ý•~¥s¨;Ñ'7Ô'7Ñ8Ô8ˆØ¥ KÑ 0Ô 0°8Ñ ;Ð =Ð =Ô>ˆ	å�&˜.¨)°YÈÐPÑPÔPÐPØ!Ð"?¥C¨Ñ$4Ô$4°xÑ$?Ð"?Ô@ˆàð 	ØˆMà˜TÐ!Ð!Ø#ˆNØ—^’^ IÑ.Ô.ˆFˆFà%3°V�NˆFð!<r;   c                 ó�   — t          | ¦  «        t          k    s+t          | ¦  «        dk    r| d         dk    r| d         dk    rdS dS )Né   r   r4   FT)rî   r  rÀ   s    r9   Úuse_optimized_cufft_pathr&  Š  sD   € Ý
ˆ3�x„x•.Ò Ð ¥S¨¡X¤X°¢] ]°s¸1´vÀ²{°{ÀsÈ1ÄvÐQRÂ{À{Øˆuàˆtr;   c                 ó$  ‡— t          j        | j        j        ¦  «         t	          |                      ¦   «         ¦  «        }t	          |¦  «        }|d         }||         dz  dz   }t	          |¦  «        }|||<   |r|||<   t          | ¦  «        dk    st          | ¦  «        dk    �rÅ|                      |t          j	        | j        ¦  «        ¬¦  «        }	| }
t          | ¦  «        dk    r%t          |¦  «        rt          |	|
||d¬¦  «         �nt          |¦  «        dk    r|n|}t          |	|
||gd¬¦  «         t          |¦  «        dk    r.|                      |t          j	        | j        ¦  «        ¬¦  «        }
|d d…         }|rž|
|	}
}	|
                     ¦   «         Š|                     ˆfd	„d¬
¦  «         t          t           t          |¦  «        ¦  «        }|t          |¦  «        |z
  d …         }t          |	|
||d¬¦  «         |d t          |¦  «        |z
  …         }|°ž|sB|	                     |¦  «        ||         k    r#|
                     |t           j        ¬¦  «         |
}	|	S t           j        j                             ¦   «         rTt-          | |d¬¦  «        }|                      |t          j	        | j        ¦  «        ¬¦  «        }	t          |	| ||d¬¦  «        S |                      |t          j	        | j        ¦  «        ¬¦  «        S )Nr¿   r%  r4   r  Úxpur”   Tr  c                 ó   •— ‰|          S rE   r5   r  s    €r9   ri   zmeta_fft_r2c.<locals>.<lambda>¸  s   ø€  '¨!¤*€ r;   ré   rÏ   )r	  )rZ   rk   rb   Úis_floating_pointrï   rÇ   r  r›   rT   r   r&  r  rî   rñ   rò   r  r  rõ   rÓ   r  r  r  r  )r�   r‰   r  ÚonesidedÚinput_sizesrù   Úlast_dimÚlast_dim_halfsizeÚonesided_sizesr  r   Útarget_sizesr  r!  r"  r  s                  @r9   Úmeta_fft_r2cr1  ‘  sR  ø€ õ 
„L�”Ô-Ñ.Ô.Ð.Ý�t—y’y‘{”{Ñ#Ô#€KÝ�[Ñ!Ô!€IØ�2Œw€HØ# HÔ-°Ñ2°QÑ6ÐÝ˜+Ñ&Ô&€NØ0€N�8Ñàð 0Ø/ˆ	�(Ñå�4ÑÔ˜FÒ"Ð"¥k°$Ñ&7Ô&7¸5Ò&@Ñ&@ð —’Ø�UÔ>¸t¼zÑJÔJð  ñ 
ô 
ˆð ˆÝ�tÑÔ Ò&Ð&Õ+CÀCÑ+HÔ+HÐ&Ý�f˜n¨i¸ÀdÐKÑKÔKÐKÑKõ ),¨C©¬°Aª¨˜9˜9¸>ˆLÝ�f˜n¨l¸X¸JÐPTÐUÑUÔUÐUÝ�3‰xŒx˜!Š|ˆ|Ø!%§¢Ø¥UÔ%FÀtÄzÑ%RÔ%Rð "0ñ "ô "�ð
 ˜c˜r˜cœ(ˆKØð IØ)7¸˜�Ø(×/Ò/Ñ1Ô1�Ø× Ò Ø,Ð,Ð,Ð,°dð !ñ ô ð õ �~­s°;Ñ/?Ô/?Ñ@Ô@�Ø'­¨KÑ(8Ô(8¸8Ñ(CÐ(EÐ(EÔF�	ÝØ˜N¨N¸IÈtðñ ô ð ð *Ð*G­C°Ñ,<Ô,<¸xÑ,GÐ*GÔH�ð ð Ið ð 	(Ø�{Š{˜8Ñ$Ô$¨	°(Ô(;Ò;Ð;Ø×&Ò& yÅÔ@WÐ&ÑXÔXÐXØ'�àˆå	ŒÔ	×	(Ò	(Ñ	*Ô	*ð 
å   s¸Ð>Ñ>Ô>ˆØ—’Ø�UÔ>¸t¼zÑJÔJð  ñ 
ô 
ˆõ ˜  y°+ÀtÐLÑLÔLÐLð �~Š~Ø�UÔ>¸t¼zÑJÔJð ñ 
ô 
ð 	
r;   )r£   c                óH   — t          |t          j        | g¦  «        ¦  «        S rE   )r"   rZ   ÚSize)Únr£   rø   s      r9   Úmeta_randpermr5  Ö  s   € å˜S¥%¤*¨a¨S¡/¤/Ñ2Ô2Ð2r;   ©rb   r…   r†   r‡   c                ó4   — t          j        | ||||¬¦  «        S ©Nr6  ©rZ   r�   )r4  rb   r…   r†   r‡   s        r9   Úmeta_randperm_defaultr:  Û  s(   € õ Œ;Ø	�˜v¨fÀðñ ô ð r;   c                óv   ‡ ‡— dŠt          j        ‰ ‰k    ˆ ˆfd„¦  «         t          j        |||||¬¦  «        S )Nr   c                  ó   •— d‰› d‰ › �S ©Nz:random_ expects 'from' to be less than 'to', but got from=z >= to=r5   ©ÚhighÚlows   €€r9   ri   zmeta_randint.<locals>.<lambda>÷  ó   ø€ Ð_ÈSÐ_Ð_ÐY]Ð_Ð_€ r;   r6  ©rZ   rk   r�   )r?  rÇ   rb   r…   r†   r‡   r@  s   `     @r9   Úmeta_randintrC  é  s[   øø€ ð €CÝ	„LØˆsŠ
Ø_Ð_Ð_Ð_Ð_ñô ð õ Œ;Ø�E &°ÀJðñ ô ð r;   c                ór   ‡ ‡— t          j        ‰‰ k    ˆˆ fd„¦  «         t          j        |||||¬¦  «        S )Nc                  ó   •— d‰› d‰ › �S r=  r5   r>  s   €€r9   ri   z"meta_randint_low.<locals>.<lambda>  rA  r;   r6  rB  )r@  r?  rÇ   rb   r…   r†   r‡   s   ``     r9   Úmeta_randint_lowrF  þ  sV   øø€ õ 
„LØˆsŠ
Ø_Ð_Ð_Ð_Ð_ñô ð õ Œ;Ø�E &°ÀJðñ ô ð r;   c                ó4   — t          j        | ||||¬¦  «        S r8  r9  )rÇ   rb   r…   r†   r‡   s        r9   Úmeta_rand_defaultrH    s(   € õ Œ;Ø�E &°ÀJðñ ô ð r;   c                 óf  ‡ ‡— t          j        ‰                      ¦   «         dk    o‰ j        d         dk    ˆ fd„¦  «         t          j        ‰ j        t           j        k    ˆ fd„¦  «         t          j        ‰dk    ˆfd„¦  «         ‰ j        d d…         }‰                      ‰g|¢d‘R ¦  «        S )Nr4   r¿   r%  c                  ó   •— d‰ j         › �S )Nz>_philox_key_split: key must have shape (*batch, 2), got shape ©rœ   ©rê   s   €r9   ri   z'meta_philox_key_split.<locals>.<lambda>  s   ø€ Ð\ÐQTÔQZÐ\Ð\€ r;   c                  ó   •— d‰ j         › �S )Nz3_philox_key_split: key must have dtype uint64, got r”   rL  s   €r9   ri   z'meta_philox_key_split.<locals>.<lambda>#  s   ø€ ÐQÀcÄiÐQÐQ€ r;   r   c                  ó   •— d‰ › �S )Nz4_philox_key_split: num_splits must be positive, got r5   )Ú
num_splitss   €r9   ri   z'meta_philox_key_split.<locals>.<lambda>'  s   ø€ ÐSÀzÐSÐS€ r;   )rZ   rk   r‰   rœ   rb   Úuint64r›   )rê   rO  Úbatch_sizess   `` r9   Úmeta_philox_key_splitrR    sÍ   øø€ å	„LØ�Š‰	Œ	�QŠÐ-˜3œ9 Rœ=¨AÒ-Ø\Ð\Ð\Ð\ñô ð õ 
„LØŒ	•U”\Ò!ØQÐQÐQÐQñô ð õ 
„LØ�QŠØSÐSÐSÐSñô ð ð ”)˜C˜R˜C”.€KØ�=Š=˜*Ð6 {Ð6°AÐ6Ð6Ñ7Ô7Ð7r;   c                 ó   ‡ — t          j        ‰                      ¦   «         dk    o‰ j        d         dk    ˆ fd„¦  «         t          j        ‰ j        t           j        k    ˆ fd„¦  «         t          j        ‰ ¦  «        S )Nr4   r¿   r%  c                  ó   •— d‰ j         › �S )Nz@_philox_key_fold_in: key must have shape (*batch, 2), got shape rK  rL  s   €r9   ri   z)meta_philox_key_fold_in.<locals>.<lambda>1  s   ø€ Ð^ÐSVÔS\Ð^Ð^€ r;   c                  ó   •— d‰ j         › �S )Nz5_philox_key_fold_in: key must have dtype uint64, got r”   rL  s   €r9   ri   z)meta_philox_key_fold_in.<locals>.<lambda>5  s   ø€ ÐSÈÌ	ÐSÐS€ r;   )rZ   rk   r‰   rœ   rb   rP  r¡   )rê   Údatas   ` r9   Úmeta_philox_key_fold_inrW  -  sƒ   ø€ å	„LØ�Š‰	Œ	�QŠÐ-˜3œ9 Rœ=¨AÒ-Ø^Ð^Ð^Ð^ñô ð õ 
„LØŒ	•U”\Ò!ØSÐSÐSÐSñô ð õ Ô˜CÑ Ô Ð r;   c           	      ó  ‡ ‡‡‡— t          j        ‰j        j        ˆ ˆfd„¦  «         t          j        ‰j        t           j        k    ˆˆ fd„¦  «         t          j        ‰j        ‰j        k    ˆˆ ˆfd„¦  «         t          j        ‰                     ¦   «         dk    o‰j        d         dk    ˆˆ fd„¦  «         ‰                     ¦   «         dk    r¬t          j        ‰                     ¦   «         ‰                     ¦   «         dz   k    ˆˆ ˆfd„¦  «         ‰j        d ‰                     ¦   «         …         Št          j        t          d	„ t          ‰‰j        ¦  «        D ¦   «         ¦  «        ˆˆ ˆfd
„¦  «         d S d S )Nc                  ó   •— ‰ › d‰j         › �S )Nz,: self must be a floating point tensor, got r”   )Úop_namer�   s   €€r9   ri   z1_check_philox_distribution_args.<locals>.<lambda>=  s   ø€ �7ÐTÐTÈÌ
ÐTÐT€ r;   c                  ó   •— ‰› d‰ j         › �S )Nz": key must have dtype uint64, got r”   ©rê   rZ  s   €€r9   ri   z1_check_philox_distribution_args.<locals>.<lambda>A  s   ø€ �7ÐIÐI¸c¼iÐIÐI€ r;   c                  ó,   •— ‰› d‰j         › d‰ j         › �S )Nz/: self and key must be on the same device, got rÅ   ©r†   ©rê   rZ  r�   s   €€€r9   ri   z1_check_philox_distribution_args.<locals>.<lambda>E  s3   ø€ Øð 2ð 2Ø”;ð2ð 2Ø%(¤Zð2ð 2ð r;   r4   r¿   r%  c                  ó   •— ‰› d‰ j         › �S )Nz5: key must have shape (2,) or (*batch, 2), got shape rK  r\  s   €€r9   ri   z1_check_philox_distribution_args.<locals>.<lambda>L  s   ø€ ØÐXÐXÈSÌYÐXÐXð r;   c                  ó,   •— ‰› d‰ j         › d‰j         › �S )Nz?: batched key must have ndim == output ndim + 1, got key shape z with output shape rK  r_  s   €€€r9   ri   z1_check_philox_distribution_args.<locals>.<lambda>S  s9   ø€ Øð Lð LØ!$¤ðLð LØ?C¼zðLð Lð r;   c              3   ó4   K  — | ]\  }}|d k    p||k    V — ŒdS ©r4   Nr5   )rQ   ÚksÚsss      r9   rw   z2_check_philox_distribution_args.<locals>.<genexpr>Z  s3   è è € ÐMÐM©¨¨B��a’Ð#˜2 š8ÐMÐMÐMÐMÐMÐMr;   c                  ó<   •— ‰› dt          ‰ ¦  «        › d‰j        › �S )Nz: key batch shape z( is not broadcastable with output shape ©rï   rœ   )Ú	key_batchrZ  r�   s   €€€r9   ri   z1_check_philox_distribution_args.<locals>.<lambda>[  s<   ø€ Øð Gð G­d°9©o¬oð Gð GØ:>¼*ðGð Gð r;   )
rZ   rk   rb   r*  rP  r†   r‰   rœ   ÚallÚzip)rZ  r�   rê   rh  s   ```@r9   Ú_check_philox_distribution_argsrk  :  sÔ  øøøø€ Ý	„LØŒ
Ô$ØTÐTÐTÐTÐTñô ð õ 
„LØŒ	•U”\Ò!ØIÐIÐIÐIÐIñô ð õ 
„LØŒ�s”zÒ!ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�Š‰	Œ	�QŠÐ-˜3œ9 Rœ=¨AÒ-ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ‡w‚w�y„y�1‚}€}ÝŒØ�GŠG‰IŒI˜Ÿš™œ a™Ò'ðð ð ð ð ð ñ	
ô 	
ð 	
ð ”I˜l §¢¡
¤
˜lÔ+ˆ	ÝŒÝÐMÐMµ#°iÀÄÑ2LÔ2LÐMÑMÔMÑMÔMðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð 	
ð €}r;   ç        ç      ð?c                 ó(   — t          d| |¦  «         | S )NÚ_philox_normal_©rk  )r�   rê   ÚmeanÚstds       r9   Úmeta_philox_normal_rs  b  s   € å#Ð$5°t¸SÑAÔAÐAØ€Kr;   c                 ó(   — t          d| |¦  «         | S )NÚ_philox_uniform_rp  )r�   rê   r@  r?  s       r9   Úmeta_philox_uniform_rv  h  s   € å#Ð$6¸¸cÑBÔBÐBØ€Kr;   r  Úlastdimc                 ó   — t          j        | j        j        ¦  «         t	          | ¦  «        dk    �r t          |                      ¦   «         ¦  «        }|||d         <   |                      |t          | j        ¦  «        ¬¦  «        }t          |¦  «        r2t          ||                      t           j        ¬¦  «        ||d¬¦  «        S t          |¦  «        dk    rt          | |d d…         dd¬¦  «        }n |                      t           j        ¬¦  «        }t          ||||d         gd¬¦  «        S t           j        j                             ¦   «         r¥| }t          |¦  «        dk    r'|d d…         }t          | ||d¬¦  «        }|dd …         }t          |                     ¦   «         ¦  «        }|||d         <   |                      |t          | j        ¦  «        ¬¦  «        }	t          |	|||d¬¦  «        S t          |                      ¦   «         ¦  «        }|||d         <   |                      |t          | j        ¦  «        ¬¦  «        S )	Nr  r¿   r”   rÏ   Fr  r4   r   )rZ   rk   rb   r  r  rï   rÇ   r›   rd   r&  r  r½   rÓ   rî   r#  r  r  r  )
r�   r‰   r  rw  rù   r  Útempr  Úc2c_dimsrø   s
             r9   Úmeta_fft_c2rr{  n  s  € õ 
„L�”Ô&Ñ'Ô'Ð'å�4ÑÔ˜FÒ"Ñ"Ý˜Ÿš™œÑ%Ô%ˆ	Ø$ˆ	�#�b”'Ñà—’ 	µÀÄÑ1LÔ1L�ÑMÔMˆå# CÑ(Ô(ð 	PÝØØ—
’
­Ô)@�
ÑAÔAØØØðñ ô ð õ �3‰xŒx˜!Š|ˆ|Ý# D¨#¨c¨r¨c¬(°A¸uÐEÑEÔE��à—z’zµÔ0G�zÑHÔH�Ý˜V T¨9°s¸2´w°iÈÐOÑOÔOÐOå	ŒÔ	×	(Ò	(Ñ	*Ô	*ð LàˆÝˆs‰8Œ8�aŠ<ˆ<Ø˜3˜B˜3”xˆHÝ   x°ÈÐNÑNÔNˆEØ�b�c�c”(ˆCå˜Ÿš™œÑ&Ô&ˆ	Ø$ˆ	�#�b”'ÑØ�nŠn˜Y­o¸d¼jÑ.IÔ.IˆnÑJÔJˆÝ˜˜e Y°¸UÐCÑCÔCÐCõ ˜Ÿš™œÑ%Ô%ˆ	Ø$ˆ	�#�b”'ÑØ�~Š~˜i­¸t¼zÑ/JÔ/Jˆ~ÑKÔKÐKr;   c                 ó0  — ddl m}  || ¦  «        s't          j        | ¦  «        dk    rt	          d¦  «        ‚t          |t          ¦  «        rH|                     | |¦  «        }t          j         	                    ||  
                    ¦   «         ¦  «         | S )Nr   ©Úfree_unbacked_symbolsr4   zQmore than one element of the written-to tensor refers to a single memory location)Ú%torch.fx.experimental.symbolic_shapesr~  rZ   Ú_debug_has_internal_overlapÚRuntimeErrorrt   r   ÚtoÚ_refsÚexpandrÇ   )r�   r¦   Únon_blockingr~  Úintermediates        r9   Ú
meta_copy_r‡  �  s¦   € ð LÐKÐKÐKÐKÐKð "Ð! $Ñ'Ô'ð
Ý,1Ô,MÈdÑ,SÔ,SÐWXÒ,XÐ,XåØ_ñ
ô 
ð 	
õ �#•vÑÔð 6Ø—v’v˜d LÑ1Ô1ˆõ 	Œ×Ò˜<¨¯ª©¬Ñ5Ô5Ð5Ø€Kr;   c                 ó<  — t          |                      ¦   «         ¦  «        }t          |                      ¦   «         ¦  «        }||                      ¦   «         k    rdn||         ||         z  }|                     |d¦  «         |                     ||¦  «         ||fS r3   )rï   rÇ   rñ   r‰   Úinsert)Útensorr‰   Úresult_sizesÚresult_stridesÚ
new_strides        r9   ÚinferUnsqueezeGeometryrŽ  »  sŽ   € Ý˜Ÿš™œÑ&Ô&€LÝ˜&Ÿ-š-™/œ/Ñ*Ô*€Nà˜VŸZšZ™\œ\Ò)Ð)��¨|¸CÔ/@À>ÐRUÔCVÑ/V€Jà×Ò˜˜QÑÔÐà×Ò˜#˜zÑ*Ô*Ð*Ø˜Ð'Ð'r;   c                 ó¢   — t          ||                      ¦   «         dz   ¦  «        }t          | |¦  «        \  }}|                      ||¦  «         | S r3   )rÛ   r‰   rŽ  rö   )r�   r‰   Úg_sizesÚ	g_stridess       r9   Úmeta_unsqueeze_r’  Ç  sL   € å
˜˜dŸhšh™jœj¨1™nÑ
-Ô
-€CÝ/°°cÑ:Ô:Ñ€GˆYØ×Ò�W˜iÑ(Ô(Ð(Ø€Kr;   r  ÚweightÚ_metaÚbiasÚ_activation_optÚ	out_dtypec                 óv  — t          | j        ¦  «        }|�g|                     d¦  «        |                     d¦  «        k    r;t          d|                     d¦  «        › d|                     d¦  «        › �¦  «        ‚|                     d¦  «        |                      d¦  «        dz  k    r>t          d|                     d¦  «        › d|                      d¦  «        dz  › �¦  «        ‚|                     d¦  «        |d<   t	          | j        ¦  «        dk    r%t          d	t	          | j        ¦  «        › d
�¦  «        ‚d|                      d¦  «        f}|�?| j        t          j        k    r|t          j        k    st          d| j        › d|› �¦  «        ‚|  	                    |||€| j        n|¬¦  «        }|S )Nr   z%output size mismatch: weight.size(0)=ú != bias.size(0)=r4   r¿   r%  zweight.size(1)=z != input.size(-1)/2=z0we can only handle the squashed input case, got úD inputzKout_dtype is only supported for i8i8->i32 linear operator, got input.dtype=ú, out_dtype=r”   )
rï   rœ   rÇ   r�   rî   rb   rZ   Úint8Úint32Únew_empty_strided)	r  r“  r”  r•  r–  r—  Úoutput_sizesÚtransposed_stridesr  s	            r9   Úmeta_sparse_structured_linearr¡  Ï  sß  € õ ˜œÑ$Ô$€LØÐØ�;Š;�q‰>Œ>˜TŸYšY q™\œ\Ò)Ð)Ý Øg¸¿ºÀA¹¼ÐgÐgÐY]×YbÒYbÐcdÑYeÔYeÐgÐgñô ð ð ‡{‚{�1�~„~˜Ÿš B™œ¨!Ñ+Ò+Ð+ÝØW˜fŸkšk¨!™nœnÐWÐWÀ5Ç:Â:ÈbÁ>Ä>ÐTUÑCUÐWÐWñ
ô 
ð 	
ð —{’{ 1‘~”~€L�Ñõ ˆ5Œ;ÑÔ˜1ÒÐÝØX½sÀ5Ä;Ñ?OÔ?OÐXÐXÐXñ
ô 
ð 	
ð ˜UŸZšZ¨™]œ]Ð+ÐàÐØ”�uœzÒ)Ð)¨i½5¼;Ò.FÐ.FÝ ð CÐ^cÔ^ið  Cð  Cð  xAð  Cð  Cñô ð ð ×$Ò$ØØØ&Ð.ˆeŒkˆk°Ið %ñ ô €Fð €Mr;   Úmat1Ú	mat1_metaÚmat2c                 ód  — t          | j        ¦  «        dk    r%t          dt          | j        ¦  «        › d�¦  «        ‚t          |j        ¦  «        dk    r%t          dt          |j        ¦  «        › d�¦  «        ‚t          |j        ¦  «        dk    r%t          dt          |j        ¦  «        › d�¦  «        ‚|                      d¦  «        |                     d¦  «        dz  k    r>t          d|                      d¦  «        › d	|                     d¦  «        dz  › �¦  «        ‚|                      d¦  «        |                     d¦  «        g}|�?|j        t
          j        k    r|t
          j        k    st          d
|j        › d|› �¦  «        ‚|                     ||€|j        n|¬¦  «        }|S )Nr%  úmat1 must be 2D, got ÚDúmat1_meta must be 2D, got úmat2 must be 2D, got r4   r   úmat1.size(1)=ú != mat2.size(0)/2=úJout_dtype is only supported for i8i8->i32 linear operator, got mat2.dtype=r›  r”   ©	rî   rœ   r�   rÇ   rb   rZ   rœ  r�  r›   )r¢  r£  r¤  r—  rŸ  r  s         r9   Úmeta_sparse_structured_mmr®  ü  sµ  € õ ˆ4Œ:�„˜!ÒÐÝÐGµS¸¼±_´_ÐGÐGÐGÑHÔHÐHÝ
ˆ9Œ?ÑÔ˜qÒ Ð ÝÐQ½#¸i¼oÑ:NÔ:NÐQÐQÐQÑRÔRÐRÝ
ˆ4Œ:�„˜!ÒÐÝÐGµS¸¼±_´_ÐGÐGÐGÑHÔHÐHØ‡y‚y��|„|�t—y’y ‘|”| aÑ'Ò'Ð'ÝØO˜DŸIšI a™LœLÐOÐO¸T¿YºYÀq¹\¼\ÈAÑ=MÐOÐOñ
ô 
ð 	
ð —I’I˜a‘L”L $§)¢)¨A¡,¤,Ð/€LàÐØ”
�eœjÒ(Ð(¨Y½%¼+Ò-EÐ-EÝ ð AÐ]aÔ]gð  Að  AÐu~ð  Að  Añô ð ð �^Š^ØØ%Ð-ˆdŒjˆj°9ð ñ ô €Fð
 €Mr;   r4   )ÚalphaÚbetar—  c                ó¬  — t          | j        ¦  «        dk    r%t          dt          | j        ¦  «        › d�¦  «        ‚t          |j        ¦  «        dk    r%t          dt          |j        ¦  «        › d�¦  «        ‚t          |j        ¦  «        dk    r%t          dt          |j        ¦  «        › d�¦  «        ‚t          |j        ¦  «        dk    r%t          dt          |j        ¦  «        › d�¦  «        ‚|                      d	¦  «        |                     d	¦  «        k    r;t          d
|                      d	¦  «        › d|                     d	¦  «        › �¦  «        ‚|                     d¦  «        |                     d	¦  «        dz  k    r>t          d|                     d¦  «        › d|                     d	¦  «        dz  › �¦  «        ‚|                     d	¦  «        |                     d¦  «        g}|�?|j        t
          j        k    r|t
          j        k    st          d|j        › d|› �¦  «        ‚|                     ||€|j        n|¬¦  «        }|S )Nr4   zKonly input broadcasted to columns of mat1 * mat2 product is supported, got rš  r%  r¦  r§  r¨  r©  r   zUonly input broadcasted to columns of mat1 * mat2 product is supported, input.size(0)=z != mat1.size(0)=rª  r«  r¬  r›  r”   r­  )	r  r¢  r£  r¤  r¯  r°  r—  rŸ  r  s	            r9   Úmeta_sparse_structured_addmmr²    sd  € õ ˆ5Œ;ÑÔ˜1ÒÐÝØsÕZ]Ð^cÔ^iÑZjÔZjÐsÐsÐsñ
ô 
ð 	
õ ˆ4Œ:�„˜!ÒÐÝÐGµS¸¼±_´_ÐGÐGÐGÑHÔHÐHÝ
ˆ9Œ?ÑÔ˜qÒ Ð ÝÐQ½#¸i¼oÑ:NÔ:NÐQÐQÐQÑRÔRÐRÝ
ˆ4Œ:�„˜!ÒÐÝÐGµS¸¼±_´_ÐGÐGÐGÑHÔHÐHØ‡z‚z�!�}„}˜Ÿ	š	 !™œÒ$Ð$ÝðLØ"ŸZšZ¨™]œ]ðLð LØ=A¿YºYÀq¹\¼\ðLð Lñ
ô 
ð 	
ð ‡y‚y��|„|�t—y’y ‘|”| aÑ'Ò'Ð'ÝØO˜DŸIšI a™LœLÐOÐO¸T¿YºYÀq¹\¼\ÈAÑ=MÐOÐOñ
ô 
ð 	
ð —I’I˜a‘L”L $§)¢)¨A¡,¤,Ð/€LàÐØ”
�eœjÒ(Ð(¨Y½%¼+Ò-EÐ-EÝ ð AÐ]aÔ]gð  Að  AÐu~ð  Að  Añô ð ð �^Š^ØØ%Ð-ˆdŒjˆj°9ð ñ ô €Fð
 €Mr;   Úcompressed_AÚdense_Br¯  Útranspose_resultÚalg_idÚsplit_kÚsplit_k_modec	           	      ó¦  — |j         t          j        t          j        t          j        t          j        t          j        hvrt          d|j         › �¦  «        ‚| j         |j         k    rt          d| j         › d|j         › �¦  «        ‚t          |j	        ¦  «        dk    r%t          dt          |j	        ¦  «        › d�¦  «        ‚| j         t          j        t          j        fv }	| 
                    d¦  «        }
|  
                    d¦  «        }|�A|| 
                    d¦  «        k    r(t          d	|› d
| 
                    d¦  «        › �¦  «        ‚|�`|	r;|t          j        t          j        t          j        t          j        t          j        hv s#t          d| j         › d|j         › d|› d�¦  «        ‚|r|
|fn||
f}|                     ||¬¦  «        S )NzA_cslt_sparse_mm only supports fp16, bf16, int8, and fp8e4m3, got z%inputs must have the same dtype, got rÅ   r%  z-_cslt_sparse_mm only supports 2d inputs, got r§  r4   r   zbias size mismatch: m=r™  zout_dtype is not supported for ú x z -> z matmul!r”   )rb   rZ   Úfloat32Úfloat16Úbfloat16rœ  Úfloat8_e4m3fnr�   rî   rœ   rÇ   r�  r›   )r³  r´  r•  r¯  r—  rµ  r¶  r·  r¸  Úis_8bit_input_typer4  ÚmÚoutput_shapes                r9   Úmeta__cslt_sparse_mmrÂ  I  sý  € ð „}ÝŒÝŒÝŒÝŒ
ÝÔðð ð õ Ø_ÐPWÔP]Ð_Ð_ñ
ô 
ð 	
ð Ô˜Wœ]Ò*Ð*ÝØ\°LÔ4FÐ\Ð\ÈWÌ]Ð\Ð\ñ
ô 
ð 	
õ ˆ7Œ=ÑÔ˜QÒÐÝØQ½CÀÄÑ<NÔ<NÐQÐQÐQñ
ô 
ð 	
ð &Ô+µ´
½EÔ<OÐ/PÐPÐà�Š�Q‰Œ€AØ×Ò˜!ÑÔ€AØÐØ�—	’	˜!‘”ÒÐÝ ØK¨ÐKÐK¸T¿YºYÀq¹\¼\ÐKÐKñô ð ð Ðàð	àå”Ý”Ý”Ý”ÝÔ#ððð õ !Øo°,Ô2DÐoÐoÈÌÐoÐoÐ\eÐoÐoÐoñô ð ð .Ð9�A�q�6�6°A°q°6€LØ×Ò˜\°ÐÑ;Ô;Ð;r;   T)Úinclude_selfr–   ÚsourceÚreducerÃ  c                óB   — t          j        | t           j        ¬¦  «        S rÞ   ©rZ   r¡   rÓ   ©r�   r‰   r–   rÄ  rÅ  rÃ  s         r9   Úmeta_index_reducerÉ  …  s   € õ Ô˜DµÔ0GÐHÑHÔHÐHr;   c                ó   — | S rE   r5   rÈ  s         r9   Úmeta_index_reduce_rË  ’  s	   € ð €Kr;   c                 óÌ   — t          |                      ¦   «         ¦  «        }|                      ¦   «         dk    r|                     ¦   «         ||<   |                      |¦  «        S ©Nr   )rï   rÇ   r‰   rš   r›   )r�   r‰   r–   Úresult_sizes       r9   Úmeta_index_selectrÏ     sN   € õ �t—y’y‘{”{Ñ#Ô#€KØ‡x‚x�z„z�A‚~€~Ø Ÿ;š;™=œ=ˆ�CÑØ�>Š>˜+Ñ&Ô&Ð&r;   )Úlengthsr×   ÚoffsetsÚaxisÚunsafeÚinitialrV  rÐ  rÑ  rÒ  rÓ  c                ó¸   ‡ ‡— |�t          d¦  «        ‚ˆˆ fd„}|� ||j        ‰         ¦  «        S |� ||j        ‰         dz
  ¦  «        S t          d¦  «        ‚)Nz?segment_reduce(): indices based reduction is not supported yet.c                 ó„   •— t          ‰j        ¦  «        }| |‰<   t          j        |‰j        dt          j        ¬¦  «        S )Nrƒ   ©rb   r†   rÐ   )rï   rœ   rZ   r�   rb   rÓ   )Úsegment_countrÁ  rÒ  rV  s     €€r9   Úsegment_reduce_outputz2meta_segment_reduce.<locals>.segment_reduce_outputº  sF   ø€ Ý˜DœJÑ'Ô'ˆØ*ˆ�TÑÝŒ{ØØ”*ØÝÔ1ð	
ñ 
ô 
ð 	
r;   r4   z<segment_reduce(): Either lengths or offsets must be defined.)r¼   rœ   r�  )	rV  rÅ  rÐ  r×   rÑ  rÒ  rÓ  rÔ  rÙ  s	   `    `   r9   Úmeta_segment_reducerÚ  ©  s“   øø€ ð ÐÝ!ØMñ
ô 
ð 	
ð
ð 
ð 
ð 
ð 
ð 
ð ÐØ$Ð$ W¤]°4Ô%8Ñ9Ô9Ð9ð ÐØ$Ð$ W¤]°4Ô%8¸1Ñ%<Ñ=Ô=Ð=Ý
ÐUÑ
VÔ
VÐVr;   c                 ó,   — |                       d¦  «        S ©Nr5   ©r›   rÔ   s    r9   Úmeta_maxrÞ  Í  ó   € ð �>Š>˜"ÑÔÐr;   c                 óÆ   — t          j        | j        |f¦  «        }t          | ||¦  «        }|                      |¦  «        |                      |t
          j        ¬¦  «        fS ©Nr”   ©rT   Úreduction_dimsrœ   Ú_compute_reduction_shaper›   rZ   r˜   ©r�   r‰   ÚkeepdimrÁ  s       r9   Úmeta_max_dimrç  Ó  óW   € å
Ô
˜tœz¨C¨6Ñ
2Ô
2€CÝ+¨D°#°wÑ?Ô?€Là�Š�|Ñ$Ô$Ø�Š�|­5¬:ˆÑ6Ô6ðð r;   c                 ó,   — |                       d¦  «        S rÜ  rÝ  rÔ   s    r9   Úmeta_minrê  Ý  rß  r;   c                 óÆ   — t          j        | j        |f¦  «        }t          | ||¦  «        }|                      |¦  «        |                      |t
          j        ¬¦  «        fS rá  râ  rå  s       r9   Úmeta_min_dimrì  ã  rè  r;   c                 ó¼   — |                       ¦   «         rt          | j        ¦  «        }nt          | t          j        ¬¦  «        \  }}t          j        | |¬¦  «        S ©N©rO   r”   )r  r   rb   r   r   ÚINT_TO_FLOATrZ   r¡   )r�   rR   rW   s      r9   Ú
meta_anglerñ  í  s^   € à‡‚ÑÔð 
Ý/°´
Ñ;Ô;ˆˆå,ØÝ ?Ô Lð
ñ 
ô 
‰ˆˆ<õ Ô˜D¨Ð5Ñ5Ô5Ð5r;   c                 óª   — t          j        ||                      ¦   «         | j        ¦  «         |                     t          j        | ¦  «        ¦  «        S rE   )rZ   Ú_resize_output_rÇ   r†   Úcopy_Úangle)r�   rø   s     r9   Úmeta_angle_outrö  ù  s=   € å	Ô˜#˜tŸyšy™{œ{¨D¬KÑ8Ô8Ð8Ø�9Š9•U”[ Ñ&Ô&Ñ'Ô'Ð'r;   c                 ó   — d S rE   r5   ©Úvals    r9   Úassert_asyncrú  ÿ  ó   € à
€Fr;   c                 ó   — d S rE   r5   )rù  Ú
assert_msgs     r9   Úassert_async_metarþ    rû  r;   c                 ó   — d S rE   r5   )Úss    r9   Ú
print_metar  	  rû  r;   ©rb   r…   r†   r‡   rÐ   c                 ó.   — t          j        dd¬¦  «        S )Nr5   rƒ   r^  r9  r  s        r9   Úmake_dep_tokenr    s   € õ Œ;�r &Ð)Ñ)Ô)Ð)r;   c                 ó„   — ddl m} t          | t          t          f¦  «        rt          d¦  «        ‚ || ||¬¦  «         d S )Nr   )Úconstrain_rangeú'Constraining SymFloat or Symbool is nyi©r  Úmax)r  r  rt   r
   r	   Ú
ValueError)rÇ   r  r	  r  s       r9   Úsym_constrain_ranger    s[   € ð FÐEÐEÐEÐEÐEå�$�¥7Ð+Ñ,Ô,ð DÝÐBÑCÔCÐCØ€O�D˜c sÐ+Ñ+Ô+Ð+Ð+Ð+r;   c                 ó@   — t                                | ||¬¦  «         |S ©Nr  )r.   r  ©rÇ   r  r	  Ú	dep_tokens       r9   Úfunctional_sym_constrain_ranger  $  s#   € å×Ò˜T s°ÐÑ4Ô4Ð4ØÐr;   c                 óX  — ddl m} |€|€t          j        | dk    ¦  «         d S t	          | t
          t          f¦  «        rt          d¦  «        ‚t          | ¦  «        t          u r6|�t          j        | |k    ¦  «         |�t          j        | |k    ¦  «         d S  || ||¬¦  «         d S )Nr   )Ú_constrain_range_for_sizer  r  )
r  r  rZ   rk   rt   r
   r	   r
  r}   r  )rÇ   r  r	  r  s       r9   Úsym_constrain_range_for_sizer  *  sÆ   € ð PÐOÐOÐOÐOÐOà
€{�s�{ÝŒ�T˜Q’YÑÔÐØˆå�$�¥7Ð+Ñ,Ô,ð DÝÐBÑCÔCÐCÝˆD�z„z•SÐÐØˆ?ÝŒL˜ šÑ%Ô%Ð%Øˆ?ÝŒL˜ šÑ%Ô%Ð%ØˆØÐ˜d¨°Ð5Ñ5Ô5Ð5Ð5Ð5r;   c                 ó@   — t                                | ||¬¦  «         |S r  )r.   r  r  s       r9   Ú'functional_sym_constrain_range_for_sizer  >  s#   € å×%Ò% d°¸Ð%Ñ=Ô=Ð=ØÐr;   c                 ó   — |S rE   r5   )rù  rý  r  s      r9   Úfunctional_assert_async_metar  D  s   € àÐr;   Úf_namec                 ó  ‡ ‡— ‰                       ¦   «         dk     r&t          ‰› d‰                       ¦   «         › �¦  «        ‚t          j        ‰                      d¦  «        ‰                      d¦  «        k    ˆˆ fd„¦  «         d S )Nr%  z8: The input tensor must have at least 2 dimensions, got r¿   éþÿÿÿc                  óf   •— ‰ › d‰                      d¦  «        › d‰                      d¦  «        › d�S )Nz5: A must be batches of square matrices, but they are r  ú by r¿   ú	 matricesrÆ   )r  r�   s   €€r9   ri   z#squareCheckInputs.<locals>.<lambda>R  sK   ø€ �6ð Dð DØŸ	š	 "™œðDð DØ+/¯9ª9°R©=¬=ðDð Dð D€ r;   )r‰   r�   rZ   rk   rÇ   )r�   r  s   ``r9   rÑ   rÑ   J  sš   øø€ Ø‡x‚x�z„z�A‚~€~ÝØÐ[Ð[ÈtÏxÊxÉzÌzÐ[Ð[ñ
ô 
ð 	
õ 
„LØ�	Š	�"‰Œ˜Ÿš 2™œÒ&ð	Dð 	Dð 	Dð 	Dð 	Dñô ð ð ð r;   ÚAÚnamec                 ó´  ‡ ‡‡— t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰                     d¦  «        ‰                     d¦  «        k    ˆfd„¦  «         t          j        ‰                     d¦  «        ‰                      d¦  «        k    ˆˆˆ fd„¦  «         d S )Nc                  ó*   •— d‰j         › d‰ j         › d�S )Nz:Expected b and A to be on the same device, but found b on z
 and A on ú	 instead.r^  ©r  r�   s   €€r9   ri   z(linearSolveCheckInputs.<locals>.<lambda>]  s0   ø€ ð:ØŒ{ð:ð :Ø&'¤hð:ð :ð :ð r;   c                  ó*   •— d‰j         › d‰ j         › d�S )Nz=Expected b and A to have the same dtype, but found b of type z and A of type r"  r”   r#  s   €€r9   ri   z(linearSolveCheckInputs.<locals>.<lambda>e  s0   ø€ ð=ØŒzð=ð =Ø*+¬'ð=ð =ð =ð r;   r¿   r  c                  ób   •— d‰                       d¦  «        › d‰                       d¦  «        › d�S )Nz3A must be batches of square matrices, but they are r  r  r¿   r  rÆ   ©r  s   €r9   ri   z(linearSolveCheckInputs.<locals>.<lambda>m  sF   ø€ ðBØŸFšF 2™JœJðBð BØ,-¯FªF°2©J¬JðBð Bð Bð r;   c                  ó¾   •— d‰› d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › �
S )NzIncompatible matrix sizes for z: each A matrix is r¿   r  z but each b matrix is r  rÆ   )r  r  r�   s   €€€r9   ri   z(linearSolveCheckInputs.<locals>.<lambda>u  s€   ø€ ðH¨Tð Hð HØŸš ™œðHð HØ)*¯ª°©¬ðHð Hà%)§Y¢Y¨r¡]¤]ðHð Hà8<¿	º	À"¹¼ðHð Hð r;   )rZ   rk   r†   rb   rÇ   )r�   r  r  s   ```r9   ÚlinearSolveCheckInputsr(  Z  s  øøø€ Ý	„LØŒ�q”xÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�a”gÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ	�Šˆr‰
Œ
�a—f’f˜R‘j”jÒ ð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ	�Šˆr‰
Œ
�d—i’i ‘m”mÒ#ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r;   ÚtÚallow_low_precision_dtypesc                 ó,  ‡‡— | j         Št          j        |                      ¦   «         p|                      ¦   «         ˆˆfd„¦  «         |sIt          j        ‰t          j        t          j        t          j        t          j        fv ˆˆfd„¦  «         d S d S )Nc                  ó   •— ‰› d‰ › �S )Nz<: Expected a floating point or complex tensor as input. Got r5   ©rb   r  s   €€r9   ri   z(checkFloatingOrComplex.<locals>.<lambda>†  s   ø€ �6Ð^Ð^ÐW\Ð^Ð^€ r;   c                  ó   •— ‰› d‰ › �S )Nz*: Low precision dtypes not supported. Got r5   r-  s   €€r9   ri   z(checkFloatingOrComplex.<locals>.<lambda>‹  s   ø€ �vÐPÐPÈÐPÐP€ r;   )	rb   rZ   rk   r*  r  r^   r`   r]   r_   )r)  r  r*  rb   s    ` @r9   rÒ   rÒ   ~  s¦   øø€ ð
 ŒG€EÝ	„LØ	×ÒÑÔÐ/ §¢¡¤Ø^Ð^Ð^Ð^Ð^ñô ð ð &ð 
ÝŒØ•e”k¥5¤<µ´½u¼}ÐMÐMØPÐPÐPÐPÐPñ	
ô 	
ð 	
ð 	
ð 	
ð
ð 
r;   Úarg_namec                 óh   ‡‡— t          j        |                      ¦   «         dk    ˆˆfd„¦  «         d S )Nr%  c                  ó   •— ‰› d‰ › d�S )Nz: The input tensor z! must have at least 2 dimensions.r5   )r/  r  s   €€r9   ri   zcheckIsMatrix.<locals>.<lambda>“  s   ø€ �6ÐYÐY¨hÐYÐYÐY€ r;   )rZ   rk   r‰   )r  r  r/  s    ``r9   ÚcheckIsMatrixr2  �  s@   øø€ Ý	„LØ	�Š‰Œ�1ŠØYÐYÐYÐYÐYñô ð ð ð r;   ÚBrþ   c                 ó4  ‡ ‡‡‡— t          ‰ ‰¦  «         t          ‰‰¦  «         t          j        ‰r,‰                      d¦  «        ‰                     d¦  «        k    n+‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆˆˆfd„¦  «         d S )Nr  r¿   c                  óÌ   •— ‰› d‰rdnd› d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d	�S )
Nz2: Incompatible shapes of A and B for the equation zAX = BzXA = Bz (r  r>   r¿   rÅ   r|   rÆ   )r  r3  r  rþ   s   €€€€r9   ri   z#checkInputsSolver.<locals>.<lambda>œ  s™   ø€ Øð Jð JØÐ-ˆxˆx XðJð Jà—’˜‘”ðJð JàŸfšf R™jœjðJð Jà/0¯vªv°b©z¬zðJð Jà<=¿FºFÀ2¹J¼JðJð Jð Jð r;   )rÑ   r2  rZ   rk   rÇ   )r  r3  rþ   r  s   ````r9   ÚcheckInputsSolverr6  —  s¦   øøøø€ Ý�a˜Ñ Ô Ð Ý�!�VÑÔÐÝ	„LØ$(ÐFˆ�Šˆr‰
Œ
�a—f’f˜R‘j”jÒ Ð ¨a¯fªf°R©j¬j¸A¿FºFÀ2¹J¼JÒ.Fð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r;   ÚresultÚfn_nameÚresult_namec                 ó`   ‡ ‡‡‡— t          j        ‰j        ‰j        k    ˆ ˆˆˆfd„¦  «         d S )Nc            	      ó8   •— ‰ › d‰› d‰› d‰j         › d‰j         › �	S )Nz: Expected z5 and input tensors to be on the same device, but got z on z and input on r^  )r8  r  r7  r9  s   €€€€r9   ri   z!checkSameDevice.<locals>.<lambda>¬  sV   ø€ Øð Lð L ;ð Lð LØðLð LØ &¤ðLð LØ=B¼\ðLð Lð r;   )rZ   rk   r†   )r8  r7  r  r9  s   ````r9   ÚcheckSameDevicer<  ¤  sU   øøøø€ õ 
„LØŒ˜œÒ%ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r;   ÚUPLOc                 óš   ‡ — ‰                       ¦   «         }t          j        t          ‰ ¦  «        dk    o|dk    p|dk    ˆ fd„¦  «         d S )Nr4   ÚUÚLc                  ó   •— d‰ › �S )Nz1Expected UPLO argument to be 'L' or 'U', but got r5   )r=  s   €r9   ri   zcheckUplo.<locals>.<lambda>·  s   ø€ ÐJÀDÐJÐJ€ r;   )ÚupperrZ   rk   rî   )r=  ÚUPLO_uppercases   ` r9   Ú	checkUplorD  ³  s[   ø€ Ø—Z’Z‘\”\€NÝ	„LÝˆD‰	Œ	�QŠÐK˜N¨cÒ1ÐJ°^ÀsÒ5JØJÐJÐJÐJñô ð ð ð r;   ÚeigenvaluesÚeigenvectorsr@  Ú	compute_vc                 ó�  — t          | d¦  «         t          |¦  «         t          | j        ¦  «        }|r;|                      |¦  «        }|                     |t          |d¬¦  «        ¦  «         n|                      dg¦  «        }|                     ¦   «          |                      |t          | j	        ¦  «        ¬¦  «        }||fS )Nzlinalg.eighF©Ú	row_majorr   r”   )
rÑ   rD  rï   rœ   r›   rö   r   Úpoprd   rb   )r  r=  rG  rœ   ÚvecsÚvalss         r9   Úmeta__linalg_eighrN  »  sµ   € õ �a˜Ñ'Ô'Ð'Ýˆd�O„O€Oå�”‰MŒM€EØð  Ø�{Š{˜5Ñ!Ô!ˆØ×Ò˜Õ ;¸EÈUÐ SÑ SÔ SÑTÔTÐTÐTà�{Š{˜A˜3ÑÔˆà	‡I‚I�K„K€KØ�;Š;�u¥O°A´GÑ$<Ô$<ˆ;Ñ=Ô=€Dà�ˆ:Ðr;   c                 óÜ   — t          | d¦  «         t          j        | j        ¦  «        r| j        nt          j        | j        ¦  «        }|                      | j        d d…         |¬¦  «        S )Nzlinalg.eigvalsr¿   r”   )rÑ   rT   rŒ   rb   r   r›   rœ   )r  Úcomplex_dtypes     r9   Úmeta__linalg_eigvalsrQ  Î  sj   € õ �eÐ-Ñ.Ô.Ð.õ Ô! %¤+Ñ.Ô.ð	<ˆŒˆåÔ.¨u¬{Ñ;Ô;ð ð
 �?Š?˜5œ; s¨ sÔ+°=ˆ?ÑAÔAÐAr;   c                 ó   — t          | d¦  «         t          j        | j        ¦  «        r| j        nt          j        | j        ¦  «        }|                      | j        d d…         |¬¦  «        }|                      | j        |¬¦  «        }t          | ¦  «        dk    }|                     | j        t          | j        |¬¦  «        ¦  «         ||fS )Nz
linalg.eigr¿   r”   r  rI  )
rÑ   rT   rŒ   rb   r   r›   rœ   r  rö   r   )r  rP  rÖ   ÚvectorsÚis_cudas        r9   Úmeta_linalg_eigrU  Ú  sÎ   € õ �e˜\Ñ*Ô*Ð*õ Ô! %¤+Ñ.Ô.ð	<ˆŒˆåÔ.¨u¬{Ñ;Ô;ð ð
 �_Š_˜Uœ[¨¨"¨Ô-°]ˆ_ÑCÔC€FØ�oŠo˜eœk°ˆoÑ?Ô?€Gõ ˜%Ñ Ô  FÒ*€GØ×ÒØŒÕ0°´ÈÐPÑPÔPñô ð ð �7ˆ?Ðr;   c                 ót   — | j                              t          j        ¬¦  «                             dd¦  «        S )NrÏ   r  r¿   )ÚmTr½   rZ   rÓ   Ú	transpose)r¦   s    r9   ÚcloneBatchedColumnMajorrY  ï  s+   € ØŒ6�<Š<¥eÔ&=ˆ<Ñ>Ô>×HÒHÈÈRÑPÔPÐPr;   rB  c                 ó    — t          | ¦  «        S rE   )rY  )r�   r  rB  s      r9   Ú_cholesky_solve_helperr[  ó  s   € õ # 4Ñ(Ô(Ð(r;   c                 óÔ   ‡ ‡— t          j        ‰ j        dk    ˆ fd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         t          ‰ ‰d¦  «        \  }}t	          |||¦  «        S )Nr%  c                  ó   •— d‰ j         › d�S )Nz-b should have at least 2 dimensions, but has ú dimensions instead©rÉ   rÔ   s   €r9   ri   z cholesky_solve.<locals>.<lambda>þ  s   ø€ Ð^ÀÄ	Ð^Ð^Ð^€ r;   c                  ó   •— d‰ j         › d�S )Nz-u should have at least 2 dimensions, but has r^  r_  r&  s   €r9   ri   z cholesky_solve.<locals>.<lambda>  s   ø€ Ð[ÀÄÐ[Ð[Ð[€ r;   Úcholesky_solve)rZ   rk   rÉ   Ú!_linalg_broadcast_batch_dims_namer[  )r�   r  rB  Úself_broadcastedÚA_broadcasteds   ``   r9   ra  ra  ù  s�   øø€ õ 
„LØŒ	�QŠØ^Ð^Ð^Ð^ñô ð õ 
„LØ	Œ�!ŠØ[Ð[Ð[Ð[ñô ð õ 'HØˆaÐ!ñ'ô 'Ñ#Ð�mõ "Ð"2°MÀ5ÑIÔIÐIr;   c                 ó°   — |                       ¦   «         dk    r t          j        | t          j        ¬¦  «        S t	          | d¦  «         t          | ¦  «        S )Nr   rÏ   Úcholesky)rš   rZ   r¡   Úlegacy_contiguous_formatrÑ   rY  ©r�   rB  s     r9   rf  rf  
  sN   € ð ‡z‚z�|„|�qÒÐÝÔ µEÔ4RÐSÑSÔSÐSÝ�d˜JÑ'Ô'Ð'Ý" 4Ñ(Ô(Ð(r;   c                 ó@   — t          | d¦  «         t          | ¦  «        S )NÚcholesky_inverse)rÑ   rY  rh  s     r9   rj  rj    s#   € õ �dÐ.Ñ/Ô/Ð/Ý" 4Ñ(Ô(Ð(r;   Úcheck_errorsc                 óD  — t          | d¦  «         t          | d¦  «         | j        }t          |¦  «        }t	          |d¦  «        }|                      |¦  «        }|                     ||¦  «         |                      |d|dz
  …         t          j        ¬¦  «        }||fS )Nzlinalg.choleskyFr   r%  r”   )	rÑ   rÒ   rœ   rî   r   r›   rö   rZ   r�  )r  rB  rk  ÚA_shaperÉ   Ú	L_stridesr@  Úinfoss           r9   Úlinalg_cholesky_exrp    s›   € å�aÐ*Ñ+Ô+Ð+Ý˜1Ð/Ñ0Ô0Ð0àŒg€GÝˆw‰<Œ<€Dõ ,¨G°UÑ;Ô;€IØ	�Š�GÑÔ€AØ‡M‚M�'˜9Ñ%Ô%Ð%ð �KŠK˜  D¨1¡H Ô-µU´[ˆKÑAÔA€EØˆeˆ8€Or;   Útauc                 ó  ‡ ‡‡— t          j        ‰ j        dk    d„ ¦  «         t          j        ‰                      d¦  «        ‰                      d¦  «        k    d„ ¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    d„ ¦  «         t          j        ‰ j        ‰j        z
  dk    ˆ ˆfd„¦  «         ‰ j        dk    r:‰ j        d d…         }‰j        d d…         Št          j        ‰|k    ˆfd	„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd
„¦  «         t          d‰‰ d¦  «         t          j        ‰ j        t          ‰ j        d¬¦  «        ‰ j        ‰ j	        ¬¦  «        S )Nr%  c                  ó   — dS )NzHtorch.linalg.householder_product: input must have at least 2 dimensions.r5   r5   r;   r9   ri   z,linalg_householder_product.<locals>.<lambda>4  ó   € ÐZ€ r;   r  r¿   c                  ó   — dS )Nzbtorch.linalg.householder_product: input.shape[-2] must be greater than or equal to input.shape[-1]r5   r5   r;   r9   ri   z,linalg_householder_product.<locals>.<lambda>8  s   € Ðt€ r;   c                  ó   — dS )Nz`torch.linalg.householder_product: input.shape[-1] must be greater than or equal to tau.shape[-1]r5   r5   r;   r9   ri   z,linalg_householder_product.<locals>.<lambda><  s   € Ðr€ r;   r4   c                  ó(   •— d‰j         › d‰ j         › �S )Nzptorch.linalg.householder_product: Expected tau to have one dimension less than input, but got tau.ndim equal to ú and input.ndim is equal to r_  ©r  rq  s   €€r9   ri   z,linalg_householder_product.<locals>.<lambda>A  ó0   ø€ ð\Ø),¬ð\ð \ØOTÌzð\ð \ð r;   c                  ó   •— d‰ › �S )Nzltorch.linalg.householder_product: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r5   ©Úactual_batch_tau_shapes   €r9   ri   z,linalg_householder_product.<locals>.<lambda>K  ó   ø€ ðOØ6LðOð Oð r;   c                  ó(   •— d‰j         › d‰ j         › �S )Nz,torch.linalg.householder_product: tau dtype z does not match input dtype r”   ry  s   €€r9   ri   z,linalg_householder_product.<locals>.<lambda>S  s*   ø€ ð9¸3¼9ð 9ð 9Ø+0¬;ð9ð 9ð r;   z torch.linalg.householder_productrq  FrI  ©rÇ   rñ   rb   r†   )
rZ   rk   rÉ   rÇ   rœ   rb   r<  Úempty_stridedr   r†   )r  rq  Úexpected_batch_tau_shaper}  s   `` @r9   Úlinalg_householder_productrƒ  -  sÆ  øøø€ õ
 
„LØŒ
�aŠØZÐZñô ð õ 
„LØ�
Š
�2‰Œ˜%Ÿ*š* R™.œ.Ò(ØtÐtñô ð õ 
„LØ�
Š
�2‰Œ˜#Ÿ(š( 2™,œ,Ò&ØrÐrñô ð õ
 
„LØŒ
�S”XÑ Ò"ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „z�A‚~€~Ø#(¤;¨s°¨sÔ#3Ð Ø!$¤¨3¨B¨3¤ÐÝŒØ"Ð&>Ò>ðð ð ð ñ	
ô 	
ð 	
õ 
„LØŒ	�U”[Ò ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ Ð6¸¸UÀEÑJÔJÐJåÔØŒ[Ý*¨5¬;À%ÐHÑHÔHØŒkØŒ|ð	ñ ô ð r;   c                 ó<  — t          | d¦  «         t          | dd¬¦  «         |                      | j        ¦  «        }|                     | j        t          | j        d¬¦  «        ¦  «         |                      | j        d d…         t          j        ¬¦  «        }||fS )Nzlinalg.inv_exF)r*  rI  r  r”   ©rÑ   rÒ   r›   rœ   rö   r   rZ   r�  )r  rk  r@  ro  s       r9   Úlinalg_inv_ex_metar†  c  sŠ   € å�a˜Ñ)Ô)Ð)Ý˜1˜oÈ%ÐPÑPÔPÐPà	�Š�A”GÑÔ€AØ‡M‚M�!”'Õ6°q´wÈ%ÐPÑPÔPÑQÔQÐQà�KŠK˜œ   œ­E¬KˆKÑ8Ô8€EØˆeˆ8€Or;   ÚLDÚpivotsÚinfo)Ú	hermitianrk  rŠ  c                óz  — t          | d¦  «         t          | d¦  «         t          j        | j        t          | j        d¬¦  «        | j        | j        ¬¦  «        }|                      | j        d d…         t          j	        ¬¦  «        }|                      | j        d d…         t          j	        ¬¦  «        }|||fS )Nztorch.linalg.ldl_factor_exFrI  r€  r¿   r”   r  )
rÑ   rÒ   rZ   r�  rœ   r   rb   r†   r›   r  )r�   rŠ  rk  r‡  rˆ  r‰  s         r9   Úlinalg_ldl_factor_ex_metarŒ  o  s¯   € õ �dÐ8Ñ9Ô9Ð9Ý˜4Ð!=Ñ>Ô>Ð>Ý	Ô	ØŒZÝ*¨4¬:ÀÐGÑGÔGØŒjØŒ{ð	
ñ 
ô 
€Bð �^Š^˜DœJ s¨ sœOµ5´9ˆ^Ñ=Ô=€FØ�>Š>˜$œ* S b Sœ/µ´ˆ>Ñ;Ô;€DØˆv�tÐÐr;   )rŠ  c                ó@  ‡ ‡‡— t          ‰ d¦  «         t          ‰ d¦  «         t          ‰‰ d¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰ j        d d…         }t          j        |‰j        k    ˆfd„¦  «         t          j        t          j        ‰j	        ¦  «        ˆfd„¦  «         t          j        ‰ j	        ‰j	        k    ˆˆ fd„¦  «         t          ‰‰ ¦  «        \  }}t          j        |t          |d¬	¦  «        ‰j	        ‰j        ¬
¦  «        S )Nztorch.linalg.ldl_solver%  c                  ó   •— d‰ j         › d�S )NzMtorch.linalg.ldl_solve: Expected B to have at least 2 dimensions, but it has r^  r_  )r3  s   €r9   ri   z'linalg_ldl_solve_meta.<locals>.<lambda>’  ó!   ø€ ð6Øœ&ð6ð 6ð 6ð r;   r¿   c                  ó   •— d‰ j         › d�S )Nzjtorch.linalg.ldl_solve: Expected LD.shape[:-1] and pivots.shape to be the same, but got pivots with shape ú insteadrK  ©rˆ  s   €r9   ri   z'linalg_ldl_solve_meta.<locals>.<lambda>š  ó%   ø€ ð@Ø)/¬ð@ð @ð @ð r;   c                  ó   •— d‰ j         › �S )Nz<torch.linalg.ldl_solve: Expected pivots to be integers. Got r”   r’  s   €r9   ri   z'linalg_ldl_solve_meta.<locals>.<lambda>¡  s   ø€ Ð]ÈvÌ|Ð]Ð]€ r;   c                  ó(   •— d‰j         › d‰ j         › �S )Nz!torch.linalg.ldl_solve: LD dtype z does not match b dtype r”   )r3  r‡  s   €€r9   ri   z'linalg_ldl_solve_meta.<locals>.<lambda>¥  s   ø€ Ð_°B´HÐ_Ð_ÐVWÔV]Ð_Ð_€ r;   FrI  r€  )rÑ   rÒ   r(  rZ   rk   rÉ   rœ   rT   Úis_integer_dtyperb   Ú_linalg_broadcast_batch_dimsr�  r   r†   )r‡  rˆ  r3  rŠ  Úexpected_pivots_shapeÚB_broadcast_sizerW   s   ```    r9   Úlinalg_ldl_solve_metarš  „  sc  øøø€ õ �bÐ2Ñ3Ô3Ð3Ý˜2Ð7Ñ8Ô8Ð8Ý˜1˜bÐ":Ñ;Ô;Ð;Ý	„LØ	Œ�!Šð	
ð 	
ð 	
ð 	
ñô ð ð œH S b SœMÐÝ	„LØ ¤Ò-ð	
ð 	
ð 	
ð 	
ñô ð õ 
„LÝÔ˜vœ|Ñ,Ô,Ø]Ð]Ð]Ð]ñô ð õ 
„LØ
Œ�A”GÒØ_Ð_Ð_Ð_Ð_ñô ð õ 7°q¸"Ñ=Ô=ÑÐ�aÝÔØÝ*Ð+;ÀuÐMÑMÔMØŒgØŒxð	ñ ô ð r;   ÚPr?  )Úpivotrœ  c                ó�  ‡ — t          j        ‰ j        dk    ˆ fd„¦  «         t          ‰ j        ¦  «        }|d         }|d         }t          ||¦  «        }||d<   |r‰                      |¦  «        }n‰                      dg¦  «        }||d<   ‰                      |¦  «        }||d<   ||d<   ‰                      |¦  «        }|||fS )Nr%  c                  ó   •— d‰ j         › d�S )Nz@linalg.lu: Expected tensor with 2 or more dimensions. Got size: r‘  rK  r&  s   €r9   ri   z linalg_lu_meta.<locals>.<lambda>µ  s   ø€ ÐdÐSTÔSZÐdÐdÐd€ r;   r  r¿   r   )rZ   rk   rÉ   rï   rœ   r   r›   )	r  rœ  ÚsizesrÀ  r4  Úkr›  r@  r?  s	   `        r9   Úlinalg_lu_metar¡  °  sÛ   ø€ õ 
„LØ	Œ�!ŠØdÐdÐdÐdñô ð õ
 �”‰MŒM€EØˆbŒ	€AØˆbŒ	€Aå��1‰Œ€Aà€Eˆ"�IØð Ø�KŠK˜ÑÔˆˆà�KŠK˜˜ÑÔˆà€Eˆ"�IØ	�Š�EÑÔ€Aà€Eˆ"�IØ€Eˆ"�IØ	�Š�EÑÔ€AØˆa�ˆ7€Nr;   ÚLU)rœ  rk  c                óô  ‡ — t          j        ‰ j        dk    ˆ fd„¦  «         t          ‰ j        ¦  «        }|d         }|d         }t          j        |t          |d¬¦  «        ‰ j        ‰ j        ¬¦  «        }| 	                    ¦   «          t          ||¦  «        |d<   ‰                      |t           j        ¬¦  «        }| 	                    ¦   «          ‰                      |t           j        ¬¦  «        }|||fS )	Nr%  c                  ó   •— d‰ j         › d�S )NzFtorch.lu_factor: Expected tensor with 2 or more dimensions. Got size: r‘  rK  r&  s   €r9   ri   z*linalg_lu_factor_ex_meta.<locals>.<lambda>×  s   ø€ ÐjÐYZÔY`ÐjÐjÐj€ r;   r  r¿   FrI  r€  r”   )rZ   rk   rÉ   rï   rœ   r�  r   rb   r†   rK  r   r›   r  )	r  rœ  rk  rŸ  rÀ  r4  r¢  rˆ  r‰  s	   `        r9   Úlinalg_lu_factor_ex_metar¥  Í  sí   ø€ õ 
„LØ	Œ�!ŠØjÐjÐjÐjñô ð õ
 �”‰MŒM€EØˆbŒ	€AØˆbŒ	€Aå	Ô	ØÝ*¨5¸EÐBÑBÔBØŒgØŒxð	
ñ 
ô 
€Bð 
‡I‚I�K„K€Kå˜˜1‘”€Eˆ"�IØ�[Š[˜¥e¤iˆ[Ñ0Ô0€Fð 
‡I‚I�K„K€KØ�;Š;�u¥E¤Iˆ;Ñ.Ô.€Dàˆv�tÐÐr;   )rþ   Úadjointr¦  c                óú  ‡ ‡‡— t          ‰ d¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰j        t          j        k    d„ ¦  «         t          ‰ d¦  «         t          ‰ ‰|d¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    d„ ¦  «         t          j        ‰ j        d d…         ‰j        k    ˆfd„¦  «         t          ‰‰ ¦  «        \  }}t          j
        |t          || ¬¦  «        ‰j        ‰j        ¬	¦  «        }|                     ¦   «         d
k    r*|s(|                     ¦   «         r|                     ¦   «         }|S )Nztorch.linalg.lu_solvec                  ó*   •— d‰j         › d‰ j         › d�S )NzPlinalg.lu_solve: Expected LU and B to have the same dtype, but found LU of type ú and B of type r‘  r”   )r3  r¢  s   €€r9   ri   z&linalg_lu_solve_meta.<locals>.<lambda>   s6   ø€ ðOØ$&¤HðOð OØ=>¼WðOð Oð Oð r;   c                  ó   — dS )NzElinalg.lu_solve: pivots should be a Tensor of scalar type torch.int32r5   r5   r;   r9   ri   z&linalg_lu_solve_meta.<locals>.<lambda>  s   € ÐW€ r;   zlinalg.lu_solver¿   c                  ó   — dS )NzYlinalg.lu_solve: Number of pivots per batch should be same as the dimension of the matrixr5   r5   r;   r9   ri   z&linalg_lu_solve_meta.<locals>.<lambda>  s   € Ðk€ r;   c                  ó   •— d‰ j         › d�S )Nzclinalg.lu_solve: Expected LU.shape[:-1] and pivots.shape to be the same, but got pivots with shape r‘  rK  r’  s   €r9   ri   z&linalg_lu_solve_meta.<locals>.<lambda>  r“  r;   rI  r€  r   )rÒ   rZ   rk   rb   r  rÑ   r6  rÇ   rœ   r—  r�  r   r†   rš   r  Úconj)r¢  rˆ  r3  rþ   r¦  r™  rW   r7  s   ```     r9   Úlinalg_lu_solve_metar®  ò  s£  øøø€ õ ˜2Ð6Ñ7Ô7Ð7Ý	„LØ
Œ�A”GÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�œ	Ò!ØWÐWñô ð õ �bÐ1Ñ2Ô2Ð2Ý�b˜!˜TÐ#4Ñ5Ô5Ð5Ý	„LØ
�Š�‰Œ�v—{’{ 2‘”Ò&ØkÐkñô ð õ 
„LØ
Œ��"�Œ˜œÒ%ð	
ð 	
ð 	
ð 	
ñô ð õ 7°q¸"Ñ=Ô=ÑÐ�aåÔ ØÝ*Ð+;È4ÀxÐPÑPÔPØŒgØŒxð	ñ ô €Fð ‡|‚|�~„~˜ÒÐ 4ÐØ×ÒÑÔð 	#Ø—[’[‘]”]ˆFà€Mr;   Úunpack_dataÚunpack_pivotsc                 óD  ‡ — t          j        ‰ j        dk    ˆ fd„¦  «         |r)t          j        |j        t           j        k    d„ ¦  «         t          ‰ j        ¦  «        }|d         }|d         }t          ||¦  «        }||d<   |r‰                      |¦  «        }n‰                      dg¦  «        }|r:||d<   ‰                      |¦  «        }	||d<   ||d<   ‰                      |¦  «        }
n,‰                      dg¦  «        }	‰                      dg¦  «        }
||	|
fS )Nr%  c                  ó   •— d‰ j         › d�S )NzFtorch.lu_unpack: Expected tensor with 2 or more dimensions. Got size: r‘  rK  )r¢  s   €r9   ri   z lu_unpack_meta.<locals>.<lambda>5  s   ø€ ÐkÐY[ÔYaÐkÐkÐk€ r;   c                  ó   — dS )Nz´torch.lu_unpack: LU_pivots is expected to be a contiguous tensor of torch.int32 dtype.
Note: this function is intended to be used with the output produced by torch.linalg.lu_factorr5   r5   r;   r9   ri   z lu_unpack_meta.<locals>.<lambda>:  s   € ðpð r;   r  r¿   r   )	rZ   rk   rÉ   rb   r�  rï   rœ   r   r›   )r¢  rˆ  r¯  r°  rŸ  rÀ  r4  r   r›  r@  r?  s   `          r9   Úlu_unpack_metar´  +  s?  ø€ õ 
„LØ
Œ�1ŠØkÐkÐkÐkñô ð ð ð 
ÝŒØŒL�EœKÒ'ðð ñ	
ô 	
ð 	
õ �”‰NŒN€EØˆbŒ	€AØˆbŒ	€AÝ��1‰Œ€AØ€Eˆ"�IØð Ø�LŠL˜ÑÔˆˆà�LŠL˜!˜ÑÔˆØð Øˆˆb‰	Ø�LŠL˜ÑÔˆØˆˆb‰	Øˆˆb‰	Ø�LŠL˜ÑÔˆˆà�LŠL˜!˜ÑÔˆØ�LŠL˜!˜ÑÔˆØˆa�ˆ7€Nr;   Úmodec                 ó~   ‡ — ‰ dk    rd}d}n.‰ dk    rd}d}n#‰ dk    rd}d}nt          j        dˆ fd„¦  «         ||fS )NÚreducedTÚcompleteFÚrc                  ó   •— d‰ › d�S )Nzqr received unrecognized mode 'z=' but expected one of 'reduced' (default), 'r', or 'complete'r5   )rµ  s   €r9   ri   z _parse_qr_mode.<locals>.<lambda>b  s"   ø€ ðO°$ð Oð Oð Oð r;   ©rZ   rk   )rµ  Ú	compute_qr·  s   `  r9   Ú_parse_qr_moder½  U  s~   ø€ ØˆyÒÐØˆ	ØˆˆØ	�Ò	Ð	Øˆ	ØˆˆØ	�ŠˆØˆ	ØˆˆåŒØðð ð ð ñ	
ô 	
ð 	
ð �gÐÐr;   ÚQÚRr·  c                 óT  — t          | d¦  «         t          | d¦  «         t          |¦  «        \  }}| j        d         }| j        d         }t	          ||¦  «        }|rXt          | j        ¦  «        }|r|n||d<   |                      |¦  «        }|                     |t          |d¬¦  «        ¦  «         n|                      dg¦  «        }t          | j        ¦  «        }	|s|s|n||	d<   |                      |	¦  «        }
|
                     |	t          |	d¬¦  «        ¦  «         ||
fS )Nz	linalg.qrr  r¿   FrI  r   )	r2  rÒ   r½  rœ   r   rï   r›   rö   r   )r  rµ  r¼  Úreduced_moderÀ  r4  r   ÚQ_shaper¾  ÚR_shaper¿  s              r9   Úlinalg_qr_metarÄ  j  s+  € õ �!�[Ñ!Ô!Ð!Ý˜1˜kÑ*Ô*Ð*å,¨TÑ2Ô2Ñ€Iˆ|à	Œ�Œ€AØ	Œ�Œ€AÝ��1‰Œ€Aàð Ý�q”w‘-”-ˆØ'Ð.�a�a¨Qˆ�‰Ø�KŠK˜Ñ Ô ˆØ	�Š�gÕ:¸7ÈeÐTÑTÔTÑUÔUÐUÐUà�KŠK˜˜ÑÔˆõ �1”7‰mŒm€GØ#Ð;¨9Ð;�!�!¸!€GˆB�KØ	�Š�GÑÔ€AØ‡M‚M�'Õ6°wÈ%ÐPÑPÔPÑQÔQÐQØˆaˆ4€Kr;   ÚsignÚ	logabsdetc                 ó¬  — t          | d¦  «         t          | dd¦  «         | j        }|                      |d d…         ¦  «        }|                      |d d…         t	          | j        ¦  «        ¬¦  «        }t          j        |t          |d¦  «        | j        | j	        ¬¦  «        }|                      |d d…         t          j
        ¬¦  «        }||||fS )Nzlinalg.slogdetFr  r”   r€  r¿   )rÑ   rÒ   rœ   r›   rd   rb   rZ   r�  r   r†   r�  )r  rœ   rÅ  rÆ  r¢  rˆ  s         r9   Ú_linalg_slogdetrÈ  †  sÐ   € õ �aÐ)Ñ*Ô*Ð*Ý˜1Ð.°Ñ6Ô6Ð6ØŒG€EØ�;Š;�u˜S˜b˜S”zÑ"Ô"€DØ—’˜E # 2 #œJ­o¸a¼gÑ.FÔ.F�ÑGÔG€IÝ	Ô	ØÝ*¨5°%Ñ8Ô8ØŒgØŒxð	
ñ 
ô 
€Bð �[Š[˜˜s ˜sœ­5¬;ˆ[Ñ7Ô7€FØ�˜B Ð&Ð&r;   Úfull_matricesÚ
compute_uvÚdriverc                 óÔ  — t          | d¦  «         t          | d¦  «         t          | j        d d…         ¦  «        }| j        d         }| j        d         }t	          j        ||¦  «        }|rž|||r|n|gz   }|                      |¦  «        }	|	                     |t          |d¬¦  «        ¦  «         ||r|n||gz   }
|                      |
¦  «        }t          | ¦  «        dk    }|                     |
t          |
|¬¦  «        ¦  «         n,|                      dg¦  «        }	|                      dg¦  «        }|                      ||gz   t          | j        ¦  «        ¬¦  «        }|	||fS )	Nz
linalg.svdr  r¿   FrI  r  r   r”   )r2  rÒ   rï   rœ   rZ   r   r›   rö   r   r  rd   rb   )r  rÉ  rÊ  rË  rü   rÀ  r4  r   ÚU_shaper?  ÚV_shapeÚVrT  ÚSs                 r9   Ú_linalg_svd_metarÑ  š  sp  € õ �!�\Ñ"Ô"Ð"Ý˜1˜lÑ+Ô+Ð+å�a”g˜c˜r˜c”lÑ#Ô#€JØ	Œ�Œ€AØ	Œ�Œ€AÝŒ�a˜ÑÔ€Aàð Ø ¨Ð#< 1 1¸1Ð=Ñ=ˆØ�KŠK˜Ñ Ô ˆØ	�Š�gÕ:¸7ÈeÐTÑTÔTÑUÔUÐUà ]Ð 9  ¸¸1Ð=Ñ=ˆØ�KŠK˜Ñ Ô ˆõ
 ˜a‘.”. FÒ*ˆØ	�Š�gÕ:¸7ÈgÐVÑVÔVÑWÔWÐWÐWð �KŠK˜˜ÑÔˆØ�KŠK˜˜ÑÔˆð 	
�Š�J ! Ñ$­O¸A¼GÑ,DÔ,DˆÑEÔE€AØˆa�ˆ7€Nr;   Úarg1Úarg2c                 óV  — | j         d d…         }|j         d d…         }t          ||¦  «        }t          |¦  «        }||                      d¦  «        |                      d¦  «        gz  }t          |¦  «        }||                     d¦  «        |                     d¦  «        gz  }||fS )Nr  r¿   )rœ   r&   rï   rÇ   )rÒ  rÓ  Úarg1_batch_sizesÚarg2_batch_sizesÚexpand_batch_portionÚarg1_expand_sizeÚarg2_expand_sizes          r9   r—  r—  À  s¨   € ð
 ”z # 2 #”ÐØ”z # 2 #”ÐÝ,Ð-=Ð?OÑPÔPÐåÐ0Ñ1Ô1ÐØ˜Ÿš 2™œ¨¯	ª	°"©¬Ð6Ñ6ÐåÐ0Ñ1Ô1ÐØ˜Ÿš 2™œ¨¯	ª	°"©¬Ð6Ñ6ÐØÐ-Ð-Ð-r;   c                 óÞ   — |rt          | ||¦  «         t          | |¦  «        \  }}|| j        k    r| n|                      |¦  «        }||j        k    r|n|                     |¦  «        }||fS rE   )r(  r—  rœ   r„  )rÒ  rÓ  r  rØ  rÙ  Úarg1_broadcastedÚarg2_broadcasteds          r9   rb  rb  Ñ  s�   € ð ð 1Ý˜t T¨4Ñ0Ô0Ð0å)EÀdÈDÑ)QÔ)QÑ&ÐÐ&ð ! D¤JÒ.Ð.ˆˆ°D·K²KÐ@PÑ4QÔ4Qð ð ! D¤JÒ.Ð.ˆˆ°D·K²KÐ@PÑ4QÔ4Qð ð Ð-Ð-Ð-r;   rÈ   c                 óv   — | j         d d…         }|j        dk    p| j        dz
  |j        k    o
|j         |k    }|S )Nr¿   r4   )rœ   rÉ   )r  rÈ   Úexpected_batched_rhs_shapeÚvector_cases       r9   Úlinalg_solve_is_vector_rhsrà  å  sK   € Ø!&¤¨S¨b¨SÔ!1ÐØ”* ’/ð ØŒ
�Q‰˜%œ*Ò$ÐR¨¬Ð8RÒ)Rð ð Ðr;   )rþ   rk  r7  r¢  rˆ  r‰  c                óô  ‡ ‡— t          ‰ d¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         t	          ‰ ‰¦  «        }|r‰                     d¦  «        n‰}	t          ‰ |	|d¦  «         t          |	‰ ¦  «        \  }
}t          j        |p| d„ ¦  «         |r
|
d d…         n|
}t          j        |t          || ¦  «        ‰j        ‰j
        ¬¦  «        }‰ j        }t          j        |t          |d¦  «        ‰ j        ‰ j
        ¬¦  «        }‰                      |d d…         t          j        ¬¦  «        }‰                      |d d…         t          j        ¬¦  «        }||||f}||||f}t          d	„ |D ¦   «         ¦  «        rjt          ||¦  «        D ]Y\  }}t!          ||j        ¦  «         |                     |j        |                     ¦   «         ¦  «         t'          ||d¬
¦  «         ŒZ|S )Nzlinalg.solvec                  ó*   •— d‰ j         › d‰j         › d�S )NzKlinalg.solve: Expected A and B to have the same dtype, but found A of type r©  r‘  r”   )r  r3  s   €€r9   ri   z"_linalg_solve_ex.<locals>.<lambda>ü  s0   ø€ ð9ØŒwð9ð 9Ø'(¤wð9ð 9ð 9ð r;   r¿   c                  ó   — dS )Nz•linalg.solve: Vector broadcasting of the left hand side is not supported for left=False. In this case linalg.solve is equivalent to B / A.squeeze(-1)r5   r5   r;   r9   ri   z"_linalg_solve_ex.<locals>.<lambda>  s   € ðKð r;   r€  Fr”   r  c              3   ó   K  — | ]}|d uV — Œ	d S rE   r5   ©rQ   r>   s     r9   rw   z#_linalg_solve_ex.<locals>.<genexpr>  s&   è è € Ð
&Ð
&˜Qˆ1�Dˆ=Ð
&Ð
&Ð
&Ð
&Ð
&Ð
&r;   )Ú	copy_fromÚcopy_toÚexact_dtype)rÒ   rZ   rk   rb   rà  Ú	unsqueezer6  r—  r�  r   r†   rœ   r›   r�  ri  rj  r"   rö   rñ   r$   )r  r3  rþ   rk  r7  r¢  rˆ  r‰  rß  ÚB_ÚB_broad_shaperW   Úresult_shapeÚresult_rœ   ÚLU_Úpivots_Úinfo_rø   Úresr¹  Úos   ``                    r9   Ú_linalg_solve_exró  í  s5  øø€ õ ˜1˜nÑ-Ô-Ð-Ý	„LØ	Œ�1”7Òð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ -¨Q°Ñ2Ô2€KØ'Ð	.ˆ�Š�R‰Œˆ¨Q€BÝ�a˜˜T >Ñ2Ô2Ð2Ý3°B¸Ñ:Ô:Ñ€M�1Ý	„LØÐ�K�ð	
ð 	
ñô ð ð *5ÐG�=  " Ô%Ð%¸-€LÝÔ!ØÝ*¨<¸T¸ÑBÔBØŒgØŒxð	ñ ô €Gð ŒG€EÝ
Ô
ØÝ*¨5°%Ñ8Ô8ØŒgØŒxð	ñ ô €Cð �kŠk˜%   œ*­E¬KˆkÑ8Ô8€GØ�KŠK˜˜c˜r˜cœ
­%¬+ˆKÑ6Ô6€EØ�2�v˜tÐ
$€CØ�C˜ %Ð
(€CÝ
Ð
&Ð
& #Ð
&Ñ
&Ô
&Ñ&Ô&ð FÝ˜˜S‘M”Mð 	Fð 	F‰DˆAˆqå˜a ¤Ñ)Ô)Ð)à�MŠM˜!œ' 1§8¢8¡:¤:Ñ.Ô.Ð.Ý Q°¸uÐEÑEÔEÐEÐEØ€Jr;   )rþ   Úunitriangularrø   rô  rø   c                óD  — |€|                       dg¦  «        }t          |t          ¦  «        st          dt	          |¦  «        › �¦  «        ‚t          | ||d¦  «         t          || d ¦  «        \  }}|                     dd¦  «                             ¦   «         o| 	                    ¦   «         }|rt          ||j        ¦  «        }nYt          ||j        ¦  «        rD|                     |                     dd¦  «        j        ¦  «         |                     dd¦  «         |S )Nr   zout must be TensorLike, got zlinalg.solve_triangularr  r¿   )r›   rt   r    r�   r}   r6  rb  rX  Úis_contiguousÚis_conjr"   rœ   r#   rõ   Ú
transpose_)	r  r3  rB  rþ   rô  rø   rê  ÚA_Úavoid_copy_As	            r9   Úlinalg_solve_triangular_metarû  (  s  € ð €{Ø�kŠk˜1˜#ÑÔˆÝ�c�:Ñ&Ô&ð IÝÐG½DÀ¹I¼IÐGÐGÑHÔHÐHÝ�a˜˜DÐ";Ñ<Ô<Ð<Ý.¨q°!°TÑ:Ô:�F€BˆØ—<’<  BÑ'Ô'×5Ò5Ñ7Ô7ÐH¸B¿JºJ¹L¼L€LØð #Ý  R¤XÑ.Ô.ˆˆõ    R¤XÑ.Ô.ð 	#Ø�KŠK˜Ÿš R¨Ñ,Ô,Ô2Ñ3Ô3Ð3Ø�NŠN˜2˜rÑ"Ô"Ð"Ø€Jr;   ÚXÚM)rè  rX  c                 ó   ‡ ‡— t          j        ‰ j        dk    ˆ fd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         t          ‰ ‰d¦  «         ‰j        t           j        k    rvt          ‰ ‰¦  «        \  }}t          j        |t          |d¬¦  «        ‰ j	        ‰ j
        ¬¦  «        }t          j        |t          |d¬¦  «        ‰j	        ‰j
        ¬¦  «        }nk‰j        t           j        k    s‰j        t           j        k    r+t          j        ‰ ¦  «        }‰                      dg¦  «        }nt          j        dd	„ ¦  «         ||fS )
Nr%  c                  ó   •— d‰ j         › d�S )NzMtorch.triangular_solve: Expected b to have at least 2 dimensions, but it has r^  r_  rÔ   s   €r9   ri   z'triangular_solve_meta.<locals>.<lambda>N  s!   ø€ ð9Øœ)ð9ð 9ð 9ð r;   c                  ó   •— d‰ j         › d�S )NzMtorch.triangular_solve: Expected A to have at least 2 dimensions, but it has r^  r_  r&  s   €r9   ri   z'triangular_solve_meta.<locals>.<lambda>U  r�  r;   Útriangular_solveFrI  r€  r   c                  ó   — dS )Nz+triangular_solve: Got an unexpected layout.r5   r5   r;   r9   ri   z'triangular_solve_meta.<locals>.<lambda>o  s   € Ð$Q€ r;   )rZ   rk   rÉ   r(  r…   Ústridedr—  r�  r   rb   r†   Ú
sparse_csrÚ
sparse_bsrr¡   r›   )	r�   r  rB  rX  rô  Úself_broadcast_sizeÚA_broadcast_sizeÚsolutionÚcloned_coefficients	   ``       r9   Útriangular_solve_metar
  C  s  øø€ õ 
„LØŒ	�QŠð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ	Œ�!Šð	
ð 	
ð 	
ð 	
ñô ð õ ˜4 Ð$6Ñ7Ô7Ð7à„x•5”=Ò Ð Ý0LÈTÐSTÑ0UÔ0UÑ-ÐÐ-ÝÔ&Ø$Ý.Ð/BÈeÐTÑTÔTØ”*Ø”;ð	
ñ 
ô 
ˆõ #Ô0Ø!Ý.Ð/?È5ÐQÑQÔQØ”'Ø”8ð	
ñ 
ô 
ÐÐð 
Œ•UÔ%Ò	%Ð	%¨¬µUÔ5EÒ)EÐ)EÝÔ# DÑ)Ô)ˆØ!Ÿ^š^¨Q¨CÑ0Ô0ÐÐåŒ�UÐQÐQÑRÔRÐRØÐ'Ð'Ð'r;   c                 ó~  — t          | d¦  «         t          | d¦  «         |                      | j        d d…         ¦  «        }|                      | j        ¦  «        }|                     | j        t          | j        d¬¦  «        ¦  «         |                      | j        d d…         t          j        ¬¦  «        }|||fS )Nz
linalg.detr  FrI  r¿   r”   r…  )r  Údetr¢  rˆ  s       r9   Ú_linalg_det_metar  t  s£   € å�a˜Ñ&Ô&Ð&Ý˜1˜lÑ+Ô+Ð+à
�+Š+�a”g˜c˜r˜c”lÑ
#Ô
#€Cà	
�Š�Q”WÑ	Ô	€BØ‡N‚N�1”7Õ7¸¼È5ÐQÑQÔQÑRÔRÐRà�[Š[˜œ  " œ­U¬[ˆ[Ñ9Ô9€FØ��Fˆ?Ðr;   c                 óš  ‡ ‡‡‡‡‡— t          j        ‰ j        dk    d„ ¦  «         t          j        ‰j        dk    d„ ¦  «         |rdndŠt          j        ‰j        ‰         ‰j        d         k    ˆfd„¦  «         t          j        ‰j        ‰         ‰ j        d         k    ˆfd„¦  «         t          j        ‰j        d         ‰ j        d         k    d„ ¦  «         t          j        ‰ j        ‰j        z
  d	k    ˆ ˆfd
„¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰ j        dk    re‰ j        d d…         }‰j        d d…         Št          j        ‰|k    ˆfd„¦  «         ‰j        d d…         Št          j        ‰|k    ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          d‰‰ d¦  «         t          d‰‰ d¦  «         t          j        ‰j        t          ‰j        d¬¦  «        ‰j        ‰j        ¬¦  «        S )Nr%  c                  ó   — dS )Nz3torch.ormqr: input must have at least 2 dimensions.r5   r5   r;   r9   ri   zormqr.<locals>.<lambda>Œ  ó   € Ð!V€ r;   c                  ó   — dS )Nz3torch.ormqr: other must have at least 2 dimensions.r5   r5   r;   r9   ri   zormqr.<locals>.<lambda>�  r  r;   r  r¿   c                  ó   •— d‰ › d�S )Nútorch.ormqr: other.shape[z0] must be greater than or equal to tau.shape[-1]r5   ©Úleft_size_conditions   €r9   ri   zormqr.<locals>.<lambda>•  s   ø€ ÐqÐ,?ÐqÐqÐq€ r;   c                  ó   •— d‰ › d�S )Nr  z"] must be equal to input.shape[-2]r5   r  s   €r9   ri   zormqr.<locals>.<lambda>™  s   ø€ ÐcÐ,?ÐcÐcÐc€ r;   c                  ó   — dS )NzHtorch.ormqr: tau.shape[-1] must be less than or equal to input.shape[-1]r5   r5   r;   r9   ri   zormqr.<locals>.<lambda>ž  rt  r;   r4   c                  ó(   •— d‰j         › d‰ j         › �S )Nz[torch.ormqr: Expected tau to have one dimension less than input, but got tau.ndim equal to rx  r_  ry  s   €€r9   ri   zormqr.<locals>.<lambda>£  rz  r;   c                  ó(   •— d‰j         › d‰ j         › �S )Nzhtorch.ormqr: Expected other to have the same number of dimensions as input, but got other.ndim equal to rx  r_  ©r  rÈ   s   €€r9   ri   zormqr.<locals>.<lambda>ª  s1   ø€ ð`Ø+0¬:ð`ð `ØSXÔS]ð`ð `ð r;   c                  ó   •— d‰ › �S )NzWtorch.ormqr: Expected batch dimensions of tau to be equal to input.shape[:-2], but got r5   r|  s   €r9   ri   zormqr.<locals>.<lambda>µ  r~  r;   c                  ó   •— d‰ › �S )NzYtorch.ormqr: Expected batch dimensions of other to be equal to input.shape[:-2], but got r5   )Úactual_batch_other_shapes   €r9   ri   zormqr.<locals>.<lambda>¾  s   ø€ ðQØ6NðQð Qð r;   c                  ó(   •— d‰ j         › d‰j         › �S )NzPtorch.ormqr: Expected input and tau to have the same dtype, but input has dtype z and tau has dtype r”   ry  s   €€r9   ri   zormqr.<locals>.<lambda>Æ  s0   ø€ ðOØ#(¤;ðOð OØCFÄ9ðOð Oð r;   c                  ó(   •— d‰ j         › d‰j         › �S )NzRtorch.ormqr: Expected input and other to have the same dtype, but input has dtype z and other has dtype r”   r  s   €€r9   ri   zormqr.<locals>.<lambda>Í  s0   ø€ ðSØ#(¤;ðSð SØEJÄ[ðSð Sð r;   ztorch.ormqrrq  rÈ   FrI  r€  )	rZ   rk   rÉ   rœ   rb   r<  r�  r   r†   )	r  rq  rÈ   rþ   rX  Úexpected_batch_shaper  r}  r  s	   ```   @@@r9   Úormqrr!  ‚  sú  øøøøøø€ õ 
„LØŒ
�aŠÐVÐVñô ð õ 
„LØŒ
�aŠÐVÐVñô ð ð !%Ð,˜"˜"¨"ÐÝ	„LØŒÐ'Ô(¨C¬I°b¬MÒ9ØqÐqÐqÐqñô ð õ 
„LØŒÐ'Ô(¨E¬K¸¬OÒ;ØcÐcÐcÐcñô ð õ
 
„LØŒ	�"Œ˜œ RœÒ(ØZÐZñô ð õ
 
„LØŒ
�S”XÑ Ò"ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�e”jÒ ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „z�A‚~€~Ø$œ{¨3¨B¨3Ô/ÐØ!$¤¨3¨B¨3¤ÐÝŒØ"Ð&:Ò:ðð ð ð ñ	
ô 	
ð 	
ð $)¤;¨s°¨sÔ#3Ð ÝŒØ$Ð(<Ò<ðð ð ð ñ	
ô 	
ð 	
õ 
„LØŒ	�U”[Ò ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�u”{Ò"ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �M 3¨¨uÑ5Ô5Ð5Ý�M 5¨%°Ñ9Ô9Ð9åÔØŒ[Ý*¨5¬;À%ÐHÑHÔHØŒkØŒ|ð	ñ ô ð r;   c                óÂ  ‡ ‡‡— t          j        t          ‰¦  «        d‰z  k    ˆˆfd„¦  «         ‰ j        }|‰dz   k    }|}| }ddlm}m} |r7t          d|¦  «        D ]%}	 ||‰                      |	¦  «        dk    ¦  «        }Œ&n5t          |¦  «        D ]%}	 ||‰                      |	¦  «        dk    ¦  «        }Œ&t          j         |||¦  «        ˆˆ fd„¦  «         d S )Nr%  c                  ó4   •— dd‰ z  › dt          ‰¦  «        › �S )Nzpadding size is expected to be r%  z, but got: ©rî   )r‰   Úpaddings   €€r9   ri   z,_padding_check_valid_input.<locals>.<lambda>á  s"   ø€ ÐT°!°c±'ÐTÐTÅcÈ'ÁlÄlÐTÐT€ r;   r   ©Úsym_andÚsym_orr4   c                  ó0   •— d‰ dz   › d‰ dz   › d‰j         › �S )Nú	Expected r4   zD or r%  zcD (batch mode) tensor with possibly 0 batch size and other non-zero dimensions for input, but got: rK  )r‰   r  s   €€r9   ri   z,_padding_check_valid_input.<locals>.<lambda>ø  sC   ø€ ðO˜˜a™ð Oð O c¨A¡gð Oð OØAFÄðOð Oð r;   )	rZ   rk   rî   rÉ   r  r'  r(  rð   rÇ   )
r  r%  r‰   Ú	input_dimÚis_batch_modeÚvalid_batch_modeÚvalid_non_batch_moder'  r(  rå   s
   ```       r9   Ú_padding_check_valid_inputr/  Þ  sR  øøø€ Ý	„LÝˆG‰Œ˜˜C™ÒØTÐTÐTÐTÐTñô ð ð
 ”
€Ià #¨¡'Ò*€Mà$ÐØ,Ð,ÐàEÐEÐEÐEÐEÐEÐEÐEàð Uå�q˜)Ñ$Ô$ð 	Mð 	MˆAØ&˜wÐ'7¸¿ºÀA¹¼È!Ò9KÑLÔLÐÐð	Mõ �yÑ!Ô!ð 	Uð 	UˆAØ#* 7Ð+?ÀÇÂÈAÁÄÐRSÒASÑ#TÔ#TÐ Ð õ 
„LØˆÐÐ!5Ñ6Ô6ð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r;   c                ó  ‡ ‡‡‡	‡
‡— ddl m} d}dŠd}‰ j        dk    r‰                      d¦  «        }‰dz  Š|dz  }t	          ‰ |d¬¦  «         |\  Š
Š‰                      |¦  «        }‰                      ‰¦  «        Š‰‰
z   ‰z   Š	|r-t          j         |‰
‰k     ‰‰k     ¦  «        ˆˆ ˆ
ˆfd„¦  «         t          j        ‰	dk    ˆˆ	fd„¦  «         ‰ j        dk    r‰                      |‰	f¦  «        S ‰                      ||‰	f¦  «        S )	Nr   ©r'  r4   r1   rÀ   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S ©NzcArgument #4: Padding size should be less than the corresponding input dimension, but got: padding (r{   ú) at dimension ú
 of input rK  ©Údim_wr  Úpad_lÚpad_rs   €€€€r9   ri   z_pad1d_common.<locals>.<lambda>  óM   ø€ ðcØ%*ðcð cØ.3ðcð cØDIðcð cØUZÔU`ðcð cð r;   c                  ó   •— d‰ › d‰› �S )Nz
input (W: z%) is too small. Calculated output W: r5   )Úinput_wÚoutput_ws   €€r9   ri   z_pad1d_common.<locals>.<lambda>  s   ø€ ÐU˜WÐUÐUÈ8ÐUÐU€ r;   r%  )r  r'  rÉ   rÇ   r/  rZ   rk   r›   )r  r%  Úis_reflectionr'  Ú	dim_planeÚnbatchÚnplaner7  r<  r=  r8  r9  s   `      @@@@@r9   Ú_pad1d_commonrB  ÿ  sb  øøøøøø€ Ø=Ð=Ð=Ð=Ð=Ð=à€IØ€EØ€Fà„z�Q‚€Ø—’˜A‘”ˆØ�‰
ˆØ�Q‰ˆ	å˜u g°1Ð5Ñ5Ô5Ð5à�L€Eˆ5à�ZŠZ˜	Ñ"Ô"€FØ�jŠj˜ÑÔ€GØ˜‰ Ñ&€Hàð 
ÝŒØˆG�E˜G’O U¨W¢_Ñ5Ô5ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�AŠØUÐUÐUÐUÐUñô ð ð
 „z�Q‚€Ø�Š ¨Ð1Ñ2Ô2Ð2à�Š ¨°Ð9Ñ:Ô:Ð:r;   c                 ó&   — t          | |d¬¦  «        S ©NT©r>  )rB  ©r  r%  s     r9   Úmeta_reflection_pad1drG  '  ó   € õ ˜ °tÐ<Ñ<Ô<Ð<r;   c                 ó~   ‡ — t          j        ‰ j        t           j        k    ˆ fd„¦  «         t	          ‰ |d¬¦  «        S )Nc                  ó>   •— d‰ j                              ¦   «         › d�S )Nz)"replication_pad1d" not implemented for 'ú'©rb   Ú__str__©r  s   €r9   ri   z(meta_replication_pad1d.<locals>.<lambda>2  ó!   ø€ ÐX¸e¼k×>QÒ>QÑ>SÔ>SÐXÐXÐX€ r;   FrE  )rZ   rk   rb   ÚboolrB  rF  s   ` r9   Úmeta_replication_pad1drQ  -  óH   ø€ õ 
„LØŒ•u”zÒ!ØXÐXÐXÐXñô ð õ ˜ °uÐ=Ñ=Ô=Ð=r;   c                óÈ  ‡ ‡‡‡‡‡	— ddl m} dŠ|s't          j        t	          |¦  «        dk    d„ ¦  «         ‰j        dk    r‰dz  Š|\  ŠŠ	‰                     ‰¦  «        }|‰z   ‰	z   Š|r-t          j         |‰|k     ‰	|k     ¦  «        ˆˆˆˆ	fd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         ‰                     ‰j        ¦  «        S )	Nr   r1  r4   r%  c                  ó   — dS )Nz padding size is expected to be 2r5   r5   r;   r9   ri   z(_pad1d_backward_common.<locals>.<lambda><  s   € Ð0R€ r;   r1   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r3  rK  r6  s   €€€€r9   ri   z(_pad1d_backward_common.<locals>.<lambda>I  r:  r;   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S ©Nz(grad_output width unexpected. Expected: ú, Got: rÆ   ©r7  Úgrad_outputr=  s   €€€r9   ri   z(_pad1d_backward_common.<locals>.<lambda>Q  ó'   ø€ Ðe¸8ÐeÐeÈK×L\ÒL\Ð]bÑLcÔLcÐeÐe€ r;   )	r  r'  rZ   rk   rî   rÉ   rÇ   r›   rœ   )
rZ  r  r%  r>  r'  r<  r7  r=  r8  r9  s
   ``    @@@@r9   Ú_pad1d_backward_commonr\  7  s/  øøøøøø€ Ø=Ð=Ð=Ð=Ð=Ð=à€EØð TÝŒ•S˜‘\”\ QÒ&Ð(RÐ(RÑSÔSÐSà„z�Q‚€Ø�‰
ˆà�L€Eˆ5à�jŠj˜ÑÔ€GØ˜‰ Ñ&€Hàð 
ÝŒØˆG�E˜G’O U¨W¢_Ñ5Ô5ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð ð
 �?Š?˜5œ;Ñ'Ô'Ð'r;   Ú
grad_inputc                 ó(   — t          | ||d¬¦  «        S rD  ©r\  ©rZ  r  r%  s      r9   Úmeta_reflection_pad1d_backwardra  W  s   € õ " +¨u°gÈTÐRÑRÔRÐRr;   c                 ó(   — t          | ||d¬¦  «        S )NFrE  r_  r`  s      r9   Úmeta_replication_pad1d_backwardrc  ]  s   € õ " +¨u°gÈUÐSÑSÔSÐSr;   c                óŽ  ‡ ‡	‡
‡‡‡‡‡‡‡‡— ddl m} dŠ
dŠ	d}d}t          ‰ |d¬¦  «         ‰ j        }|dk    r$‰                      d¦  «        }‰
dz  Š
‰	dz  Š	|dz  }|\  ŠŠŠŠ‰                      |¦  «        }‰                      ‰	¦  «        Š‰                      ‰
¦  «        Š‰‰z   ‰z   Š‰‰z   ‰z   Š|rZt          j         |‰‰k     ‰‰k     ¦  «        ˆ
ˆ ˆˆfd„¦  «         t          j         |‰‰k     ‰‰k     ¦  «        ˆ	ˆ ˆˆfd„¦  «         t          j        ‰dk    p‰dk    ˆˆˆˆfd	„¦  «         ‰ j        d
k    r‰                      |‰‰f¦  «        S ‰                      ||‰‰f¦  «        }t          ‰ ¦  «        dk    rBt          j
        ‰ ¦  «        t
          j        k    r |                     t
          j        ¬¦  «        }|S )Nr   r1  r%  r4   rÀ   é   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r3  rK  r6  s   €€€€r9   ri   z_pad2d_common.<locals>.<lambda>  r:  r;   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S ©NzcArgument #6: Padding size should be less than the corresponding input dimension, but got: padding (r{   r4  r5  rK  ©Údim_hr  Úpad_bÚpad_ts   €€€€r9   ri   z_pad2d_common.<locals>.<lambda>†  r:  r;   c                  ó    •— d‰ › d‰› d‰› d‰› �S )Nz
input (H: ú W: z%) is too small. Calculated output H: r5   )Úinput_hr<  Úoutput_hr=  s   €€€€r9   ri   z_pad2d_common.<locals>.<lambda>Ž  s?   ø€ ð=˜ð =ð = gð =ð =Ø$,ð=ð =Ø2:ð=ð =ð r;   r1   r  rÏ   )r  r'  r/  rÉ   rÇ   rZ   rk   r›   r  rT   r   Úchannels_lastr‚  )r  r%  r>  r'  Ú
dim_slicesr@  rÉ   rA  r  rj  r7  ro  r<  rp  r=  rk  r8  r9  rl  s   `        @@@@@@@@@@r9   Ú_pad2d_commonrs  c  sW  øøøøøøøøøøø€ Ø=Ð=Ð=Ð=Ð=Ð=à€EØ€EØ€JØ€Få˜u g°1Ð5Ñ5Ô5Ð5àŒ:€DØˆq‚y€yØ—’˜A‘”ˆØ�‰
ˆØ�‰
ˆØ�a‰ˆ
à!(Ñ€Eˆ5�%˜à�ZŠZ˜
Ñ#Ô#€FØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ˜‰ Ñ&€HØ˜‰ Ñ&€Hàð 
ÝŒØˆG�E˜G’O U¨W¢_Ñ5Ô5ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 	ŒØˆG�E˜G’O U¨W¢_Ñ5Ô5ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØ�AŠÐ&˜ Qšð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „z�Q‚€Ø�Š ¨°(Ð;Ñ<Ô<Ð<à—’ &¨&°(¸HÐ!EÑFÔFˆõ ˜ÑÔ &Ò(Ð(ÝÔ+¨EÑ2Ô2µeÔ6IÒIÐIà—Y’Y­UÔ-@�YÑAÔAˆFØˆr;   c                 ó&   — t          | |d¬¦  «        S rD  )rs  rF  s     r9   Úmeta_reflection_pad2dru  ¢  rH  r;   c                 ó~   ‡ — t          j        ‰ j        t           j        k    ˆ fd„¦  «         t	          ‰ |d¬¦  «        S )Nc                  ó>   •— d‰ j                              ¦   «         › d�S )Nz)"replication_pad2d" not implemented for 'rK  rL  rN  s   €r9   ri   z(meta_replication_pad2d.<locals>.<lambda>­  rO  r;   FrE  )rZ   rk   rb   rP  rs  rF  s   ` r9   Úmeta_replication_pad2drx  ¨  rR  r;   c                 óZ   — t          j        |¦  «        }t          j        |¦  «        }||fS rE   r    )Úgrad_wÚsaved_vÚsaved_gÚsaved_normsr‰   Úgrad_vÚgrad_gs          r9   Úmeta_weight_norm_backwardr€  ²  s.   € õ Ô˜gÑ&Ô&€FÝÔ˜gÑ&Ô&€FØ�6ˆ>Ðr;   c                 óº  ‡ ‡‡‡‡— dŠdŠd}|j         }|                     ¦   «         dk    r‰dz  Š‰dz  Š|dz  }|\  }}}}|‰         }	|‰         }
|	|z   |z   Š|
|z   |z   Št          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         |                     |j         ¦  «        S )Nr%  r4   r   re  c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S rW  rÆ   rY  s   €€€r9   ri   z%meta_pad2d_backward.<locals>.<lambda>Ø  r[  r;   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S ©Nz)grad_output height unexpected. Expected: rX  rÆ   ©rj  rZ  rp  s   €€€r9   ri   z%meta_pad2d_backward.<locals>.<lambda>Ü  ó'   ø€ Ðf¸HÐfÐfÈ[×M]ÒM]Ð^cÑMdÔMdÐfÐf€ r;   )rœ   r‰   rZ   rk   rÇ   r›   )rZ  r�   r%  r?  rh   r8  r9  rl  rk  ro  r<  rj  r7  rp  r=  s   `          @@@@r9   Úmeta_pad2d_backwardr‡  »  s  øøøøø€ ð €EØ€EØ€Ià”€JØ‡x‚x�z„z�Q‚€Ø�‰
ˆØ�‰
ˆØ�Q‰ˆ	à!(Ñ€Eˆ5�%˜à˜Ô€GØ˜Ô€GØ˜‰ Ñ&€HØ˜‰ Ñ&€Hå	„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØfÐfÐfÐfÐfÐfñô ð ð �>Š>˜$œ*Ñ%Ô%Ð%r;   c          	      ó¨  ‡ ‡	‡
‡‡‡‡‡‡‡‡‡‡‡‡‡— ddl m} dŠdŠ
dŠ	d}t          ‰ |d¬¦  «         ‰ j        dk    }|r)‰                      d¦  «        }‰dz  Š‰
dz  Š
‰	dz  Š	|dz  }|\  ŠŠŠŠŠŠ‰                      |¦  «        }‰                      ‰	¦  «        Š‰                      ‰
¦  «        Š‰                      ‰¦  «        Š‰‰z   ‰z   Š‰‰z   ‰z   Š‰‰z   ‰z   Š|r‡t          j         |‰‰k     ‰‰k     ¦  «        ˆˆ ˆˆfd„¦  «         t          j         |‰‰k     ‰‰k     ¦  «        ˆ
ˆ ˆˆfd	„¦  «         t          j         |‰‰k     ‰‰k     ¦  «        ˆ	ˆ ˆˆfd
„¦  «         ddl m} t          j         |‰dk    ‰dk    ‰dk    ¦  «        ˆˆˆˆˆˆfd„¦  «         |r‰                      ||‰‰‰f¦  «        S ‰                      |‰‰‰f¦  «        S )Nr   r1  r1   r%  r4   rÀ   é   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S r3  rK  r6  s   €€€€r9   ri   z_pad3d_common.<locals>.<lambda> 	  r:  r;   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S rh  rK  ri  s   €€€€r9   ri   z_pad3d_common.<locals>.<lambda>	  r:  r;   c                  ó*   •— d‰› d‰› d‰ › d‰j         › �S )NzcArgument #8: Padding size should be less than the corresponding input dimension, but got: padding (r{   r4  r5  rK  )Údim_dr  Úpad_bkÚpad_fs   €€€€r9   ri   z_pad3d_common.<locals>.<lambda>	  sM   ø€ ðdØ%*ðdð dØ.4ðdð dØEJðdð dØV[ÔVaðdð dð r;   ©r(  c                  ó,   •— d‰ › d‰› d‰› d‰› d‰› d‰› �S )Nz
input (D: ú H: rn  z%) is too small. Calculated output D: r5   )Úinput_dro  r<  Úoutput_drp  r=  s   €€€€€€r9   ri   z_pad3d_common.<locals>.<lambda>	  se   ø€ ðK˜ð Kð K gð Kð K°7ð Kð KØ$,ðKð KØ2:ðKð KØ@HðKð Kð r;   )	r  r'  r/  rÉ   rÇ   rZ   rk   r(  r›   )r  r%  r>  r'  r?  Ú
batch_moder@  rA  r(  r�  rj  r7  r“  ro  r<  r”  rp  r=  rk  rŽ  r�  r8  r9  rl  s   `        @@@@@@@@@@@@@@@r9   Ú_pad3d_commonr–  á  s¿  øøøøøøøøøøøøøøøø€ Ø=Ð=Ð=Ð=Ð=Ð=à€EØ€EØ€EØ€Iå˜u g°1Ð5Ñ5Ô5Ð5à”˜q’€JØð Ø—’˜A‘”ˆØ�‰
ˆØ�‰
ˆØ�‰
ˆØ�Q‰ˆ	à07Ñ-€Eˆ5�%˜  và�ZŠZ˜	Ñ"Ô"€FØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ˜‰ Ñ'€HØ˜‰ Ñ&€HØ˜‰ Ñ&€Hàð 
ÝŒØˆG�E˜G’O U¨W¢_Ñ5Ô5ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 	ŒØˆG�E˜G’O U¨W¢_Ñ5Ô5ðð ð ð ð ð ð ñ	
ô 	
ð 	
õ 	ŒØˆG�E˜G’O V¨gÒ%5Ñ6Ô6ðð ð ð ð ð ð ñ	
ô 	
ð 	
ð =Ð<Ð<Ð<Ð<Ð<å	„LØˆˆx˜1Š}˜h¨!šm¨X¸ª]Ñ;Ô;ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð GØ�Š ¨°¸(ÀHÐMÑNÔNÐNà�Š ¨°(¸HÐEÑFÔFÐFr;   c                 ó&   — t          | |d¬¦  «        S rD  )r–  rF  s     r9   Úmeta_reflection_pad3dr˜  $	  rH  r;   c                 ó~   ‡ — t          j        ‰ j        t           j        k    ˆ fd„¦  «         t	          ‰ |d¬¦  «        S )Nc                  ó>   •— d‰ j                              ¦   «         › d�S )Nz)"replication_pad3d" not implemented for 'rK  rL  rN  s   €r9   ri   z(meta_replication_pad3d.<locals>.<lambda>/	  rO  r;   FrE  )rZ   rk   rb   rP  r–  rF  s   ` r9   Úmeta_replication_pad3dr›  *	  rR  r;   c                 óZ  ‡ ‡‡‡‡‡‡— t          j        t          |¦  «        dk    d„ ¦  «         |j        dk    rt	          d|j        › �¦  «        ‚‰ j        |j        k    rt	          d‰ j        › d|j        › �¦  «        ‚dŠdŠdŠ|j        d	k    r‰dz  Š‰dz  Š‰dz  Š|\  }}}}}}|                     ‰¦  «        }	|                     ‰¦  «        }
|                     ‰¦  «        }|	|z   |z   Š|
|z   |z   Š||z   |z   Št          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd
„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         t          j        ‰‰                      ‰¦  «        k    ˆˆ ˆfd„¦  «         |                     |j        ¦  «        S )Né   c                  ó   — dS )Nz padding size is expected to be 6r5   r5   r;   r9   ri   z%meta_pad3d_backward.<locals>.<lambda>>	  s   € Ð,N€ r;   r1   zinput.ndim must be > 3, got z,grad_output.ndim must equal input.ndim, got ú != r%  r4   r‰  c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S rW  rÆ   rY  s   €€€r9   ri   z%meta_pad3d_backward.<locals>.<lambda>Z	  r[  r;   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S r„  rÆ   r…  s   €€€r9   ri   z%meta_pad3d_backward.<locals>.<lambda>^	  r†  r;   c                  ó:   •— d‰› d‰                      ‰ ¦  «        › �S )Nz(grad_output depth unexpected. Expected: rX  rÆ   )r�  rZ  r”  s   €€€r9   ri   z%meta_pad3d_backward.<locals>.<lambda>b	  r[  r;   )rZ   rk   rî   rÉ   r�   rÇ   r›   rœ   )rZ  r  r%  r8  r9  rl  rk  r�  rŽ  r“  ro  r<  r�  rj  r7  r”  rp  r=  s   `           @@@@@@r9   Úmeta_pad3d_backwardr£  4	  s   øøøøøøø€ õ 
„L•�W‘” Ò"Ð$NÐ$NÑOÔOÐOØ„z�Q‚€ÝÐH¸E¼JÐHÐHÑIÔIÐIØÔ˜5œ:Ò%Ð%ÝØ]¸;Ô;KÐ]Ð]ÐQVÔQ[Ð]Ð]ñ
ô 
ð 	
ð €EØ€EØ€Eà„z�Q‚€Ø�‰
ˆØ�‰
ˆØ�‰
ˆà07Ñ-€Eˆ5�%˜  và�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ�jŠj˜ÑÔ€GØ˜‰ Ñ'€HØ˜‰ Ñ&€HØ˜‰ Ñ&€Hå	„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØfÐfÐfÐfÐfÐfñô ð õ 
„LØ�K×$Ò$ UÑ+Ô+Ò+ØeÐeÐeÐeÐeÐeñô ð ð
 �?Š?˜5œ;Ñ'Ô'Ð'r;   r%  Úpc                 óö   — t          j        |                      ¦   «         d„ ¦  «         |                      d¦  «        }|                      ||dz
  z  dz  f¦  «                             t           j        ¬¦  «        S )Nc                  ó   — dS )Nz(_pdist_forward requires contiguous inputr5   r5   r;   r9   ri   z%meta__pdist_forward.<locals>.<lambda>l	  s   € Ð&P€ r;   r   r4   r%  rÏ   )rZ   rk   rö  rÇ   r›   r‚  rg  )r�   r¤  r4  s      r9   Úmeta__pdist_forwardr§  h	  s}   € õ 
„LØ×ÒÑÔÐPÐPñô ð ð 	�	Š	�!‰Œ€AØ�>Š>˜1  A¡™;¨!Ñ+Ð-Ñ.Ô.×1Ò1ÝÔ4ð 2ñ ô ð r;   ÚgradÚpdistc                 óâ   — t          j        |                     ¦   «         d„ ¦  «         t          j        |                     ¦   «         d„ ¦  «         t          j        |t           j        ¬¦  «        S )Nc                  ó   — dS )Nz._pdist_backward requires self to be contiguousr5   r5   r;   r9   ri   z&meta__pdist_backward.<locals>.<lambda>x	  s   € Ð&V€ r;   c                  ó   — dS )Nz/_pdist_backward requires pdist to be contiguousr5   r5   r;   r9   ri   z&meta__pdist_backward.<locals>.<lambda>{	  s   € Ð'X€ r;   rÏ   )rZ   rk   rö  r¡   rg  )r¨  r�   r¤  r©  s       r9   Úmeta__pdist_backwardr­  t	  ss   € õ 
„LØ×ÒÑÔÐVÐVñô ð õ 
„LØ×ÒÑÔÐXÐXñô ð õ Ô˜DµÔ0NÐOÑOÔOÐOr;   )r°  r¯  c          
      óJ  ‡ ‡‡‡‡‡— ddl m}m} ‰                     d¦  «        }‰                     d¦  «        }‰                     d¦  «        }	 |t	          j         |‰ j        |||	f¦  «        ¦  «        ¦  «        r‰                      |||	f¦  «        Š t	          j        ‰ 	                    ¦   «         dk    d„ ¦  «         t	          j        ‰ 	                    ¦   «         dk    d„ ¦  «         t          j        s7t	          j        ‰ j        ‰j        cxk    o
‰j        k    nc ˆˆˆ fd„¦  «         ‰j        }
‰j        Š|
d         Š|
d         Št	          j        ‰d         ‰k    o‰d         ‰k    ˆˆˆfd	„¦  «         ‰                      ‰                      ¦   «         ¦  «        S )
Nr   )Úguard_or_trueÚsym_eqr4   r%  r1   c                  ó   — dS ©Nzbatch1 must be a 3D tensorr5   r5   r;   r9   ri   zmeta_baddbmm.<locals>.<lambda>Š	  ó   € Ð,H€ r;   c                  ó   — dS ©Nzbatch2 must be a 3D tensorr5   r5   r;   r9   ri   zmeta_baddbmm.<locals>.<lambda>‹	  r³  r;   c                  ó8   •— d‰j         › d‰ j         › d‰j         › �S )Nz+Input dtypes must be the same, got: input: z
, batch1: z
, batch2: r”   )Úbatch1Úbatch2r�   s   €€€r9   ri   zmeta_baddbmm.<locals>.<lambda>�	  s*   ø€ Ð~À$Ä*Ð~Ð~ÐX^ÔXdÐ~Ð~ÐpvÔp|Ð~Ð~€ r;   c            	      ó:   •— d‰› d‰› d‰ d         › d‰ d         › d�	S ©Nz@Expected size for first two dimensions of batch2 tensor to be: [r{   z] but got: [r   r4   ú].r5   ©Úbatch2_sizesÚbsÚcontraction_sizes   €€€r9   ri   zmeta_baddbmm.<locals>.<lambda>—	  sY   ø€ ð[Øð[ð [Ø&ð[ð [Ø4@À´Oð[ð [ØGSÐTUÄð[ð [ð [ð r;   )r  r¯  r°  rÇ   rZ   Úsym_notrœ   r„  rk   r‰   Ú
exp_configÚ&skip_dtype_check_in_meta_registrationsrb   r›   )r�   r·  r¸  r°  r¯  r¯  r°  Údim1Údim2Údim3Úbatch1_sizesr½  r¾  r¿  s   ```        @@@r9   Úmeta_baddbmmrÇ  €	  sÁ  øøøøøø€ ð LÐKÐKÐKÐKÐKÐKÐKà�;Š;�q‰>Œ>€DØ�;Š;�q‰>Œ>€DØ�;Š;�q‰>Œ>€DØ€}•U”] 6 6¨$¬*°t¸TÀ4Ð6HÑ#IÔ#IÑJÔJÑKÔKð /Ø�{Š{˜D $¨Ð-Ñ.Ô.ˆÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝÔ<ð 
ÝŒØŒJ˜&œ,Ð6Ð6Ò6Ð6¨&¬,Ò6Ð6Ð6Ð6Ø~Ð~Ð~Ð~Ð~Ð~ñ	
ô 	
ð 	
ð ”<€LØ”<€LØ	�aŒ€BØ# A”ÐÝ	„LØ�QŒ˜2ÒÐE ,¨q¤/Ð5EÒ"Eð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �>Š>˜$Ÿ)š)™+œ+Ñ&Ô&Ð&r;   c                óB   — t          j        | t           j        ¬¦  «        S rÞ   rÇ  r¢   s     r9   Úmeta_bernoullirÉ  Ÿ	  s   € õ Ô˜DµÔ0GÐHÑHÔHÐHr;   ç      à?c                 ó   — | S rE   r5   ©r�   r¤  r£   s      r9   Úmeta_bernoulli_rÍ  ¦	  ó   € à€Kr;   c                 óB   — t          j        | t           j        ¬¦  «        S rÞ   rÇ  rÌ  s      r9   Úmeta_bernoulli_prÐ  «	  s   € õ Ô˜DµÔ0GÐHÑHÔHÐHr;   c                 ó*   — t          j        | ¦  «        S rE   r    r¢   s     r9   Úmeta_poissonrÒ  ±	  r¥   r;   c                 óÆ   — t          j        |
|                      ¦   «         k     d„ ¦  «         t          j        | t           j        ¬¦  «        }t          j        | ¦  «        |fS )Nc                  ó   — dS )NzJError in fused_moving_avg_obs_fake_quant_cpu: ch_axis must be < self.dim()r5   r5   r;   r9   ri   z6meta__fused_moving_avg_obs_fq_helper.<locals>.<lambda>É	  ó   € Ð\€ r;   r”   )rZ   rk   r‰   r¡   rP  )r�   Úobserver_onÚfake_quant_onÚrunning_minÚrunning_maxÚscaleÚ
zero_pointÚaveraging_constÚ	quant_minÚ	quant_maxÚch_axisÚper_row_fake_quantÚsymmetric_quantr¸   s                 r9   Ú$meta__fused_moving_avg_obs_fq_helperrâ  ·	  s]   € õ  
„LØ�$—(’(‘*”*ÒØ\Ð\ñô ð õ Ô˜D­¬
Ð3Ñ3Ô3€DÝÔ˜TÑ"Ô" DÐ)Ð)r;   c                 ó  ‡‡‡‡— t          j        |                      ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         | j        \  ŠŠ|j        \  ŠŠt          j        ‰‰k    ˆˆˆˆfd„¦  «         |�Nt          j        || j        k    p.|t           j        k    o| j        t           j        t           j        fv d„ ¦  «         |€| j        n|}|                      ‰‰f|¬¦  «        S )Nr%  c                  ó   — dS )Nza must be 2Dr5   r5   r;   r9   ri   zmeta_mm.<locals>.<lambda>Ò	  ó   €  ~€ r;   c                  ó   — dS )Nzb must be 2Dr5   r5   r;   r9   ri   zmeta_mm.<locals>.<lambda>Ó	  rå  r;   c            	      ó"   •— d‰› d‰ › d‰› d‰› d�	S )Nz/a and b must have same reduction dim, but got [r{   z] X [r»  r5   )ÚM1ÚM2ÚNr›  s   €€€€r9   ri   zmeta_mm.<locals>.<lambda>Ø	  s-   ø€ Ð[À!Ð[Ð[ÀrÐ[Ð[ÐPRÐ[Ð[ÐVWÐ[Ð[Ð[€ r;   c                  ó   — dS )NzFout_dtype must be the same as input dtype or fp32 for fp16/bf16 inputsr5   r5   r;   r9   ri   zmeta_mm.<locals>.<lambda>á	  s   € Ð\€ r;   r”   )	rZ   rk   r‰   rœ   rb   r»  r¼  r½  r›   )r7   r8   r—  rR   rè  ré  rê  r›  s       @@@@r9   Úmeta_mmrì  Ï	  s  øøøø€ õ 
„L�—’‘”˜A’Ð5Ð5Ñ6Ô6Ð6Ý	„L�—’‘”˜A’Ð5Ð5Ñ6Ô6Ð6ØŒG�E€A€rØŒG�E€BˆÝ	„LØ
ˆbŠØ[Ð[Ð[Ð[Ð[Ð[Ð[ñô ð ð ÐÝŒØ˜œÒ ð à�Uœ]Ò*ð ?Ø”G¥¤­u¬~Ð>Ð>à\Ð\ñ	
ô 	
ð 	
ð (Ð/�1”7�7°Y€LØ�;Š;˜˜1�v \ˆ;Ñ2Ô2Ð2r;   c                 óš   ‡ ‡— |r.t          ˆˆ fd„t          ‰ j        ¦  «        D ¦   «         ¦  «        S t          j        ‰ j        ‰¦  «        S )Nc              3   ó>   •K  — | ]}|‰vr‰j         |         nd V — ŒdS rc  rK  )rQ   r  Údimsr�   s     €€r9   rw   z+_compute_reduction_shape.<locals>.<genexpr>é	  s5   øè è € ÐUÐU¸q a¨t m m�T”Z ”]�]¸ÐUÐUÐUÐUÐUÐUr;   )rj   rð   rÉ   rT   Úcompute_reduction_output_shaperœ   )r�   rï  ræ  s   `` r9   rä  rä  ç	  sR   øø€ Øð VÝÐUÐUÐUÐUÐUÅEÈ$Ì)ÑDTÔDTÐUÑUÔUÑUÔUÐUåÔ/°´
¸DÑAÔAÐAr;   Ústrc                 óÞ   — t          | t          j        j        ¦  «        r| j        j        S t          | d¦  «        r1t          | j        d¦  «        r| j        j        dk    r| j        j        S dS )Nr†   r}   rƒ   r  )rt   rZ   Ú_subclassesÚ
FakeTensorÚfake_devicer}   Úhasattrr†   )rŠ  s    r9   r  r  ò	  sn   € Ý�&�%Ô+Ô6Ñ7Ô7ð 	ØÔ!Ô&Ð&å�˜Ñ!Ô!ðå�F”M 6Ñ*Ô*ðð ŒMÔ &Ò(Ð(àŒ}Ô!Ð!àˆvr;   Úinput_tensorrñ   r%  ÚdilationÚis_transposedÚgroupsÚoutput_paddingc                 óò  ‡‡‡‡‡‡‡— dt           dt           dt           dt           dt           dt           fd„}dt           dt           dt           dt           dt           dt           dt           fd	„}	|j        d
d …         Š| j        d
d …         Š|r||j        d         z  }
n@|j        d         }
t          j        |j        d         |z  | j        d         k    d„ ¦  «         | j        d         |
gŠt	          |t
          ¦  «        r|gt          ‰¦  «        z  }n,t          |¦  «        dk    r|d         gt          ‰¦  «        z  }t	          ‰t
          ¦  «        r‰gt          ‰¦  «        z  Šn,t          ‰¦  «        dk    r‰d         gt          ‰¦  «        z  Št	          ‰t
          ¦  «        r‰gt          ‰¦  «        z  Šn,t          ‰¦  «        dk    r‰d         gt          ‰¦  «        z  Šd }|rXt	          |t
          ¦  «        r|gt          ‰¦  «        z  }n/t          |¦  «        dk    r|d         gt          ‰¦  «        z  }n|}|sŽddlm} ˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         Šˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         Št          j         |d„ t          ‰‰d¬¦  «        D ¦   «         Ž ˆˆfd„¦  «         t          t          ‰¦  «        ¦  «        D ]Œ}|rH‰                      |	‰|         ‰|         ‰|         ‰|         ||         ||         ¦  «        ¦  «         ŒL‰                      |‰|         ‰|         ‰|         ‰|         ||         ¦  «        ¦  «         Œ�ddlm} ddlm} t	          | |¦  «        r| j        n| j        }|j        dk    ot          j        j        d u }|s.t          j         |d„ ‰d
d …         D ¦   «         Ž ˆˆfd„¦  «         ‰S )NÚlnr¤  rå   r   r   rA   c                 ó6   — | d|z  z   ||dz
  z  z
  dz
  |z  dz   S )a�  
        Formula to apply to calculate the length of some dimension of the output

        See: https://pytorch.org/docs/stable/generated/torch.nn.Conv2d.html

        Args:
            ln: length of the dimension
            p: padding in that dim
            d: dilation in that dim
            k: kernel size in that dim
            s: stride in that dim
        Returns:
            The output length
        r%  r4   r5   )rý  r¤  rå   r   r   s        r9   Ú_formulaz+calc_conv_nd_return_shape.<locals>._formula	
  s.   € ð �Q˜‘U‘
˜Q ! a¡%™[Ñ(¨1Ñ,°Ñ2°QÑ6Ð6r;   rF   c                 ó<   — | dz
  |z  d|z  z
  ||dz
  z  z   |z   dz   S )aü  
        Formula to apply to calculate the length of some dimension of the output
        if transposed convolution is used.
        See: https://pytorch.org/docs/stable/generated/torch.nn.ConvTranspose2d.html

        Args:
            ln: length of the dimension
            p: padding in that dim
            d: dilation in that dim
            k: kernel size in that dim
            s: stride in that dim
            op: output padding in that dim

        Returns:
            The output length
        r4   r%  r5   )rý  r¤  rå   r   r   rF   s         r9   Ú_formula_transposedz6calc_conv_nd_return_shape.<locals>._formula_transposed
  s2   € ð" �Q‘˜!‰|˜a !™eÑ# a¨1¨q©5¡kÑ1°BÑ6¸Ñ:Ð:r;   r%  r4   r   c                  ó   — dS )NzInvalid channel dimensionsr5   r5   r;   r9   ri   z+calc_conv_nd_return_shape.<locals>.<lambda>5
  s   € Ð0€ r;   r1  c                 ó8   •— g | ]}‰|         d ‰|         z  z   ‘ŒS ©r%  r5   )rQ   r  rï  r%  s     €€r9   rS   z-calc_conv_nd_return_shape.<locals>.<listcomp>[
  s*   ø€ ÐKÐKÐK°Q˜˜Qœ ! g¨a¤j¡.Ñ0ÐKÐKÐKr;   c                 ó>   •— g | ]}‰|         ‰|         d z
  z  d z   ‘ŒS ©r4   r5   )rQ   r  rø  Úkernel_sizes     €€r9   rS   z-calc_conv_nd_return_shape.<locals>.<listcomp>\
  sB   ø€ ð 
ð 
ð 
ð ð �QŒK˜; qœ>¨AÑ-Ñ.°Ñ2ð
ð 
ð 
r;   c                 ó    — g | ]\  }}||k    ‘ŒS r5   r5   )rQ   r¤  r   s      r9   rS   z-calc_conv_nd_return_shape.<locals>.<listcomp>c
  s    € ÐVÐVÐV™T˜Q �!�q’&ÐVÐVÐVr;   T)Ústrictc                  óŠ   •— dd                      d„ ‰D ¦   «         ¦  «        › dd                      d„ ‰ D ¦   «         ¦  «        › d�S )Nz+Calculated padded input size per channel: (rº  c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rE   ©rñ  rå  s     r9   rw   z>calc_conv_nd_return_shape.<locals>.<lambda>.<locals>.<genexpr>g
  s(   è è € Ð<Ð<¨!�s 1™vœvÐ<Ð<Ð<Ð<Ð<Ð<r;   z). Kernel size: (c              3   ó4   K  — | ]}t          |¦  «        V — Œd S rE   r  rå  s     r9   rw   z>calc_conv_nd_return_shape.<locals>.<lambda>.<locals>.<genexpr>h
  s(   è è € Ð+MÐ+M°q­C°©F¬FÐ+MÐ+MÐ+MÐ+MÐ+MÐ+Mr;   z6). Kernel size can't be greater than actual input size)Újoin)Úeffective_kernelÚpadded_inputs   €€r9   ri   z+calc_conv_nd_return_shape.<locals>.<lambda>e
  si   ø€ ðGØ—J’JÐ<Ð<¨|Ð<Ñ<Ô<Ñ<Ô<ðGð Gà!&§¢Ð+MÐ+MÐ<LÐ+MÑ+MÔ+MÑ!MÔ!MðGð Gð Gð r;   )rô  r�  r  c                 ó   — g | ]}|d k    ‘Œ	S rí   r5   rå  s     r9   rS   z-calc_conv_nd_return_shape.<locals>.<listcomp>•
  s   € Ð2Ð2Ð2˜q�Q˜’UÐ2Ð2Ð2r;   c                  ó@   •— dt          ‰ ¦  «        › d‰dd …         › d�S )NzGiven input size per channel: z&. Calculated output size per channel: r%  z. Output size is too small)rï   )rï  Ú	ret_shapes   €€r9   ri   z+calc_conv_nd_return_shape.<locals>.<lambda>–
  s6   ø€ ð (µT¸$±Z´Zð (ð (Ø3<¸Q¸R¸R´=ð(ð (ð (€ r;   )r  rœ   rZ   rk   rt   r   rî   r  r'  rð   rj  ÚappendÚtorch._subclasses.fake_tensorrô  r(  rõ  r†   r}   ÚversionÚhip)r÷  r“  rñ   r%  rø  rù  rú  rû  rÿ  r  Úout_channelsÚoutput_padding_listr'  r  rô  r(  r†   Úis_cudnnrï  r  r  r  r  s      ``             @@@@@r9   Úcalc_conv_nd_return_shaper  ÿ	  så  øøøøøøø€ ð7•Sð 7�Sð 7¥Sð 7­Sð 7µSð 7½Sð 7ð 7ð 7ð 7ð";¥ð ;­ð ;µð ;½ð ;Åð ;Íð ;ÕQTð ;ð ;ð ;ð ;ð& ”,˜q˜r˜rÔ"€KØÔ˜a˜b˜bÔ!€DØð 
Ø ¤¨Q¤Ñ/ˆˆà”| A”ˆÝŒØŒL˜ŒO˜fÑ$¨Ô(:¸1Ô(=Ò=Ø0Ð0ñ	
ô 	
ð 	
ð
 Ô# AÔ&¨Ð5€IÝ�&�'Ñ"Ô"ð )à��C ™IœIÑ%ˆˆÝ	ˆV‰Œ˜Ò	Ð	Ø˜”)��s 4™yœyÑ(ˆå�'�7Ñ#Ô#ð +à�)�c $™iœiÑ'ˆˆÝ	ˆW‰Œ˜Ò	Ð	Ø˜1”:�,¥ T¡¤Ñ*ˆå�(�GÑ$Ô$ð -à�:¥ D¡	¤	Ñ)ˆˆÝ	ˆX‰Œ˜!Ò	Ð	Ø˜Q”K�=¥3 t¡9¤9Ñ,ˆà,0ÐØð 1Ý�n¥gÑ.Ô.ð 	1à#1Ð"2µS¸±Y´YÑ">ÐÐÝ�Ñ Ô  AÒ%Ð%Ø#1°!Ô#4Ð"5½¸D¹	¼	Ñ"AÐÐà"0Ðð ð 
ØAÐAÐAÐAÐAÐAð LÐKÐKÐKÐK½%ÅÀDÁ	Ä	Ñ:JÔ:JÐKÑKÔKˆð
ð 
ð 
ð 
ð 
õ �3˜t™9œ9Ñ%Ô%ð
ñ 
ô 
Ðõ
 	ŒØˆGØVÐV¥S¨Ð7GÐPTÐ%UÑ%UÔ%UÐVÑVÔVððð ð ð ð ñ	
	
ô 
	
ð 
	
õ •3�t‘9”9ÑÔð ð ˆàð 	Ø×ÒØ#Ð#Ø˜”Gà˜A”Jð ˜Q”KØ ”Nà˜1”IØ'¨Ô*ñô ñô ð ð ð ×Òà�˜˜aœ '¨!¤*¨h°q¬k¸;Àq¼>È6ÐRSÌ9ÑUÔUñô ð ð ð 9Ð8Ð8Ð8Ð8Ð8Ø<Ð<Ð<Ð<Ð<Ð<õ �l JÑ/Ô/ð	!ˆÔ Ð àÔ ð ð Œ{˜fÒ$ÐB­¬Ô):¸dÐ)B€HØð 
ÝŒØˆFÐ2Ð2 I¨a¨b¨b¤MÐ2Ñ2Ô2Ð3ð(ð (ð (ð (ð (ñ	
ô 	
ð 	
ð Ðr;   c                 ó\   — t           j                             | ¦  «        t           j        k    S rE   )rZ   Ú_prims_commonr   rq  )Útens    r9   Úis_channels_lastr  ž
  s!   € ÝÔ×4Ò4°SÑ9Ô9½UÔ=PÒPÐPr;   Úrunning_meanÚrunning_varÚtrainingÚexponential_average_factorÚepsilonc                 óÈ  ‡— |�|j         n|j         }|�|j         n|j         }	t          | ¦  «        Št          j        t          j        j        j                             | ‰¬¦  «        ˆfd„¦  «         t          j        | ‰¬¦  «        }
|r+| 	                    |¦  «        }| 	                    |	¦  «        }n*| 	                    d¦  «        }| 	                    d¦  «        }|
||fS )NrÏ   c                  ó   •— d‰ › �S )Nz/miopen_batch_norm: input must be contiguous in r5   )Úfmts   €r9   ri   z(meta_miopen_batch_norm.<locals>.<lambda>»
  s   ø€ ÐGÀ#ÐGÐG€ r;   rí   )
rœ   r   rZ   rk   Úopsr.   Úsym_is_contiguousÚdefaultr¡   r›   )r÷  r“  r•  r   r!  r"  r#  r$  Úsave_mean_shapeÚsave_var_shaperø   Ú	save_meanÚsave_varr'  s                @r9   Úmeta_miopen_batch_normr/  ¢
  sõ   ø€ ð -9Ð,D�lÔ(Ð(È&Ì,€OØ*5Ð*A�[Ô&Ð&ÀvÄ|€Nõ
   Ñ
-Ô
-€Cõ 
„LÝŒ	ŒÔ(×0Ò0°ÈSÐ0ÑQÔQØGÐGÐGÐGñô ð õ
 Ô
˜<°sÐ
;Ñ
;Ô
;€Càð *Ø×$Ò$ _Ñ5Ô5ˆ	Ø×#Ò# NÑ3Ô3ˆˆà×$Ò$ TÑ*Ô*ˆ	Ø×#Ò# DÑ)Ô)ˆà�	˜8Ð#Ð#r;   c	           
      óÆ   — t          | |||||||r|nd ¦  «        }	ddlm}
 d}d} |
|                      |¦  «        dk    ¦  «        rd|	|<   |                      |	¦  «        }|S )Nr   ©Úguard_or_falser4   )r  r  r2  rÇ   r›   )r÷  r“  r•  rñ   r%  rø  rù  rû  rú  Ú	shape_outr2  Úinput_channels_dimÚoutput_channels_dimrø   s                 r9   Ú	meta_convr6  Ê
  s    € õ *ØØØØØØØØ'Ð1ˆˆ¨Tñ	ô 	€Ið EÐDÐDÐDÐDÐDàÐØÐØ€~�l×'Ò'Ð(:Ñ;Ô;¸qÒ@ÑAÔAð +Ø)*ˆ	Ð%Ñ&ð ×
 Ò
  Ñ
+Ô
+€CØ€Jr;   Ú
transposedÚ	benchmarkÚdeterministicÚcudnn_enabledÚ
allow_tf32c                 ó0   — t          | ||||||||¦	  «	        S rE   )r6  )r÷  r“  r•  rñ   r%  rø  r7  rû  rú  r8  r9  r:  r;  s                r9   Ú
meta__convr=  ñ
  s1   € õ  ØØØØØØØØØñ
ô 
ð 
r;   Úmkldnnc
           
      óè   — t          | ||||d|g ¦  «        }
|                      |
¦  «        }t          j        }|                      ¦   «         dk    rt          j        }|                     |¬¦  «        }|S )NFr‰  rÏ   )r  r›   rZ   rq  r‰   Úchannels_last_3dr‚  )r÷  r“  r•  r%  rñ   rø  rú  ÚattrÚscalarsÚ	algorithmr3  rø   Úout_memory_formats                r9   Úmeta_mkldnn_convolution_defaultrE    s{   € õ .Ø˜& &¨'°8¸UÀFÈBñ
ô 
ˆ	ð ×$Ò$ YÑ/Ô/ˆÝ!Ô/ÐØ×ÒÑÔ Ò"Ð"Ý %Ô 6ÐØ�fŠfÐ#4ˆfÑ5Ô5ˆØˆ
r;   c                 óf   — |                       g | j        d d…         ¢|j        d         ‘R ¦  «        S ©Nr¿   r   ©r›   rœ   )r÷  r“  r•  rA  rB  rC  s         r9   Úmeta_linear_pointwise_defaultrI  *  s8   € ð ×%Ò%Ð&Q¨Ô(:¸3¸B¸3Ô(?Ð&QÀÄÈaÄÐ&QÐ&QÑRÔRÐRr;   r  c                 óf   — |                       g | j        d d…         ¢|j        d         ‘R ¦  «        S rG  rH  )r÷  Úpacked_weightÚorig_weightr•  r  s        r9   Úmeta_mkl_linearrM  5  s>   € à×)Ò)Ø@�,Ô$ S b SÔ)Ð@¨;Ô+<¸QÔ+?Ð@Ð@ñô ð r;   Úonednnc           
      ó  — t          | ||||	d|
d ¦  «        }|€| j        }|t          j        t          j        t          j        t          j        t          j        fvrt          d|› �¦  «        ‚|  	                    ||¬¦  «        }t          |¦  «        dvr t          dt          |¦  «        › d�¦  «        ‚t          j        t          j        t          j        dœt          |¦  «                 }|                     |¬¦  «        }|S )NFúOoutput_dtype must be one of float32, bfloat16, uint8, int8, float8_e4m3fn, got r”   )r1   re  r‰  z3Expect output to be 3d/4d/5d for conv1d/2d/3d, got rå   rÏ   )r  rb   rZ   r»  r½  Úuint8rœ  r¾  r�   r›   rî   rÓ   rq  r@  r‚  )r>   Úx_scaleÚx_zpÚwÚw_scaleÚw_zpr•  rñ   r%  rø  rú  Úoutput_scaleÚoutput_zero_pointÚoutput_dtyperA  rB  rC  r3  rø   Úformats                       r9   Úmeta_qconv_pointwiser[  ?  s  € õ, .ØØØØØØØØñ	
ô 	
ˆ	ð ÐØœ7ˆLØÝŒMÝŒNÝŒKÝŒJÝÔð 
ð 
ð 
õ !ØpÐbnÐpÐpñô ð ð �kŠk˜)¨<ˆkÑ8Ô8ˆÝˆy‰>Œ> Ð*Ð*Ý ØWÅcÈ)ÁnÄnÐWÐWÐWñô ð õ Ô&ÝÔ"ÝÔ%ð
ð 
õ ˆi‰.Œ.ô	ˆð
 �fŠf 6ˆfÑ*Ô*ˆØˆ
r;   c                 ó8   — |dk    rt          d|› d�¦  «        ‚|S )NÚsumz#binary_op_name must be 'sum', got 'rK  ©r�   )r>   rR  rS  rT  rU  rV  Úaccumr•  rñ   r%  rø  rú  rW  rX  rY  Úaccum_scaleÚaccum_zero_pointÚbinary_op_namer¯  Úunary_op_nameÚunary_op_argsÚunary_op_algorithms                         r9   Úmeta_qconv2d_pointwise_binaryrf  x  s6   € ð4 ˜UÒ"Ð"Ý ØG°nÐGÐGÐGñô ð ð ˆr;   c                 ó  — t          | j        ¦  «        }|j        d         |d<   |	t          j        t          j        t          j        t          j        t          j        fvrt          d|	› �¦  «        ‚|  	                    ||	¬¦  «        }|S )Nr4   r¿   zOoutput_dtype must be one of float32, bfloat16, int8, uint8, float8_e4m3fn, got r”   )
rï   rœ   rZ   r»  r½  rœ  rQ  r¾  r�   r›   )r>   rR  rS  rT  rU  rV  r•  rW  rX  rY  Úpost_op_nameÚpost_op_argsÚpost_op_algorithmrÁ  rø   s                  r9   Úmeta_qlinear_pointwiserk  ˜  s‰   € õ" ˜AœG‘}”}ˆàœ7 1œ:ˆ�RÑØÝŒMÝŒNÝŒJÝŒKÝÔð 
ð 
ð 
õ !ØpÐbnÐpÐpñô ð ð �kŠk˜,¨lˆkÑ;Ô;ˆØˆ
r;   c                 ó&  — |dk    r|S t          | j        ¦  «        }|j        d         |d<   |
t          j        t          j        t          j        t          j        t          j        fvrt          d|
› �¦  «        ‚|  	                    ||
¬¦  «        }|S )Nr]  r4   r¿   rP  r”   )
rï   rœ   rZ   r»  r½  rQ  rœ  r¾  r�   r›   )r>   rR  rS  rT  rU  rV  Úx_2r•  rW  rX  rY  Úx2_scaleÚx2_zprb  r¯  rc  rd  re  rÁ  rø   s                       r9   Úmeta_qlinear_pointwise_binaryrp  ¹  s™   € ð, ˜UÒ"Ð"ØˆJÝ˜AœG‘}”}ˆàœ7 1œ:ˆ�RÑØÝŒMÝŒNÝŒKÝŒJÝÔð 
ð 
ð 
õ !ØpÐbnÐpÐpñô ð ð �kŠk˜,¨lˆkÑ;Ô;ˆØˆ
r;   c                 óx   — t          | j        ¦  «        }|j        d         |d<   |                      |¦  «        }|S )Nr4   r¿   )rï   rœ   r›   )r>   rT  r•  rÁ  rø   s        r9   Úmeta_linear_dynamic_fp16rr  á  s7   € õ ˜AœG‘}”}ˆàœ7 1œ:ˆ�RÑØ�kŠk˜,Ñ'Ô'ˆØˆ
r;   Ú	quantizedr5   rí   r  c                 ó4  — t          | |||||¦  «        \  }}}|                      ¦   «         dk    r|                      d¦  «        nd}	t          j        }
|                      ¦   «         dk    r|||g}n|	|||g}t          j        || j        | j        |
¬¦  «        S ©Nre  éüÿÿÿr4   r1   r×  )Ú#max_pool2d_checks_and_compute_shaper‰   rÇ   rZ   rq  r�   rb   r†   ©r  r  rñ   r%  rø  Ú	ceil_modeÚnInputPlaneÚoutputHeightÚoutputWidthr@  rÐ   rÇ   s               r9   Úmeta_quantized_max_pool2dr}  ò  s³   € õ 0Ø�; ¨°¸9ñ
ô 
ñ		
ØØØð $)§9¢9¡;¤;°!Ò#3Ð#3�—’˜B‘”�¸ˆÝÔ+ˆØ�9Š9‰;Œ;˜!ÒÐØ ¨{Ð;ˆDˆDà˜K¨°{ÐCˆDÝŒ{ØØ”+Ø”<Ø'ð	
ñ 
ô 
ð 	
r;   c                 óÀ  ‡ ‡‡‡— t          j        ‰                      ¦   «         dk    ˆ fd„¦  «         t          j        ‰                     ¦   «         dk    ˆfd„¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j        k    ˆfd„¦  «         t          j        ‰j        t           j        k    ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆfd„¦  «         ‰  	                    ‰  
                    d¦  «        ‰ 
                    d¦  «        ‰ j        ¬	¦  «        S )
Nr%  c                  ó4   •— d‰                       ¦   «         › d�S )Nzx must be a 2D tensor, got r§  rÀ   ©r>   s   €r9   ri   z/meta_int4mm_packed_weight_cpu.<locals>.<lambda>  ó   ø€ Ð+SÈÏÊÉÌÐ+SÐ+SÐ+S€ r;   c                  ó4   •— d‰                       ¦   «         › d�S )Nzw must be a 2D tensor, got r§  rÀ   ©rT  s   €r9   ri   z/meta_int4mm_packed_weight_cpu.<locals>.<lambda>  r�  r;   c                  ó   •— d‰ j         › �S ©Nz#expected x to be f32/f16/bf16, got r”   r€  s   €r9   ri   z/meta_int4mm_packed_weight_cpu.<locals>.<lambda>  s   ø€ ÐC¸!¼'ÐCÐC€ r;   c                  ó   •— d‰ j         › �S ©Nzexpected w to be uint8, got r”   rƒ  s   €r9   ri   z/meta_int4mm_packed_weight_cpu.<locals>.<lambda>  s   ø€ Ð,TÈ1Ì7Ð,TÐ,T€ r;   c                  ó   •— d‰ j         › �S )Nz q_group_size must be int64, got r”   )Úq_group_sizes   €r9   ri   z/meta_int4mm_packed_weight_cpu.<locals>.<lambda>  s   ø€ ÐK°|Ô7IÐKÐK€ r;   c                  ó   •— d‰ j         › �S )Nz5q_scale_and_zeros must have the same dtype as x, got r”   )Úq_scale_and_zeross   €r9   ri   z/meta_int4mm_packed_weight_cpu.<locals>.<lambda>   s   ø€ ÐeÐL]ÔLcÐeÐe€ r;   r   r”   )rZ   rk   r‰   rb   r»  r¼  r½  rQ  rÚ   r›   rÇ   ©r>   rT  r‰  r‹  s   ````r9   Úmeta_int4mm_packed_weight_cpur�    sI  øøøø€ åŒ�Q—U’U‘W”W ’\Ð#SÐ#SÐ#SÐ#SÑTÔTÐTÝŒ�Q—U’U‘W”W ’\Ð#SÐ#SÐ#SÐ#SÑTÔTÐTÝŒØŒG�œ¥u¤}µe´nÐEÐEØCÐCÐCÐCñ	
ô 	
ð 	
õ 	ŒØŒG•u”{Ò"Ð$TÐ$TÐ$TÐ$Tñ	
ô 	
ð 	
õ 	ŒØÔ¥%¤+Ò-ØKÐKÐKÐKñ	
ô 	
ð 	
õ 	ŒØÔ# q¤wÒ.ØeÐeÐeÐeñ	
ô 	
ð 	
ð �{Š{˜1Ÿ6š6 !™9œ9 a§f¢f¨Q¡i¤i°q´wˆ{Ñ?Ô?Ð?r;   c                 ó’   ‡ ‡‡‡— t          j        ‰                      ¦   «         ‰k    o‰ j        ‰         ‰k    ˆˆˆˆ fd„¦  «         d S )Nc                  ón   •— d‰ › d‰› d‰› d�d‰                      ¦   «         › d‰› d‰j        ‰         › �z   S )NzExpected a tensor of dimension z and tensor.size[z] == r{   zbut got : dimension z] = ©r‰   rœ   )r‰   Údim_sizerÇ   rŠ  s   €€€€r9   ri   z check_dim_size.<locals>.<lambda>)  sU   ø€ Ð_°#Ð_Ð_ÈÐ_Ð_ÐW[Ð_Ð_Ð_Ø
f §¢¡¤Ð
fÐ
fÀÐ
fÐ
fÈfÌlÐ[cÔNdÐ
fÐ
fñg€ r;   )rZ   rk   r‰   rœ   )rŠ  r‰   r‘  rÇ   s   ````r9   Úcheck_dim_sizer’  &  so   øøøø€ Ý	„LØ�
Š
‰Œ˜ÒÐ> ¤¨XÔ 6¸$Ò >ð	gð 	gð 	gð 	gð 	gð 	gð 	gñô ð ð ð r;   rÚ  rÛ  rb   c                 ó*   — t          j        | ¦  «        S rE   r    )r  rÚ  rÛ  rb   s       r9   Úmeta_quantize_per_tensorr”  .  s   € õ Ô˜EÑ"Ô"Ð"r;   c                 ó  ‡ — d„ } |d|¦  «        \  }}	t          j        t          |¦  «        dv d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        t           j        fvˆ fd„¦  «         t          |¦  «        dk    r||	}}
n3t          |¦  «        dk    r|d         |d         }}
n |d|¦  «        \  }
} |d	|¦  «        \  }}t          j        |d u p|dk    d
„ ¦  «         ‰                      ¦   «         dk    r‰  	                    d¦  «        nd}‰  	                    d¦  «        }‰  	                    d¦  «        }‰  	                    d¦  «        }t          ||||
d|¦  «        }t          ||	||d|¦  «        }t          j        ‰ ¦  «        }t          ‰ ||	|
|||dd||||||¦  «         ‰                      ¦   «         dk    r|||g}n||||g}t          j        |‰ j        ‰ j        |¬¦  «        S )Nc                 ó¤   ‡ — t          j        t          |¦  «        dv ˆ fd„¦  «         |d         }t          |¦  «        dk    r|n|d         }||fS )N©r4   r%  c                  ó   •— d‰ › d�S )Nzavg_pool2d: ú4 must either be a single int, or a tuple of two intsr5   ©r  s   €r9   ri   z1meta_avg_pool2d.<locals>.unpack.<locals>.<lambda>B  ó   ø€ Ð] 4Ð]Ð]Ð]€ r;   r   r4   ©rZ   rk   rî   ©r  rù  ÚHÚWs   `   r9   Úunpackzmeta_avg_pool2d.<locals>.unpack?  ó`   ø€ ÝŒÝ�‰HŒH˜ÐØ]Ð]Ð]Ð]ñ	
ô 	
ð 	
ð �ŒFˆÝ�S‘”˜Q’�ˆAˆA C¨¤FˆØ�!ˆtˆr;   r  ©r   r4   r%  c                  ó   — dS ©NzOavg_pool2d: stride must either be omitted, a single int, or a tuple of two intsr5   r5   r;   r9   ri   z!meta_avg_pool2d.<locals>.<lambda>K  ó   € Ða€ r;   c                  ó>   •— d‰ j                              ¦   «         › d�S )Nz""avg_pool2d" not implemented for 'rK  rL  rN  s   €r9   ri   z!meta_avg_pool2d.<locals>.<lambda>O  ó!   ø€ ÐQ°u´{×7JÒ7JÑ7LÔ7LÐQÐQÐQ€ r;   r   r4   rñ   r%  c                  ó   — dS ©Nzdivisor must be not zeror5   r5   r;   r9   ri   z!meta_avg_pool2d.<locals>.<lambda>\  ó   € Ð*€ r;   re  rv  éýÿÿÿr  r¿   r1   r×  )rZ   rk   rî   rb   rQ  Úuint16Úuint32rP  r‰   rÇ   Úpooling_output_shaperT   r   Úpool2d_shape_checkr�   r†   )r  r  rñ   r%  ry  Úcount_include_padÚdivisor_overrider   ÚkHÚkWÚdHÚdWÚpadHÚpadWr@  rz  ÚinputHeightÚ
inputWidthr{  r|  rÐ   rÇ   s   `                     r9   Úmeta_avg_pool2drº  5  sR  ø€ ðð ð ð ˆV�M ;Ñ/Ô/�F€BˆÝ	„LÝˆF‰Œ�yÐ ØaÐañô ð õ 
„LØŒ�EœK­¬µu´|ÅUÄ\ÐRÐRØQÐQÐQÐQñô ð õ ˆ6�{„{�aÒÐØ�RˆBˆˆÝ	ˆV‰Œ˜Ò	Ð	Ø˜”˜F 1œIˆBˆˆà�˜ &Ñ)Ô)‰ˆˆBà�˜	 7Ñ+Ô+�J€Dˆ$å	„LØ˜DÐ Ð9Ð$4¸Ò$9Ø*Ð*ñô ð ð
  %Ÿyšy™{œ{¨aÒ/Ð/ˆU�ZŠZ˜‰^Œ^ˆ^°Q€FØ—*’*˜R‘.”.€KØ—*’*˜R‘.”.€KØ—’˜B‘”€Jå'¨°R¸¸rÀ1ÀiÑPÔP€LÝ& z°2°t¸RÀÀIÑNÔN€KåÔ/°Ñ6Ô6€MÝØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØñô ð ð$ ‡y‚y�{„{�aÒÐØ˜\¨;Ð7ˆˆà˜ \°;Ð?ˆÝŒ;ØØŒkØŒ|Ø#ð	ñ ô ð r;   c                 óê   — t          | ||||||dd|	|
||||¦  «         |                      ¦   «         }|	}t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         d S )Nr4   r1   r%  )r¯  r‰   r’  )r  Ú
gradOutputr@  r²  r³  r´  rµ  r¶  r·  rz  r¸  r¹  r{  r|  Ú
mem_formatrÉ   ÚnOutputPlanes                    r9   Úavg_pool2d_backward_shape_checkr¿  ‡  s¥   € õ" ØØ
Ø
Ø
Ø
ØØØ	Ø	ØØØØØØñô ð ð$ �9Š9‰;Œ;€DØ€Lå�:˜t T¨A¡X¨|Ñ<Ô<Ð<Ý�:˜t T¨A¡X¨|Ñ<Ô<Ð<Ý�:˜t T¨A¡X¨{Ñ;Ô;Ð;Ð;Ð;r;   c                 ój  — t          j        t          |¦  «        dk    pt          |¦  «        dk    d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }	t          j        t          |¦  «        dk    p%t          |¦  «        dk    pt          |¦  «        dk    d„ ¦  «         t          |¦  «        dk    r|n|d         }
t          |¦  «        dk    r|	nt          |¦  «        dk    r|
n|d         }t          j        t          |¦  «        dk    pt          |¦  «        dk    d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          j        |d u p|dk    d„ ¦  «         |j        }|                     ¦   «         dk    r|d	         nd}|d
         }|d         }|d         }t          ||||
d|¦  «        }t          ||	||d|¦  «        }t          j        |¦  «        }t          || |||	|
|||||||||¦  «         t          j	        ||j
        |j        |¬¦  «        S )Nr4   r%  c                  ó   — dS )NzKavg_pool2d: kernel_size must either be a single int, or a tuple of two intsr5   r5   r;   r9   ri   z*meta_avg_pool2d_backward.<locals>.<lambda>Á  s   € Ð]€ r;   r   c                  ó   — dS r¤  r5   r5   r;   r9   ri   z*meta_avg_pool2d_backward.<locals>.<lambda>Ç  r¥  r;   c                  ó   — dS )NzGavg_pool2d: padding must either be a single int, or a tuple of two intsr5   r5   r;   r9   ri   z*meta_avg_pool2d_backward.<locals>.<lambda>Í  s   € ÐY€ r;   c                  ó   — dS r©  r5   r5   r;   r9   ri   z*meta_avg_pool2d_backward.<locals>.<lambda>Ô  rª  r;   re  rv  r«  r  r¿   r×  )rZ   rk   rî   rœ   r‰   r®  rT   r   r¿  r�   rb   r†   )ÚgradOutput_r  r  rñ   r%  ry  r°  r±  r²  r³  r´  rµ  r¶  r·  Ú
input_sizer@  rz  r¸  r¹  r{  r|  r½  s                         r9   Úmeta_avg_pool2d_backwardrÇ  ³  sz  € õ 
„LÝˆKÑÔ˜AÒÐ6¥ [Ñ!1Ô!1°QÒ!6Ø]Ð]ñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ	„LÝˆF‰Œ�qÒÐ@�C ™KœK¨1Ò,Ð@µ°F±´¸qÒ0@ØaÐañô ð õ �6‰{Œ{˜aÒÐˆˆ V¨A¤Y€BÝ�6‰{Œ{˜aÒÐˆˆ­3¨v©;¬;¸!Ò+;Ð+; R RÀÈÄ€BÝ	„LÝˆG‰Œ˜ÒÐ.�S ™\œ\¨QÒ.ØYÐYñô ð ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då	„LØ˜DÐ Ð9Ð$4¸Ò$9Ø*Ð*ñô ð ð
 ”€JØ$Ÿyšy™{œ{¨aÒ/Ð/ˆZ˜Œ^ˆ^°Q€FØ˜R”.€KØ˜R”.€KØ˜B”€Jå'¨°R¸¸rÀ1ÀiÑPÔP€LÝ& z°2°t¸RÀÀIÑNÔN€KåÔ,¨UÑ3Ô3€Jå#ØØØØ
Ø
Ø
Ø
ØØØØØØØØñô ð õ$ Œ;ØØŒkØŒ|Ø ð	ñ ô ð r;   c                 ó¨  ‡ — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }	t          j        | pt          |¦  «        dv d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        t           j        fvˆ fd„¦  «         |s|n|d         }
|s|nt          |¦  «        dk    r|
n|d         }|s|	nt          |¦  «        dk    r|
n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        ‰ j        d	v d
„ ¦  «         t          j        |d u p|dk    d„ ¦  «         ‰  	                    d¦  «        }‰  	                    d¦  «        }‰  	                    d¦  «        }‰  	                    d¦  «        }‰  	                    d¦  «        }t          ||||
d|¦  «        }t          ||||d|¦  «        }t          ||	||d|¦  «        }t          ‰ ||||	|
|||||ddd||||||dd¬¦  «         ‰ j        dk    r‰                      ||||f¦  «        S ‰                      |||||f¦  «        S )N©r4   r1   c                  ó   — dS ©NzFavg_pool3d: kernel_size must be a single int, or a tuple of three intsr5   r5   r;   r9   ri   z!meta_avg_pool3d.<locals>.<lambda>	  ó   € ÐX€ r;   r   r4   r%  c                  ó   — dS ©NzJavg_pool3d: stride must be omitted, a single int, or a tuple of three intsr5   r5   r;   r9   ri   z!meta_avg_pool3d.<locals>.<lambda>  rÕ  r;   c                  ó>   •— d‰ j                              ¦   «         › d�S )Nz""avg_pool3d" not implemented for 'rK  rL  rN  s   €r9   ri   z!meta_avg_pool3d.<locals>.<lambda>  r§  r;   c                  ó   — dS ©NzBavg_pool3d: padding must be a single int, or a tuple of three intsr5   r5   r;   r9   ri   z!meta_avg_pool3d.<locals>.<lambda>  ó   € ÐT€ r;   ©re  r‰  c                  ó   — dS ©Nz9non-empty 4D or 5D (batch mode) tensor expected for inputr5   r5   r;   r9   ri   z!meta_avg_pool3d.<locals>.<lambda>%  ó   € ÐK€ r;   c                  ó   — dS r©  r5   r5   r;   r9   ri   z!meta_avg_pool3d.<locals>.<lambda>*  rª  r;   rv  r«  r  r¿   zavg_pool3d()T)Úcheck_input_sizere  )rZ   rk   rî   rb   rQ  r¬  r­  rP  rÉ   rÇ   r®  Úpool3d_shape_checkr›   )r  r  rñ   r%  ry  r°  r±  ÚkTr²  r³  ÚdTr´  rµ  ÚpadTr¶  r·  r@  ÚnslicesÚitimeÚiheightÚiwidthÚotimeÚoheightÚowidths   `                       r9   Úmeta_avg_pool3drä  ü  s4  ø€ õ 
„LÝˆKÑÔ˜FÐ"ØXÐXñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+Ø\Ð\ñô ð õ 
„LØŒ�EœK­¬µu´|ÅUÄ\ÐRÐRØQÐQÐQÐQñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØTÐTñô ð ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då	„LØŒ
�fÐØKÐKñô ð õ
 
„LØ˜DÐ Ð9Ð$4¸Ò$9Ø*Ð*ñô ð ð
 �ZŠZ˜‰]Œ]€FØ�jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Få  ¨¨D°"°a¸ÑCÔC€EÝ" 7¨B°°b¸!¸YÑGÔG€GÝ! &¨"¨d°B¸¸9ÑEÔE€FåØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØ	Ø	Ø	ØØØØØØØØð-ñ ô ð ð2 „z�Q‚€Ø�Š ¨°¸Ð@ÑAÔAÐAà�Š ¨°¸ÀÐHÑIÔIÐIr;   c                 ó–  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }	t          |¦  «        dk    r|n|d         }
t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }|s|	nt          |¦  «        dk    r|n|d         }|s|
nt          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        |j        dv d	„ ¦  «         t          j        |d u p|dk    d
„ ¦  «         |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }t          ||||d|¦  «        }t          ||	||d|¦  «        }t          ||
||d|¦  «        }t          || |||	|
||||||||||||d¦  «         |                     |j        ¦  «        S )NrÉ  c                  ó   — dS rË  r5   r5   r;   r9   ri   z*meta_avg_pool3d_backward.<locals>.<lambda>d  rÌ  r;   r   r4   r%  c                  ó   — dS rÎ  r5   r5   r;   r9   ri   z*meta_avg_pool3d_backward.<locals>.<lambda>l  rÕ  r;   c                  ó   — dS rÑ  r5   r5   r;   r9   ri   z*meta_avg_pool3d_backward.<locals>.<lambda>t  rÒ  r;   rÓ  c                  ó   — dS rÕ  r5   r5   r;   r9   ri   z*meta_avg_pool3d_backward.<locals>.<lambda>|  rÖ  r;   c                  ó   — dS r©  r5   r5   r;   r9   ri   z*meta_avg_pool3d_backward.<locals>.<lambda>�  rª  r;   rv  r«  r  r¿   zavg_pool3d_backward())	rZ   rk   rî   rÉ   rÇ   r®  Úavg_pool3d_backward_shape_checkr›   rœ   )rZ  r  r  rñ   r%  ry  r°  r±  rÚ  r²  r³  rÛ  r´  rµ  rÜ  r¶  r·  rÝ  rÞ  rß  rà  Úotime_for_shape_checkÚoheight_for_shape_checkÚowidth_for_shape_checks                           r9   Úmeta_avg_pool3d_backwardrï  V  s­  € õ 
„LÝˆKÑÔ˜FÐ"ØXÐXñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+Ø\Ð\ñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØTÐTñô ð ð �1Œ:€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€DÝ�w‘<”< 1Ò$Ð$ˆ4ˆ4¨'°!¬*€Då	„LØŒ
�fÐØKÐKñô ð õ
 
„LØ˜DÐ Ð9Ð$4¸Ò$9Ø*Ð*ñô ð ð
 �jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Få0°¸¸DÀ"ÀaÈÑSÔSÐÝ2°7¸BÀÀbÈ!ÈYÑWÔWÐÝ1°&¸"¸dÀBÈÈ9ÑUÔUÐå#ØØØØ
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØñ'ô ð ð, �?Š?˜5œ;Ñ'Ô'Ð'r;   c                 ó  ‡ — t          j        ‰ j        dk    p
‰ j        dk    ˆ fd„¦  «         ‰ j        d d…         t	          |¦  «        z   }t          j        ‰ ¦  «        }t          j        |‰ j        ‰ j	        |¬¦  «        S )Nr1   re  c                  ó   •— d‰ j         › �S )Nz"Expected 3D or 4D tensor, but got rK  rÔ   s   €r9   ri   z*meta_adaptive_avg_pool2d.<locals>.<lambda>ª  ó   ø€ ÐA°T´ZÐAÐA€ r;   r  r×  )
rZ   rk   rÉ   rœ   rj   rT   r   r�   rb   r†   )r�   Úoutput_sizerÁ  rÐ   s   `   r9   Úmeta_adaptive_avg_pool2drô  ¦  s�   ø€ å	„LØŒ	�QŠÐ(˜$œ) qš.ØAÐAÐAÐAñô ð ð ”:˜c˜r˜c”?¥U¨;Ñ%7Ô%7Ñ7€LÝÔ/°Ñ5Ô5€Mõ Œ;ØØŒjØŒ{Ø#ð	ñ ô ð r;   c                 óÀ   ‡ — t          j        ‰ j        dk    p
‰ j        dk    ˆ fd„¦  «         ‰                      ‰ j        d d…         t          |¦  «        z   ¦  «        S )Nre  r‰  c                  ó   •— d‰ j         › �S )Nz"Expected 4D or 5D tensor, but got rK  rÔ   s   €r9   ri   z*meta_adaptive_avg_pool3d.<locals>.<lambda>¼  rò  r;   r«  )rZ   rk   rÉ   r›   rœ   rj   )r�   ró  s   ` r9   Úmeta_adaptive_avg_pool3dr÷  ¸  sb   ø€ å	„LØŒ	�QŠÐ(˜$œ) qš.ØAÐAÐAÐAñô ð ð �>Š>˜$œ* S b Sœ/­E°+Ñ,>Ô,>Ñ>Ñ?Ô?Ð?r;   c                 óØ  ‡ ‡‡— ‰ j         }t          d|¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆ ˆfd„¦  «         Œ3t          j        |dk    p|dk    ˆfd„¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          j        }t          ‰¦  «        rt          j        }‰ 	                    ‰j
        ¦  «                             |¬¦  «        S )	Nr4   r   c                  ó    •— d‰ j         › d‰› d�S )Nz{adaptive_avg_pool2d_backward(): Expected grad_output to have non-zero                       size for non-batch dimensions, ú with dimension ú being emptyrK  )Úgrad_outr  s   €€r9   ri   z4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>Ç  s1   ø€ ð fØ6>´nðfð fØVWðfð fð f€ r;   r1   re  c                  ó   •— d‰ j         › �S )NzBadaptive_avg_pool2d_backward(): Expected 3D or 4D tensor, but got rK  rÔ   s   €r9   ri   z4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>Ì  s   ø€ ÐaÐUYÔU_ÐaÐa€ r;   c                  ó(   •— d‰j         › d‰ j         › �S ©Núexpected dtype z! for `grad_output` but got dtype r”   )rü  r�   s   €€r9   ri   z4meta__adaptive_avg_pool2d_backward.<locals>.<lambda>Ð  s   ø€ Ð_ $¤*Ð_Ð_ÈxÌ~Ð_Ð_€ r;   rÏ   )rÉ   rð   rZ   rk   rÇ   rb   rÓ   r  rq  r›   rœ   r‚  )rü  r�   rÉ   rÐ   r  s   ``  @r9   Ú"meta__adaptive_avg_pool2d_backwardr  Á  s  øøø€ àŒ=€DÝ�1�d‰^Œ^ð 
ð 
ˆÝŒØ�MŠM˜!ÑÔ˜qÒ ðfð fð fð fð fñ	
ô 	
ð 	
ð 	
õ
 
„LØ�Š	Ð�T˜Q’YØaÐaÐaÐañô ð õ 
„LØŒ
�h”nÒ$Ø_Ð_Ð_Ð_Ð_ñô ð õ Ô+€MÝ˜ÑÔð ,ÝÔ+ˆØ�>Š>˜$œ*Ñ%Ô%×(Ò(°}Ð(ÑEÔEÐEr;   c                 ób   — t          | d¦  «         t          j        |t          j        ¬¦  «        S )NÚadaptive_avg_pool3d_backwardrÏ   )Ú!_adaptive_pool_empty_output_checkrZ   r¡   rg  ©rZ  r�   s     r9   Ú"meta__adaptive_avg_pool3d_backwardr  Ø  s.   € õ & kÐ3QÑRÔRÐRÝÔ˜DµÔ0NÐOÑOÔOÐOr;   rZ  c                 ó¢   ‡ ‡‡— ‰ j         }t          d|¦  «        D ]3Št          j        ‰                      ‰¦  «        dk    ˆˆ ˆfd„¦  «         Œ4d S )Nr4   r   c                  ó$   •— ‰ › d‰j         › d‰› d�S )Nzc(): Expected grad_output to have non-zero size for non-batch dimensions, but grad_output has sizes rú  rû  rK  )r/  rZ  r  s   €€€r9   ri   z3_adaptive_pool_empty_output_check.<locals>.<lambda>ä  s>   ø€ Øð `ð `Ø-8Ô->ð`ð `ØPQð`ð `ð `ð r;   )rÉ   rð   rZ   rk   rÇ   )rZ  r/  rÉ   r  s   `` @r9   r  r  ß  s{   øøø€ ØÔ€DÝ�1�d‰^Œ^ð 
ð 
ˆÝŒØ×Ò˜QÑÔ !Ò#ðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð
ð 
r;   c                 ó8  ‡ ‡— ‰ j         }t          j        |dv ˆ fd„¦  «         t          d|¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆˆ fd„¦  «         Œ3t          j        t          |¦  «        dk    d„ ¦  «         d}d}d}‰ j         dk    r‰                      d¦  «        }|dz  }‰                      |dz
  ¦  «        }|\  }}‰ j         d	k    r?|||f}‰                      |¦  «        }	‰                      |t          j        ¬
¦  «        }
|	|
fS ||||f}t          j	        ‰ ¦  «        }‰                      |¦  «         
                    |¬¦  «        }	‰                      |t          j        ¬
¦  «         
                    |¬¦  «        }
|	|
fS )N©r1   re  c                  ó   •— d‰ j         › �S )Nz:adaptive_max_pool2d(): Expected 3D or 4D tensor, but got: rK  rN  s   €r9   ri   z*meta_adaptive_max_pool2d.<locals>.<lambda>ñ  ó   ø€ ÐZÈUÌ[ÐZÐZ€ r;   r4   r   c                  ó    •— d‰j         › d‰ › d�S )Nzjadaptive_max_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes rú  rû  rK  ©r  r  s   €€r9   ri   z*meta_adaptive_max_pool2d.<locals>.<lambda>ö  ó4   ø€ ðTØ',¤{ðTð TØDEðTð Tð Tð r;   r%  c                  ó   — dS )NzCadaptive_max_pool2d(): internal error: output_size.size() must be 2r5   r5   r;   r9   ri   z*meta_adaptive_max_pool2d.<locals>.<lambda>þ  ó   € ÐU€ r;   re  r1   r”   rÏ   )rÉ   rZ   rk   rð   rÇ   rî   r›   rÚ   rT   r   r‚  )r  ró  rÉ   ÚdimHÚsizeBÚsizeDÚosizeHÚosizeWrÌ   rø   r×   rÐ   r  s   `           @r9   Úmeta_adaptive_max_pool2dr  ë  sÔ  øø€ ð Œ:€DÝ	„LØ�ˆØZÐZÐZÐZñô ð õ �1�d‰^Œ^ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ 
„LÝˆKÑÔ˜AÒØUÐUñô ð ð
 €DØ€EØ€Eà„z�Q‚€Ø—
’
˜1‘”ˆØ�‰	ˆà�JŠJ�t˜a‘xÑ Ô €EØ �N€FˆFà„z�Q‚€Ø˜F FÐ+ˆ	Ø�oŠo˜iÑ(Ô(ˆØ—/’/ )µ5´;�/Ñ?Ô?ˆØ�Gˆ|Ðà˜E 6¨6Ð2ˆ	ÝÔ3°EÑ:Ô:ˆØ�oŠo˜iÑ(Ô(×+Ò+¸-Ð+ÑHÔHˆØ—/’/ )µ5´;�/Ñ?Ô?×BÒBØ'ð Cñ 
ô 
ˆð �Gˆ|Ðr;   c                 ó:  ‡ ‡— ‰ j         }t          j        |dv ˆ fd„¦  «         t          ‰ d¦  «         t          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         t          j        ‰¦  «        }‰                     ‰j        ¦  «         	                    |¬¦  «        S )Nr
  c                  ó   •— d‰ j         › �S )NzKadaptive_max_pooling2d_backward(): Expected 3D or 4D grad_output, but got: rK  ©rZ  s   €r9   ri   z3meta_adaptive_max_pool2d_backward.<locals>.<lambda>!  s   ø€ ÐqÐ^iÔ^oÐqÐq€ r;   Úadaptive_max_pool2d_backwardc                  ó(   •— d‰j         › d‰ j         › �S rÿ  r”   )rZ  r  s   €€r9   ri   z3meta_adaptive_max_pool2d_backward.<locals>.<lambda>(  s   ø€ Ðc %¤+ÐcÐcÐP[ÔPaÐcÐc€ r;   rÏ   )
rÉ   rZ   rk   r  rb   rT   r   r›   rœ   r‚  )rZ  r  r×   rÉ   rÐ   s   ``   r9   Ú!meta_adaptive_max_pool2d_backwardr    s¯   øø€ ð Ô€DÝ	„LØ�ˆØqÐqÐqÐqñô ð õ
 & kÐ3QÑRÔRÐRå	„LØŒ�{Ô(Ò(ØcÐcÐcÐcÐcñô ð õ
 Ô/°Ñ6Ô6€MØ�?Š?˜5œ;Ñ'Ô'×*Ò*¸Ð*ÑGÔGÐGr;   c                 ó:  ‡ ‡— ‰ j         }t          j        |dv ˆ fd„¦  «         t          d|¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆˆ fd„¦  «         Œ3t          j        t          |¦  «        dk    d„ ¦  «         d}d}d}|dk    r‰                      d¦  «        }|dz  }‰                      |¦  «        }|\  }}}|d	k    r||||f}	n|||||f}	‰                      |	¦  «        }
‰                      |	t          j        ¬
¦  «        }|
|fS )NrÓ  c                  ó   •— d‰ j         › �S )Nz:adaptive_max_pool3d(): Expected 4D or 5D tensor, but got: rK  rN  s   €r9   ri   z*meta_adaptive_max_pool3d.<locals>.<lambda>5  r  r;   r4   r   c                  ó    •— d‰j         › d‰ › d�S )Nzjadaptive_max_pool3d(): Expected input to have non-zero size for non-batch dimensions, but input has sizes rú  rû  rK  r  s   €€r9   ri   z*meta_adaptive_max_pool3d.<locals>.<lambda>:  r  r;   r1   c                  ó   — dS )NzCadaptive_max_pool3d(): internal error: output_size.size() must be 3r5   r5   r;   r9   ri   z*meta_adaptive_max_pool3d.<locals>.<lambda>B  r  r;   r‰  re  r”   )rÉ   rZ   rk   rð   rÇ   rî   r›   rÚ   )r  ró  rÉ   ÚdimDr  r  ÚosizeTr  r  rÌ   rø   r×   r  s   `           @r9   Úmeta_adaptive_max_pool3dr$  /  sg  øø€ ð Œ:€DÝ	„LØ�ˆØZÐZÐZÐZñô ð õ �1�d‰^Œ^ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ 
„LÝˆKÑÔ˜AÒØUÐUñô ð ð
 €DØ€EØ€Eàˆq‚y€yØ—
’
˜1‘”ˆØ�‰	ˆà�JŠJ�tÑÔ€EØ(Ñ€FˆF�Fàˆq‚y€yØ˜F F¨FÐ3ˆ	ˆ	à˜E 6¨6°6Ð:ˆ	à
�/Š/˜)Ñ
$Ô
$€CØ�oŠo˜i­u¬{ˆoÑ;Ô;€Gà�ˆ<Ðr;   c                 óV   — t          | d¦  «         |                     |j        ¦  «        S )NÚadaptive_max_pool3d_backward)r  r›   rœ   )rZ  r  r×   s      r9   Ú!meta_adaptive_max_pool3d_backwardr'  [  s)   € õ & kÐ3QÑRÔRÐRØ�?Š?˜5œ;Ñ'Ô'Ð'r;   c                 óN   — |€t          d¦  «        ‚|                      |¦  «        S )Nz:cannot repeat_interleave a meta tensor without output_size)r�  r›   )Úrepeatsró  s     r9   Úmeta_repeat_interleave_Tensorr*  b  s+   € àÐÝÐWÑXÔXÐXØ×Ò˜[Ñ)Ô)Ð)r;   c                 ó^  — | j         j        st          d| j         › �¦  «        ‚|j         j        st          d|j         › �¦  «        ‚t          |                      t          | j         ¦  «        ¦  «        |                     t          |j         ¦  «        ¦  «        t          j        ¬¦  «        }|S )Nz!real must be floating point, got z!imag must be floating point, got ©rM   )rb   r*  r�   rX   r‚  r   r   rU   )ÚrealÚimagr7  s      r9   Úmeta_complexr/  i  s§   € ð Œ:Ô'ð OÝÐMÀÄÐMÐMÑNÔNÐNØŒ:Ô'ð OÝÐMÀÄÐMÐMÑNÔNÐNÝØ�ŠÕ+¨D¬JÑ7Ô7Ñ8Ô8Ø�ŠÕ+¨D¬JÑ7Ô7Ñ8Ô8Ý6Ô>ðñ ô €Fð
 €Mr;   )Ú
fill_valuer0  c                ó  — t          | ¦  «        dv r5|                      ||                      ¦   «         ft          j        ¬¦  «        S t          j        ||                      ¦   «         fd|ft          j        | j        ¬¦  «        S )N)r  Úmpsr(  r”   r4   ©rb   r†   )r  r›   r‰   rZ   r˜   r�  r†   )r�   rÇ   r0  s      r9   Únonzero_staticr4  x  sx   € õ �4ÑÔÐ1Ð1Ð1Ø�~Š~˜t T§X¢X¡Z¤ZÐ0½¼
ˆ~ÑCÔCÐCåÔ"Ø�4—8’8‘:”:ÐØ�ˆIÝ”*Ø”;ð	
ñ 
ô 
ð 	
r;   c                 ó  — t          j        t          j        d„ ¦  «         t          j        |                      ¦   «         |                      ¦   «         fd|                      ¦   «         ft           j        | j        ¬¦  «        S )Nc                  ó   — dS )NaY  The register_meta function for torch.nonzero() raises unimplemented by default, as a correct data-independent implementation does not exist. This implementation returns a fake value, assuming all elements of the tensor are non-zero. To enable this registration, please set 'torch.fx.experimental._config.meta_nonzero_assume_all_nonzero' to True.r5   r5   r;   r9   ri   znonzero.<locals>.<lambda>Œ  s
   € ð S€ r;   r4   r3  )	rZ   Ú_check_not_implementedrÁ  Úmeta_nonzero_assume_all_nonzeror�  rš   r‰   r˜   r†   rÔ   s    r9   Únonzeror9  ‡  sy   € õ 
Ô ÝÔ2ð	Sð 	Sñô ð õ ÔØ	�Š‰Œ�t—x’x‘z”zÐ"Ø	
ˆD�JŠJ‰LŒLÐÝŒjØŒ{ð	ñ ô ð r;   c           
      ó,	  ‡ ‡‡‡‡‡‡‡‡— t          j        t          ‰¦  «        d„ ¦  «         g }t          ‰¦  «        D �]d\  ŠŠ‰��Ft          j        ‰j        t           j        t           j        t           j        t           j        fv d„ ¦  «         ‰j        t           j        t           j        fv rÇ‰                     ¦   «         }t          |¦  «        Št          j
        ‰‰j        z   ‰ j        k    ˆ fd„¦  «         t          ‰j        ¦  «        D ]dŠt          j
        ‰j        ‰         ‰ j        ‰‰z            k    ˆˆˆˆˆ fd„¦  «         |                     |                     d‰¦  «        ¦  «         Œe�Œ8|                     ‰¦  «         �ŒO|                     ‰¦  «         �Œf|Št          j        t          ‰¦  «        ‰ j        k    ˆˆ fd„¦  «         dd lm} t%           |j        ‰Ž ¦  «        Št          ‰¦  «        ‰ j        k     r-‰                     d ¦  «         t          ‰¦  «        ‰ j        k     °-d}d}‰D ]Š|dk    r‰�d}Œ|dk    r‰€d	}Œ‰� nŒd
}|s�g }g }t          ‰¦  «        D ]1\  ŠŠ‰�*|                     ‰¦  «         |                     ‰¦  «         Œ2t          ‰¦  «        D ]1\  ŠŠ‰€*|                     ‰¦  «         |                     ‰¦  «         Œ2‰                      |¦  «        Š |Šg Šg Šg Št          ‰¦  «        D ]_\  }	Š‰€D‰r!‰                     ‰ j        |	         ¦  «         Œ*‰                     ‰ j        |	         ¦  «         ŒKt%          ‰j        ¦  «        ŠŒ`ˆˆˆfd„}
‰                      ‰‰z   ‰z   ¦  «        }ddlm}  |‰                      ¦   «         dk    ¦  «        r|S  |
‰ ¦  «        }t3          j        |¦  «        \  }}t%          |¦  «        t%          t          t          |¦  «        ¦  «        ¦  «        k    r}t3          j        |j        |¦  «        }t3          j        |¦  «        }t3          j        |t3          j        |¦  «        ¦  «        }|                     |                     ¦   «         |¦  «        }|S )Nc                  ó   — dS )Nz#at least one index must be providedr5   r5   r;   r9   ri   z#meta_index_Tensor.<locals>.<lambda>œ  s   € Ð(M€ r;   c                  ó   — dS )Nz?tensors used as indices must be long, int, byte or bool tensorsr5   r5   r;   r9   ri   z#meta_index_Tensor.<locals>.<lambda>¤  s   € ÐY€ r;   c                  ó   •— d‰ j         › �S )Nú)too many indices for tensor of dimension r_  rÔ   s   €r9   ri   z#meta_index_Tensor.<locals>.<lambda>«  s   ø€ ÐSÈÌ	ÐSÐS€ r;   c            	      ó:   •— d‰j         › d‰ › d‰j         › d‰‰z   › �S )NzThe shape of the mask ú
 at index z0 does not match the shape of the indexed tensor rK  )r  r–   Újr   r�   s   €€€€€r9   ri   z#meta_index_Tensor.<locals>.<lambda>°  sP   ø€ ð !h¸¼ð !hð !hÐPQð !hð !hØJNÌ*ð!hð !hØ`aÐdeÑ`eð!hð !h€ r;   r4   c                  ó:   •— d‰j         › dt          ‰ ¦  «        › d�S )Nr>  z (got r|   )rÉ   rî   )r×   r�   s   €€r9   ri   z#meta_index_Tensor.<locals>.<lambda>»  s$   ø€ Ð\¸D¼IÐ\Ð\ÍSÐQXÉ\Ì\Ð\Ð\Ð\€ r;   r   Fr%  Tc                 ó  •— ‰‰z   ‰z   }t          |                      ¦   «         ¦  «        }dgt          ‰¦  «        z  |t          ‰¦  «        t          | j        ¦  «        t          ‰¦  «        z
  …<   |                      ||¦  «        S )zI
        This follows restride_src in TensorAdvancedIndexing.cpp
        r   )rï   rñ   rî   rœ   Ú
as_strided)r�   rœ   r  Úafter_shapeÚbefore_shapeÚreplacement_shapes      €€€r9   Ú_restride_srcz(meta_index_Tensor.<locals>._restride_srcü  s†   ø€ ð Ð0Ñ0°;Ñ>ˆÝ�t—{’{‘}”}Ñ%Ô%ˆàKLÈ#ÕPSØñQ
ô Q
ñ K
ˆ•�LÑ!Ô!¥C¨¬
¡O¤Oµc¸+Ñ6FÔ6FÑ$FÐFÑGð �Š˜u gÑ.Ô.Ð.r;   r1  ) rZ   rk   rP  Ú	enumeraterb   r˜   r  rœ  r9  rî   r™   rÉ   rð   rœ   r  ÚselectÚtorch._refsrƒ  rï   r'   ró   r›   r  r2  rš   rT   Ú3compute_elementwise_output_logical_to_physical_permÚ
apply_permr   Úinvert_permrD  rÇ   )r�   r×   r7  r9  ÚrefsÚstateÚhas_contiguous_subspacerï  Útransposed_indicesr‰   rH  rø   r2  Úrestrided_selfÚpermrW   Ú
perm_shaper�  rE  rF  r  r–   rA  r   rG  s   ``                @@@@@@@r9   Úmeta_index_TensorrV  š  s  øøøøøøøøø€ å	„L•�g‘”Ð MÐ MÑNÔNÐNð #%€FÝ˜gÑ&Ô&ð !ñ !‰ˆˆ5ØÑÝŒLØ”¥¤
­E¬Iµu´zÅ5Ä:ÐNÐNØYÐYñô ð ð Œ{�uœz­5¬:Ð6Ð6Ð6ØŸ-š-™/œ/�Ý˜‘K”K�ÝÔ"Ø˜œ
‘N d¤iÒ/ØSÐSÐSÐSñô ð õ ˜uœzÑ*Ô*ð 8ð 8�AÝÔ&Øœ Aœ¨$¬*°Q¸±UÔ*;Ò;ðhð hð hð hð hð hð hð hñô ð ð
 —M’M '§.¢.°°AÑ"6Ô"6Ñ7Ô7Ð7Ð7ñ8ð —’˜eÑ$Ô$Ð$Ñ$à�MŠM˜%Ñ Ô Ð Ñ Ø€GÝ	„LÝˆG‰Œ˜œ	Ò!Ø\Ð\Ð\Ð\Ð\ñô ð ð
 ÐÐÐÐÐåÐ(�4Ô(¨'Ð2Ñ3Ô3€Gå
ˆg‰,Œ,˜œÒ
"Ð
"Ø�Š�tÑÔÐõ ˆg‰,Œ,˜œÒ
"Ð
"ð €EØ#ÐØð 'ð 'ˆØ�AŠ:ˆ:ØÐ Ø�øØ�aŠZˆZØˆ}Ø�øàÐ Ø�ð !ð #'Ðð
 #ð %ØˆØÐÝ! 'Ñ*Ô*ð 	1ð 	1‰HˆAˆuØÐ Ø—’˜A‘”�Ø"×)Ò)¨%Ñ0Ô0Ð0øÝ! 'Ñ*Ô*ð 	1ð 	1‰HˆAˆuØˆ}Ø—’˜A‘”�Ø"×)Ò)¨%Ñ0Ô0Ð0øØ�|Š|˜DÑ!Ô!ˆØ$ˆð !€LØ€KØ#%ÐÝ Ñ(Ô(ð 2ð 2‰
ˆˆUØˆ=Ø ð 5Ø×"Ò" 4¤:¨c¤?Ñ3Ô3Ð3Ð3à×#Ò# D¤J¨s¤OÑ4Ô4Ð4Ð4å $ U¤[Ñ 1Ô 1ÐÐð
/ð 
/ð 
/ð 
/ð 
/ð 
/ð 
/ð �.Š.˜Ð(9Ñ9¸KÑGÑ
HÔ
H€CàDÐDÐDÐDÐDÐDà€~�d—j’j‘l”l aÒ'Ñ(Ô(ð àˆ
ð
 #�] 4Ñ(Ô(€NÝÔGÈÑWÔW�G€Dˆ!õ ˆD�z„z•T�%¥ D¡	¤	Ñ*Ô*Ñ+Ô+Ò+Ð+ÝÔ% c¤i°Ñ6Ô6ˆ
ÝÔ6°zÑBÔBˆ
ÝÔ% jµ%Ô2CÀDÑ2IÔ2IÑJÔJˆ
Ø�nŠn˜SŸXšX™ZœZ¨Ñ4Ô4ˆØ€Jr;   c                 ó|  — d }d }d }d„ } |||¦  «        }|
d         r;|                       |                     ¦   «         ¦  «                             |¬¦  «        }|
d         r;|                       |                     ¦   «         ¦  «                             |¬¦  «        }|
d         r|                       |¦  «        }|||fS )Nc                 ó  — t          | ¦  «        }t          |¦  «        }|t          j        k    s|t          j        k    rt          j        S |t          j        k    s|t          j        k    rt          j        S t          j        S rE   )r   rZ   rq  r@  rÓ   )Út1Út2Úfmt1Úfmt2s       r9   Ú_conv_memory_formatz6meta_convolution_backward.<locals>._conv_memory_format9  sm   € Ý$ RÑ(Ô(ˆÝ$ RÑ(Ô(ˆØ•5Ô&Ò&Ð&¨$µ%Ô2EÒ*EÐ*EÝÔ&Ð&Ø•5Ô)Ò)Ð)¨TµUÔ5KÒ-KÐ-KÝÔ)Ð)ÝÔ&Ð&r;   r   rÏ   r4   r%  )r›   rÇ   r‚  )Úgrad_output_Úinput_Úweight_Úbias_sizes_optrñ   r%  rø  r7  rû  rú  Úoutput_maskÚbackend_grad_inputÚbackend_grad_weightÚbackend_grad_biasr]  rÐ   s                   r9   Úmeta_convolution_backwardrf    sï   € ð  ÐØÐØÐð'ð 'ð 'ð (Ð'¨°Ñ8Ô8€MØ�1„~ð 
Ø)×3Ò3°F·K²K±M´MÑBÔB×EÒEØ'ð Fñ 
ô 
Ðð �1„~ð 
Ø*×4Ò4°W·\²\±^´^ÑDÔD×GÒGØ'ð Hñ 
ô 
Ðð �1„~ð CØ(×2Ò2°>ÑBÔBÐàÐ 3Ð5FÐGÐGr;   c                ó  ‡‡— ‰                      d¦  «        }‰                      d¦  «        }|                      ||f¦  «        } t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰                      d¦  «        ‰                      d¦  «        k    ˆˆfd„¦  «         t          j        ‰                      d¦  «        ‰                      d¦  «        k    ˆˆfd„¦  «         t          j        |                       d¦  «        |k    o|                       d¦  «        |k    d	„ ¦  «         |                      |                       ¦   «         ¦  «        S )
Nr4   r%  r1   c                  ó   — dS r²  r5   r5   r;   r9   ri   zmeta_addbmm.<locals>.<lambda>W  r³  r;   c                  ó   — dS rµ  r5   r5   r;   r9   ri   zmeta_addbmm.<locals>.<lambda>X  r³  r;   r   c                  ó`   •— d‰                       d¦  «        › d‰                      d¦  «        › �S )Nz8batch1 and batch2 must have same number of batches, got r   rÅ   rÆ   ©r·  r¸  s   €€r9   ri   zmeta_addbmm.<locals>.<lambda>[  s3   ø€ ÐpÈ6Ï;Ê;ÐWXÉ>Ì>ÐpÐpÐ`f×`kÒ`kÐlmÑ`nÔ`nÐpÐp€ r;   c            
      óº   •— d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d�	S )Nz#Incompatible matrix sizes for bmm (r4   r>   r%  rÅ   r|   rÆ   rk  s   €€r9   ri   zmeta_addbmm.<locals>.<lambda>_  sl   ø€ ð6°&·+²+¸a±.´.ð 6ð 6À6Ç;Â;ÈqÁ>Ä>ð 6ð 6Ø—;’;˜q‘>”>ð6ð 6Ø$*§K¢K°¡N¤Nð6ð 6ð 6ð r;   c                  ó   — dS )Nz.self tensor does not match matmul output shaper5   r5   r;   r9   ri   zmeta_addbmm.<locals>.<lambda>f  s   € Ð@€ r;   )rÇ   r„  rZ   rk   r‰   r›   )r�   r·  r¸  r°  r¯  rÃ  rÄ  s    ``    r9   Úmeta_addbmmrn  Q  sg  øø€ ð �;Š;�q‰>Œ>€DØ�;Š;�q‰>Œ>€DØ�;Š;˜˜d�|Ñ$Ô$€DÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„LØ�Š�A‰Œ˜&Ÿ+š+ a™.œ.Ò(ØpÐpÐpÐpÐpñô ð õ 
„LØ�Š�A‰Œ˜&Ÿ+š+ a™.œ.Ò(ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�	Š	�!‰Œ˜ÒÐ5 §¢¨1¡¤°Ò!5Ø@Ð@ñô ð ð �>Š>˜$Ÿ)š)™+œ+Ñ&Ô&Ð&r;   c           
      ó
  — t           j                             | |                     d¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        |                     d¦  «        ¬¦  «        S )Nrb   r…   r†   r‡   rÐ   r  )r.   r¡   r*  ra   )r�   r?  Úkwargss      r9   Úmeta_randint_likerq  k  so   € åŒ?×"Ò"ØØ�jŠj˜Ñ!Ô!Ø�zŠz˜(Ñ#Ô#Ø�zŠz˜(Ñ#Ô#Ø—:’:˜lÑ+Ô+Ø—j’j Ñ1Ô1ð #ñ ô ð r;   )Ú
grad_scaleÚ	found_infc       	         ót   ‡— | |||||fD ]-Št          j        t          ‰t          ¦  «        ˆfd„¦  «         Œ.d S )Nc                  ó(   •— dt          ‰ ¦  «        › �S ©Nz'exponent must be a tensor list but got ©r}   ©Úls   €r9   ri   z#meta__fused_adam_.<locals>.<lambda>�  ó   ø€ ÐG½dÀ1¹g¼gÐGÐG€ r;   ©rZ   rk   rt   rï   )r�   ÚgradsÚexp_avgsÚexp_avg_sqsÚmax_exp_avg_sqsÚstate_stepsÚlrÚbeta1Úbeta2Úweight_decayr¯   ÚamsgradÚmaximizerr  rs  ry  s                  @r9   Úmeta__fused_adam_r‡  w  s]   ø€ ð& �E˜8 [°/À;ÐOð 
ð 
ˆÝŒÝ�q�$ÑÔØGÐGÐGÐGñ	
ô 	
ð 	
ð 	
ð
ð 
r;   c       	         óÞ   ‡— | |||||fD ]-Št          j        t          ‰t          ¦  «        ˆfd„¦  «         Œ.d„ } || ¦  «         ||¦  «         ||¦  «         ||¦  «         ||¦  «        fS )Nc                  ó(   •— dt          ‰ ¦  «        › �S rv  rw  rx  s   €r9   ri   z"meta__fused_adam.<locals>.<lambda>§  rz  r;   c                 ó   — d„ | D ¦   «         S )Nc                 ó6   — g | ]}t          j        |¦  «        ‘ŒS r5   r    )rQ   r)  s     r9   rS   z=meta__fused_adam.<locals>.empty_like_list.<locals>.<listcomp>«  s#   € Ð9Ð9Ð9¨•Ô  Ñ#Ô#Ð9Ð9Ð9r;   r5   )Útensor_lists    r9   Úempty_like_listz)meta__fused_adam.<locals>.empty_like_listª  s   € Ø9Ð9¨[Ð9Ñ9Ô9Ð9r;   r{  )r�   r|  r}  r~  r  r€  r�  r‚  rƒ  r„  r¯   r…  r†  rr  rs  r�  ry  s                   @r9   Úmeta__fused_adamrŽ  ‘  s¯   ø€ ð& �E˜8 [°/À;ÐOð 
ð 
ˆÝŒÝ�q�$ÑÔØGÐGÐGÐGñ	
ô 	
ð 	
ð 	
ð
:ð :ð :ð 	ˆ˜ÑÔØˆ˜ÑÔØˆ˜Ñ!Ô!Øˆ˜Ñ$Ô$Øˆ˜Ñ(Ô(ðð r;   c                 óŠ  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆfd„¦  «         ‰                      ‰                      d¦  «        ‰                     d¦  «        ft           j        ¬	¦  «        S )
Nr%  c                  ó   — dS )Nza must be a 2D tensorr5   r5   r;   r9   ri   zmeta__int_mm.<locals>.<lambda>¹  ó   € Ð'>€ r;   c                  ó   — dS )Nzb must be a 2D tensorr5   r5   r;   r9   ri   zmeta__int_mm.<locals>.<lambda>º  r‘  r;   c                  ó   •— d‰ j         › �S )Nz'expected self to be int8 or uint8, got r”   )r7   s   €r9   ri   zmeta__int_mm.<locals>.<lambda>½  s   ø€ ÐC¸!¼'ÐCÐC€ r;   c                  ó   •— d‰ j         › �S )Nzexpected mat2 to be int8, got r”   )r8   s   €r9   ri   zmeta__int_mm.<locals>.<lambda>Á  s   ø€ Ð:°´Ð:Ð:€ r;   r4   r   c            
      óº   •— d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d‰                      d¦  «        › d�	S )Nz'Incompatible matrix sizes for _int_mm (r   r>   r4   rÅ   r|   rÆ   r6   s   €€r9   ri   zmeta__int_mm.<locals>.<lambda>Å  sl   ø€ ð,°a·f²f¸Q±i´ið ,ð ,À!Ç&Â&ÈÁ)Ä)ð ,ð ,Ø—6’6˜!‘9”9ð,ð ,Ø Ÿvšv a™yœyð,ð ,ð ,ð r;   r”   )	rZ   rk   r‰   rb   rœ  rQ  rÇ   r›   r�  r6   s   ``r9   Úmeta__int_mmr–  ¶  s)  øø€ õ 
„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•E”J¥¤Ð,Ð,ØCÐCÐCÐCñô ð õ 
„LØ	Œ•5”:ÐØ:Ð:Ð:Ð:ñô ð õ 
„LØ	�Šˆq‰	Œ	�Q—V’V˜A‘Y”YÒð	
ð 	
ð 	
ð 	
ð 	
ñô ð ð �;Š;˜Ÿš˜q™	œ	 1§6¢6¨!¡9¤9Ð-µU´[ˆ;ÑAÔAÐAr;   c                 ój  ‡ — t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        u ˆ fd„¦  «         ‰                      d¦  «        }‰                      d¦  «        dz  }‰                      |dz  ||dz  z  d|dz  ft           j        ¬	¦  «        S )
Nr%  c                  ó   — dS ©Nzw must be a 2D tensorr5   r5   r;   r9   ri   z2meta__convert_weight_to_int4pack.<locals>.<lambda>Ï  r‘  r;   c                  ó   •— d‰ j         › �S r‡  r”   rƒ  s   €r9   ri   z2meta__convert_weight_to_int4pack.<locals>.<lambda>Ò  ó   ø€ Ð8¨q¬wÐ8Ð8€ r;   r   r4   é   é   é    r”   )rZ   rk   r‰   rb   rQ  rÇ   r›   r�  ©rT  Úinner_k_tilesr4  r   s   `   r9   Ú meta__convert_weight_to_int4packr¡  Í  s»   ø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð 	
�Šˆq‰	Œ	€AØ	�Šˆq‰	Œ	�A‰€AØ�;Š;à�‰FØ�- "Ñ$Ñ%ØØ˜QÑð		
õ Œkð ñ ô ð r;   c                 óN  ‡ — t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        u ˆ fd„¦  «         ‰                      d¦  «        }‰                      d¦  «        }‰                      ||dz  ft           j        ¬¦  «        S )Nr%  c                  ó   — dS r™  r5   r5   r;   r9   ri   z:meta__convert_weight_to_int4pack_for_cpu.<locals>.<lambda>ã  r‘  r;   c                  ó   •— d‰ j         › �S ©Nzexpected w to be int32, got r”   rƒ  s   €r9   ri   z:meta__convert_weight_to_int4pack_for_cpu.<locals>.<lambda>æ  r›  r;   r   r4   r”   )rZ   rk   r‰   rb   r�  rÇ   r›   rQ  rŸ  s   `   r9   Ú(meta__convert_weight_to_int4pack_for_cpur¦  á  sœ   ø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð 	
�Šˆq‰	Œ	€AØ	�Šˆq‰	Œ	€AØ�;Š;Ø	
ˆA�‰FˆÝŒkð ñ ô ð r;   c                 ó�  ‡ ‡‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         ‰j        j        dk    rdndŠt          j        ‰                     ¦   «         ‰k    ˆfd„¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j	        u ˆfd„¦  «         ‰j        j        dk    r‰ 
                    d¦  «        n‰ 
                    d¦  «        d	z  }‰                      ‰  
                    d¦  «        |‰ j        ¬
¦  «        S )Nr%  c                  ó   — dS ©Nzx must be a 2D tensorr5   r5   r;   r9   ri   z*meta__weight_int4pack_mm.<locals>.<lambda>ò  r‘  r;   r(  re  c                  ó   •— d‰ › d�S )Nzw must be a zD tensorr5   )Úexpected_dims   €r9   ri   z*meta__weight_int4pack_mm.<locals>.<lambda>ô  s   ø€ Ð2WÀÐ2WÐ2WÐ2W€ r;   c                  ó   •— d‰ j         › �S r…  r”   r€  s   €r9   ri   z*meta__weight_int4pack_mm.<locals>.<lambda>÷  ó   ø€ Ð?°a´gÐ?Ð?€ r;   c                  ó   •— d‰ j         › �S r¥  r”   rƒ  s   €r9   ri   z*meta__weight_int4pack_mm.<locals>.<lambda>û  r›  r;   r   rœ  r”   )rZ   rk   r‰   rõ  r}   rb   r»  r¼  r½  r�  rÇ   r›   )r>   rT  r‰  r‹  Údim_nr«  s   ``   @r9   Úmeta__weight_int4pack_mmr°  ð  s#  øøø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?ØœÔ*¨eÒ3Ð3�1�1¸€LÝ	„L�—’‘”˜LÒ(Ð*WÐ*WÐ*WÐ*WÑXÔXÐXÝ	„LØ	Œ•E”M¥5¤=µ%´.ÐAÐAØ?Ð?Ð?Ð?ñô ð õ 
„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð œÔ+¨uÒ4Ð4ˆA�FŠF�1‰IŒIˆI¸!¿&º&À¹)¼)Àa¹-€EØ�;Š;�q—v’v˜a‘y”y %¨q¬wˆ;Ñ7Ô7Ð7r;   c                 ó  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         ‰                      ‰  	                    d¦  «        ‰ 	                    d¦  «        ‰ j        ¬¦  «        S )Nr%  c                  ó   — dS r©  r5   r5   r;   r9   ri   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>  r‘  r;   c                  ó   — dS r™  r5   r5   r;   r9   ri   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>  r‘  r;   c                  ó   •— d‰ j         › �S r…  r”   r€  s   €r9   ri   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>  r­  r;   c                  ó   •— d‰ j         › �S r‡  r”   rƒ  s   €r9   ri   z2meta__weight_int4pack_mm_for_cpu.<locals>.<lambda>  r›  r;   r   r”   )
rZ   rk   r‰   rb   r»  r¼  r½  rQ  r›   rÇ   rŒ  s   ``  r9   Ú meta__weight_int4pack_mm_for_cpur¶    óÝ   øø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•E”M¥5¤=µ%´.ÐAÐAØ?Ð?Ð?Ð?ñô ð õ 
„LØ	Œ•5”;ÐØ8Ð8Ð8Ð8ñô ð ð �;Š;�q—v’v˜a‘y”y !§&¢&¨¡)¤)°1´7ˆ;Ñ;Ô;Ð;r;   c                 ó  ‡ ‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         ‰                      ‰  	                    d¦  «        ‰ 	                    d¦  «        ‰ j        ¬¦  «        S )Nr%  c                  ó   — dS r©  r5   r5   r;   r9   ri   z;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>  r‘  r;   c                  ó   — dS r™  r5   r5   r;   r9   ri   z;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>  r‘  r;   c                  ó   •— d‰ j         › �S r…  r”   r€  s   €r9   ri   z;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>  r­  r;   c                  ó   •— d‰ j         › �S r¥  r”   rƒ  s   €r9   ri   z;_weight_int4pack_mm_with_scales_and_zeros.<locals>.<lambda>  r›  r;   r   r”   )
rZ   rk   r‰   rb   r»  r¼  r½  r�  r›   rÇ   )r>   rT  r‰  ÚqScaleÚqZeross   ``   r9   Ú)_weight_int4pack_mm_with_scales_and_zerosr¿    r·  r;   r7   r8   c                 ó   — | |z   dz
  |z  |z  S r3   r5   r6   s     r9   Úkai_rounduprÁ    s   € Ø�‰U�Q‰Y˜1Ñ Ñ!Ð!r;   c                 ó0  ‡	‡
‡‡‡‡‡‡‡‡‡— | dk    r€||k    r+d}d}d}dŠdŠdŠd„ Šˆˆˆˆfd„Šˆfd„} ||||||¦  «        S |dz  d	k    rH||z  d	k    rAd}d}d}dŠdŠdŠdŠ	ˆ	ˆˆfd
„}ˆ	ˆ
ˆˆˆˆˆfd„Šd„ Š
ˆ	fd„Šˆ	fd„Š |||||||¦  «        S d S d S d S )Nre  rœ  r�  r%  c                 óH   — t          ||z  d¦  «        }t          | |¦  «        S )Nre  ©rÁ  )r   ÚkrÚsrÚkr_sr_roundedup4s       r9   Úkai_k_roundedupz3get_kai_packed_weight_size.<locals>.kai_k_roundedup/  s)   € õ $/¨r°B©w¸Ñ#:Ô#:Ð Ý" 1Ð&6Ñ7Ô7Ð7r;   c                 óv   •—  ‰| ||¦  «        }|dz  dk    rt          d|› �¦  «        ‚||dz  ‰z   ‰z   ‰z   z  S )Nr%  r   zk_internal must be even, got r^  )	r   ÚnrrÅ  rÆ  Ú
k_internalrÈ  Úkai_num_bytes_biasÚkai_num_bytes_multiplier_rhsÚkai_num_bytes_sum_rhss	        €€€€r9   Ú9kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0z]get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4cxp_qsu4cxs1s05  sl   ø€ ð -˜_¨Q°°BÑ7Ô7�
à ‘N qÒ(Ð(Ý(Ð)UÈÐ)UÐ)UÑVÔVÐVàØ 1‘_Ø2ñ3à+ñ,ð )ñ)ñð r;   c                 óL   •— t          | |¦  «        |z  }| ‰||||¦  «        z  S rE   rÄ  )r4  r   rÊ  rÅ  rÆ  Únum_rowsrÏ  s         €r9   Ú7kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0z[get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_size_rhs_pack_nxk_qsi4cxp_qsu4cxs1s0D  sA   ø€ õ ' q¨"Ñ-Ô-°Ñ3�ð ØOÐOØ˜2˜r 2ñô ñðr;   rž  r   c                 ó  •— ||z  dk    rt          d|› d|› d�¦  «        ‚|‰	z  dk    rt          d|› d‰	› d�¦  «        ‚|‰z  dk    rt          d|› d‰› d�¦  «        ‚t          | |¦  «        |z  }| ‰|||||¦  «        z  S ©Nr   úbl (z) must be divisible by kr (r|   znr (z+) must be divisible by kai_nr_multiple_of (ú+) must be divisible by kai_bl_multiple_of (©r�   rÁ  )
r4  r   rÊ  rÅ  rÆ  ÚblrÑ  Úkai_bl_multiple_ofÚ;kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0Úkai_nr_multiple_ofs
          €€€r9   Ú9kai_get_rhs_packed_size_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0z]get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_size_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0\  sê   ø€ ð ˜‘G ’>�>Ý(Ð)T°Ð)TÐ)TÈrÐ)TÐ)TÐ)TÑUÔUÐUØÐ+Ñ+°Ò1Ð1Ý(Øc˜rÐcÐcÐN`ÐcÐcÐcñô ð ð Ð+Ñ+°Ò1Ð1Ý(Øc˜rÐcÐcÐN`ÐcÐcÐcñô ð õ ' q¨"Ñ-Ô-°Ñ3�ð ØQÐQØ˜2˜r 2 rñô ñðr;   c                 ó  •— ||z  dk    rt          d|› d|› d�¦  «        ‚|‰
z  dk    rt          d|› d‰
› d�¦  «        ‚|‰z  dk    rt          d|› d‰› d�¦  «        ‚ ‰	¦   «         } ‰| |¦  «        } ‰||¦  «        }|||z  ‰z   ‰z   z  S rÔ  r^  )r   rÊ  rÅ  rÆ  rØ  Únum_bytes_multiplier_rhsÚnum_blocks_per_rowÚnum_bytes_per_blockrÙ  Ú#kai_get_bf16_datatype_size_in_bytesrÛ  Úkai_num_blocks_per_rowrÌ  Úkai_num_bytes_per_blockrÎ  s           €€€€€€€r9   rÚ  z_get_kai_packed_weight_size.<locals>.kai_get_rhs_packed_stride_rhs_pack_nxk_qsi4c32p_qsu4c32s1s0s  s  ø€ ð ˜‘G ’>�>Ý(Ð)T°Ð)TÐ)TÈrÐ)TÐ)TÐ)TÑUÔUÐUØÐ+Ñ+°Ò1Ð1Ý(Øc˜rÐcÐcÐN`ÐcÐcÐcñô ð ð Ð+Ñ+°Ò1Ð1Ý(Øc˜rÐcÐcÐN`ÐcÐcÐcñô ð ð
 ,OÐ+NÑ+PÔ+PÐ(Ø%;Ð%;¸A¸rÑ%BÔ%BÐ"Ø&=Ð&=ØÐ0ñ'ô 'Ð#ð Ø(Ð+=Ñ=Ø+ñ,à(ñ)ñð r;   c                  ó   — dS )Nr%  r5   r5   r;   r9   rá  zGget_kai_packed_weight_size.<locals>.kai_get_bf16_datatype_size_in_bytes�  s   € Ø�qr;   c                 óh   •— |‰z  dk    rt          d|› d‰› d�¦  «        ‚t          | |¦  «        |z  S )Nr   rÕ  rÖ  r|   r×  )r   rØ  rÙ  s     €r9   râ  z:get_kai_packed_weight_size.<locals>.kai_num_blocks_per_row“  sT   ø€ ØÐ+Ñ+°Ò1Ð1Ý(Øc˜rÐcÐcÐN`ÐcÐcÐcñô ð õ # 1 bÑ)Ô)¨RÑ/Ð/r;   c                 óR   •— | ‰z  dk    rt          d| › d‰› d�¦  «        ‚| dz  |z   S )Nr   rÕ  rÖ  r|   r%  r^  )rØ  rÞ  rÙ  s     €r9   rã  z;get_kai_packed_weight_size.<locals>.kai_num_bytes_per_blockš  sO   ø€ ØÐ+Ñ+°Ò1Ð1Ý(Øc˜rÐcÐcÐN`ÐcÐcÐcñô ð ð ˜a™Ð#;Ñ;Ð;r;   r5   )Ún_bitsrê  ÚKÚ	groupsizeÚkai_nrÚkai_krÚkai_srrÒ  rÜ  rÙ  rá  rÚ  rÏ  rÈ  rÛ  râ  rÌ  rÍ  rã  rÎ  s            @@@@@@@@@@@r9   Úget_kai_packed_weight_sizerí  #  sÐ  øøøøøøøøøøø€ Ø�‚{€{à˜Š>ˆ>àˆFØˆFØˆFØ$%Ð!Ø+,Ð(Ø!"Ðð8ð 8ð 8ðð ð ð ð ð ð ð ð
ð 
ð 
ð 
ð 
ð KÐJØ�1�f˜f fñô ð ð ˜‰^˜qÒ Ð  Q¨¡]°aÒ%7Ð%7ØˆFØˆFØˆFØ$%Ð!Ø!"ÐØ!"ÐØ!#Ððð ð ð ð ð ð ð.ð ð ð ð ð ð ð ð ð ð ð:ð ð ð0ð 0ð 0ð 0ð 0ð<ð <ð <ð <ð <ð MÐLØ�1�f˜f f¨iñô ð ð{ €{ð^ !Ð Ð%7Ð%7r;   c                 ór  ‡ — t          j        ‰ j        t           j        u ˆ fd„¦  «         t           j        j                             ¦   «         rˆ||k    r|j        t           j        k    s-||k     rg|dz  dk    r^||z  dk    rU|j        t           j        k    r@t          d|||¦  «        }‰  
                    t          |¦  «        t           j        ¬¦  «        S ‰                      ¦   «         |                     ¦   «         z   }|�||                     ¦   «         z  }‰  
                    |t           j        ¬¦  «        S )Nc                  ó   •— d‰ j         › �S r‡  r”   )Úweightss   €r9   ri   z2meta__dyn_quant_pack_4bit_weight.<locals>.<lambda>¬  s   ø€ Ð>¨w¬}Ð>Ð>€ r;   rž  r   re  r”   )rZ   rk   rb   rQ  r  Úkleidiair  r^   r½  rí  r›   r  rš   )rð  Úscales_zerosr•  Ú
block_sizeÚin_featuresÚout_featuresÚpacked_weight_sizes   `      r9   Ú meta__dyn_quant_pack_4bit_weightr÷  ¦  s6  ø€ õ 
„LØŒ�œÐ$Ø>Ð>Ð>Ð>ñô ð õ „~Ô×+Ò+Ñ-Ô-ð MØ	�{Ò	"Ð	" |Ô'9½U¼[Ò'HÐ'Hà˜Ò$Ð$Ø˜R‘ 1Ò$Ð$Ø˜jÑ(¨AÒ-Ð-ØÔ"¥e¤nÒ4Ð4õ 8Øˆ|˜[¨*ñ
ô 
Ðð × Ò ¥Ð%7Ñ!8Ô!8ÅÄÐ ÑLÔLÐLØ Ÿš™œ¨<×+=Ò+=Ñ+?Ô+?Ñ?ÐØÐØ˜dŸjšj™lœlÑ*ÐØ×ÒÐ/µu´{ÐÑCÔCÐCr;   c                 óT  ‡ ‡‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        k    p‰ j        t           j        k    o‰‰k    ˆˆˆ fd„¦  «         ‰                      d¦  «        }‰                      ||‰ j        ¬¦  «        S )Nr%  c                  ó   — dS )Nzinput must be a 2D tensorr5   r5   r;   r9   ri   z-meta__dyn_quant_matmul_4bit.<locals>.<lambda>É  s   € Ð)D€ r;   c                  ó$   •— d‰j         › d‰ › d‰› �S )NzPexpected input to be f32 or bf16 (bf16 requires block_size == in_features), got z with block_size=z and in_features=r”   )ró  rô  Úinps   €€€r9   ri   z-meta__dyn_quant_matmul_4bit.<locals>.<lambda>Í  s=   ø€ ðZØ”9ðZð ZØ/9ðZð ZØLWðZð Zð r;   r   r”   )rZ   rk   r‰   rb   r»  r½  rÇ   r›   )rû  Úpacked_weightsró  rô  rõ  rý  s   ` ``  r9   Úmeta__dyn_quant_matmul_4bitrý  Á  s®   øøø€ õ 
„L�—’‘”˜a’Ð!DÐ!DÑEÔEÐEÝ	„LØ	Œ•e”mÒ	#ð 	GØŒI�œÒ'ÐE¨J¸+Ò,Eð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð 	�Š�‰Œ€AØ�=Š=˜˜L°´	ˆ=Ñ:Ô:Ð:r;   c                 óL  ‡ ‡‡— t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰ j        t           j        t           j        t           j        fv ˆ fd„¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰j        t           j        u ˆfd„¦  «         t          j        ‰                     d¦  «        ‰                      d¦  «        k    ˆˆ fd„¦  «         t          j        ‰                     ¦   «         dk    o+‰                     d¦  «        ‰                     d¦  «        k    ˆˆfd	„¦  «         ‰  	                    ‰                      d¦  «        ‰                     d¦  «        ‰ j        ¬
¦  «        S )Nr%  c                  ó   — dS r©  r5   r5   r;   r9   ri   z*meta__weight_int8pack_mm.<locals>.<lambda>Ø  r‘  r;   c                  ó   •— d‰ j         › �S r…  r”   r€  s   €r9   ri   z*meta__weight_int8pack_mm.<locals>.<lambda>Û  r­  r;   c                  ó   — dS r™  r5   r5   r;   r9   ri   z*meta__weight_int8pack_mm.<locals>.<lambda>Ý  r‘  r;   c                  ó   •— d‰ j         › �S )Nzexpected w to be int8, got r”   rƒ  s   €r9   ri   z*meta__weight_int8pack_mm.<locals>.<lambda>à  s   ø€ Ð7¨a¬gÐ7Ð7€ r;   r4   c                  ób   •— d‰                       d¦  «        › d‰                      d¦  «        › d�S )Nzexpected w.size(1) (r4   z) == x.size(1) (r|   rÆ   )rT  r>   s   €€r9   ri   z*meta__weight_int8pack_mm.<locals>.<lambda>ä  s/   ø€ ÐN q§v¢v¨a¡y¤yÐNÐNÀ!Ç&Â&ÈÁ)Ä)ÐNÐNÐN€ r;   r   c                  óD   •— d‰                      d¦  «        › d‰ j        › �S )Nz%expected q_scales to be 1D with size r   z, got shape )rÇ   rœ   )Úq_scalesrT  s   €€r9   ri   z*meta__weight_int8pack_mm.<locals>.<lambda>è  s$   ø€ Ð_¸¿º¸q¹	¼	Ð_Ð_ÈxÌ~Ð_Ð_€ r;   r”   )
rZ   rk   r‰   rb   r»  r¼  r½  rœ  rÇ   r›   )r>   rT  r  s   ```r9   Úmeta__weight_int8pack_mmr  Ö  st  øøø€ å	„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•E”M¥5¤=µ%´.ÐAÐAØ?Ð?Ð?Ð?ñô ð õ 
„L�—’‘”˜A’Ð>Ð>Ñ?Ô?Ð?Ý	„LØ	Œ•5”:ÐØ7Ð7Ð7Ð7ñô ð õ 
„LØ	�Šˆq‰	Œ	�Q—V’V˜A‘Y”YÒØNÐNÐNÐNÐNñô ð õ 
„LØ�Š‰Œ˜!ÒÐ= §¢¨aÑ 0Ô 0°A·F²F¸1±I´IÒ =Ø_Ð_Ð_Ð_Ð_ñô ð ð �;Š;�q—v’v˜a‘y”y !§&¢&¨¡)¤)°1´7ˆ;Ñ;Ô;Ð;r;   c                 ó–  ‡ ‡‡— t          j        ‰                      ¦   «         dk    ˆ fd„¦  «         t          j        ‰                     ¦   «         dk    ˆfd„¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆfd„¦  «         t          j        t	          j        ‰ j        ¦  «        ˆ fd„¦  «         t          j        t	          j        ‰j        ¦  «        ˆfd„¦  «         t          j        |dk    d	„ ¦  «         t          j        ‰d
v ˆfd„¦  «         ‰                      d¦  «        }‰                     d¦  «        }‰ j        d d…         }‰j        d d…         }t          t          j	        ||¦  «        ¦  «        }| 
                    ||g¦  «         ‰                      |¦  «        S )Nr%  c                  ó4   •— d‰                       ¦   «         › d�S )Nz1cdist only supports at least 2D tensors, X1 got: r§  rÀ   ©Úx1s   €r9   ri   z$meta_cdist_forward.<locals>.<lambda>ñ  ó   ø€ ÐOÀBÇFÂFÁHÄHÐOÐOÐO€ r;   c                  ó4   •— d‰                       ¦   «         › d�S )Nz1cdist only supports at least 2D tensors, X2 got: r§  rÀ   ©Úx2s   €r9   ri   z$meta_cdist_forward.<locals>.<lambda>õ  r  r;   r¿   c                  ó`   •— d‰                       d¦  «        › d‰                      d¦  «        › �S )Nz4X1 and X2 must have the same number of columns. X1: r¿   z X2: rÆ   )r
  r  s   €€r9   ri   z$meta_cdist_forward.<locals>.<lambda>ù  s2   ø€ ÐfÀrÇwÂwÈrÁ{Ä{ÐfÐfÐY[×Y`ÒY`ÐacÑYdÔYdÐfÐf€ r;   c                  ó   •— d‰ j         › �S )Nz3cdist only supports floating-point dtypes, X1 got: r”   r	  s   €r9   ri   z$meta_cdist_forward.<locals>.<lambda>ý  ó   ø€ ÐPÀbÄhÐPÐP€ r;   c                  ó   •— d‰ j         › �S )Nz3cdist only supports floating-point dtypes, X2 got: r”   r  s   €r9   ri   z$meta_cdist_forward.<locals>.<lambda>  r  r;   r   c                  ó   — dS )Nz)cdist only supports non-negative p valuesr5   r5   r;   r9   ri   z$meta_cdist_forward.<locals>.<lambda>  s   € Ð!L€ r;   )Nr   r4   r%  c                  ó   •— d‰ › �S )Nz(possible modes: None, 0, 1, 2, but was: r5   )Úcompute_modes   €r9   ri   z$meta_cdist_forward.<locals>.<lambda>  s   ø€ ÐI¸<ÐIÐI€ r;   r  )rZ   rk   r‰   rÇ   rT   Úis_float_dtyperb   rœ   rï   Úbroadcast_shapesÚextendr›   )	r
  r  r¤  r  Úr1Úr2Úbatch_tensor1Úbatch_tensor2rÁ  s	   `` `     r9   Úmeta_cdist_forwardr  í  sÐ  øøø€ å	„LØ
�Š‰Œ�AŠØOÐOÐOÐOñô ð õ 
„LØ
�Š‰Œ�AŠØOÐOÐOÐOñô ð õ 
„LØ
�Š�‰Œ�r—w’w˜r‘{”{Ò"ØfÐfÐfÐfÐfñô ð õ 
„LÝÔ˜RœXÑ&Ô&ØPÐPÐPÐPñô ð õ 
„LÝÔ˜RœXÑ&Ô&ØPÐPÐPÐPñô ð õ 
„L��a’ÐLÐLÑMÔMÐMÝ	„LØ˜Ð'ØIÐIÐIÐIñô ð ð 
�Š�‰Œ€BØ	�Š�‰Œ€BØ”H˜S˜b˜S”M€MØ”H˜S˜b˜S”M€MÝ�Ô.¨}¸mÑLÔLÑMÔM€LØ×Ò˜˜R˜Ñ!Ô!Ð!Ø�<Š<˜Ñ%Ô%Ð%r;   c                 ó@  — |j         d         }|j         d         }|j         d         }|j         d d…         }|j         d d…         }	t          t          j        ||	¦  «        ¦  «        }
|
                     ¦   «         }|                     ||g¦  «         t          j        |
¦  «        }|dk    s|dk    s|dk    s|dk    rt          j        |¦  «        S |t          |j         ¦  «        k    r| 	                    |¦  «        }t          j
        |t          j        ¬¦  «        S )Nr¿   r  r   rÏ   )rœ   rï   rZ   r  Úcopyr  ÚmathÚprodÚ
zeros_liker„  r¡   rÓ   )r¨  r
  r  r¤  ÚcdistÚc1r  r  r  r  r×  Útensor1_expand_sizeÚbatch_products                r9   Úmeta_cdist_backwardr'    s
  € ð 
Œ�"Œ€BØ	Œ�"Œ€BØ	Œ�"Œ€BØ”H˜S˜b˜S”M€MØ”H˜S˜b˜S”M€MÝ¥Ô 6°}ÀmÑ TÔ TÑUÔUÐØ.×3Ò3Ñ5Ô5ÐØ×Ò  B˜xÑ(Ô(Ð(Ý”IÐ2Ñ3Ô3€MØ	ˆQ‚w€w�"˜’'�'˜R 1šW˜W¨¸Ò(:Ð(:ÝÔ Ñ#Ô#Ð#Ø�d 2¤8™nœnÒ,Ð,Ø�YŠYÐ*Ñ+Ô+ˆÝÔ˜B­eÔ.EÐFÑFÔFÐFr;   c	                 ór  ‡ ‡‡‡‡‡— t          j        ‰j        t           j        t           j        fv ˆfd„¦  «         t          j        ‰j        t           j        t           j        fv ˆfd„¦  «         t          j        t          j        ‰ j        ¦  «        ˆ fd„¦  «         ‰                     d¦  «        }	|rt          j        |	dk    d„ ¦  «         |	dz  }	‰                      |	‰                      d¦  «        ¦  «        }
‰��t          j        |t          k    d„ ¦  «         t          j        ‰j
        dk    ˆfd„¦  «         t          j        ‰                     ¦   «         ‰                     ¦   «         k    ˆˆfd	„¦  «         ˆfd
„Šd„ Šˆˆfd„}t          ‰¦  «        dk    r›‰                     ‰                     d¦  «        ¦  «        }‰                     ‰                     ¦   «         ¦  «        }|t          k    r+‰                     |	‰                      d¦  «        ¦  «        }�n‰                     d¦  «        }nõ |‰ ‰|
|¦  «        }|t          t          fv s|s)‰                     ‰                     d¦  «        ¦  «        }n‰                     d¦  «        }‰                     |	¦  «        }‰j        d         }|t          k    rC|rt          j        |dk    d„ ¦  «         |dz  }‰                     |‰ j        d         ¦  «        }n'‰                     |                     ¦   «         ¦  «        }|
|||fS )Nc                  ó   •— d‰ j         › �S )Nz(expected indices to be long or int, got r”   ©r×   s   €r9   ri   z$meta_embedding_bag.<locals>.<lambda>6  ó   ø€ ÐJ¸7¼=ÐJÐJ€ r;   c                  ó   •— d‰ j         › �S )Nz(expected offsets to be long or int, got r”   )rÑ  s   €r9   ri   z$meta_embedding_bag.<locals>.<lambda>:  r+  r;   c                  ó   •— d‰ j         › �S )Nz/expected weight to be floating point type, got r”   )r“  s   €r9   ri   z$meta_embedding_bag.<locals>.<lambda>>  s   ø€ ÐPÀ&Ä,ÐPÐP€ r;   r   r4   c                  ó   — dS ©Nz1include_last_offset: numBags should be at least 1r5   r5   r;   r9   ri   z$meta_embedding_bag.<locals>.<lambda>E  s   € ÐG€ r;   c                  ó   — dS )Nz@embedding_bag: per_sample_weights only supported with mode='sum'r5   r5   r;   r9   ri   z$meta_embedding_bag.<locals>.<lambda>N  s   € ÐV€ r;   c                  ó   •— d‰ j         › d�S )Nz1expected per_sample_weights to be 1D tensor, got r§  r_  )Úper_sample_weightss   €r9   ri   z$meta_embedding_bag.<locals>.<lambda>R  s   ø€ ÐbÐHZÔH_ÐbÐbÐb€ r;   c                  ó^   •— d‰                      ¦   «         › d‰                       ¦   «         › d�S )Nz%expected per_sample_weights.numel() (z$ to be the same as indices.numel() (r|   ©rš   )r×   r2  s   €€r9   ri   z$meta_embedding_bag.<locals>.<lambda>V  sF   ø€ ðIÐ8J×8PÒ8PÑ8RÔ8Rð Ið IØ6=·m²m±o´oðIð Ið Ið r;   c                 óP   •—  ‰| ||¦  «        o|                      d¦  «        dk    S ©Nr   r4   ©rñ   )r¦   rÚ  r  Úpadding_idxÚis_fast_path_index_selects       €r9   Úis_fast_path_index_select_scalez;meta_embedding_bag.<locals>.is_fast_path_index_select_scale\  s0   ø€ à%Ð% c¨6°;Ñ?Ô?ÐXÀEÇLÂLÐQRÁOÄOÐWXÒDXð	
r;   c                 óÆ   — | j         t          j        k    s| j         t          j        k    o7|                      d¦  «        dk    o|                     d¦  «        dk    o|dk     S ©Nr4   r   )rb   rZ   r^   r\   rñ   )r¦   r  r8  s      r9   r9  z5meta_embedding_bag.<locals>.is_fast_path_index_selecta  s_   € àŒY�%œ+Ò%Ð@¨¬µe´jÒ)@ð  Ø—
’
˜1‘” Ò"ð à—’˜aÑ Ô  AÒ%ð ð ˜a’ð		
r;   c                 ó>   •— |� ‰| |||¦  «        S  ‰| ||¦  «        S rE   r5   )r¦   rÚ  r  r8  r9  r:  s       €€r9   Úis_fast_pathz(meta_embedding_bag.<locals>.is_fast_pathi  s5   ø€ ØÐØ2Ð2°3¸¸vÀ{ÑSÔSÐSà,Ð,¨S°&¸+ÑFÔFÐFr;   r  c                  ó   — dS r/  r5   r5   r;   r9   ri   z$meta_embedding_bag.<locals>.<lambda>ƒ  s   € ÐO€ r;   )rZ   rk   rb   r˜   r  rT   r  rÇ   r›   ÚMODE_SUMrÉ   rš   r  ÚMODE_MAXÚ	MODE_MEANrœ   )r“  r×   rÑ  Úscale_grad_by_freqrµ  Úsparser2  Úinclude_last_offsetr8  Únum_bagsr  r>  Ú
offset2bagÚbag_sizeÚmax_indicesÚfast_path_sumÚnumBagsr9  r:  s   ```   `          @@r9   Úmeta_embedding_bagrL  (  s„  øøøøøø€ õ 
„LØŒ�%œ*¥e¤iÐ0Ð0ØJÐJÐJÐJñô ð õ 
„LØŒ�%œ*¥e¤iÐ0Ð0ØJÐJÐJÐJñô ð õ 
„LÝÔ˜Vœ\Ñ*Ô*ØPÐPÐPÐPñô ð ð
 �|Š|˜A‰Œ€HØð ÝŒØ˜ŠMØGÐGñ	
ô 	
ð 	
ð 	�A‰ˆà×Ò˜h¨¯ª°A©¬Ñ7Ô7€FàÐ%ÝŒØ•HÒØVÐVñ	
ô 	
ð 	
õ 	ŒØÔ# qÒ(ØbÐbÐbÐbñ	
ô 	
ð 	
õ 	ŒØ×$Ò$Ñ&Ô&¨'¯-ª-©/¬/Ò9ðð ð ð ð ñ	
ô 	
ð 	
ð
ð 
ð 
ð 
ð 
ð

ð 
ð 
ðGð Gð Gð Gð Gð Gõ �7ÑÔ˜uÒ$Ð$Ø×&Ò& w§|¢|°A¡¤Ñ7Ô7ˆ
Ø×$Ò$ W§\¢\¡^¤^Ñ4Ô4ˆØ•8ÒÐØ!×+Ò+¨H°f·k²kÀ!±n´nÑEÔEˆK‰Kà!×+Ò+¨AÑ.Ô.ˆKˆKà$˜ VÐ-?ÀÈÑUÔUˆØ•I�xÐ(Ð(Ð(°Ð(Ø ×*Ò*¨7¯<ª<¸©?¬?Ñ;Ô;ˆJˆJà ×*Ò*¨1Ñ-Ô-ˆJØ×$Ò$ XÑ.Ô.ˆà”- Ô"ˆØ•8ÒÐØ"ð Ý”Ø˜q’LØOÐOñô ð ð ˜1‘�Ø!×+Ò+¨G°V´\À!´_ÑEÔEˆKˆKà!×+Ò+¨H¯MªM©O¬OÑ<Ô<ˆKØ�:˜x¨Ð4Ð4r;   c                 óª   — t          | ||g|¢R Ž \  }}}}t          |¦  «        dk    r'|                     |                     ¦   «         ¦  «        }||||fS ©Nr  )rL  r  r›   rÇ   )r“  r×   rÑ  rV   r  rG  rH  rI  s           r9   Úmeta_embedding_bag_forward_onlyrO  Œ  sm   € å0BØ�˜ð1Ø#'ð1ð 1ð 1Ñ-€FˆJ˜ +õ �7ÑÔ˜uÒ$Ð$Ø×$Ò$ W§\¢\¡^¤^Ñ4Ô4ˆØ�:˜x¨Ð4Ð4r;   c                 ór   — |r|S | j         j        s| j         j        r| j         S |rt          j        S | j         S rE   )rb   r*  r  rZ   r˜   )r  rb   Úpromote_int_to_longs      r9   Ú_get_reduction_dtyperR  –  sH   € àð Øˆà„{Ô$ð ¨¬Ô(>ð ØŒ{ÐØ	ð ÝŒzÐàŒ;Ðr;   r”   c                óª   — t          | |d¬¦  «        }t          j        | j        |¦  «        }t	          | ||¦  «        }|                      ||¬¦  «        S )NT)rQ  r”   )rR  rT   rã  rœ   rä  r›   )r  rï  ræ  rb   rY  rÁ  s         r9   Úmeta_nansumrT  £  sS   € õ (¨¨uÈ$ÐOÑOÔO€LÝÔ ¤¨TÑ2Ô2€DÝ+¨E°4¸ÑAÔA€LØ�?Š?˜<¨|ˆ?Ñ<Ô<Ð<r;   c           	      ó¸   — t          j        | j        t          t	          |                      ¦   «         ¦  «        ¦  «        ¦  «        }|                      |¦  «        S rE   )rT   rð  rœ   rj   rð   r‰   r›   )r  rÁ  s     r9   Úmeta_medianrV  ¬  sG   € åÔ7ØŒ•U�5 §¢¡¤Ñ-Ô-Ñ.Ô.ñô €Lð �?Š?˜<Ñ(Ô(Ð(r;   c                 ó  — t          | ¦  «        dk    rt          j        d¦  «         t          j        | j        |f¦  «        }t          | ||¦  «        }|                      |¦  «        |                      |t          j        ¬¦  «        fS )Nr  zmedian CUDA with indices outputr”   )	r  rT   Úalert_not_deterministicrã  rœ   rä  r›   rZ   r˜   )r  r‰   ræ  rÁ  s       r9   Úmeta_median_mode_dimrY  ´  s~   € õ �5ÑÔ˜VÒ#Ð#ÝÔ%Ð&GÑHÔHÐHÝ
Ô
˜uœ{¨S¨FÑ
3Ô
3€CÝ+¨E°3¸Ñ@Ô@€Là�Š˜Ñ%Ô%Ø�Š˜­E¬JˆÑ7Ô7ðð r;   c                 ó   — | S rE   r5   rÔ   s    r9   Úmeta_logical_not_r[  Ê  rÎ  r;   c                 óØ  ‡‡‡‡— t          j        t          ‰¦  «        |                      ¦   «         k    d„ ¦  «         t	          ‰¦  «        D ]"\  ŠŠt          j        ‰dk    ˆˆfd„¦  «         Œ#t          ‰¦  «        |                      ¦   «         z
  }d|z  t          | j        ¦  «        z   Šˆˆfd„t          t          ‰¦  «        ¦  «        D ¦   «         }|                      |¦  «        S )Nc                  ó   — dS )NzZNumber of dimensions of repeat dims can not be smaller than number of dimensions of tensorr5   r5   r;   r9   ri   zmeta_repeat.<locals>.<lambda>Ó  s   € Ðl€ r;   r   c                  ó   •— d‰› d‰ › �S )Nz"Repeats cannot be negative, found r@  r5   )r  Úreps   €€r9   ri   zmeta_repeat.<locals>.<lambda>Ø  s   ø€ ÐK¸ÐKÐKÈÐKÐK€ r;   r  c                 ó2   •— g | ]}‰|         ‰|         z  ‘ŒS r5   r5   )rQ   r  Úpadded_sizer)  s     €€r9   rS   zmeta_repeat.<locals>.<listcomp>ß  s&   ø€ ÐLÐLÐL°1�;˜q”> G¨A¤JÑ.ÐLÐLÐLr;   )	rZ   rk   rî   r‰   rI  rj   rœ   rð   r›   )r�   r)  Únum_new_dimensionsÚtarget_sizer  ra  r_  s    `  @@@r9   Úmeta_repeatrd  Ï  só   øøøø€ å	„LÝˆG‰Œ˜Ÿš™
œ
Ò"ØlÐlñô ð õ ˜GÑ$Ô$ð 
ð 
‰ˆˆ3ÝŒØ�1ŠHØKÐKÐKÐKÐKñ	
ô 	
ð 	
ð 	
õ ˜W™œ¨¯ª©
¬
Ñ2ÐØÐ+Ñ+­e°D´JÑ.?Ô.?Ñ?€KØLÐLÐLÐLÐL½½cÀ'¹l¼lÑ8KÔ8KÐLÑLÔL€KØ�>Š>˜+Ñ&Ô&Ð&r;   c                 ó   — | S rE   r5   rÔ   s    r9   Ú
meta_zero_rf  ã  rÎ  r;   c                 ón   — t          |t          j        ¦  «        rt          | j        |j        ¦  «         | S rE   )rt   rZ   r   rm   rœ   ©r�   rÈ   s     r9   Úmeta_binop_inplaceri  è  s1   € õ �%�œÑ&Ô&ð 9Ý ¤
¨E¬KÑ8Ô8Ð8Ø€Kr;   c                 ó  ‡ ‡— t          ‰ |t          j        ¬¦  «        \  }Št          j        t          j        ‰‰ j        ¬¦  «        ˆˆ fd„¦  «         t          |t          j	        ¦  «        rt          ‰ j        |j        ¦  «         ‰ S )Nrï  )Ú	cast_fromÚcast_toc                  ó   •— d‰ › d‰j         › �S )Nzresult type z* can't be cast to the desired output type r”   )rR   r�   s   €€r9   ri   z"meta_div_inplace.<locals>.<lambda>   s(   ø€ ð(˜<ð (ð (Øœ:ð(ð (ð r;   )r   r   rð  rZ   rk   rT   Úcan_safe_cast_torb   rt   r   rm   rœ   )r�   rÈ   rW   rR   s   `  @r9   Úmeta_div_inplacero  ÷  s›   øø€ å(ØØÝ;ÔHðñ ô �O€A€|õ
 
„LÝÔ¨¸t¼zÐJÑJÔJð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �%�œÑ&Ô&ð 9Ý ¤
¨E¬KÑ8Ô8Ð8Ø€Kr;   c                 ó  — d„ }d„ }d„ } || ¦  «        r ||¦  «        rt          d¦  «        ‚ || ¦  «        r ||¦  «        st          d¦  «        ‚t          |t          j        ¦  «        rt	          | j        |j        ¦  «         | S )a*  
    Some checks for inplace ops.
    Checks for promotion rules for some dtypes.
    int.add/sub_(float) and bool.add/sub_(others) are rejected.
    Promoting in these in-place operations would require reallocating
    and copying over elements, hence not allowed.
    Checks for alpha param.
    c                 óˆ   — t          | t          ¦  «        rt          j        | j        ¦  «        S t          | t
          ¦  «        S rE   )rt   r    rT   r–  rb   r   ©rv   s    r9   Úis_integericz.meta_binop_inplace_alpha.<locals>.is_integeric  s7   € Ý�c�:Ñ&Ô&ð 	,ÝÔ)¨#¬)Ñ4Ô4Ð4å˜c¥7Ñ+Ô+Ð+r;   c                 óˆ   — t          | t          ¦  «        rt          j        | j        ¦  «        S t          | t
          ¦  «        S rE   )rt   r    rT   r  rb   r   rr  s    r9   Ú
is_floaticz,meta_binop_inplace_alpha.<locals>.is_floatic#  s7   € Ý�c�:Ñ&Ô&ð 	.ÝÔ'¨¬	Ñ2Ô2Ð2å˜c¥9Ñ-Ô-Ð-r;   c                 óˆ   — t          | t          ¦  «        rt          j        | j        ¦  «        S t          | t
          ¦  «        S rE   )rt   r    rT   Úis_boolean_dtyperb   r   rr  s    r9   Úis_booleanicz.meta_binop_inplace_alpha.<locals>.is_booleanic)  s7   € Ý�c�:Ñ&Ô&ð 	-ÝÔ)¨#¬)Ñ4Ô4Ð4å˜c¥8Ñ,Ô,Ð,r;   z]Promotion of int.add/sub_(float) in in-place ops are not possible due to element size change.z_Promotion of bool.add/sub_(others) in in-place ops are not possible due to element size change.)r�  rt   rZ   r   rm   rœ   )r�   rÈ   r¯  rs  ru  rx  s         r9   Úmeta_binop_inplace_alphary    sÒ   € ð$,ð ,ð ,ð.ð .ð .ð-ð -ð -ð €|�DÑÔð 
˜j˜j¨Ñ/Ô/ð 
ÝØkñ
ô 
ð 	
ð
 €|�DÑÔð 
 , ,¨uÑ"5Ô"5ð 
ÝØmñ
ô 
ð 	
õ �%�œÑ&Ô&ð 9Ý ¤
¨E¬KÑ8Ô8Ð8Ø€Kr;   c                 ó:   — t          | |t          j        ¬¦  «        S ©Nr,  ©rX   r   rU   ©r�   rÈ   r¯  s      r9   Úmeta_binop_alphar~  @  s&   € õ ØˆeÕ$CÔ$Kðñ ô ð r;   c                 ó8   — t          | t          j        ¬¦  «        S r{  r|  )r�   rp  s     r9   Ú
meta_roundr€  L  s"   € åØÕ<ÔDðñ ô ð r;   c                 ó\  ‡ ‡‡— t          j        t          j        ‰j        ¦  «        ˆ ˆfd„¦  «         t          ‰t           j        ¦  «        r2t          j        t          j        ‰j        ¦  «        ˆ ˆfd„¦  «         d S t          j        t          ‰t          ¦  «        ˆ ˆfd„¦  «         d S )Nc                  ó   •— ‰ › d‰j         › �S )Nz7: Expected input tensor to have an integral dtype. Got r”   )r8  r�   s   €€r9   ri   z#shift_dtype_check.<locals>.<lambda>V  s   ø€ �7Ð_Ð_ÐSWÔS]Ð_Ð_€ r;   c                  ó   •— ‰ › d‰j         › �S )Nz6: Expected shift value to have an integral dtype. Got r”   ©r8  rù  s   €€r9   ri   z#shift_dtype_check.<locals>.<lambda>[  s   ø€ �wÐaÐaÐVYÔV_ÐaÐa€ r;   c                  ó   •— ‰ › d‰› �S )Nz): Expected shift value to be an int. Got r5   r„  s   €€r9   ri   z#shift_dtype_check.<locals>.<lambda>`  s   ø€ �wÐNÐNÈÐNÐN€ r;   )rZ   rk   rT   r–  rb   rt   r   r   )r8  r�   rù  s   ```r9   Úshift_dtype_checkr†  S  sÇ   øøø€ Ý	„LÝÔ˜tœzÑ*Ô*Ø_Ð_Ð_Ð_Ð_ñô ð õ �#•u”|Ñ$Ô$ð 	
ÝŒÝÔ" 3¤9Ñ-Ô-ØaÐaÐaÐaÐañ	
ô 	
ð 	
ð 	
ð 	
õ
 	ŒÝ�s�GÑ$Ô$ØNÐNÐNÐNÐNñ	
ô 	
ð 	
ð 	
ð 	
r;   c                 ó\   — t          d| |¦  «         t          | |t          j        ¬¦  «        S )NÚrshiftr,  ©r†  rX   r   rU   rh  s     r9   Úmeta_rshiftsrŠ  d  ó6   € å�h  eÑ,Ô,Ð,ÝØˆeÕ$CÔ$Kðñ ô ð r;   c                 ó\   — t          d| |¦  «         t          | |t          j        ¬¦  «        S )NÚlshiftr,  r‰  rh  s     r9   Úmeta_lshiftsrŽ  l  r‹  r;   c                 ó*   — t          j        | ¦  «        S rE   r    rÔ   s    r9   Ú	meta_zeror�  t  ó   € åÔ˜DÑ!Ô!Ð!r;   c                 ó˜   ‡— t          ‰t          j        ¦  «        r.t          j        ‰                     ¦   «         dk    ˆfd„¦  «         | S )Nr   c                  ó4   •— d‰                       ¦   «         › d�S ©NzAfill_ only supports 0-dimension value tensor but got tensor with ú dimensions.rÀ   rø  s   €r9   ri   zmeta_fill_.<locals>.<lambda>~  ó    ø€ ÐoÐX[×X_ÒX_ÑXaÔXaÐoÐoÐo€ r;   )rt   rZ   r   rk   r‰   ©r�   rù  s    `r9   Ú
meta_fill_r˜  y  sM   ø€ å�#•u”|Ñ$Ô$ð 
ÝŒØ�GŠG‰IŒI˜ŠNØoÐoÐoÐoñ	
ô 	
ð 	
ð €Kr;   c                 ó¼   ‡— t          ‰t          j        ¦  «        r.t          j        ‰                     ¦   «         dk    ˆfd„¦  «         t          j        | ¦  «        S )Nr   c                  ó4   •— d‰                       ¦   «         › d�S r”  rÀ   rø  s   €r9   ri   zmeta_fill.<locals>.<lambda>ˆ  r–  r;   )rt   rZ   r   rk   r‰   r¡   r—  s    `r9   Ú	meta_fillr›  ƒ  sY   ø€ å�#•u”|Ñ$Ô$ð 
ÝŒØ�GŠG‰IŒI˜ŠNØoÐoÐoÐoñ	
ô 	
ð 	
õ Ô˜DÑ!Ô!Ð!r;   c                 ó   — | S rE   r5   rÔ   s    r9   Ú
meta_relu_r�  �  rÎ  r;   c                 ó:   — t          | |t          j        ¬¦  «        S r{  r|  r}  s      r9   Úmeta__add_relurŸ  ’  s&   € õ ØˆeÕ$CÔ$Kðñ ô ð r;   ç      À?çUUUUUUÕ?c                 ó*   — t          j        | ¦  «        S rE   r    ©r�   ÚnoiseÚlowerrB  r"  r£   s         r9   Úmeta_rrelu_with_noiser¦  š  s   € õ
 Ô˜DÑ!Ô!Ð!r;   c                 óR   — t          j        | ¦  «        t          j        |¦  «        fS rE   r    r£  s         r9   Ú meta_rrelu_with_noise_functionalr¨  ¢  s%   € õ Ô˜DÑ!Ô!¥5Ô#3°EÑ#:Ô#:Ð:Ð:r;   c                 ó   — | S rE   r5   )r�   r¥  rB  r"  r£   s        r9   Úmeta_rrelu_with_noise_rª  ©  s	   € ð €Kr;   c                 ó*   — t          j        | ¦  «        S rE   r    ©r�   r×   rÖ   Ú
accumulates       r9   Úmeta_index_putr®  °  r‘  r;   c                 ó:   — t          | j        |j        ¦  «         | S rE   ©rm   rœ   )r�   r¸   Úvalues      r9   Úmeta_masked_fill_r²  µ  s   € å˜DœJ¨¬
Ñ3Ô3Ð3Ø€Kr;   c                 ó    — |                       |                      ¦   «         ¦  «                             t          j        | ¦  «        ¬¦  «        }|S rÞ   )r›   rÇ   r‚  rT   r   )r�   r¸   rÚ  Úmasked_scales       r9   Úmeta__masked_scalerµ  »  sF   € à—>’> $§)¢)¡+¤+Ñ.Ô.×1Ò1ÝÔ1°$Ñ7Ô7ð 2ñ ô €Lð Ðr;   c                 ó¾   ‡ ‡— t          j        |j        t           j        t           j        fv d„ ¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰ S )Nc                  ó   — dS )NzMask must be bool or uint8r5   r5   r;   r9   ri   z&meta_masked_scatter_.<locals>.<lambda>Æ  s   € Ð9U€ r;   c                  ó(   •— d‰ j         › d‰j         › �S )NzEmasked_scatter: expected self and source to have same dtypes but got rÅ   r”   )r�   rÄ  s   €€r9   ri   z&meta_masked_scatter_.<locals>.<lambda>Ê  s(   ø€ ð :Øœ*ð:ð :Ø+1¬<ð:ð :€ r;   )rZ   rk   rb   rP  rQ  )r�   r¸   rÄ  s   ` `r9   Úmeta_masked_scatter_r¹  Ã  ss   øø€ å	„LØŒ
•u”z¥5¤;Ð/Ð/Ð1UÐ1Uñô ð õ 
„LØŒ
�f”lÒ"ð	:ð 	:ð 	:ð 	:ð 	:ñô ð ð
 €Kr;   c                 óŠ   — t          | |¦  «        \  } }t          j        | t          j        ¬¦  «        }t	          |||¦  «        S rÞ   )r'   rZ   r¡   rÓ   r¹  )r�   r¸   rÄ  r  s       r9   Úmeta_masked_scatterr»  Ð  sA   € õ " $¨Ñ-Ô-�J€Dˆ$ÝÔ˜dµ%Ô2IÐJÑJÔJ€FÝ ¨¨fÑ5Ô5Ð5r;   c                 ó,   — |                       |¦  «        S rE   rÝ  )r�   r¸   rŸ  s      r9   Úmeta_masked_scatter_backwardr½  Ø  s   € à�>Š>˜%Ñ Ô Ð r;   c                 ó   — | S rE   r5   r¬  s       r9   Úmeta_index_put_r¿  Ý  rÎ  r;   c           	      óD  ‡ ‡‡‡‡‡‡— ddl m}m} t          j        ‰                      ¦   «         dk    d„ ¦  «         t          j        ‰                     ¦   «         dk    d„ ¦  «         t          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         ‰                      ¦   «         }‰                     ¦   «         Š|d         Š|d         Š|d         }‰d         }	‰||	fŠt          j         | |‰d         ‰¦  «         |‰d         ‰¦  «        ¦  «        ˆˆˆfd	„¦  «         |r„‰ j        t          j        k    p‰ j        t          j	        k    o|t          j
        k    }
t          j        |‰ j        k    p|
d
„ ¦  «         ‰                     ‰¦  «                             |¦  «        }n‰                     ‰¦  «        }|sc‰�at          j        ‰                     ¦   «         dk    d„ ¦  «         t          j         |‰                     ¦   «         ‰¦  «        ˆˆfd„¦  «         |S )Nr   )r'  r°  r1   c                  ó   — dS r²  r5   r5   r;   r9   ri   z)common_meta_baddbmm_bmm.<locals>.<lambda>å  r³  r;   c                  ó   — dS rµ  r5   r5   r;   r9   ri   z)common_meta_baddbmm_bmm.<locals>.<lambda>æ  r³  r;   c                  ó(   •— d‰ j         › d‰j         › �S )Nzexpected scalar type z but found r”   rk  s   €€r9   ri   z)common_meta_baddbmm_bmm.<locals>.<lambda>é  s   ø€ ÐO¨¬ÐOÐOÀÄÐOÐO€ r;   r%  r4   c            	      ó:   •— d‰› d‰› d‰ d         › d‰ d         › d�	S rº  r5   r¼  s   €€€r9   ri   z)common_meta_baddbmm_bmm.<locals>.<lambda>÷  sU   ø€ ð RÐSUð Rð RØðRð RØ+7¸¬?ðRð RØ>JÈ1¼oðRð Rð R€ r;   c                  ó   — dS )Nzfout_dtype only supported for torch.float32 output with float16/bfloat16 inputs or same as input dtypesr5   r5   r;   r9   ri   z)common_meta_baddbmm_bmm.<locals>.<lambda>   s   € Ð|€ r;   c                  ó   — dS )Nzself must be a 3D tensorr5   r5   r;   r9   ri   z)common_meta_baddbmm_bmm.<locals>.<lambda>  s   € Ð6P€ r;   c                  ó8   •— d‰ › d‰                      ¦   «         › �S )Nz*Expected an input tensor shape with shape z but got shape: rÆ   )ró  Úself_baddbmms   €€r9   ri   z)common_meta_baddbmm_bmm.<locals>.<lambda>  s%   ø€ ÐsÀÐsÐsÐ^j×^oÒ^oÑ^qÔ^qÐsÐs€ r;   )r  r'  r°  rZ   rk   r‰   rb   rÇ   r¼  r½  r»  r›   r‚  )r·  r¸  Úis_bmmrÈ  r—  r'  r°  rÆ  Úres_rowsÚres_colsÚsupported_out_dtyper  r½  r¾  r¿  ró  s   `` `        @@@@r9   Úcommon_meta_baddbmm_bmmrÍ  â  sb  øøøøøøø€ ØEÐEÐEÐEÐEÐEÐEÐEå	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„L�—’‘” Ò"Ð$HÐ$HÑIÔIÐIÝ	„LØŒ˜œÒ$ØOÐOÐOÐOÐOñô ð ð
 —;’;‘=”=€LØ—;’;‘=”=€Là	�aŒ€BØ# A”ÐØ˜AŒ€HØ˜AŒ€HØ�x Ð*€Kå	„LØˆ���| A”¨Ñ+Ô+¨V¨V°LÀ´OÐEUÑ-VÔ-VÑWÔWð	Rð 	Rð 	Rð 	Rð 	Rð 	Rñô ð ð
 ð /àŒL�EœMÒ)ÐK¨V¬\½U¼^Ò-Kð)à�5œ=Ò(ð 	õ 	ŒØ˜œÒ%Ð<Ð)<Ø|Ð|ñ	
ô 	
ð 	
ð ×!Ò! +Ñ.Ô.×1Ò1°)Ñ<Ô<ˆˆð ×!Ò! +Ñ.Ô.ˆàð 
�lÐ.ÝŒ�\×%Ò%Ñ'Ô'¨1Ò,Ð.PÐ.PÑQÔQÐQÝŒØˆF�<×$Ò$Ñ&Ô&¨Ñ4Ô4ØsÐsÐsÐsÐsñ	
ô 	
ð 	
ð
 €Mr;   c                 ó$   — t          | |d¦  «        S )NT©rÍ  )r�   r¤  s     r9   Úmeta_bmmrÐ    s   € õ # 4¨¨tÑ4Ô4Ð4r;   c                 ó(   — t          | |d|¬¦  «        S )NT)r—  rÏ  )r�   r¤  r—  s      r9   Úmeta_bmm_dtyperÒ    s   € õ # 4¨¨t¸yÐIÑIÔIÐIr;   c                 ó   — | |z  S rE   r5   r=   s     r9   Údiv_rtnrÔ    s   € ð �‰6€Mr;   c                 ó�   — t          | |z   |z   ||dz
  z  z
  dz
  |r|dz
  ndz   |¦  «        dz   }|r|dz
  |z  | |z   k    r|dz  }|S r<  )rÔ  )Ú	inputSizeÚ
kernelSizer8  r9  rñ   rø  ry  Ú
outputSizes           r9   Úpooling_output_shape_pad_lrrÙ  #  sž   € õ 	ØØñàñð ˜* q™.Ñ)ñ*ð ñ	ð
 'Ð-ˆv˜‰zˆz¨Añ/ð ñ	
ô 	
ð ñ		ð ð ð Ø˜‰N˜fÑ$¨	°EÑ(9Ò9Ð9Ø˜!‰OˆJØÐr;   c           	      óò   ‡‡‡— t          j        |dk    d„ ¦  «         t          j        ‰dk    ˆfd„¦  «         t          j        ‰‰dz
  ‰z  dz   dz  k    ˆˆˆfd„¦  «         t          | ‰‰‰|‰|¦  «        S )Nr   c                  ó   — dS )Nzstride should not be zeror5   r5   r;   r9   ri   z&pooling_output_shape.<locals>.<lambda>?  s   € Ð&A€ r;   c                  ó   •— d‰ › �S )Nz'pad must be non-negative, but got pad: r5   ©Úpads   €r9   ri   z&pooling_output_shape.<locals>.<lambda>@  s   ø€ Ð#RÈSÐ#RÐ#R€ r;   r4   r%  c                  ó   •— d‰› d‰› d‰ › �S )NzApad should be at most half of effective kernel size, but got pad=z, kernel_size=z and dilation=r5   )rø  r×  rÞ  s   €€€r9   ri   z&pooling_output_shape.<locals>.<lambda>C  s;   ø€ ð@ÐPSð @ð @Ø%ð@ð @Ø5=ð@ð @ð r;   )rZ   rk   rÙ  )rÖ  r×  rÞ  rñ   rø  ry  s    `` ` r9   r®  r®  >  s¯   øøø€ Ý	„L�˜1’ÐAÐAÑBÔBÐBÝ	„L�˜’ÐRÐRÐRÐRÑSÔSÐSÝ	„LØ�˜a‘ 8Ñ+¨aÑ/°AÑ5Ò5ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 'Ø�:˜s C¨°¸9ñô ð r;   c                 óê  ‡ ‡‡‡‡‡‡‡‡‡	‡
‡‡‡‡— ddl m}m} ‰                      ¦   «         }‰	Št	          j        ‰dk    o‰dk    ˆˆfd„¦  «         t	          j        ‰dk    o‰dk    ˆˆfd„¦  «         t	          j        ‰dk    o‰dk    ˆˆfd„¦  «          |‰                      d¦  «        dk    ‰                      d¦  «        dk    ¦  «        }|t          j        k    r@t	          j        |dk    o" ||‰                      d	¦  «        dk    ¦  «        ˆ fd
„¦  «         npt	          j         ||d	k    o" |‰                      d¦  «        dk    |¦  «        |dk    o" ||‰                      d	¦  «        dk    ¦  «        ¦  «        ˆ fd„¦  «         t	          j         |‰dz  ‰k    ‰dz  ‰k    ¦  «        ˆˆˆˆfd„¦  «         t	          j         |‰dk    ‰dk    ¦  «        ˆ
ˆˆ	ˆˆˆfd„¦  «         d S )Nr   r&  c                  ó   •— d‰ › d‰› �S )Nz5kernel size should be greater than zero, but got kH: ú, kW: r5   )r²  r³  s   €€r9   ri   z$pool2d_shape_check.<locals>.<lambda>e  s   ø€ ÐVÈÐVÐVÐRTÐVÐV€ r;   c                  ó   •— d‰ › d‰› �S )Nz0stride should be greater than zero, but got dH: ú, dW: r5   )r´  rµ  s   €€r9   ri   z$pool2d_shape_check.<locals>.<lambda>i  s   ø€ ÐQÀ2ÐQÐQÈRÐQÐQ€ r;   c                  ó   •— d‰ › d‰› �S )Nz9dilation should be greater than zero, but got dilationH: ú, dilationW: r5   )Ú	dilationHÚ	dilationWs   €€r9   ri   z$pool2d_shape_check.<locals>.<lambda>m  s   ø€ ÐoÈIÐoÐoÐdmÐoÐo€ r;   r4   r%  re  r1   c                  ó2   •— d‰                       ¦   «         › �S )Nz€Expected 4D (batch mode) tensor expected for input with channels_last layout with optional 0 dim batch size for input, but got: rÆ   rN  s   €r9   ri   z$pool2d_shape_check.<locals>.<lambda>u  s"   ø€ ð RØCHÇ:Â:Á<Ä<ðRð R€ r;   c                  ó2   •— d‰                       ¦   «         › �S )NzYExpected 3D or 4D (batch mode) tensor with optional 0 dim batch size for input, but got: rÆ   rN  s   €r9   ri   z$pool2d_shape_check.<locals>.<lambda>~  s   ø€ Ð~Ðpu×pzÒpzÑp|Ôp|Ð~Ð~€ r;   c                  ó    •— d‰› d‰› d‰› d‰ › �S )NzKpad should be smaller than or equal to half of kernel size, but got padW = z	, padH = z, kW = z, kH = r5   )r²  r³  r¶  r·  s   €€€€r9   ri   z$pool2d_shape_check.<locals>.<lambda>ƒ  s>   ø€ ð >Øð>ð >Ø!%ð>ð >Ø.0ð>ð >Ø9;ð>ð >€ r;   c                  ó.   •— d‰› d‰ › d‰› d‰› d‰› d‰› d�S ©NzGiven input size: (r>   z). Calculated output size: (z). Output size is too smallr5   )r¸  r¹  rz  r¾  r{  r|  s   €€€€€€r9   ri   z$pool2d_shape_check.<locals>.<lambda>‰  sZ   ø€ ð # kð #ð #°Kð #ð #À*ð #ð #Ø$0ð#ð #Ø3?ð#ð #ØBMð#ð #ð #€ r;   )r  r'  r(  r‰   rZ   rk   rÇ   rq  )r  r²  r³  r´  rµ  r¶  r·  rç  rè  rz  r¸  r¹  r{  r|  rÐ   r'  r(  rÉ   Ú
valid_dimsr¾  s   ``````````````     @r9   r¯  r¯  M  s²  øøøøøøøøøøøøøøø€ ð" FÐEÐEÐEÐEÐEÐEÐEà�9Š9‰;Œ;€DØ€Lå	„LØ
ˆQŠÐ�2˜’6ØVÐVÐVÐVÐVñô ð õ 
„LØ
ˆQŠÐ�2˜’6ØQÐQÐQÐQÐQñô ð õ 
„LØ�AŠÐ'˜) aš-ØoÐoÐoÐoÐoñô ð ð
 �˜Ÿš A™œ¨!Ò+¨U¯ZªZ¸©]¬]¸aÒ-?Ñ@Ô@€Jà�Ô+Ò+Ð+ÝŒØ�AŠIÐA˜'˜' *¨e¯jªj¸©m¬m¸qÒ.@ÑAÔAðRð Rð Rð Rñ	
ô 	
ð 	
ð 	
õ 	ŒØˆFØ˜’	ÐE˜g˜g e§j¢j°¡m¤m°qÒ&8¸*ÑEÔEØ˜’	ÐE˜g˜g j°%·*²*¸Q±-´-À1Ò2DÑEÔEñô ð Ð~Ð~Ð~ñ	
ô 	
ð 	
õ 
„LØˆ��a‘˜4’  q¡¨D¢Ñ1Ô1ð	>ð 	>ð 	>ð 	>ð 	>ð 	>ð 	>ñô ð õ 
„LØˆ�˜qÒ  ,°!Ò"3Ñ4Ô4ð	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ð 	#ñô ð ð ð r;   rÝ  rÚ  r²  r³  rÛ  r´  rµ  ÚpTÚpHÚpWÚ	dilationTrç  rè  rÞ  rß  rà  rá  râ  rã  rØ  c           
      ón  ‡ ‡‡‡‡‡‡‡‡‡	‡
‡‡‡‡‡‡‡‡‡‡‡— ‰ j         }t          j        ‰dk    o‰dk    o‰dk    ˆˆˆfd„¦  «         t          j        ‰dk    o‰dk    o‰dk    ˆˆˆfd„¦  «         t          j        ‰dk    o‰dk    o‰dk    ˆˆˆfd„¦  «         t          j        |dv ˆˆ fd„¦  «         t          |¦  «        D ]@Š|dk    r‰dk    rŒt          j        ‰                      ‰¦  «        dk    ˆˆˆ fd„¦  «         ŒAdd	lm} |r4t          j         |‰‰k    ‰‰k    ‰‰k    ¦  «        ˆˆˆˆˆˆfd
„¦  «         t          j         |‰dz  ‰k    ‰dz  ‰
k    ‰dz  ‰	k    ¦  «        ˆˆˆˆ	ˆˆ
fd„¦  «         t          j         |‰dk    ‰dk    ‰dk    ¦  «        ˆˆˆˆˆˆˆfd„¦  «         d S )Nr   c                  ó   •— d‰› d‰ › d‰› �S )Nz5kernel size should be greater than zero, but got kT: z, kH: râ  r5   )r²  rÚ  r³  s   €€€r9   ri   z$pool3d_shape_check.<locals>.<lambda>«  s4   ø€ ð,Øð,ð ,Øð,ð ,Ø')ð,ð ,ð r;   c                  ó   •— d‰› d‰ › d‰› �S )Nz0stride should be greater than zero, but got dT: z, dH: rä  r5   )r´  rÛ  rµ  s   €€€r9   ri   z$pool3d_shape_check.<locals>.<lambda>²  s$   ø€ ØW¸rÐWÐWÈÐWÐWÐSUÐWÐWð r;   c                  ó   •— d‰› d‰ › d‰› �S )Nz9dilation should be greater than zero, but got dilationT: z, dilationH: ræ  r5   )rç  rò  rè  s   €€€r9   ri   z$pool3d_shape_check.<locals>.<lambda>¸  s;   ø€ ðVØ#ðVð VØ2;ðVð VØJSðVð Vð r;   rÓ  c                  ó   •— ‰ › d‰j         › �S )Nz/: Expected 4D or 5D tensor for input, but got: rK  )r8  r  s   €€r9   ri   z$pool3d_shape_check.<locals>.<lambda>À  s   ø€ �7ÐXÐXÈ5Ì;ÐXÐX€ r;   r‰  c                  óJ   •— ‰ › d‰j         › d‰                     ‰¦  «        › d�S )NzZ: Expected input's non-batch dimensions to have positive length, but input has a shape of z and non-batch dimension z has length zero!)rœ   rÇ   )r8  r  r  s   €€€r9   ri   z$pool3d_shape_check.<locals>.<lambda>É  sG   ø€ Øð Mð MØ-2¬[ðMð Mà,1¯JªJ°q©M¬MðMð Mð Mð r;   r1  c                  ó.   •— d‰› d‰ › d‰› d‰› d‰› d‰› d�S )Nzinput image (T: r’  rn  z ) smaller than kernel size (kT: ú kH: ú kW: r|   r5   )rß  rÞ  rà  r²  rÚ  r³  s   €€€€€€r9   ri   z$pool3d_shape_check.<locals>.<lambda>Õ  s]   ø€ ð< 5ð <ð <¨gð <ð <¸6ð <ð <Ø$&ð<ð <Ø-/ð<ð <Ø68ð<ð <ð <ð r;   r%  c                  ó,   •— d‰› d‰› d‰ › d‰› d‰› d‰› �S )NzHpad should be smaller than or equal to half of kernel size, but got kT: rû  rú  z padT: z padW: z padH: r5   )r²  rÚ  r³  rð  rï  rñ  s   €€€€€€r9   ri   z$pool3d_shape_check.<locals>.<lambda>Ý  sh   ø€ ðKØðKð KØðKð KØ%'ðKð KØ02ðKð KØ;=ðKð KØFHðKð Kð r;   r4   c                  ó:   •— d‰› d‰› d‰ › d‰› d‰› d‰› d‰› d‰› d�S rí  r5   )rß  rÞ  rà  rÝ  râ  rá  rã  s   €€€€€€€r9   ri   z$pool3d_shape_check.<locals>.<lambda>å  sv   ø€ ð( 'ð (ð (¨Eð (ð (°Gð (ð (¸fð (ð (Ø(/ð(ð (Ø27ð(ð (Ø:Að(ð (ØDJð(ð (ð (ð r;   )rÉ   rZ   rk   rð   rÇ   r  r'  )r  rÝ  rÚ  r²  r³  rÛ  r´  rµ  rï  rð  rñ  rò  rç  rè  rÞ  rß  rà  rá  râ  rã  r8  rØ  rÉ   r'  r  s   `````````````````````   @r9   rÙ  rÙ  �  sû  øøøøøøøøøøøøøøøøøøøøøø€ ð0 Œ:€Då	„LØ
ˆQŠÐ$�2˜’6Ð$˜b 1šfð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ
ˆQŠÐ$�2˜’6Ð$˜b 1šfð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�AŠÐ9˜) aš-Ð9¨I¸ªMð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�ˆØXÐXÐXÐXÐXñô ð õ
 �4‰[Œ[ð 
ð 
ˆØ�1Š9ˆ9˜˜aš˜àÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð >Ð=Ð=Ð=Ð=Ð=àð 
ÝŒØˆG�E˜R’K ¨B¢°¸"²Ñ=Ô=ðð ð ð ð ð ð ð ð ñ	
ô 	
ð 	
õ 
„LØˆ��Q‘˜"’˜b 1™f¨šl¨B°©F°bªLÑ9Ô9ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØˆ�˜’
˜F ašK¨°AªÑ6Ô6ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð ð r;   c                 óª  — | j         }t          | |||||||	|
||||||||||||¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         d S )Nre  r1   r%  r4   ©rÉ   rÙ  r’  )r  rZ  r×   rÝ  rÚ  r²  r³  rÛ  r´  rµ  rï  rð  rñ  rò  rç  rè  rÞ  rß  rà  rá  râ  rã  r8  rÉ   s                           r9   Úmax_pool3d_backward_shape_checkr   í  s$  € ð2 Œ:€DåØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØñ+ô ð õ0 �;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ6Ô6Ð6Ý�;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ7Ô7Ð7å�7˜D $¨¡(¨GÑ4Ô4Ð4Ý�7˜D $¨¡(¨EÑ2Ô2Ð2Ý�7˜D $¨¡(¨GÑ4Ô4Ð4Ý�7˜D $¨¡(¨FÑ3Ô3Ð3Ð3Ð3r;   c                 ó  — | j         }t          | ||||||||	|
|ddd|||||||d¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         t          |||dz
  |¦  «         d S )Nr4   Tre  r1   r%  rÿ  )r  rZ  rÝ  rÚ  r²  r³  rÛ  r´  rµ  rï  rð  rñ  rÞ  rß  rà  rá  râ  rã  r8  rÉ   s                       r9   rë  rë  +  sÇ   € ð* Œ:€DåØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø	Ø	Ø	ØØØØØØØØñ-ô ð õ2 �;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ6Ô6Ð6Ý�;  d¨Q¡h°Ñ8Ô8Ð8Ý�;  d¨Q¡h°Ñ7Ô7Ð7Ð7Ð7r;   c                 óP  — d„ } |d|¦  «        \  }}t          j        t          |¦  «        dv d„ ¦  «         t          |¦  «        dk    r||}
}	n |d|¦  «        \  }	}
 |d|¦  «        \  }} |d|¦  «        \  }}|                      d	¦  «        }|                      d
¦  «        }|                      d¦  «        }t	          j        | ¦  «        }|t           j        k    r-t          j        |                      ¦   «         dk    d„ ¦  «         nQ|t           j        k    r+t          j        |                      ¦   «         dv d„ ¦  «         nt          j        dd„ ¦  «         t          ||||	||¦  «        }t          ||||
||¦  «        }t          | |||	|
||||||||||¦  «         |||fS )Nc                 ó¤   ‡ — t          j        t          |¦  «        dv ˆ fd„¦  «         |d         }t          |¦  «        dk    r|n|d         }||fS )Nr—  c                  ó   •— d‰ › d�S )Nzmax_pool2d: r™  r5   rš  s   €r9   ri   zEmax_pool2d_checks_and_compute_shape.<locals>.unpack.<locals>.<lambda>m  r›  r;   r   r4   rœ  r�  s   `   r9   r   z3max_pool2d_checks_and_compute_shape.<locals>.unpackj  r¡  r;   r  r¢  c                  ó   — dS )NzOmax_pool2d: stride must either be omitted, a single int, or a tuple of two intsr5   r5   r;   r9   ri   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>w  r¥  r;   r   rñ   r%  rø  r«  r  r¿   re  c                  ó   — dS )NzMnon-empty 4D (batch mode) tensor expected for input with channels_last layoutr5   r5   r;   r9   ri   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>ˆ  s   € Ðc€ r;   r
  c                  ó   — dS )Nz9non-empty 3D or 4D (batch mode) tensor expected for inputr5   r5   r;   r9   ri   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>�  ó   € ÐO€ r;   Fc                  ó   — dS )NzAUnsupported memory format. Supports only ChannelsLast, Contiguousr5   r5   r;   r9   ri   z5max_pool2d_checks_and_compute_shape.<locals>.<lambda>’  s   € ÐW€ r;   )rZ   rk   rî   rÇ   rT   r   rq  r‰   rÓ   r®  r¯  )r  r  rñ   r%  rø  ry  r   r²  r³  r´  rµ  r¶  r·  rç  rè  rz  r¸  r¹  rÐ   r{  r|  s                        r9   rw  rw  a  s  € ðð ð ð ˆV�M ;Ñ/Ô/�F€Bˆå	„LÝˆF‰Œ�yÐ ØaÐañô ð õ ˆ6�{„{�aÒÐØ�RˆBˆˆà�˜ &Ñ)Ô)‰ˆˆBà�˜	 7Ñ+Ô+�J€Dˆ$Ø!˜6 *¨hÑ7Ô7Ñ€IˆyØ—*’*˜R‘.”.€KØ—*’*˜R‘.”.€KØ—’˜B‘”€JåÔ/°Ñ6Ô6€MØ�Ô+Ò+Ð+ÝŒØ�IŠI‰KŒK˜1ÒØcÐcñ	
ô 	
ð 	
ð 	
ð 
�%Ô1Ò	1Ð	1ÝŒØ�IŠI‰KŒK˜6Ð!ØOÐOñ	
ô 	
ð 	
ð 	
õ
 	ŒØØWÐWñ	
ô 	
ð 	
õ
 (¨°R¸¸rÀ9ÈiÑXÔX€LÝ& z°2°t¸RÀÈIÑVÔV€KåØØ
Ø
Ø
Ø
ØØØØØØØØØØñô ð ð$ ˜ kÐ1Ð1r;   c                 óP  ‡ ‡‡‡‡‡— t          ‰|||||¦  «        \  }ŠŠt          j        ‰j        ‰ j        k    ˆ ˆfd„¦  «         |Š‰j        Šˆˆˆˆfd„}	 |	‰ ¦  «          |	|¦  «         t          j        ‰¦  «        }
t          j        ‰j        ‰j        ‰j	        |
¬¦  «        S )Nc                  ó(   •— d‰j         › d‰ j         › �S )NzExpected dtype z  for `gradOutput` but got dtype r”   r  s   €€r9   ri   z7meta_max_pool2d_with_indices_backward.<locals>.<lambda>Ã  s   ø€ Ða $¤*ÐaÐaÈkÔN_ÐaÐa€ r;   c                 ó†   •— t          | ‰‰dz
  ‰¦  «         t          | ‰‰dz
  ‰¦  «         t          | ‰‰dz
  ‰¦  «         d S )Nr1   r%  r4   )r’  )r)  r¾  rÉ   r{  r|  s    €€€€r9   Ú_check_dim_sizez>meta_max_pool2d_with_indices_backward.<locals>._check_dim_sizeÉ  sQ   ø€ Ý�q˜$  q¡¨,Ñ7Ô7Ð7Ý�q˜$  q¡¨,Ñ7Ô7Ð7Ý�q˜$  q¡¨+Ñ6Ô6Ð6Ð6Ð6r;   r×  )
rw  rZ   rk   rb   rÉ   rT   r   r�   rœ   r†   )rZ  r�   r  rñ   r%  rø  ry  r×   rz  r  rÐ   r¾  rÉ   r{  r|  s   ``         @@@@r9   Ú%meta_max_pool2d_with_indices_backwardr  ­  s÷   øøøøøø€ õ  	,Øˆk˜6 7¨H°iñ	ô 	ñ	ØØØõ
 
„LØŒ
�kÔ'Ò'ØaÐaÐaÐaÐañô ð ð
 €LØŒ9€Dð7ð 7ð 7ð 7ð 7ð 7ð 7ð 7ð
 €O�KÑ Ô Ð Ø€O�GÑÔÐåÔ/°Ñ5Ô5€MÝŒ;ØŒ
ØŒjØŒ{Ø#ð	ñ ô ð r;   c                 ó’  — t          | |||||¦  «        \  }}}|                      ¦   «         dk    r|                      d¦  «        nd}	t          j        | ¦  «        }
|                      ¦   «         dk    r|||g}n|	|||g}t          j        || j        | j        |
¬¦  «        t          j        |t
          j	        | j        |
¬¦  «        fS ru  )
rw  r‰   rÇ   rT   r   rZ   r�   rb   r†   rÚ   rx  s               r9   Úmeta_max_pool2d_with_indicesr  Ú  sæ   € õ 	,Øˆ{˜F G¨X°yñ	ô 	ñ	ØØØð
  %Ÿyšy™{œ{¨aÒ/Ð/ˆU�ZŠZ˜‰^Œ^ˆ^°Q€FÝÔ/°Ñ6Ô6€MØ‡y‚y�{„{�aÒÐØ˜\¨;Ð7ˆˆà˜ \°;Ð?ˆåŒØØ”+Ø”<Ø'ð		
ñ 	
ô 	
õ 	ŒØÝ”+Ø”<Ø'ð		
ñ 	
ô 	
ðð r;   c                 ó¦  ‡ ‡‡‡
‡‡— t          j        ‰ j        dv ˆ fd„¦  «         ‰ j        }t          |dz
  |¦  «        D ]2Š
t          j        ‰                      ‰
¦  «        dk    ˆ
ˆ fd„¦  «         Œ3t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          |¦  «        dk    d„ ¦  «         ‰                      d	¦  «        }‰                      d
¦  «        Š‰                      d¦  «        Š|dk    r‰                      d¦  «        }nd}t          j        ‰ j        ‰j        k    d„ ¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰                     d¦  «        }‰                     d¦  «        }‰                     d¦  «        Š
t          j        ||k    d„ ¦  «         t          j        ||k    d„ ¦  «         t          j        ‰
dk    ˆ
fd„¦  «         t          j        |d         ‰d         z   dz
  ‰k    ˆˆfd„¦  «         t          j        |d         ‰d         z   dz
  ‰k    ˆˆfd„¦  «         ‰                      ¦   «         dk    r|||d         |d         g}	n||d         |d         g}	t          j        |	‰ j        ‰ j	        ¬¦  «        t          j        |	t           j
        ‰ j	        ¬¦  «        fS )Nr
  c                  ó   •— d‰ j         › �S )Nz:fractional_max_pool2d: Expected 3D or 4D tensor, but got: r_  rÔ   s   €r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>  s   ø€ ÐXÈTÌYÐXÐX€ r;   r1   r   c                  ó:   •— d‰                      ¦   «         › d‰ › d�S )Nz_fractional_max_pool2d: Expected input to have non-zero  size for non-batch dimensions, but got rú  z emptyrÆ   )rå   r�   s   €€r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>  s7   ø€ ð ^Ø7;·y²y±{´{ð^ð ^ØTUð^ð ^ð ^€ r;   r%  c                  ó   — dS )NzNfractional_max_pool2d: kernel_size musteither be a single int or tuple of Intsr5   r5   r;   r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>  ó	   € ð 2€ r;   c                  ó   — dS )NzOfractional_max_pool2d: output_size must either be a single int or tuple of Intsr5   r5   r;   r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>  r  r;   r«  r  r¿   re  r4   c                  ó   — dS )Nz6Expect _random_samples to have the same dtype as inputr5   r5   r;   r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>&  s   € ÐH€ r;   c                  ó   •— d‰ j         › �S )Nz1Expect _random samples to have 3 dimensions got, r_  )Úrandom_sampless   €r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>*  s   ø€ ÐYÀNÔDWÐYÐY€ r;   c                  ó   — dS )Nz=Expect _random_samples.size(0) no less then input batch size.r5   r5   r;   r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>2  rÃ   r;   c                  ó   — dS )Nz<Expect _random_samples.size(1) equals to input channel size.r5   r5   r;   r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>6  ó   € ÐN€ r;   c                  ó   •— d‰ › d�S )Nz/Expect _random_samples.size(2) equals to 2 got ú.r5   )rå   s   €r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>8  s   ø€ Ð!WÐSTÐ!WÐ!WÐ!W€ r;   c                  ó    •— d‰d         › d‰ › �S )Nz%fractional_max_pool2d: kernel height r   z' is too large relative to input height r5   )Úinput_heightr  s   €€r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda><  s   ø€ Ð}¸ÀA¼Ð}Ð}Ðo{Ð}Ð}€ r;   c                  ó    •— d‰d         › d‰ › �S )Nz$fractional_max_pool2d: kernel width r4   z& is too large relative to input width r5   )Úinput_widthr  s   €€r9   ri   z,meta_fractional_max_pool2d.<locals>.<lambda>@  s   ø€ Ðz°{À1´~ÐzÐzÐmxÐzÐz€ r;   r3  )rZ   rk   rÉ   rð   rÇ   rî   rb   r‰   r�   r†   rÚ   )r�   r  ró  r  rÉ   Úinput_channelsÚinput_batchr4  ÚcrÇ   rå   r   r"  s   `` `      @@@r9   Úmeta_fractional_max_pool2dr&    sQ  øøøøøø€ å	„LØŒ	�VÐØXÐXÐXÐXñô ð ð Œ9€Då�4˜!‘8˜TÑ"Ô"ð 
ð 
ˆÝŒØ�IŠI�a‰LŒL˜1Òð^ð ^ð ^ð ^ð ^ñ	
ô 	
ð 	
ð 	
õ 
„LÝˆKÑÔ˜AÒð	2ð 	2ñô ð õ
 
„LÝˆKÑÔ˜AÒð	2ð 	2ñô ð ð —Y’Y˜r‘]”]€NØ—9’9˜R‘=”=€LØ—)’)˜B‘-”-€KØˆq‚y€yØ—i’i ‘l”lˆˆàˆå	„LØŒ
�nÔ*Ò*ØHÐHñô ð õ 
„LØÔ˜qÒ ØYÐYÐYÐYñô ð ð
 	×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AØ×Ò˜AÑÔ€AÝ	„LØ	ˆ[ÒØOÐOñô ð õ 
„LØ	ˆ^ÒØNÐNñô ð õ 
„L��a’ÐWÐWÐWÐWÑXÔXÐXå	„LØ�AŒ˜ QœÑ'¨!Ñ+¨|Ò;Ø}Ð}Ð}Ð}Ð}ñô ð õ 
„LØ�AŒ˜ QœÑ'¨!Ñ+¨{Ò:ØzÐzÐzÐzÐzñô ð ð
 ‡x‚x�z„z�Q‚€Ø˜^¨[¸¬^¸[È¼^ÐLˆˆà ¨A¤°¸A´Ð?ˆõ 	ŒØØ”*Ø”;ð	
ñ 	
ô 	
õ
 	ŒØÝ”+Ø”;ð	
ñ 	
ô 	
ðð r;   c                 óÀ  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }	|s|nt          |¦  «        dk    r|	n|d         }
|s|nt          |¦  «        dk    r|	n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        | j        d	v d
„ ¦  «         | j        dk    r|                      d¦  «        nd}|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          ||||	||¦  «        }t          ||||
||¦  «        }t          ||||||¦  «        }t          | |||||	|
|||||||||||||d¦  «         | j        dk    o!t          j        | ¦  «        t           j	        k    }| j        dk    r||||f}n|||||f}|  
                    |¦  «        }|  
                    |t           j        ¬¦  «        }|r@|                     t           j	        ¬¦  «        }|                     t           j	        ¬¦  «        }||fS )NrÉ  c                  ó   — dS ©NzMmax_pool3d: kernel_size must either be a single int, or a tuple of three intsr5   r5   r;   r9   ri   z.meta_max_pool3d_with_indices.<locals>.<lambda>b  ó   € Ð_€ r;   r   r4   r%  c                  ó   — dS ©NzQmax_pool3d: stride must either be omitted, a single int, or a tuple of three intsr5   r5   r;   r9   ri   z.meta_max_pool3d_with_indices.<locals>.<lambda>j  ó   € Ðc€ r;   c                  ó   — dS ©NzImax_pool3d: padding must either be a single int, or a tuple of three intsr5   r5   r;   r9   ri   z.meta_max_pool3d_with_indices.<locals>.<lambda>r  ó   € Ð[€ r;   c                  ó   — dS ©NzJmax_pool3d: dilation must be either a single int, or a tuple of three intsr5   r5   r;   r9   ri   z.meta_max_pool3d_with_indices.<locals>.<lambda>z  rÕ  r;   rÓ  c                  ó   — dS rÕ  r5   r5   r;   r9   ri   z.meta_max_pool3d_with_indices.<locals>.<lambda>‚  rÖ  r;   r‰  éûÿÿÿrv  r«  r  r¿   zmax_pool3d_with_indices()re  r”   rÏ   )rZ   rk   rî   rÉ   rÇ   r®  rÙ  rT   r   r@  r›   rÚ   r‚  )r  r  rñ   r%  rø  ry  rÚ  r²  r³  rÛ  r´  rµ  rï  rð  rñ  rò  rç  rè  r@  rÝ  rÞ  rß  rà  rá  râ  rã  rq  rÌ   rø   r×   s                                 r9   Úmeta_max_pool3d_with_indicesr5  V  s±  € õ 
„LÝˆKÑÔ˜FÐ"Ø_Ð_ñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+ØcÐcñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØ[Ð[ñô ð ð 
�Œ€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€Bå	„LÝˆH‰Œ˜ÐØ\Ð\ñô ð ð ˜”€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€Iå	„LØŒ
�fÐØKÐKñô ð ð
  %œz¨Qš˜ˆU�ZŠZ˜‰^Œ^ˆ^°A€FØ�jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Få  ¨¨B°°I¸yÑIÔI€EÝ" 7¨B°°B¸	À9ÑMÔM€GÝ! &¨"¨b°"°iÀÑKÔK€FåØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ#ñ+ô ð ð4 	Œ
�aŠÐX�EÔ7¸Ñ>Ô>Å%ÔBXÒXð ð „z�Q‚€Ø˜e W¨fÐ5ˆ	ˆ	à˜W e¨W°fÐ=ˆ	à
�/Š/˜)Ñ
$Ô
$€CØ�oŠo˜i­u¬{ˆoÑ;Ô;€Gàð CØ�fŠf¥5Ô#9ˆfÑ:Ô:ˆØ—*’*­5Ô+A�*ÑBÔBˆà�ˆ<Ðr;   c                 óØ  — t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }	t          |¦  «        dk    r|n|d         }
t          j        | pt          |¦  «        dv d„ ¦  «         |s|n|d         }|s|	nt          |¦  «        dk    r|n|d         }|s|
nt          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        t          |¦  «        dv d„ ¦  «         |d         }t          |¦  «        dk    r|n|d         }t          |¦  «        dk    r|n|d         }t          j        |j        d	v d
„ ¦  «         |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                     d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          || ||||	|
|||||||||||||||d¦  «         |j        dk    o!t          j        |¦  «        t           j        k    }| 	                    |j
        ¦  «        }|r |                     t           j        ¬¦  «        }|S )NrÉ  c                  ó   — dS r)  r5   r5   r;   r9   ri   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>È  r*  r;   r   r4   r%  c                  ó   — dS r,  r5   r5   r;   r9   ri   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>Ð  r-  r;   c                  ó   — dS r/  r5   r5   r;   r9   ri   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>Ø  r0  r;   c                  ó   — dS r2  r5   r5   r;   r9   ri   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>à  rÕ  r;   rÓ  c                  ó   — dS rÕ  r5   r5   r;   r9   ri   z7meta_max_pool3d_with_indices_backward.<locals>.<lambda>è  rÖ  r;   rv  r«  r  r¿   z"max_pool3d_with_indices_backward()r‰  rÏ   )rZ   rk   rî   rÉ   rÇ   r   rT   r   r@  r›   rœ   r‚  )rZ  r  r  rñ   r%  rø  ry  r×   rÚ  r²  r³  rÛ  r´  rµ  rï  rð  rñ  rò  rç  rè  rÝ  rÞ  rß  rà  rá  râ  rã  rq  r]  s                                r9   Ú%meta_max_pool3d_with_indices_backwardr<  º  s4  € õ 
„LÝˆKÑÔ˜FÐ"Ø_Ð_ñô ð ð 
�QŒ€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€BÝ�;ÑÔ 1Ò$Ð$ˆˆ¨+°a¬.€Bå	„LØˆ
Ð+•c˜&‘k”k VÐ+ØcÐcñô ð ð Ð	(ˆˆ˜v aœy€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€BØÐ	Fˆˆ¥c¨&¡k¤k°QÒ&6Ð&6  ¸FÀ1¼I€Bå	„LÝˆG‰Œ˜ÐØ[Ð[ñô ð ð 
�Œ€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€BÝ�7‰|Œ|˜qÒ Ð ˆˆ g¨a¤j€Bå	„LÝˆH‰Œ˜ÐØ\Ð\ñô ð ð ˜”€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€IÝ  ™]œ]¨aÒ/Ð/�	�	°X¸a´[€Iå	„LØŒ
�fÐØKÐKñô ð ð
 �jŠj˜‰nŒn€GØ�JŠJ�r‰NŒN€EØ�jŠj˜‰nŒn€GØ�ZŠZ˜‰^Œ^€Fà×Ò˜RÑ Ô €EØ×Ò˜rÑ"Ô"€GØ×Ò˜bÑ!Ô!€Få#ØØØØØ
Ø
Ø
Ø
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØØ,ñ/ô ð ð8 	Œ
�aŠÐX�EÔ7¸Ñ>Ô>Å%ÔBXÒXð ð —’ ¤Ñ-Ô-€Jàð IØ—]’]µÔ1G�]ÑHÔHˆ
àÐr;   Úgridc                 ó"  ‡ ‡‡— t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰ j        t           j        k    o‰j        t           j        k    ˆˆ fd„¦  «         t          j        ‰ j        d         ‰j        d         k    ˆˆ fd„¦  «         t          j        ‰j        d         ‰ j        dz
  k    ˆˆ fd„¦  «         t          d‰ j        ¦  «        D ]*Št          j        ‰ j        ‰         dk    ˆˆ fd„¦  «         Œ+d S )	Nc                  ó(   •— d‰j         › d‰ j         › �S )NzNgrid_sampler(): expected input and grid to be on same device, but input is on z and grid is on r^  ©r=  r  s   €€r9   ri   z+check_grid_sampler_common.<locals>.<lambda>  s0   ø€ ðAØ”\ðAð AØ37´;ðAð Að r;   c                  ó(   •— d‰j         › d‰ j         › �S )NzTgrid_sampler(): expected input and grid to have torch.strided layout, but input has z and grid has )r…   r@  s   €€r9   ri   z+check_grid_sampler_common.<locals>.<lambda>%  s0   ø€ ðCØœðCð CØ59´[ðCð Cð r;   r   c                  ó(   •— d‰j         › d‰ j         › �S )NzZgrid_sampler(): expected grid and input to have same batch size, but got input with sizes ú and grid with sizes rK  r@  s   €€r9   ri   z+check_grid_sampler_common.<locals>.<lambda>,  s0   ø€ ðOØ %¤ðOð OØBFÄ*ðOð Oð r;   r¿   r%  c                  ó.   •— d‰j         dz
  › d‰ j        › �S )Nz+grid_sampler(): expected grid to have size r%  z, in last dimension, but got grid with sizes )rÉ   rœ   r@  s   €€r9   ri   z+check_grid_sampler_common.<locals>.<lambda>3  s.   ø€ ð?¸%¼*Àq¹.ð ?ð ?Ø26´*ð?ð ?ð r;   c                  ó    •— d‰j         › d‰ › d�S )NzYgrid_sampler(): expected input to have non-empty spatial dimensions, but input has sizes rú  rû  rK  r  s   €€r9   ri   z+check_grid_sampler_common.<locals>.<lambda><  r  r;   )rZ   rk   r†   r…   r  rœ   rÉ   rð   )r  r=  r  s   ``@r9   Úcheck_grid_sampler_commonrF    st  øøø€ Ý	„LØŒ˜œÒ#ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�œÒ%ÐF¨$¬+½¼Ò*Fð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ�AŒ˜$œ* Qœ-Ò'ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�2Œ˜%œ* q™.Ò(ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �1�e”jÑ!Ô!ð 
ð 
ˆÝŒØŒK˜ŒN˜QÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
ð
ð 
r;   c                   ó   — e Zd ZdZdZdZdS )ÚGridSamplerInterpolationr   r4   r%  N)r~   Ú
__module__Ú__qualname__ÚBILINEARÚNEARESTÚBICUBICr5   r;   r9   rH  rH  C  s   € € € € € Ø€HØ€GØ€G€G€Gr;   rH  Úinterpolation_modec                 óØ   ‡ ‡— t          j        ‰ j        dk    o‰ j        ‰j        k    ˆˆ fd„¦  «         t          j        ‰ j        dk    o|t          j        j        k     d„ ¦  «         d S )Nr‰  c                  ó(   •— d‰j         › d‰ j         › �S )Nzdgrid_sampler(): expected 5D input and grid with same number of dimensions, but got input with sizes rC  rK  r@  s   €€r9   ri   z'check_grid_sampler_3d.<locals>.<lambda>L  s+   ø€ ð1Ø49´Kð1ð 1à$(¤Jð1ð 1ð r;   c                  ó   — dS )Nz<grid_sampler(): bicubic interpolation only supports 4D inputr5   r5   r;   r9   ri   z'check_grid_sampler_3d.<locals>.<lambda>W  r  r;   )rZ   rk   rÉ   rH  rM  r±  )r  r=  rN  s   `` r9   Úcheck_grid_sampler_3drR  I  s”   øø€ Ý	„LØŒ
�aŠÐ3˜EœJ¨$¬)Ò3ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LàŒJ˜!ŠOð MØ"Õ&>Ô&FÔ&LÒLð	
ð 	OÐNñô ð ð ð r;   c                 ó¤   — |d         }|r!t          j        |t           j        ¬¦  «        }nd }t          j        |t           j        ¬¦  «        }	||	fS ©Nr   rÏ   )rZ   r"  rÓ   r¡   ©
rZ  r  r=  rN  Úpadding_modeÚalign_cornersrb  Úinput_requires_gradr]  Ú	grad_grids
             r9   Úgrid_sampler_2d_backward_metarZ  [  sX   € ð & aœ.ÐØð ÝÔ% e½5Ô;RÐSÑSÔSˆ
ˆ
àˆ
ÝÔ  µUÔ5LÐMÑMÔM€IØ˜	Ð"Ð"r;   c                 óú   — t          | |¦  «         t          | ||¦  «         | j        d         }| j        d         }|j        d         }|j        d         }|j        d         }	|                      |||||	f¦  «        S )Nr   r4   r%  r1   )rF  rR  rœ   r›   )
r  r=  rN  rV  rW  rê  ÚCÚout_DÚout_HÚout_Ws
             r9   Úgrid_sampler_3dr`  n  s{   € õ ˜e TÑ*Ô*Ð*Ý˜% Ð'9Ñ:Ô:Ð:ØŒ�AŒ€AØŒ�AŒ€AØŒJ�qŒM€EØŒJ�qŒM€EØŒJ�qŒM€EØ�?Š?˜A˜q %¨°Ð6Ñ7Ô7Ð7r;   rY  c                 óæ   — t          ||¦  «         t          |||¦  «         |d         }|r!t          j        |t          j        ¬¦  «        }nd }t          j        |t          j        ¬¦  «        }	||	fS rT  )rF  rR  rZ   r"  rg  r¡   rU  s
             r9   Úgrid_sampler_3d_backwardrb  �  s„   € õ ˜e TÑ*Ô*Ð*Ý˜% Ð'9Ñ:Ô:Ð:Ø% aœ.ÐØð ÝÔ%Ø¥Ô!?ð
ñ 
ô 
ˆ
ˆ
ð ˆ
ÝÔ  µUÔ5SÐTÑTÔT€IØ�yÐ Ð r;   c                 óŒ   — |                      d¦  «        }|st          j        |¦  «        }||d<   t          j        | g|¢R i |¤ŽS )Nrb   )ra   rT   Ú	get_dtyperZ   r�   )rÇ   r0  rV   rp  rb   s        r9   Úfullre  ™  sS   € à�JŠJ�wÑÔ€EØð ,Ý” 
Ñ+Ô+ˆØ€Fˆ7�OåŒ;�tÐ-˜dÐ-Ð-Ð- fÐ-Ð-Ð-r;   c                 ón  — |t           j        k    rêt          j        |d u d„ ¦  «         t          j        d|€| j        n|||€| j        n||¬¦  «        }| j        rN|                     |                      ¦   «         |  	                    ¦   «         |  
                    ¦   «         ¦  «         n;|                     |                      ¦   «         |                      ¦   «         d¦  «         |                     d¦  «         |S t          j                             | |||||¬¦  «        }|                     d¦  «         |S )Nc                  ó   — dS )Nz9memory format option is only supported by strided tensorsr5   r5   r;   r9   ri   zzeros_like.<locals>.<lambda>°  r  r;   r   r6  Tr  )rZ   Ú
sparse_coork   r�   rb   r†   Ú	is_sparseÚsparse_resize_and_clear_rÇ   Ú
sparse_dimÚ	dense_dimr‰   Ú_coalesced_r.   r¡   r*  Úfill_)r�   rb   r…   r†   r‡   rÐ   rñ  s          r9   r"  r"  ¤  sA  € ð •Ô!Ò!Ð!ÝŒØ˜TÐ!ØOÐOñ	
ô 	
ð 	
õ
 ŒkØØ % �$”*�*°5ØØ"( .�4”;�;°fØ!ð
ñ 
ô 
ˆð Œ>ð 	EØ×(Ò(Ø—	’	‘”˜TŸ_š_Ñ.Ô.°·²Ñ0@Ô0@ñô ð ð ð ×(Ò(¨¯ª©¬°d·h²h±j´jÀ!ÑDÔDÐDà�Š˜ÑÔÐØˆ
Ý
Œ/×
!Ò
!ØØØØØØ#ð "ñ ô €Cð ‡I‚Iˆa�L„L€LØ€Jr;   r„   c                ó¤   — |€t          j        ¦   «         }|€t          j        ¦   «         }|€t           j        }t          j        | ||||¬¦  «        S r8  ©rZ   r‹   Úget_default_devicer  r�   ©rÇ   rb   r…   r†   r‡   rˆ   s         r9   Ú	meta_onesrs  Ñ  óZ   € ð €}ÝÔ'Ñ)Ô)ˆØ€~ÝÔ)Ñ+Ô+ˆØ€~Ý”ˆÝŒ;Ø�E &°ÀJðñ ô ð r;   c                ó¤   — |€t          j        ¦   «         }|€t          j        ¦   «         }|€t           j        }t          j        | ||||¬¦  «        S r8  rp  rr  s         r9   Ú
meta_zerosrv  ç  rt  r;   c                 ó    — t          | ¦  «        S rE   ©Ú_scatter_meta_output)r�   r¦   r‰   r–   s       r9   Úmeta_select_scatterrz  ý  ó   € å Ñ%Ô%Ð%r;   c                 ó    — t          | ¦  «        S rE   rx  )r�   r¦   r‰   r€   r   Ústeps         r9   Úmeta_slice_scatterr~    r{  r;   c                 ó    — t          | ¦  «        S rE   rx  )r�   r¦   ÚoffsetrÃ  rÄ  s        r9   Úmeta_diagonal_scatterr�    r{  r;   c                 ó¤   — ddl m}  || ¦  «        s,t          j        | ¦  «        dk    r|                      ¦   «         S t          j        | ¦  «        S )Nr   r}  r4   )r  r~  rZ   r€  r½   rT   Úclone_preserve_strides)r�   r~  s     r9   ry  ry    s^   € ØKÐKÐKÐKÐKÐKð
 !Ð  Ñ&Ô&ð ­5Ô+LÈTÑ+RÔ+RÐVWÒ+WÐ+WØ�zŠz‰|Œ|ÐÝÔ'¨Ñ-Ô-Ð-r;   Údim_post_exprÚwrap_scalarc           	      ó°   — |dk    r|st          d|› d�¦  «        ‚d}| }|dz
  }| |k     s| |k    rt          d|› d|› d| › d�¦  «        ‚| dk     r| |z  } | S )	Nr   zdim_post_expr=z <= 0 but wrap_scalar is Falser4   z4Dimension out of range (expected to be in range of [r{   z], but got r|   )r�   Ú
IndexError)r‰   r„  r…  r  r	  s        r9   rÛ   rÛ     s©   € Ø˜ÒÐØð 	Ý ØN ÐNÐNÐNñô ð ð ˆØˆ.€CØ
˜!Ñ
€CØ
ˆS‚y€y�C˜#’I�IÝØ`À3Ð`Ð`È#Ð`Ð`ÐZ]Ð`Ð`Ð`ñ
ô 
ð 	
ð ˆQ‚w€wØˆ}ÑˆØ€Jr;   c                 óP   — |                       ¦   «         dk    rdn| j        |         S r6  r�  )r)  r‰   s     r9   Úensure_nonempty_sizer‰  *  s"   € Ø—’‘”˜1’�ˆ1ˆ1 !¤'¨#¤,Ð.r;   c                 óp  ‡ ‡‡‡— t          ‰                      ¦   «         d¦  «        }t          ‰                     ¦   «         d¦  «        }t          j        ||k    d„ ¦  «         t	          |¦  «        D ]CŠ‰‰k    r;t          j        t          ‰‰¦  «        t          ‰ ‰¦  «        k    ˆˆˆˆ fd„¦  «         ŒDd S )Nr4   c                  ó   — dS )NzDIndex tensor must have the same number of dimensions as input tensorr5   r5   r;   r9   ri   z$gather_shape_check.<locals>.<lambda>4  s   € ÐV€ r;   c                  ó:   •— d‰› d‰j         › �d‰j         › d‰ › �z   S )Nz!Size does not match at dimension z expected index ú to be no larger than self ú apart from dimension rK  )r‰   r  r–   r�   s   €€€€r9   ri   z$gather_shape_check.<locals>.<lambda>:  s6   ø€ Ð\¸AÐ\Ð\ÈuÌ{Ð\Ð\ØW°´
ÐWÐWÐRUÐWÐWñX€ r;   )r	  r‰   rZ   rk   rð   r‰  )r�   r‰   r–   Ú	self_dimsÚ
index_dimsr  s   ```  @r9   Úgather_shape_checkr‘  /  sÞ   øøøø€ Ý�D—H’H‘J”J Ñ"Ô"€IÝ�U—Y’Y‘[”[ !Ñ$Ô$€JÝ	„LØ�ZÒØVÐVñô ð õ �9ÑÔð ð ˆØ�Š8ˆ8ÝŒLÝ$ U¨AÑ.Ô.Õ2FÀtÈQÑ2OÔ2OÒOðXð Xð Xð Xð Xð Xð Xñô ð øðð r;   c                 óp  ‡— ddl m} t          ||                      ¦   «         ¦  «        } |‰                     ¦   «         dk    ¦  «        }|sQt          j        ‰j        t
          j        k    p‰j        t
          j	        k    ˆfd„¦  «         t          | |‰¦  «         |                      ‰j        ¦  «        S )Nr   r1  c                  ó   •— d‰ j         › �S )Nz8gather(): Expected dtype int32/int64 for index, but got r”   r•   s   €r9   ri   zmeta_gather.<locals>.<lambda>H  s   ø€ Ð\ÈuÌ{Ð\Ð\€ r;   )r  r2  rÛ   r‰   rš   rZ   rk   rb   r˜   r  r‘  r›   rœ   )r�   r‰   r–   Úsparse_gradr2  Úwrapped_dimÚis_index_emptys     `    r9   Úmeta_gatherr—  ?  s²   ø€ àDÐDÐDÐDÐDÐDå   d§h¢h¡j¤jÑ1Ô1€KØ#�^ E§K¢K¡M¤M°QÒ$6Ñ7Ô7€NØð 5ÝŒØŒK�5œ:Ò%ÐA¨¬½¼	Ò)AØ\Ð\Ð\Ð\ñ	
ô 	
ð 	
õ 	˜4 ¨eÑ4Ô4Ð4Ø�>Š>˜%œ+Ñ&Ô&Ð&r;   c                 óÖ   — |r@| dk    rdS | dk    rdS | dk    rdS | dk    rdS | d	k    rd
S t          j        dd„ ¦  «         d S | dk    rdS | dk    rdS t          j        dd„ ¦  «         d S )Nr]  Ú
REDUCE_ADDr!  ÚREDUCE_MULTIPLYrq  ÚREDUCE_MEANÚamaxÚREDUCE_MAXIMUMÚaminÚREDUCE_MINIMUMFc                  ó   — dS )Nz=reduce argument must be either sum, prod, mean, amax or amin.r5   r5   r;   r9   ri   z#get_operator_enum.<locals>.<lambda>]  s   € ÐS€ r;   ÚaddÚmultiplyc                  ó   — dS )Nz/reduce argument must be either add or multiply.r5   r5   r;   r9   ri   z#get_operator_enum.<locals>.<lambda>e  s   € Ð$U€ r;   r»  )Úreduce_Úuse_new_optionss     r9   Úget_operator_enumr¦  O  s½   € Øð Ø�eÒÐØ�<Ø˜ÒÐØ$Ð$Ø˜ÒÐØ �=Ø˜ÒÐØ#Ð#Ø˜ÒÐØ#Ð#ÝŒØØSÐSñ	
ô 	
ð 	
ð 	ˆà�eÒÐØ�<Ø˜
Ò"Ð"Ø$Ð$ÝŒ�UÐUÐUÑVÔVÐVØˆr;   c                 ó*  ‡ — ddl m}  ||                     ¦   «         dk    ¦  «        r@t          j        |j        t          j        k    p|j        t          j        k    ˆ fd„¦  «         |�(t          j        |j        |j        k    ˆ fd„¦  «         d S d S )Nr   )r¯  c                  ó   •— ‰ › d�S )Nz((): Expected dtype int32/int64 for indexr5   ©Úmethod_names   €r9   ri   z,scatter_gather_dtype_check.<locals>.<lambda>p  s   ø€ �{ÐLÐLÐL€ r;   c                  ó   •— ‰ › d�S )Nz0(): Expected self.dtype to be equal to src.dtyper5   r©  s   €r9   ri   z,scatter_gather_dtype_check.<locals>.<lambda>v  s   ø€ �{ÐTÐTÐT€ r;   )r  r¯  rš   rZ   rk   rb   r˜   r  )rª  r�   r–   Úsrc_optr¯  s   `    r9   Úscatter_gather_dtype_checkr­  j  s´   ø€ ØCÐCÐCÐCÐCÐCà€}�U—[’[‘]”] aÒ'Ñ(Ô(ð 
ÝŒØŒK�5œ:Ò%ÐA¨¬½¼	Ò)AØLÐLÐLÐLñ	
ô 	
ð 	
ð
 ÐÝŒØŒJ˜'œ-Ò'ØTÐTÐTÐTñ	
ô 	
ð 	
ð 	
ð 	
ð Ðr;   c                 ó"   — t          | d¦  «        S r3   )r	  rÀ   s    r9   Úensure_nonempty_dimr¯  z  s   € Ýˆs�A‰;Œ;Ðr;   c                 óV  ‡ ‡‡‡— ddl m}  |‰                     ¦   «         dk    ¦  «        rd S t          j        t          ‰                      ¦   «         ¦  «        t          ‰                     ¦   «         ¦  «        k    d„ ¦  «         t          ‰                      ¦   «         ¦  «        }t          |¦  «        D ]G}|‰k    rŒ	t          ‰|¦  «        }t          ‰ |¦  «        }t          j        ||k    ˆˆˆ fd„¦  «         ŒH‰�§t          j        t          ‰                      ¦   «         ¦  «        t          ‰                     ¦   «         ¦  «        k    d„ ¦  «         t          |¦  «        D ]A}t          ‰|¦  «        }t          ‰|¦  «        }	t          j        ||	k    ˆˆfd„¦  «         Œ@d S d S )Nr   r1  c                  ó   — dS )NzCIndex tensor must have the same number of dimensions as self tensorr5   r5   r;   r9   ri   z%scatter_shape_check.<locals>.<lambda>†  r  r;   c                  ó4   •— d‰j         › d‰j         › �d‰ › �z   S )NúExpected index r�  rŽ  rK  )r‰   r–   r�   s   €€€r9   ri   z%scatter_shape_check.<locals>.<lambda>”  s,   ø€ ÐZ e¤kÐZÐZÈdÌjÐZÐZØ, sÐ,Ð,ñ-€ r;   c                  ó   — dS )NzBIndex tensor must have the same number of dimensions as src tensorr5   r5   r;   r9   ri   z%scatter_shape_check.<locals>.<lambda>œ  s   € ÐX€ r;   c                  ó(   •— d‰ j         › d‰j         › �S )Nr³  z to be no larger than src rK  )r–   r¬  s   €€r9   ri   z%scatter_shape_check.<locals>.<lambda>£  s   ø€ Ð`¨%¬+Ð`Ð`ÐQXÔQ^Ð`Ð`€ r;   )	r  r2  rš   rZ   rk   r¯  r‰   rð   r‰  )
r�   r‰   r–   r¬  r2  r�  rå   Úindex_d_sizeÚself_d_sizeÚ
src_d_sizes
   ````      r9   Úscatter_shape_checkr¹    sÜ  øøøø€ ØDÐDÐDÐDÐDÐDà€~�e—k’k‘m”m qÒ(Ñ)Ô)ð ØˆÝ	„LÝ˜DŸHšH™JœJÑ'Ô'Õ+>¸u¿yºy¹{¼{Ñ+KÔ+KÒKØUÐUñô ð õ
 $ D§H¢H¡J¤JÑ/Ô/€Iõ �9ÑÔð 	
ð 	
ˆØ�Š8ˆ8ØÝ+¨E°1Ñ5Ô5ˆÝ*¨4°Ñ3Ô3ˆÝŒØ˜KÒ'ð-ð -ð -ð -ð -ð -ñ	
ô 	
ð 	
ð 	
ð ÐÝŒÝ §¢¡
¤
Ñ+Ô+Õ/BÀ7Ç;Â;Á=Ä=Ñ/QÔ/QÒQØXÐXñ	
ô 	
ð 	
õ �yÑ!Ô!ð 	ð 	ˆAÝ/°°qÑ9Ô9ˆLÝ-¨g°qÑ9Ô9ˆJÝŒLØ 
Ò*Ø`Ð`Ð`Ð`Ð`ñô ð ð ð Ðð
	ð 	r;   c                 óº   — t          ||                      ¦   «         ¦  «        }t          d| ||¦  «         t          | |||¦  «         |�t	          ||¦  «         d S d S )NÚscatter)rÛ   r‰   r­  r¹  r¦  )r�   r‰   r–   r¦   r¤  r¥  r•  s          r9   Úscatter_meta_implr¼  ¨  se   € Ý   d§h¢h¡j¤jÑ1Ô1€KÝ˜y¨$°°sÑ;Ô;Ð;Ý˜˜k¨5°#Ñ6Ô6Ð6ØÐå˜' ?Ñ3Ô3Ð3Ð3Ð3ð Ðr;   c                 ó\   — t          | |||d¦  «         |                      | j        ¦  «        S ©Nr¡  ©r¼  r›   rœ   ©r�   r‰   r–   r¦   s       r9   Úmeta_scatter_addrÁ  ±  s,   € å�d˜C ¨¨UÑ3Ô3Ð3Ø�>Š>˜$œ*Ñ%Ô%Ð%r;   c                 ó,   — t          | |||d¦  «         | S r¾  ©r¼  rÀ  s       r9   Úmeta_scatter_add_rÄ  ·  s   € å�d˜C ¨¨UÑ3Ô3Ð3Ø€Kr;   c                 ó˜   — t          |t          j        ¦  «        r|nd }t          | ||||¦  «         |                      | j        ¦  «        S rE   )rt   rZ   r   r¼  r›   rœ   ©r�   r‰   r–   Úsrc_or_valuerÅ  r¦   s         r9   Úmeta_scatterrÈ  ½  sH   € õ % \µ5´<Ñ@Ô@Ð
Jˆ,ˆ,Àd€CÝ�d˜C ¨¨VÑ4Ô4Ð4Ø�>Š>˜$œ*Ñ%Ô%Ð%r;   c                 óh   — t          |t          j        ¦  «        r|nd }t          | ||||¦  «         | S rE   )rt   rZ   r   r¼  rÆ  s         r9   Úmeta_scatter_rÊ  Ì  s9   € õ % \µ5´<Ñ@Ô@Ð
Jˆ,ˆ,Àd€CÝ�d˜C ¨¨VÑ4Ô4Ð4Ø€Kr;   Úqueryrê   r±  Ú	dropout_pÚ	is_causalÚreturn_debug_maskc           	      óè  — |                       d¦  «        }|                       d¦  «        }|                       d¦  «        }	|                       d¦  «        }
|                      d¦  «        }t          j        | ¦  «        }t          j        |||	ft          j        | j        ¬¦  «        }|rX|
dk    rdnd}t          j        |	|z  ¦  «        }|dk    rd}n|dk    rd}t          j        |||	|f| j        | j        ¬¦  «        }n!t          j        d| j        | j        ¬¦  «        }t          j	        j
        rt          j                             ¦   «         st          | ¦  «        d	k    rCt          j        d
t          j        d¬¦  «        }t          j        d
t          j        d¬¦  «        }nBt          j        dt          j        d¬¦  «        }t          j        d
t          j        d¬¦  «        }||d d |	||||f	S )Nr   r4   r%  r1   r3  é@   é€   é   r(  r5   rƒ   )rÇ   rZ   r¡   r�   r^   r†   r   Úceilrb   r  r  r  r  r  r˜   rP  )rË  rê   r±  rÌ  rÍ  rÎ  rÚ  r  r¨   Úmax_seqlen_batch_qÚhead_dimÚmax_seqlen_batch_kÚ	attentionÚ	logsumexpÚblocksize_cÚmax_seqlen_kÚ
debug_maskÚseedr€  s                      r9   Ú(meta__scaled_dot_product_flash_attentionrÝ  Ú  sì  € ð —’˜A‘”€JØ—
’
˜1‘”€IØŸš A™œÐØ�zŠz˜!‰}Œ}€HØŸš !™œÐåÔ  Ñ'Ô'€IÝ”Ø	�YÐ 2Ð3ÝŒkØŒ|ðñ ô €Ið ð LØ%¨š]˜]�c�c°ˆÝ”yÐ!3°kÑ!AÑBÔBˆØ Ò$Ð$ØˆLˆLØ 3Ò&Ð&ØˆLÝ”[Ø˜Ð$6¸ÐEØ”+Ø”<ð
ñ 
ô 
ˆ
ˆ
õ ”[ ¨%¬+¸e¼lÐKÑKÔKˆ
õ „}Ôð D�UœZ×4Ò4Ñ6Ô6ð D½+ÀeÑ:LÔ:LÐPUÒ:UÐ:UåŒ{˜2¥U¤Z¸Ð?Ñ?Ô?ˆÝ”˜R¥u¤z¸&ÐAÑAÔAˆˆåŒ{˜A¥e¤l¸6ÐBÑBÔBˆÝ”˜R¥u¤|¸FÐCÑCÔCˆð 	ØØØØØØØØð
ð 
r;   Ú	q_descaleÚ	k_descaleÚ	v_descalec
           	      ó”   — | j         t          j        k    r|                      t          j        ¦  «        } t          | ||||||	¦  «        S rE   )rb   rZ   r¾  r‚  r½  rÝ  )
rË  rê   r±  rÞ  rß  rà  rÌ  rÍ  rÎ  rÚ  s
             r9   Ú2meta__scaled_dot_product_flash_attention_quantizedrâ    sN   € ð „{•eÔ)Ò)Ð)Ø—’�œÑ(Ô(ˆå3ØØØØØØØñô ð r;   Ú	res_shape.c                 óB  ‡ — t          ‰ j        ¦  «        |k    rt          j        ‰ ¦  «        }npt	          g d¢ˆ fd„d¬¦  «        }dgt          |¦  «        z  }d}t          |¦  «        D ]}|||<   |||         z  }Œt          j        ||‰ j        ‰ j	        ¬¦  «        }|S )N)r   r4   r%  r1   c                 ó8   •— ‰                      ¦   «         |          S rE   r7  )ÚidxrË  s    €r9   ri   z,alloc_with_matching_layout.<locals>.<lambda>=  s   ø€ ¨%¯,ª,©.¬.¸Ô*=€ r;   Tré   r   r4   r3  )
rj   rœ   rZ   r¡   r  rî   Úreversedr�  rb   r†   )rË  rã  rñ  Ú	dim_orderr  rñ   ræ  s   `      r9   Úalloc_with_matching_layoutré  5  sÉ   ø€ õ ˆUŒ[ÑÔ˜YÒ&Ð&ÝÔ˜uÑ%Ô%ˆˆåØˆLˆLÐ=Ð=Ð=Ð=Àtð
ñ 
ô 
ˆ	ð �#�˜I™œÑ&ˆØˆÝ˜IÑ&Ô&ð 	%ð 	%ˆCØ!ˆG�C‰LØ�i ”nÑ$ˆFˆFÝÔ!Ø�w e¤k¸%¼,ð
ñ 
ô 
ˆð €Jr;   Ú	attn_biasÚcompute_log_sumexpc	           	      óî  — |                       d¦  «        }	|                       d¦  «        }
|                       d¦  «        }|                      d¦  «        }|                      d¦  «        }|	|
||f}t          | |¦  «        }t          j        |	|
|dft          j        | j        ¬¦  «        }t          j        dt          j        d¬¦  «        }t          j        dt          j        d¬¦  «        }||d d ||||d f	S )Nr   r4   r%  r¿   r3  r5   rƒ   )rÇ   ré  rZ   r�   r^   r†   r˜   )rË  rê   r±  rê  rë  rÌ  rÍ  rÎ  rÚ  r3  rž  ÚS_QÚS_KVÚD_Vrã  rñ  Ú
logsum_exprÜ  r€  s                      r9   Ú(meta__scaled_dot_product_cudnn_attentionrñ  K  sð   € ð 	�
Š
�1‰Œ€AØ�
Š
�1‰Œ€AØ
�*Š*�Q‰-Œ-€CØ�8Š8�A‰;Œ;€DØ
�*Š*�R‰.Œ.€Cà�A�s˜CÐ €IÝ
$ U¨IÑ
6Ô
6€Cå”Ø	
ˆAˆs�AˆÝŒkØŒ|ðñ ô €Jõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fð 	ØØØØØØØØð
ð 
r;   c           	      ó¢  — d\  }}	}
|                       ¦   «         dk    r|                      ¦   «         \  }}	}
}nB|                       ¦   «         dk    r|                      ¦   «         \  }	}
}d}nt          d¦  «        ‚|                     d¦  «        }|                     d¦  «        }t          | j        ¦  «        }||d<   t          | t          |¦  «        ¦  «        }t          j        ||	|
ft          j	        | j
        ¬¦  «        }t          j        d	t          j        d
¬¦  «        }t          j        d	t          j        d
¬¦  «        }||d d |
|||d f	S )N)r   r   r   re  r1   r4   zquery must be 3D or 4Dr  r¿   r3  r5   rƒ   )r‰   rÇ   r�  rï   rœ   ré  rj   rZ   r�   r^   r†   r˜   )rË  rê   r±  rê  rÌ  rÍ  rÎ  rÚ  r3  ÚH_Qrí  rW   rî  rï  rÌ   rñ  rð  rÜ  r€  s                      r9   Ú5meta__scaled_dot_product_fused_attention_overrideablerô  w  sF  € ð �K€A€sˆCØ‡y‚y�{„{�aÒÐØŸš™œ‰ˆˆ3��Q�QØ	�Š‰Œ˜Ò	Ð	Ø—j’j‘l”l‰ˆˆS�!ØˆˆåÐ3Ñ4Ô4Ð4Ø�8Š8�B‰<Œ<€DØ
�*Š*�R‰.Œ.€Cõ �U”[Ñ!Ô!€IØ€Iˆb�MÝ
$ U­E°)Ñ,<Ô,<Ñ
=Ô
=€Cå”Ø	
ˆC�ˆÝŒkØŒ|ðñ ô €Jõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fð 	ØØØØØØØØð
ð 
r;   )rÚ  rü  Úgrad_input_maskrØ  Ú	cum_seq_qÚ	cum_seq_kÚmax_qÚmax_kÚphilox_seedÚphilox_offsetc                ó¶   — t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|�t          j        |¦  «        nd }||||fS rE   r    )rü  rË  rê   r±  rê  rõ  rø   rØ  rö  r÷  rø  rù  rÌ  rÍ  rú  rû  rÚ  Úgrad_qÚgrad_kr~  Úgrad_attn_biass                        r9   Ú>meta__scaled_dot_product_fused_attention_overrideable_backwardr   «  s]   € õ* Ô˜eÑ$Ô$€FÝÔ˜cÑ"Ô"€FÝÔ˜eÑ$Ô$€FØ4=Ð4I•UÔ% iÑ0Ô0Ð0Èt€NØ�6˜6 >Ð1Ð1r;   c                 ó„   — t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|||fS rE   r    )rü  rË  rê   r±  rø   rØ  rö  r÷  rø  rù  rÌ  rÍ  rú  rû  rÚ  rý  rþ  r~  s                     r9   Ú'meta__scaled_dot_product_flash_backwardr  Ç  sA   € õ, Ô˜eÑ$Ô$€FÝÔ˜cÑ"Ô"€FÝÔ˜eÑ$Ô$€FØ�6˜6Ð!Ð!r;   Ú	attn_maskc                 óD  — |                       d¦  «        }|                       d¦  «        }|                       d¦  «        }	t          j        | ¦  «        }
t          j        ||	|ft	          j        | j        ¦  «        | j        ¬¦  «                             dd¦  «        }|
|fS )Nr   r4   r%  r3  )	rÇ   rZ   r¡   r�   rT   Úget_computation_dtyperb   r†   rX  )rË  rê   r±  rÌ  rÍ  r  rÚ  r  r¨   rÔ  r×  rØ  s               r9   Ú0meta__scaled_dot_product_flash_attention_for_cpur  ã  s¡   € ð —’˜A‘”€JØ—
’
˜1‘”€IØŸš A™œÐåÔ  Ñ'Ô'€IÝ”àØØð	
õ
 Ô)¨%¬+Ñ6Ô6ØŒ|ðñ ô ÷ ‚i��1�o„oð ð 	Øðð r;   c
                 óD  — t          j        |                     ¦   «         d|j        |j        ¬¦  «        }
t          j        |                     ¦   «         d|j        |j        ¬¦  «        }t          j        |                     ¦   «         d|j        |j        ¬¦  «        }|
||fS )N©r   r%  r4   r1   r3  )rZ   Úempty_permutedrÇ   rb   r†   )rü  rË  rê   r±  rø   rØ  rÌ  rÍ  r  rÚ  rý  rþ  r~  s                r9   Ú9meta__scaled_dot_product_flash_attention_for_cpu_backwardr
    s¤   € õ& Ô!Ø�
Š
‰ŒØØŒkØŒ|ð	ñ ô €Fõ Ô!Ø�Š‰
Œ
ØØŒiØŒzð	ñ ô €Fõ Ô!Ø�
Š
‰ŒØØŒkØŒ|ð	ñ ô €Fð �6˜6Ð!Ð!r;   Údropout_maskÚ
enable_gqac	                 óÈ   ‡ ‡‡‡‡‡‡‡— d„ }	 |	‰ ¦  «        \  ŠŠ |	|¦  «        \  }
} |	|¦  «        \  }}‰j         \  ŠŠŠ}|j         \  }}ŠŠˆˆˆˆˆˆ ˆˆfd„} |¦   «         S )Nc                 ó°  — |                       ¦   «         dk    r|                      d¦  «        dfS |                       ¦   «         dk    rŒd}t          |                       ¦   «         dz
  ¦  «        D ]}|| j        |         z  }Œ|                      ||                      d¦  «        |                      d¦  «        |                      d¦  «        ¦  «        dfS | d	fS )
Nr1   r   Tre  r4   r«  r  r¿   F)r‰   ré  rð   rœ   ÚviewrÇ   )r>   r  r  s      r9   Ú	ensure_4dzBmeta__scaled_dot_product_attention_math_for_mps.<locals>.ensure_4d:  s·   € Ø�5Š5‰7Œ7�aŠ<ˆ<Ø—;’;˜q‘>”> 4Ð'Ð'Ø�UŠU‰WŒW�qŠ[ˆ[ØˆJÝ˜1Ÿ5š5™7œ7 Q™;Ñ'Ô'ð )ð )�Ø˜aœg aœjÑ(�
�
Ø—6’6˜* a§f¢f¨R¡j¤j°!·&²&¸±*´*¸a¿fºfÀR¹j¼jÑIÔIÈ4ÐOÐOà�e�8ˆOr;   c                  ó2  •— ‰                      ‰‰‰‰f¦  «        } ‰                      ‰‰‰‰f¦  «        }‰
rß‰	                     ¦   «         dk    r+|                      d¦  «        } |                     d¦  «        }nœt          ‰	j        d d…         ¦  «        t          | j        dd…         ¦  «        z   }t          ‰	j        d d…         ¦  «        t          |j        dd…         ¦  «        z   }|                      |¦  «        } |                     |¦  «        }| |fS )Nr1   r   r«  r4   re  )r›   r‰   Úsqueezerï   rœ   r  )rø   ÚattnrÌ   Ú
attn_shaper  Úmax_seq_lengthÚnum_headÚq_Úq_sizerË  Ú
unsqueezedÚvalue_head_sizes       €€€€€€€€r9   Úsdpa_general_mpszImeta__scaled_dot_product_attention_math_for_mps.<locals>.sdpa_general_mpsL  sü   ø€ Ø�lŠl˜J¨°&¸/ÐJÑKÔKˆØ�|Š|˜Z¨°6¸>ÐJÑKÔKˆØð 	-Ø�yŠy‰{Œ{˜aÒÐØ—k’k !‘n”n�Ø—|’| A‘”��å  ¤¨S¨b¨SÔ!1Ñ2Ô2µT¸#¼)ÀAÀaÀC¼.Ñ5IÔ5IÑI�	Ý! %¤+¨c¨r¨cÔ"2Ñ3Ô3µd¸4¼:ÀaÈÀc¼?Ñ6KÔ6KÑK�
Ø—h’h˜yÑ)Ô)�Ø—y’y Ñ,Ô,�Ø�DˆyÐr;   rK  )rË  rê   r±  r  rÌ  rÍ  r  rÚ  r  r  Úk_rW   Úv_r  r  r  r  r  r  r  r  s   `             @@@@@@@r9   Ú/meta__scaled_dot_product_attention_math_for_mpsr  .  s¿   øøøøøøøø€ ð	ð 	ð 	ð �Y˜uÑ%Ô%�N€Bˆ
ØˆI�c‰NŒN�E€BˆØˆI�eÑÔ�E€Bˆà&(¤hÑ#€J�˜& !Ø,.¬HÑ)€A€qˆ.˜/ðð ð ð ð ð ð ð ð ð ð ð ð  ÐÑÔÐr;   c                 ó.  — |                       dd¦  «        } |                      dd¦  «        }|                      dd¦  «        }|                      d¦  «        }|                      d¦  «        }	|                      d¦  «        }
|                     d¦  «        }t          j        ||	|
|| j        | j        ¬¦  «        }t          j        j        r&t          j         	                    ¦   «         r	 |r|	nd}n|rt          j        |	dz  ¦  «        dz  nd}t          j        ||
|ft          j        | j        ¬¦  «        }|                      dd¦  «        }t          j        dt          j        d	¬¦  «        }t          j        dt          j        d	¬¦  «        }||||fS )
Nr4   r%  r   r  r¿   r3  rž  r5   rƒ   )rX  rÇ   rZ   r�   rb   r†   r  r  r  r  r   rÓ  r^   r˜   )rË  rê   r±  rê  rë  rÌ  rÍ  rÚ  r3  rý  r¨   ÚKvrñ  Úlogsumexp_dimrð  rÜ  r€  s                    r9   Ú,meta__scaled_dot_product_efficient_attentionr"  _  sv  € ð �OŠO˜A˜qÑ!Ô!€EØ
�-Š-˜˜1Ñ
Ô
€CØ�OŠO˜A˜qÑ!Ô!€Eà�
Š
�1‰Œ€AØ�
Š
�1‰Œ€AØ—
’
˜2‘”€IØ	�Š�B‰Œ€Bå
Œ+�a˜˜I r°´ÀUÄ\Ð
RÑ
RÔ
R€Cå„}Ôð L�UœZ×4Ò4Ñ6Ô6ð Lð	ð 0Ð6˜˜°Qˆˆà2DÐK�œ	 ! b¡&Ñ)Ô)¨BÑ.Ð.È!ˆå”Ø	
ˆI�}Ð%ÝŒkØŒ|ðñ ô €Jð �-Š-˜˜1Ñ
Ô
€Cõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fà�
˜D &Ð(Ð(r;   c                 ó  — |                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }|                      d¦  «        }t          j        ||||fd|j        |j        ¬¦  «        }t          j        ||||fd|j        |j        ¬¦  «        }t          j        ||||fd|j        |j        ¬¦  «        }d }|�†|
d         r~|                      d¦  «        }|dz  dk    r|n
|dz   |dz  z
  }t          |                      ¦   «         ¦  «        }||d<   t          j        ||j        |j        ¬¦  «        }|d	d |…f         }||||fS )
Nr   r4   r%  r1   r  r3  r¿   r�  .)rÇ   rZ   r	  rb   r†   rï   r�   )rü  rË  rê   r±  rê  rø   rØ  rú  rû  rÌ  rõ  rÍ  rÚ  r  r¨   rø  rÕ  Ú
head_dim_vrù  rý  rþ  r~  Ú	grad_biasÚlastDimÚlastDimAlignedÚ	new_sizess                             r9   Ú+meta__scaled_dot_product_efficient_backwardr)  Œ  s¤  € ð( —’˜A‘”€JØ—
’
˜1‘”€IØ�JŠJ�q‰MŒM€EØ�zŠz˜!‰}Œ}€HØ—’˜A‘”€Jà�HŠH�Q‰KŒK€EåÔ!Ø	�Y  xÐ0ØØŒkØŒ|ð	ñ ô €Fõ Ô!Ø	�Y  xÐ0ØØŒiØŒzð	ñ ô €Fõ Ô!Ø	�Y  zÐ2ØØŒkØŒ|ð	ñ ô €Fð €IØÐ °Ô!3ÐØ—.’. Ñ$Ô$ˆØ$+¨b¡L°AÒ$5Ð$5˜˜¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÝ˜ŸšÑ)Ô)Ñ*Ô*ˆ	Ø&ˆ	�"‰Ý”KØ˜Yœ_°YÔ5Eð
ñ 
ô 
ˆ	ð ˜c 8 G 8˜mÔ,ˆ	à�6˜6 9Ð,Ð,r;   c                 ó„   — t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|||fS rE   r    )rü  rË  rê   r±  rø   rØ  rú  rû  rê  rö  r÷  rø  rù  rÌ  rÍ  rÚ  rý  rþ  r~  s                      r9   Ú'meta__scaled_dot_product_cudnn_backwardr+  È  sA   € õ. Ô˜eÑ$Ô$€FÝÔ˜cÑ"Ô"€FÝÔ˜eÑ$Ô$€FØ�6˜6Ð!Ð!r;   Úwindow_size_leftÚwindow_size_rightÚ	seqused_kÚalibi_slopesÚblock_tablerO  c                 ó†  — |€|                       d¦  «        n|                     ¦   «         dz
  }|€|                       d¦  «        n|}|€|                      d¦  «        n|}|                       d¦  «        }|                       d¦  «        }t          j        | ¦  «        }|€*t          j        |||ft          j        | j        ¬¦  «        }n=|                       d¦  «        }t          j        ||ft          j        | j        ¬¦  «        }|	rX|dk    rdnd}t          j        ||z  ¦  «        }|dk    rd}n|dk    rd}t          j        ||||f| j	        | j        ¬¦  «        }n!t          j        d| j	        | j        ¬¦  «        }d	\  }}t          j
        j        rat          j                             ¦   «         rCt          j        d
t          j        d¬¦  «        }t          j        d
t          j        d¬¦  «        }nBt          j        dt          j        d¬¦  «        }t          j        d
t          j        d¬¦  «        }|||||fS )Nr   r4   r  r¿   r3  rÐ  rÑ  rÒ  ©NNr5   rƒ   r%  )rÇ   rš   rZ   r¡   r�   r^   r†   r   rÓ  rb   r  r  r  r  r˜   rP  )rË  rê   r±  rö  r÷  rø  rù  rÌ  rÍ  rÎ  rÚ  r,  r-  r.  r/  r0  rO  r  rÔ  rÖ  r¨   rÕ  r×  rØ  Útotal_qrÙ  rÚ  rÛ  rÜ  r€  s                                 r9   Úmeta__flash_attention_forwardr4  å  s?  € ð8 #,Ð"3�—’˜A‘”�¸¿ºÑ9JÔ9JÈQÑ9N€JØ*3Ð*;˜Ÿš A™œ˜ÀÐØ(1Ð(9˜Ÿš !™œ˜¸uÐØ—
’
˜2‘”€IØ�zŠz˜"‰~Œ~€Hõ Ô  Ñ'Ô'€IØÐÝ”KØ˜Ð$6Ð7Ý”+Ø”<ð
ñ 
ô 
ˆ	ˆ	ð —*’*˜Q‘-”-ˆÝ”KØ˜Ð ­¬¸E¼Lð
ñ 
ô 
ˆ	ð ð LØ%¨š]˜]�c�c°ˆÝ”yÐ!3°kÑ!AÑBÔBˆØ Ò$Ð$ØˆLˆLØ 3Ò&Ð&ØˆLÝ”[Ø˜Ð$6¸ÐEØ”+Ø”<ð
ñ 
ô 
ˆ
ˆ
õ ”[ ¨%¬+¸e¼lÐKÑKÔKˆ
ð �L€Dˆ&Ý„}Ôð D�UœZ×4Ò4Ñ6Ô6ð DåŒ{˜2¥U¤Z¸Ð?Ñ?Ô?ˆÝ”˜R¥u¤z¸&ÐAÑAÔAˆˆåŒ{˜A¥e¤l¸6ÐBÑBÔBˆÝ”˜R¥u¤|¸FÐCÑCÔCˆàØØØØðð r;   c                 óN   — t          |||||||||	|
||||||¦  «        \  }}}}}|S rE   )r4  )rø   rË  rê   r±  rö  r÷  rø  rù  rÌ  rÍ  rÎ  rÚ  r,  r-  r.  r/  r0  rO  rW   rØ  s                       r9   Ú0meta__flash_attention_forward_no_dropout_inplacer6  7  sV   € õ* :ØØØØØØØØØØØØØØØØñ!ô Ñ€A€y�!�Q˜ð$ Ðr;   c                 ó¤   — | j         t          j        k    r|                      t          j        ¦  «        } t          | |||||||||	|||||¦  «        S rE   )rb   rZ   r¾  r‚  r½  r4  )rË  rê   r±  rö  r÷  rø  rù  rÌ  rÍ  rÎ  rÞ  rß  rà  rÚ  r,  r-  r.  r/  s                     r9   Ú'meta__flash_attention_forward_quantizedr8  a  sf   € ð* „{•eÔ)Ò)Ð)Ø—’�œÑ(Ô(ˆå(ØØØØØØØØØØØØØØØñô ð r;   c                 ó„   — t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|||fS rE   r    )rü  rË  rê   r±  rø   rØ  rö  r÷  rø  rù  rÌ  rÍ  rú  rû  rÚ  r,  r-  Ú
grad_queryÚgrad_keyÚ
grad_values                       r9   Úmeta__flash_attention_backwardr=  Œ  sA   € õ0 Ô! %Ñ(Ô(€JÝÔ Ñ$Ô$€HÝÔ! %Ñ(Ô(€Jà�x Ð+Ð+r;   Úcu_seqlens_qÚcu_seqlens_kÚmax_seqlen_qrÚ  Úcustom_mask_typeÚcausal_diagonalÚseqlen_kÚwindow_sizec                 ó°  — |                       d¦  «        }|                       d¦  «        }|                      d¦  «        }|                       d¦  «        }|                      d¦  «        }t          j        ||||| j        | j        ¬¦  «        }|�|                      d¦  «        dz
  n|}|}|�|€t          d¦  «        ‚|}|�|n|}|
rt          j        |dz  ¦  «        dz  nd}t          j        |||ft          j        | j        ¬¦  «        }t          j        dt          j	        d	¬¦  «        }t          j        dt          j	        d	¬¦  «        }||||||fS )
Nr   r4   r  r¿   r3  z;max_seqlen_q must not be None when cu_seqlens_q is providedrž  r5   rƒ   )
rÇ   rZ   r�   rb   r†   r�   r   rÓ  r^   r˜   )rË  rê   r±  r•  r>  r?  r@  rÚ  rÌ  rA  rë  rÚ  rB  rC  rD  r3  rý  rê  r¨   r   rñ  Úlogsumexp_batch_dimÚactual_max_seqlen_qÚactual_max_seqlen_kr!  rð  rÜ  r€  s                               r9   Ú!meta__efficient_attention_forwardrI  «  sk  € ð, 	�
Š
�1‰Œ€AØ�
Š
�1‰Œ€AØ�Š�‰Œ€AØ—
’
˜2‘”€IØ	�Š�B‰Œ€Bå
Œ+�a˜˜I r°´ÀUÄ\Ð
RÑ
RÔ
R€Cà7CÐ7O˜,×+Ò+¨AÑ.Ô.°Ñ2Ð2ÐVWÐØÐØÐØÐÝ ØMñô ð ð +ÐØ*6Ð*B˜,˜,ÈÐà4FÐM�Œ	Ð%¨Ñ*Ñ+Ô+¨bÑ0Ð0ÈAð õ ”Ø	˜i¨Ð7ÝŒkØŒ|ðñ ô €Jõ Œ;�r¥¤°FÐ;Ñ;Ô;€DÝŒ[˜¥5¤:°fÐ=Ñ=Ô=€Fà�
˜D &Ð*=Ð?RÐRÐRr;   Úbias_requires_gradÚnum_splits_keyÚshared_storage_dqdkdvc                 ó¢  — |rðt          j        |j        d         |j        d         k    d„ ¦  «         t          j        |j        d         |j        d         k    d„ ¦  «         t          j        g |j        dd…         ¢d‘|j        d         ‘|j        d         ‘R |j        |j        ¬¦  «        }|                     d	d¦  «        }|                     d	d¦  «        }|                     d	d
¦  «        }n<t          j        |¦  «        }t          j        |¦  «        }t          j        |¦  «        }|�|                     d¦  «        }|dz  dk    r|n
|dz   |dz  z
  }t          |                     ¦   «         ¦  «        }||d<   t          j        ||j        |j        ¬¦  «        }|dd |…f         }nt          j        d|j        ¬¦  «        }||||fS )Nr4   c                  ó   — dS )Nz,seqlen must match for `shared_storage_dqdkdvr5   r5   r;   r9   ri   z4meta__efficient_attention_backward.<locals>.<lambda>þ  s   € ÐB€ r;   r1   c                  ó   — dS )Nz3embedding dim must match for `shared_storage_dqdkdvr5   r5   r;   r9   ri   z4meta__efficient_attention_backward.<locals>.<lambda>  ó   € ÐI€ r;   r   r  r¿   r3  r«  r%  r�  .r5   r^  )
rZ   rk   rœ   r�   rb   r†   rJ  r¡   rÇ   rï   )rü  rË  rê   r±  r•  r>  r?  r@  rÚ  rØ  rÌ  rú  rû  rA  rJ  rÚ  rK  rL  Úchunkr:  r;  r<  r&  r'  r(  r%  s                             r9   Ú"meta__efficient_attention_backwardrR  â  sÕ  € ð2 ð -ÝŒØŒK˜ŒN˜cœi¨œlÒ*ØBÐBñ	
ô 	
ð 	
õ 	ŒØŒK˜ŒN˜cœi¨œlÒ*ØIÐIñ	
ô 	
ð 	
õ ”ØEˆeŒk˜!˜B˜$ÔÐE ÐE E¤K°¤OÐE°U´[À´_ÐEÐEØ”+Ø”<ð
ñ 
ô 
ˆð
 —\’\ " aÑ(Ô(ˆ
Ø—<’<  AÑ&Ô&ˆØ—\’\ " aÑ(Ô(ˆ
ˆ
åÔ% eÑ,Ô,ˆ
ÝÔ# CÑ(Ô(ˆÝÔ% eÑ,Ô,ˆ
àÐØ—)’)˜B‘-”-ˆØ$+¨b¡L°AÒ$5Ð$5˜˜¸7ÀR¹<È'ÐTVÉ,Ñ;VˆÝ˜Ÿš™œÑ%Ô%ˆ	Ø&ˆ	�"‰Ý”K 	°´ÀDÄKÐPÑPÔPˆ	Ø˜c 8 G 8˜mÔ,ˆ	ˆ	å”K ¨5¬<Ð8Ñ8Ô8ˆ	à�x ¨YÐ6Ð6r;   Úscale_aÚscale_bÚscale_resultÚuse_fast_accumc                 óþ  ‡ ‡‡‡‡‡‡‡‡— d„ }t          j        ‰                      ¦   «         dk    o‰                     ¦   «         dk    ˆˆ fd„¦  «         t          j         |‰ j        ¦  «        o |‰j        ¦  «        ˆˆ fd„¦  «         t	          ‰ ¦  «        dk    s't	          ‰ ¦  «        dk    st	          ‰ ¦  «        dk    �rìd„ }	d	„ }
d
„ }t	          ‰ ¦  «        dk    rüt          j         |	‰                      ¦   «         ¦  «        p
 |‰ ¦  «        ˆ fd„¦  «         t          j         |
‰                     ¦   «         ¦  «        p
 |‰¦  «        ˆfd„¦  «         t          j        ‰                      d¦  «        dz  dk    ˆ fd„¦  «         t          j        ‰                     d¦  «        dz  dk    o‰                     d¦  «        dz  dk    ˆfd„¦  «         ‰ j        \  ŠŠ‰                     d¦  «        Š‰j        t           j        k    o‰j        t           j        k    p)‰j        t           j	        k    o‰j        t           j	        k    }‰ 
                    ¦   «         dk    rX‰ 
                    ¦   «         dk    r@t          j        ‰j        t           j        k    o‰j        t           j        k    d„ ¦  «         �nñ|�r)‰j        t           j	        k    rd}‰dz  Šnd}‰ j        t           j        k    r‰dz  Šd}t          ‰|¦  «        }t          |d¦  «        dz  }|t          ‰|¦  «        z  |z  Š|t          ‰|¦  «        z  |z  Š‰ 
                    ¦   «         ‰k    rj‰ 
                    ¦   «         ‰k    rRt          j        ‰                     ¦   «         d„ ¦  «         t          j        ‰                     ¦   «         d„ ¦  «         �nât          j        dˆˆˆˆfd„¦  «         �nÅt          j        ‰j        t           j        k    o‰j        t           j        k    d„ ¦  «         t          j        ‰                     ¦   «         dk    o‰                     ¦   «         dk    ˆˆfd„¦  «         ‰                     d¦  «        ‰k    r‰‰                     d¦  «        dk    rp‰                     d¦  «        dk    rW‰                     d¦  «        ‰k    r>t          j        ‰                     ¦   «         o‰                     ¦   «         d„ ¦  «         �nž‰                     d¦  «        ‰k    rm‰                     d¦  «        ‰                     d¦  «        cxk    rt          ‰d¦  «        k    r,n n)‰                     d¦  «        t          ‰d¦  «        k    r�n‰                     d¦  «        ‰k    r^‰                     d¦  «        ‰                     d¦  «        cxk    rt          ‰d¦  «        k    rn n‰                     d¦  «        ‰k    rn¡‰                     d¦  «        t          ‰d¦  «        k    r^‰                     d¦  «        ‰                     d¦  «        cxk    rt          ‰d¦  «        k    rn n‰                     d¦  «        ‰k    rnt          j        dˆˆˆˆˆfd„¦  «         |�|n‰ j        }t          j        ‰                      d¦  «        ‰                     d¦  «        |‰ j        ¬¦  «        S )Nc                 óx   — | t           j        t           j        t           j        t           j        t           j        fv S rE   ©rZ   r¾  Úfloat8_e5m2Úfloat8_e4m3fnuzÚfloat8_e5m2fnuzÚfloat4_e2m1fn_x2r”   s    r9   Úis_fp8_or_fp4_typez2_check_scaled_mm_sizes.<locals>.is_fp8_or_fp4_type(  ó2   € ØÝÔÝÔÝÔ!ÝÔ!ÝÔ"ð
ð 
ð 	
r;   r%  c                  ó\   •— d‰                      ¦   «         › d‰                       ¦   «         › �S ©Nz%Inputs must be 2D but got self.dim()=z and mat2.dim()=rÀ   ©r¤  r�   s   €€r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>3  ó-   ø€ Ð`¸¿º¹
¼
Ð`Ð`ÐTX×T\ÒT\ÑT^ÔT^Ð`Ð`€ r;   c                  ó(   •— d‰j         › d‰ j         › �S ©Nz?Expected both inputs to be fp8 or fp4 types but got self.dtype=z and mat2.dtype=r”   rb  s   €€r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>7  ó    ø€ ÐzÐRVÔR\ÐzÐzÐnrÔnxÐzÐz€ r;   r  r(  r  c                 ó>   — | d         | d         k    o| d         dk    S r6  r5   r7  s    r9   Úis_row_majorz,_check_scaled_mm_sizes.<locals>.is_row_major@  ó"   € Ø˜!”9˜v aœyÒ(Ð;¨V°A¬Y¸!ª^Ð;r;   c                 ó2   — | d         dk    o| d         dk    S r6  r5   r7  s    r9   Úis_col_majorz,_check_scaled_mm_sizes.<locals>.is_col_majorC  ó   € Ø˜!”9 ’>Ð3 f¨Q¤i°!¢mÐ3r;   c                 óf   — |                       d¦  «        dk    p|                       d¦  «        dk    S r6  rÆ   ©Ú	tensor_2ds    r9   Úhas_zero_dimz,_check_scaled_mm_sizes.<locals>.has_zero_dimF  ó/   € Ø—>’> !Ñ$Ô$¨Ò)ÐC¨Y¯^ª^¸AÑ->Ô->À!Ò-CÐCr;   c                  ó2   •— d‰                       ¦   «         › �S ©Nz#self must be row_major, got stride r7  rÔ   s   €r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>L  ó   ø€ ÐM¸d¿kºk¹m¼mÐMÐM€ r;   c                  ó2   •— d‰                       ¦   «         › �S ©Nz#mat2 must be col_major, got stride r7  ©r¤  s   €r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>P  rt  r;   r4   r�  r   c                  ó4   •— d‰                       d¦  «        › �S ©NzBExpected self.size(1) to be divisible by 16, but got self.size(1)=r4   rÆ   rÔ   s   €r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>T  ó    ø€ ÐkÐ]a×]fÒ]fÐghÑ]iÔ]iÐkÐk€ r;   c                  ó   •— d‰ j         › �S ©Nz?Expected both dimensions of mat2 to be divisible by 16 but got rK  rw  s   €r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>X  ó   ø€ ÐfÐZ^ÔZdÐfÐf€ r;   c                  ó   — dS )NzNFor tensorwise scaling, both scale_a and scale_b must be float (fp32) tensors.r5   r5   r;   r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>o  s   € Ðh€ r;   rž  rÑ  re  c                  ó   — dS )Nzscale_a must be contiguousr5   r5   r;   r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>‘  ó   € Ð8€ r;   c                  ó   — dS )Nzscale_b must be contiguousr5   r5   r;   r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>•  r€  r;   Fc            	      ój   •— d‰ › d‰                      ¦   «         › d‰› d‰                      ¦   «         › d�	S )NzTInvalid blockwise scaling configuration. For blockwise scaling, scale_a should have ú elements, got z, scale_b should have r  r4  )Úexpected_a_sizeÚexpected_b_sizerS  rT  s   €€€€r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>š  sd   ø€ ðbØFUðbð bØfm×fsÒfsÑfuÔfuðbð bà/>ðbð bàOVÏ}Ê}ÉÌðbð bð bð r;   c                  ó   — dS )NzKFor rowwise scaling, both scale_a and scale_b must be float (fp32) tensors.r5   r5   r;   r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>£  s   € Ðe€ r;   c                  ó\   •— d‰                       ¦   «         ›d‰                      ¦   «         ›�S )NzLFor non-tensorwise scaling, scale tensors must be 2D, but got scale_a.dim()=z and scale_b.dim()=rÀ   ©rS  rT  s   €€r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>¨  s2   ø€ Ð~ÐY`×YdÒYdÑYfÔYfÐ~Ð~Ðnu×nyÒnyÑn{Ôn{Ð~Ð~€ r;   c                  ó   — dS )Nz@Both scale_a and scale_b must be contiguous for rowwise scaling.r5   r5   r;   r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>´  s   € Ð^€ r;   c                  ó  •— d‰› d‰› d‰› dt          ‰ d¦  «        › d�	dt          ‰ d¦  «        › dt          ‰d¦  «        › d‰› dt          ‰ d¦  «        › d�	z   dt          ‰ d¦  «        › d‰› d	t          ‰d¦  «        › dt          ‰ d¦  «        › d�	z   dt          ‰ d¦  «        › d‰› d
‰                     d¦  «        › d‰                     d¦  «        › d‰                     d¦  «        › d‰                     d¦  «        › d�z   S )Nú}Invalid scaling configuration. For tensorwise scaling, both scales should be scalar. For rowwise scaling, scale_a should be (ú, 1), scale_b should be (1, ú>). For (BlockWise1x128, BlockWise128x128), scale_a should be (r{   rÑ  ú), úscale_b should be (ú<). For (BlockWise1x128, BlockWise1x128), scale_a should be (z>). For (BlockWise128x128, BlockWise1x128), scale_a should be (ú). Got scale_a.size()=(r   r4   ú) and scale_b.size()=(r|   ©r:   rÇ   )Ú_krÀ  r4  rS  rT  s   €€€€€r9   ri   z(_check_scaled_mm_sizes.<locals>.<lambda>Ï  sÛ  ø€ ðràCDðrð ràbcðrð rð WXðrð rõ \dÐdfÐhkÑ[lÔ[lðrð rð rðpµ¸¸SÑ0AÔ0Að pð pÅXÈaÐQTÑEUÔEUð pð pØTUðpð pÝYaÐbdÐfiÑYjÔYjðpð pð pñ	pðAµ¸¸SÑ0AÔ0Að Að AÀQð Að AÝV^Ð_`ÐbeÑVfÔVfðAð AÝjrÐsuÐwzÑj{Ôj{ðAð Að AñAðUµ¸¸SÑ0AÔ0Að Uð UÀQð Uð UØ/6¯|ª|¸A©¬ðUð UØBIÇ,Â,ÈqÁ/Ä/ðUð Uà/6¯|ª|¸A©¬ðUð UàBIÇ,Â,ÈqÁ/Ä/ðUð Uð Uñ
Uð r;   r3  )rZ   rk   r‰   rb   r  rñ   rÇ   rœ   Úfloat8_e8m0fnur¾  rš   r»  r]  r:   rö  r�   r†   )r�   r¤  rS  rT  r•  rU  r—  rV  r^  rh  rk  rp  Úis_blockwise_scalingÚblock_size_kÚblock_size_mnÚnum_k_blocksÚpadded_num_k_blocksÚ
_out_dtyper”  r„  r…  rÀ  r4  s   ````              @@@@@r9   Ú_check_scaled_mm_sizesrœ    ss  øøøøøøøøø€ ð
ð 
ð 
õ 
„LØ�Š‰
Œ
�aŠÐ+˜DŸHšH™JœJ¨!šOØ`Ð`Ð`Ð`Ð`ñô ð õ 
„LØÐ˜4œ:Ñ&Ô&ÐIÐ+=Ð+=¸d¼jÑ+IÔ+IØzÐzÐzÐzÐzñô ð õ 	�DÑÔ˜VÒ#Ð#Ý�tÑÔ Ò%Ð%Ý�tÑÔ Ò%Ñ%ð	<ð 	<ð 	<ð	4ð 	4ð 	4ð	Dð 	Dð 	Dõ �tÑÔ Ò%Ð%ÝŒLØ�˜TŸ[š[™]œ]Ñ+Ô+ÐA¨|¨|¸DÑ/AÔ/AØMÐMÐMÐMñô ð õ ŒLØ�˜TŸ[š[™]œ]Ñ+Ô+ÐA¨|¨|¸DÑ/AÔ/AØMÐMÐMÐMñô ð õ ŒLØ—	’	˜!‘”˜rÑ! QÒ&ØkÐkÐkÐkñô ð õ ŒLØ—	’	˜!‘”˜rÑ! QÒ&ÐA¨4¯9ª9°Q©<¬<¸"Ñ+<ÀÒ+AØfÐfÐfÐfñô ð ð ”
‰ˆˆ2Ø�IŠI�a‰LŒLˆð ”¥Ô!5Ò5ð :Ø”M¥UÔ%9Ò9ðð
 ”¥Ô!4Ò4ð 9Ø”M¥UÔ%8Ò8ð 	ð �=Š=‰?Œ?˜aÒÐ G§M¢M¡O¤O°qÒ$8Ð$8åŒLØ”¥¤Ò.ÐQ°7´=ÅEÄMÒ3QØhÐhñô ð ñ ð "ñ k	ð Œ}¥Ô 3Ò3Ð3ð  "�Ø˜!‘V��à!�Ø”:¥Ô!7Ò7Ð7Ø˜a™�BàˆMå# B¨Ñ5Ô5ˆLÝ"*¨<¸Ñ";Ô";¸aÑ"?Ðð ¥¨¨MÑ :Ô :Ñ:Ð=PÑPð ð ¥¨¨MÑ :Ô :Ñ:Ð=PÑPð ð
 —’‘” ?Ò2Ð2Ø—M’M‘O”O Ò6Ð6å”Ø×)Ò)Ñ+Ô+Ø8Ð8ñô ð õ ”Ø×)Ò)Ñ+Ô+Ø8Ð8ñô ð ñ õ
 ”Øðð ð ð ð ð ð ñô ð ñ õ ŒLØ”¥¤Ò.ÐQ°7´=ÅEÄMÒ3QØeÐeñô ð õ
 ŒLØ—’‘” Ò"Ð9 w§{¢{¡}¤}¸Ò'9Ø~Ð~Ð~Ð~Ð~ñô ð ð —’˜Q‘” 1Ò$Ð$Ø—L’L ‘O”O qÒ(Ð(Ø—L’L ‘O”O qÒ(Ð(Ø—L’L ‘O”O qÒ(Ð(õ ”Ø×)Ò)Ñ+Ô+ÐG°×0EÒ0EÑ0GÔ0GØ^Ð^ñô ð ñ ð
 —’˜Q‘” 1Ò$Ð$Ø—L’L ‘O”O w§|¢|°A¡¤ÐKÐKÒKÐK½(À2ÀsÑ:KÔ:KÒKÐKÐKÐKÐKØ—L’L ‘O”O¥x°°3Ñ'7Ô'7Ò7Ð7ñ à—’˜Q‘” 1Ò$Ð$Ø—L’L ‘O”O w§|¢|°A¡¤ÐKÐKÒKÐK½(À2ÀsÑ:KÔ:KÒKÐKÐKÐKÐKØ—L’L ‘O”O qÒ(Ð(ð à—’˜Q‘”¥8¨A¨sÑ#3Ô#3Ò3Ð3Ø—L’L ‘O”O w§|¢|°A¡¤ÐKÐKÒKÐK½(À2ÀsÑ:KÔ:KÒKÐKÐKÐKÐKØ—L’L ‘O”O qÒ(Ð(ð õ ”Øðð ð ð ð ð ð ð ñô ð ð" (Ð3��¸¼€JÝŒ;�t—y’y ‘|”| T§Y¢Y¨q¡\¤\¸ÈDÌKÐXÑXÔXÐXr;   c           
      ó.   — t          | |||||||¦  «        S rE   )rœ  )r�   r¤  rS  rT  r•  rU  r—  rV  s           r9   Úmeta_scaled_mmrž  â  s'   € õ "Øˆd�G˜W d¨L¸)À^ñô ð r;   Úscale_recipe_aÚscale_recipe_bÚ	swizzle_aÚ	swizzle_bc           
      ó*  ‡ ‡‡‡‡‡	‡‡‡‡ ‡!‡"‡#‡$‡%— d„ }d„ }t          j        ‰                      ¦   «         dk    o‰                     ¦   «         dk    ˆˆ fd„¦  «         t          j         |‰ j        ¦  «        o |‰j        ¦  «        ˆˆ fd„¦  «         ‰ j        d         Š‰ j        d         Š‰j        d         Š  |‰ j        ¦  «        r |‰j        ¦  «        rd}‰|z  Šd„ |D ¦   «         }d	„ |D ¦   «         }‰rd
„ ‰D ¦   «         Šnt
          j        gŠ‰	rd„ ‰	D ¦   «         Š	nt
          j        gŠ	t          ‰ ¦  «        dk    s't          ‰ ¦  «        dk    st          ‰ ¦  «        dk    �r�d„ }d„ }d„ }t          ‰ ¦  «        dk    rüt          j         |‰                      ¦   «         ¦  «        p
 |‰ ¦  «        ˆ fd„¦  «         t          j         |‰                     ¦   «         ¦  «        p
 |‰¦  «        ˆfd„¦  «         t          j        ‰  	                    d¦  «        dz  dk    ˆ fd„¦  «         t          j        ‰ 	                    d¦  «        dz  dk    o‰ 	                    d¦  «        dz  dk    ˆfd„¦  «         dt          t                   dt          t                   fd„}dt          t                   dt          t                   fd„}dt          t                   dt          t                   fd„}dt          t                   dt          t                   fd„}dt          t                   dt          t                   fd„}dt          t                   dt          t                   fd„}dt          t                   dt          t                   fd„}dt          t                   dt          t                   fd „} |||¦  «        rœt          j        ‰d                              ¦   «         dk    o‰d         j        t           j        k    d!„ ¦  «         t          j        ‰d                              ¦   «         dk    o‰d         j        t           j        k    d"„ ¦  «         �
n� |||¦  «        �rat          j        ‰d          	                    d¦  «        ‰k    o‰d          	                    d¦  «        dk    ˆˆfd#„¦  «         t          j        ‰d                              ¦   «         ‰k    o‰d         j        t           j        k    ˆˆfd$„¦  «         t          j        ‰d                              ¦   «         ‰ k    o‰d         j        t           j        k    ˆ ˆfd%„¦  «         t          j        ‰d                              d¦  «        dk    ˆfd&„¦  «         t          j        ‰d                              d¦  «        dk    ˆfd'„¦  «         �	n |||¦  «        �rj‰d         j        t           j        k    o‰d         j        t           j        k    }‰d         Š$‰$j        d         ‰k    oo‰$j        d         ‰d(z  k    o[‰$                     d¦  «        dk    oB‰$                     d¦  «        ‰k    p)‰$j        d         dk    o‰$                     d¦  «        dk    }‰d         Š%‰%j        d         ‰ k    oo‰%j        d         ‰d(z  k    o[‰%                     d¦  «        dk    oB‰%                     d¦  «        ‰ k    p)‰%j        d         dk    o‰%                     d¦  «        dk    }t          j        |o|o|ˆˆˆ ˆ$ˆ%fd)„¦  «         �nœ |||¦  «        �r~‰d         j        t           j        k    o‰d         j        t           j        k    }t          ‰d(z  d*¦  «        Š‰d         Š$‰$j        d         ‰k    oo‰$j        d         ‰d(z  k    o[‰$                     d¦  «        dk    oB‰$                     d¦  «        ‰k    p)‰$j        d         dk    o‰$                     d¦  «        dk    }‰d         Š%‰%j        d         ‰ k    oo‰%j        d         ‰d(z  k    o[‰%                     d¦  «        dk    oB‰%                     d¦  «        ‰ k    p)‰%j        d         dk    o‰%                     d¦  «        dk    }t          j        |o|o|ˆˆˆˆ ˆ$ˆ%fd+„¦  «         �n |||¦  «        �r~‰d         j        t           j        k    o‰d         j        t           j        k    }t          ‰d(z  d*¦  «        Š‰d         Š$‰$j        d         ‰k    oo‰$j        d         ‰d(z  k    o[‰$                     d¦  «        dk    oB‰$                     d¦  «        ‰k    p)‰$j        d         dk    o‰$                     d¦  «        dk    }‰d         Š%‰%j        d         ‰k    oo‰%j        d         ‰ d(z  k    o[‰%                     d¦  «        dk    oB‰%                     d¦  «        ‰k    p)‰%j        d         dk    o‰%                     d¦  «        dk    }t          j        |o|o|ˆˆˆˆ ˆ$ˆ%fd,„¦  «         �n† |||¦  «        �r®t           j        j        r_t%          ‰ j        d         d-¦  «        ‰ j        d         z  Š!t%          ‰ j        d         d-¦  «        ‰ j        d         z  Š"t
          j        Š#n–t          ‰ j        d         d(¦  «        t          t%          ‰ j        d         d-¦  «        d*¦  «        z  Š!t          ‰j        d         d(¦  «        t          t%          ‰ j        d         d-¦  «        d*¦  «        z  Š"t
          j        Š#t          j        ‰d                              ¦   «         ‰!k    ok‰d         j        t           j        k    oP‰d                              ¦   «         ‰"k    o2‰d         j        t           j        k    o‰d         ‰#k    o‰	d         ‰#k    ˆ!ˆ"ˆ#ˆˆˆˆ	fd.„¦  «         �nË |||¦  «        �rt          ‰d(¦  «        t          t%          ‰d¦  «        d*¦  «        z  Š!t          ‰ d(¦  «        t          t%          ‰d¦  «        d*¦  «        z  Š"t
          j        Š#t          j        ‰d                              ¦   «         ‰!k    ok‰d         j        t           j        k    oP‰d                              ¦   «         ‰"k    o2‰d         j        t           j        k    o‰d         ‰#k    o‰	d         ‰#k    ˆ!ˆ"ˆ#ˆˆˆˆ	fd/„¦  «         �n¬ |||¦  «        �rƒt          ‰d(¦  «        t          t%          ‰d¦  «        d*¦  «        z  Š!t          ‰ d(¦  «        t          t%          ‰d¦  «        d*¦  «        z  Š"t
          j        Š#t          j        ‰d                              ¦   «         ‰!k    oÝ‰d         j        t           j        k    oÂ‰d                              ¦   «         dk    o¤‰d         j        t           j        k    o‰‰d                              ¦   «         ‰"k    ok‰d         j        t           j        k    oP‰d                              ¦   «         dk    o2‰d         j        t           j        k    o‰d         ‰#k    o‰	d         ‰#k    ˆ!ˆ"ˆ#ˆˆˆˆ	fd0„¦  «         nt          j        d1ˆˆˆ ˆˆfd2„¦  «         |�|n‰ j        }t          j        ‰‰ |‰ j        ¬3¦  «        S )4Nc                 óx   — | t           j        t           j        t           j        t           j        t           j        fv S rE   rY  r”   s    r9   r^  z5_check_scaled_mm_sizes_v2.<locals>.is_fp8_or_fp4_typeÿ  r_  r;   c                 ó"   — | t           j        k    S rE   )rZ   r]  r”   s    r9   Úis_fp4_typez._check_scaled_mm_sizes_v2.<locals>.is_fp4_type  s   € Ø�Ô.Ò.Ð.r;   r%  c                  ó\   •— d‰                      ¦   «         › d‰                       ¦   «         › �S ra  rÀ   rb  s   €€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>  rc  r;   c                  ó(   •— d‰j         › d‰ j         › �S re  r”   rb  s   €€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>  rf  r;   r   r4   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r5   ©r)   ©rQ   Úsis     r9   rS   z-_check_scaled_mm_sizes_v2.<locals>.<listcomp>   ó   € Ð?Ð?Ð?¨"•k "‘o”oÐ?Ð?Ð?r;   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r5   rª  r«  s     r9   rS   z-_check_scaled_mm_sizes_v2.<locals>.<listcomp>!  r­  r;   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r5   ©r*   r«  s     r9   rS   z-_check_scaled_mm_sizes_v2.<locals>.<listcomp>$  ó   € Ð9Ð9Ð9¨•[ ‘_”_Ð9Ð9Ð9r;   c                 ó,   — g | ]}t          |¦  «        ‘ŒS r5   r°  r«  s     r9   rS   z-_check_scaled_mm_sizes_v2.<locals>.<listcomp>*  r±  r;   r  r(  r  c                 ó>   — | d         | d         k    o| d         dk    S r6  r5   r7  s    r9   rh  z/_check_scaled_mm_sizes_v2.<locals>.is_row_major6  ri  r;   c                 ó2   — | d         dk    o| d         dk    S r6  r5   r7  s    r9   rk  z/_check_scaled_mm_sizes_v2.<locals>.is_col_major9  rl  r;   c                 óf   — |                       d¦  «        dk    p|                       d¦  «        dk    S r6  rÆ   rn  s    r9   rp  z/_check_scaled_mm_sizes_v2.<locals>.has_zero_dim<  rq  r;   c                  ó2   •— d‰                       ¦   «         › �S rs  r7  rÔ   s   €r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>B  rt  r;   c                  ó2   •— d‰                       ¦   «         › �S rv  r7  rw  s   €r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>F  rt  r;   r�  c                  ó4   •— d‰                       d¦  «        › �S ry  rÆ   rÔ   s   €r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>J  rz  r;   c                  ó   •— d‰ j         › �S r|  rK  rw  s   €r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>N  r}  r;   Úrecipe_aÚrecipe_bc                 ó¦   — t          | ¦  «        dk    o>t          |¦  «        dk    o+| d         t          j        k    o|d         t          j        k    S r<  )rî   r)   Ú
TensorWise©rº  r»  s     r9   Úis_tensorwisez0_check_scaled_mm_sizes_v2.<locals>.is_tensorwiseQ  sR   € å�H‘” Ò"ð :Ý˜‘M”M QÒ&ð:à˜Q”K¥;Ô#9Ò9ð:ð ˜Q”K¥;Ô#9Ò9ð	r;   c                 ó¦   — t          | ¦  «        dk    o>t          |¦  «        dk    o+| d         t          j        k    o|d         t          j        k    S r<  )rî   r)   ÚRowWiser¾  s     r9   Ú
is_rowwisez-_check_scaled_mm_sizes_v2.<locals>.is_rowwiseY  sR   € å�H‘” Ò"ð 7Ý˜‘M”M QÒ&ð7à˜Q”K¥;Ô#6Ò6ð7ð ˜Q”K¥;Ô#6Ò6ð	r;   c                 ó¦   — t          | ¦  «        dk    o>t          |¦  «        dk    o+| d         t          j        k    o|d         t          j        k    S r<  )rî   r)   ÚBlockWise1x32r¾  s     r9   Úis_mxz(_check_scaled_mm_sizes_v2.<locals>.is_mxa  sR   € å�H‘” Ò"ð =Ý˜‘M”M QÒ&ð=à˜Q”K¥;Ô#<Ò<ð=ð ˜Q”K¥;Ô#<Ò<ð	r;   c                 ó¦   — t          | ¦  «        dk    o>t          |¦  «        dk    o+| d         t          j        k    o|d         t          j        k    S r<  )rî   r)   ÚBlockWise1x16r¾  s     r9   Úis_nv_single_levelz5_check_scaled_mm_sizes_v2.<locals>.is_nv_single_leveli  sT   € õ �H‘” Ò"ð =Ý˜‘M”M QÒ&ð=à˜Q”K¥;Ô#<Ò<ð=ð ˜Q”K¥;Ô#<Ò<ð	r;   c                 óþ   — t          | ¦  «        dk    ojt          |¦  «        dk    oW| d         t          j        k    oA| d         t          j        k    o+|d         t          j        k    o|d         t          j        k    S )Nr%  r   r4   )rî   r)   rÇ  r½  r¾  s     r9   Úis_nvz(_check_scaled_mm_sizes_v2.<locals>.is_nvs  s~   € å�H‘” Ò"ð :Ý˜‘M”M QÒ&ð:à˜Q”K¥;Ô#<Ò<ð:ð ˜Q”K¥;Ô#9Ò9ð:ð ˜Q”K¥;Ô#<Ò<ð	:ð
 ˜Q”K¥;Ô#9Ò9ðr;   c                 ó¦   — t          | ¦  «        dk    o>t          |¦  «        dk    o+| d         t          j        k    o|d         t          j        k    S r<  )rî   r)   ÚBlockWise1x128r¾  s     r9   Úis_1x128_1x128z1_check_scaled_mm_sizes_v2.<locals>.is_1x128_1x128}  sR   € å�H‘” Ò"ð >Ý˜‘M”M QÒ&ð>à˜Q”K¥;Ô#=Ò=ð>ð ˜Q”K¥;Ô#=Ò=ð	r;   c                 ó¦   — t          | ¦  «        dk    o>t          |¦  «        dk    o+| d         t          j        k    o|d         t          j        k    S r<  )rî   r)   rÌ  ÚBlockWise128x128r¾  s     r9   Úis_1x128_128x128z3_check_scaled_mm_sizes_v2.<locals>.is_1x128_128x128…  sU   € å�H‘” Ò"ð @Ý˜‘M”M QÒ&ð@à˜Q”K¥;Ô#=Ò=ð@ð ˜Q”K¥;Ô#?Ò?ð	r;   c                 ó¦   — t          | ¦  «        dk    o>t          |¦  «        dk    o+| d         t          j        k    o|d         t          j        k    S r<  )rî   r)   rÏ  rÌ  r¾  s     r9   Úis_128x128_1x128z3_check_scaled_mm_sizes_v2.<locals>.is_128x128_1x128�  sR   € å�H‘” Ò"ð >Ý˜‘M”M QÒ&ð>à˜Q”K¥;Ô#?Ò?ð>ð ˜Q”K¥;Ô#=Ò=ð	r;   c                  ó   — dS )Nz!scale_a must have 1 Float elementr5   r5   r;   r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>œ  ó   € Ð;€ r;   c                  ó   — dS )Nz!scale_b must have 1 Float elementr5   r5   r;   r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>   rÔ  r;   c                  ó^   •— d‰ › dt          ‰d                              ¦   «         ¦  «        › �S )Nzscale_a must have shape [z
, 1], got r   )rï   rÇ   ©rý  rS  s   €€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>¦  s1   ø€ ØV°ÐVÐV½TÀ'È!Ä*Ç/Â/ÑBSÔBSÑ=TÔ=TÐVÐVð r;   c                  óD   •— d‰ › d‰d                               ¦   «         › �S )Nzscale_a must have ú Float elements, got r   r4  r×  s   €€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>¬  ó+   ø€ ØU¨ÐUÐUÀÈÄ×AQÒAQÑASÔASÐUÐUð r;   c                  óD   •— d‰ › d‰d                               ¦   «         › �S )Nzscale_b must have rÙ  r   r4  )rê  rT  s   €€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>²  rÚ  r;   c                  ó@   •— d‰ d                               d¦  «        › �S )Nz,expected scale_a.stride(1) to be 1, but got r   r4   r7  )rS  s   €r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>¸  ó#   ø€ Ð]ÀwÈqÄz×GXÒGXÐYZÑG[ÔG[Ð]Ð]€ r;   c                  ó@   •— d‰ d                               d¦  «        › �S )Nz,expected scale_b.stride(1) to be 1, but got r   r4   r7  )rT  s   €r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>¼  rÝ  r;   rÑ  c                  óz   •— d‰› d‰ dz  › d‰j         › d‰› d‰j        › d‰› d‰ dz  › d‰j         › d‰› d‰j        › d�S )Nz>For 1x128 x 1x128 blockwise scaling, scale a must have shape [r{   rÑ  ú] (got: ú) and stride [1, ú)scale b must have shape [r|   ©rœ   rñ   )rè  rý  rê  ÚsaÚsbs   €€€€€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>Ö  s¼   ø€ ðzØ01ðzð zØ56¸#±Xðzð zØGIÄxðzð zØbcðzð zØmoÔmvðzð zà01ðzð zà56¸#±Xðzð zàGIÄxðzð zàbcðzð zàmoÔmvðzð zð zð r;   re  c                  óz   •— d‰› d‰dz  › d‰j         › d‰› d‰j        › d‰› d‰ dz  › d‰j         › d‰› d‰j        › d�S )Nz]For 128x128 x 1x128 blockwise scaling, L4 = {round_up(K / 128, 4)}, scale a must have shape [r{   rÑ  rà  rá  râ  r|   rã  ©rè  ÚL4rý  rê  rä  rå  s   €€€€€€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>õ  s¼   ø€ ðzØ02ðzð zØ67¸3±hðzð zØHJÌðzð zØceðzð zØoqÔoxðzð zà01ðzð zà56¸#±Xðzð zàGIÄxðzð zàbcðzð zàmoÔmvðzð zð zð r;   c                  óz   •— d‰› d‰ dz  › d‰j         › d‰› d‰j        › d‰› d‰dz  › d‰j         › d‰› d‰j        › d�S )Nz]For 1x128 x 128x128 blockwise scaling, L4 = {round_up(K / 128, 4)}, scale a must have shape [r{   rÑ  rà  rá  râ  r|   rã  rç  s   €€€€€€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>  s¼   ø€ ð|Ø01ð|ð |Ø56¸#±Xð|ð |ØGIÄxð|ð |Øbcð|ð |ØmoÔmvð|ð |à02ð|ð |à67¸3±hð|ð |àHJÌð|ð |àceð|ð |àoqÔoxð|ð |ð |ð r;   rž  c                  óþ   •— d‰ › d‰d                               ¦   «         › d‰› d‰d                               ¦   «         › dt          j        › d‰d         j        › d‰d         j        › d‰› d	‰d         › d‰d         › d
�S )Nz!for MX scaling scale_a must have ú (got: r   ú) and scale_b must have z). Scales must have types z (for self: ú	, mat_b: z) Must have swizzle type ú (got self: r|   )rš   rZ   r•  rb   ©Úexpected_scale_a_elemsÚexpected_scale_b_elemsÚexpected_swizzlerS  rT  r¡  r¢  s   €€€€€€€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>/  sõ   ø€ ðsÐ8Nð sð sÐW^Ð_`ÔWa×WgÒWgÑWiÔWið sð sØ-Cðsð sØLSÐTUÌJ×L\ÒL\ÑL^ÔL^ðsð så"'Ô"6ðsð sàDKÈAÄJÔDTðsð sà_fÐghÔ_iÔ_oðsð sð /?ðsð sð MVÐVWÌLðsð sð dmÐmnÔcoðsð sð sð r;   c                  ó¬   •— d‰ › d‰d                               ¦   «         › d‰› d‰d                               ¦   «         › d‰› d‰d         › d‰d         › d�S )	Nz.for single-level NV scaling scale_a must have rë  r   rì  ú). Must have swizzle type rî  rí  r|   r4  rï  s   €€€€€€€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>A  sª   ø€ ðiÐE[ð ið iÐdkÐlmÔdn×dtÒdtÑdvÔdvð ið iØ-Cðið iØLSÐTUÌJ×L\ÒL\ÑL^ÔL^ðið ià$4ðið iàBKÈAÄ,ðið iàYbÐcdÔYeðið ið ið r;   c                  ó¬   •— d‰ › d‰d                               ¦   «         › d‰› d‰d                               ¦   «         › d‰› d‰d         › d‰d         › d�S )	Nz!for NV scaling scale_a must have rë  r   rì  rô  rî  rí  r|   r4  rï  s   €€€€€€€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>V  sª   ø€ ðiÐ8Nð ið iÐW^Ð_`ÔWa×WgÒWgÑWiÔWið ið iØ-Cðið iØLSÐTUÌJ×L\ÒL\ÑL^ÔL^ðið ià$4ðið iàBKÈAÄ,ðið iàYbÐcdÔYeðið ið ið r;   Fc                  óÂ  •— d‰› d‰› d‰› dt          ‰ d¦  «        › d�	dt          ‰ d¦  «        › dt          ‰d¦  «        › d‰› dt          ‰ d¦  «        › d�	z   dt          ‰ d¦  «        › d‰› d	‰d
                              d
¦  «        › d‰d
                              d¦  «        › d‰d
                              d
¦  «        › d‰d
                              d¦  «        › d�z   S )Nr‹  rŒ  r�  r{   rÑ  rŽ  r�  r�  r‘  r   r4   r’  r|   r“  )rè  rý  rê  rS  rT  s   €€€€€r9   ri   z+_check_scaled_mm_sizes_v2.<locals>.<lambda>_  s†  ø€ ðmà?@ðmð mà^_ðmð mð STðmð mõ X`Ð`aÐcfÑWgÔWgðmð mð mðk­H°Q¸Ñ,<Ô,<ð kð kÅÈÈCÑ@PÔ@Pð kð kØPQðkð kÝU]Ð^_ÐadÑUeÔUeðkð kð kñ	kðW­H°Q¸Ñ,<Ô,<ð Wð WÀð Wð WØ+2°1¬:¯?ª?¸1Ñ+=Ô+=ðWð WØAHÈÄÇÂÐQRÑASÔASðWð Wà+2°1¬:¯?ª?¸1Ñ+=Ô+=ðWð WàAHÈÄÇÂÐQRÑASÔASðWð Wð WñWð r;   r3  )rZ   rk   r‰   rb   rœ   r*   Ú
NO_SWIZZLEr  rñ   rÇ   rï   r)   Ú_check_valuerš   r»  r@   r  r  r:   ÚSWIZZLE_32_4_4r•  r¾  r�   r†   )&r�   r¤  rS  rŸ  rT  r   r•  r—  r¡  r¢  rV  r^  r¦  ÚK_packed_multiplierrh  rk  rp  r¿  rÂ  rÅ  rÈ  rÊ  rÍ  rÐ  rÒ  Útypes_okÚ
scale_a_okÚ
scale_b_okr›  rè  rè  rý  rê  rð  rñ  rò  rä  rå  s&   ``` `   ``                   @@@@@@@@@r9   Ú_check_scaled_mm_sizes_v2rþ  ò  sd  øøøøøøøøøøøøøøø€ ð
ð 
ð 
ð/ð /ð /õ 
„LØ�Š‰
Œ
�aŠÐ+˜DŸHšH™JœJ¨!šOØ`Ð`Ð`Ð`Ð`ñô ð õ 
„LØÐ˜4œ:Ñ&Ô&ÐIÐ+=Ð+=¸d¼jÑ+IÔ+IØzÐzÐzÐzÐzñô ð ð 	Œ
�1Œ€AØŒ
�1Œ€AØŒ
�1Œ€Að €{�4”:ÑÔð ! ; ;¨t¬zÑ#:Ô#:ð !ØÐØ	Ð Ñ ˆà?Ð?°Ð?Ñ?Ô?€NØ?Ð?°Ð?Ñ?Ô?€Nàð 
Ø9Ð9¨yÐ9Ñ9Ô9ˆ	ˆ	õ Ô"ð
ˆ	ð ð 
Ø9Ð9¨yÐ9Ñ9Ô9ˆ	ˆ	õ Ô"ð
ˆ	õ
 	�DÑÔ˜VÒ#Ð#Ý�tÑÔ Ò%Ð%Ý�tÑÔ Ò%Ñ%ð	<ð 	<ð 	<ð	4ð 	4ð 	4ð	Dð 	Dð 	Dõ �tÑÔ Ò%Ð%ÝŒLØ�˜TŸ[š[™]œ]Ñ+Ô+ÐA¨|¨|¸DÑ/AÔ/AØMÐMÐMÐMñô ð õ ŒLØ�˜TŸ[š[™]œ]Ñ+Ô+ÐA¨|¨|¸DÑ/AÔ/AØMÐMÐMÐMñô ð õ ŒLØ—	’	˜!‘”˜rÑ! QÒ&ØkÐkÐkÐkñô ð õ ŒLØ—	’	˜!‘”˜rÑ! QÒ&ÐA¨4¯9ª9°Q©<¬<¸"Ñ+<ÀÒ+AØfÐfÐfÐfñô ð ð
	¥D­Ô$5ð 	ÅÅkÔARð 	ð 	ð 	ð 	ð	¥¥kÔ!2ð 	½dÅ;Ô>Oð 	ð 	ð 	ð 	ð	�D¥Ô-ð 	½½kÔ9Jð 	ð 	ð 	ð 	ð	Ý�;Ô'ð	Ý37½Ô3Dð	ð 	ð 	ð 	ð	�D¥Ô-ð 	½½kÔ9Jð 	ð 	ð 	ð 	ð	¥T­+Ô%6ð 	Å$Å{ÔBSð 	ð 	ð 	ð 	ð	¥t­KÔ'8ð 	ÅDÍÔDUð 	ð 	ð 	ð 	ð	¥t­KÔ'8ð 	ÅDÍÔDUð 	ð 	ð 	ð 	ð ˆ=˜¨Ñ8Ô8ð S	õ ÔØ˜”
× Ò Ñ"Ô" aÒ'ÐM¨G°A¬JÔ,<ÅÄÒ,MØ;Ð;ñô ð õ ÔØ˜”
× Ò Ñ"Ô" aÒ'ÐM¨G°A¬JÔ,<ÅÄÒ,MØ;Ð;ñô ð ñ ð ˆZ˜¨Ñ7Ô7ñ H	åÔØ˜”
—’ Ñ"Ô" aÒ'ÐC¨G°A¬J¯OªO¸AÑ,>Ô,>À!Ò,Cðð ð ð ð ñô ð õ ÔØ˜”
× Ò Ñ"Ô" aÒ'ÐM¨G°A¬JÔ,<ÅÄÒ,Mðð ð ð ð ñô ð õ ÔØ˜”
× Ò Ñ"Ô" aÒ'ÐM¨G°A¬JÔ,<ÅÄÒ,Mðð ð ð ð ñô ð õ ÔØ˜”
×!Ò! !Ñ$Ô$¨Ò)Ø]Ð]Ð]Ð]ñô ð õ ÔØ˜”
×!Ò! !Ñ$Ô$¨Ò)Ø]Ð]Ð]Ð]ñô ð ñ ð ˆ^˜N¨NÑ;Ô;ñ l	ð
 ˜”
Ô ¥E¤MÒ1ÐW°g¸a´jÔ6FÍ%Ì-Ò6Wð ð ˜”ˆBà”˜”˜qÒ ð TØ”H˜Q”K 1¨¡8Ò+ðTà—I’I˜a‘L”L AÒ%ðTð —Y’Y˜q‘\”\ QÒ&ÐR¨2¬8°A¬;¸!Ò+;Ð+QÀÇ	Â	È!ÁÄÐPQÒ@Qð	 ð ˜”ˆBà”˜”˜qÒ ð TØ”H˜Q”K 1¨¡8Ò+ðTà—I’I˜a‘L”L AÒ%ðTð —Y’Y˜q‘\”\ QÒ&ÐR¨2¬8°A¬;¸!Ò+;Ð+QÀÇ	Â	È!ÁÄÐPQÒ@Qð	 õ ŒLØÐ6˜ZÐ6¨Jðð ð ð ð ð ð ð ñô ð ñ ð Ð˜n¨nÑ=Ô=ñ N	ð ˜”
Ô ¥E¤MÒ1ÐW°g¸a´jÔ6FÍ%Ì-Ò6Wð õ ˜!˜c™' 1Ñ%Ô%ˆBØ˜”ˆBà”˜”˜rÒ!ð UØ”H˜Q”K 1¨¡8Ò+ðUà—I’I˜a‘L”L AÒ%ðUð —Y’Y˜q‘\”\ RÒ'ÐS¨B¬H°Q¬K¸1Ò,<Ð,RÀÇÂÈ1ÁÄÐQRÒARð	 ð ˜”ˆBà”˜”˜qÒ ð TØ”H˜Q”K 1¨¡8Ò+ðTà—I’I˜a‘L”L AÒ%ðTð —Y’Y˜q‘\”\ QÒ&ÐR¨2¬8°A¬;¸!Ò+;Ð+QÀÇ	Â	È!ÁÄÐPQÒ@Qð	 õ ŒLØÐ6˜ZÐ6¨Jðð ð ð ð ð ð ð ð ñô ð ñ ð Ð˜n¨nÑ=Ô=ñ o	ð ˜”
Ô ¥E¤MÒ1ÐW°g¸a´jÔ6FÍ%Ì-Ò6Wð õ ˜!˜c™' 1Ñ%Ô%ˆBØ˜”ˆBà”˜”˜qÒ ð TØ”H˜Q”K 1¨¡8Ò+ðTà—I’I˜a‘L”L AÒ%ðTð —Y’Y˜q‘\”\ QÒ&ÐR¨2¬8°A¬;¸!Ò+;Ð+QÀÇ	Â	È!ÁÄÐPQÒ@Qð	 ð ˜”ˆBà”˜”˜rÒ!ð UØ”H˜Q”K 1¨¡8Ò+ðUà—I’I˜a‘L”L AÒ%ðUð —Y’Y˜q‘\”\ RÒ'ÐS¨B¬H°Q¬K¸1Ò,<Ð,RÀÇÂÈ1ÁÄÐQRÒARð	 õ ŒLØÐ6˜ZÐ6¨Jðð ð ð ð ð ð ð ð ñô ð ñ ð ˆU�> >Ñ2Ô2ñ P	ÝŒ}Ô ð >å)1°$´*¸Q´-ÀÑ)DÔ)DÀtÄzÐRSÄ}Ñ)TÐ&Ý)1°$´*¸Q´-ÀÑ)DÔ)DÀtÄzÐRSÄ}Ñ)TÐ&Ý#.Ô#9Ð Ð å)1°$´*¸Q´-ÀÑ)EÔ)EÍÝ˜TœZ¨œ]¨BÑ/Ô/°ñIô Iñ *Ð&õ *2°$´*¸Q´-ÀÑ)EÔ)EÍÝ˜TœZ¨œ]¨BÑ/Ô/°ñIô Iñ *Ð&õ $/Ô#=Ð ÝŒLØ˜”
× Ò Ñ"Ô"Ð&<Ò<ð 5Ø˜A”JÔ$­Ô(<Ò<ð5à˜A”J×$Ò$Ñ&Ô&Ð*@Ò@ð5ð ˜A”JÔ$­Ô(<Ò<ð5ð ˜a”LÐ$4Ò4ð	5ð
 ˜a”LÐ$4Ò4ðð ð ð ð ð ð ð ð ð ñô ð ñ ð  Ð °Ñ?Ô?ñ 4	Ý%-¨a°Ñ%5Ô%5½ÅÈ!ÈRÁÄÐRSÑ8TÔ8TÑ%TÐ"Ý%-¨a°Ñ%5Ô%5½ÅÈ!ÈRÁÄÐRSÑ8TÔ8TÑ%TÐ"Ý*Ô9ÐÝŒLØ˜”
× Ò Ñ"Ô"Ð&<Ò<ð 5Ø˜A”JÔ$­Ô(;Ò;ð5à˜A”J×$Ò$Ñ&Ô&Ð*@Ò@ð5ð ˜A”JÔ$­Ô(;Ò;ð5ð ˜a”LÐ$4Ò4ð	5ð
 ˜a”LÐ$4Ò4ðð ð ð ð ð ð ð ð ð ñô ð ñ ð ˆU�> >Ñ2Ô2ñ #	Ý%-¨a°Ñ%5Ô%5½ÅÈ!ÈRÁÄÐRSÑ8TÔ8TÑ%TÐ"Ý%-¨a°Ñ%5Ô%5½ÅÈ!ÈRÁÄÐRSÑ8TÔ8TÑ%TÐ"Ý*Ô9ÐÝŒLØ˜”
× Ò Ñ"Ô"Ð&<Ò<ð 	5Ø˜A”JÔ$­Ô(;Ò;ð	5à˜A”J×$Ò$Ñ&Ô&¨!Ò+ð	5ð ˜A”JÔ$­¬Ò5ð	5ð ˜A”J×$Ò$Ñ&Ô&Ð*@Ò@ð		5ð
 ˜A”JÔ$­Ô(;Ò;ð	5ð ˜A”J×$Ò$Ñ&Ô&¨!Ò+ð	5ð ˜A”JÔ$­¬Ò5ð	5ð ˜a”LÐ$4Ò4ð	5ð ˜a”LÐ$4Ò4ðð ð ð ð ð ð ð ð ð ñô ð ð õ$ ŒLØð
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ñô ð ð (Ð3��¸¼€JÝŒ;�q˜! :°d´kÐBÑBÔBÐBr;   rY  Úcontraction_dimsc                 ó6   — t          | |||||||	|||¬¦  «        S )N)r•  r—  r¡  r¢  rV  )rþ  )r�   r¤  rS  rŸ  r¡  rT  r   r¢  r•  rY  rÿ  rV  s               r9   Úmeta_scaled_mm_v2r	  p  s<   € õ %ØØØØØØØØØØØ%ðñ ô ð r;   c                 ó`   — t          | ||||d¬¦  «         |                      | j        ¦  «        S ©NT)r¥  r¿  ©r�   r‰   r–   r¦   rÅ  rÃ  s         r9   Úmeta_scatter_reduce_twor	  Ž  s3   € õ �d˜C ¨¨VÀTÐJÑJÔJÐJØ�>Š>˜$œ*Ñ%Ô%Ð%r;   c                 ó0   — t          | ||||d¬¦  «         | S r	  rÃ  r	  s         r9   Úmeta_scatter_reduce__twor	  •  s"   € å�d˜C ¨¨VÀTÐJÑJÔJÐJØ€Kr;   c                ód  ‡ — t          j        d‰                      ¦   «         cxk     odk    nc ˆ fd„¦  «         ‰                      ¦   «         dk    r&t          j        |t           j        ‰ j        ¬¦  «        S t          j        ‰                      d¦  «        |t           j        ‰ j        ¬¦  «        S )Nr   r%  c                  ó2   •— d‰                       ¦   «         › �S )NzAThe probability distributions dimensions must be 1 or 2, but got rÀ   rN  s   €r9   ri   z"meta_multinomial.<locals>.<lambda>   s   ø€ ÐaÐTY×T]ÒT]ÑT_ÔT_ÐaÐa€ r;   r4   r3  )rZ   rk   r‰   r�   r˜   r†   rÇ   )r  Únum_samplesÚreplacementr£   s   `   r9   Úmeta_multinomialr	  ›  s¬   ø€ õ 
„LØ	ˆE�IŠI‰KŒKÐÐÒÐ˜1ÒÐÐÐØaÐaÐaÐañô ð ð ‡y‚y�{„{�aÒÐÝŒ{˜;­e¬jÀÄÐNÑNÔNÐNÝŒ;Ø�
Š
�1‰Œ�{­%¬*¸U¼\ðñ ô ð r;   c                 ó   — d}| D ]}||z  }Œ|S r3   r5   )Úvsr¹  Úvs      r9   Úmultiply_integersr	  ©  s&   € Ø	€AØð ð ˆØ	ˆQ‰ˆˆØ€Hr;   c                 ó†  ‡ ‡‡‡— t          j        t          ‰¦  «        ‰k    ˆˆfd„¦  «         ‰dz   Št          j        t          ‰ ¦  «        ‰k    ˆˆ fd„¦  «         t          j        t          d„ ‰ dd …         D ¦   «         ¦  «        ot          d„ ‰D ¦   «         ¦  «        ˆ ˆfd„¦  «         ‰ d d…         \  }}||g‰¢R S )Nc                  ó.   •— d‰ › dt          ‰¦  «        › �S )Nz%It is expected output_size equals to ú, but got size r$  )Únum_spatial_dimsró  s   €€r9   ri   z'upsample_common_check.<locals>.<lambda>³  s#   ø€ ÐkÐ8HÐkÐkÕY\Ð]hÑYiÔYiÐkÐk€ r;   r%  c                  ó.   •— d‰ › dt          ‰¦  «        › �S )Nz$It is expected input_size equals to r	  r$  )Úexpected_input_dimsrÆ  s   €€r9   ri   z'upsample_common_check.<locals>.<lambda>¸  s#   ø€ ÐlÐ7JÐlÐlÕ[^Ð_iÑ[jÔ[jÐlÐl€ r;   c              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   Nr5   ©rQ   r   s     r9   rw   z(upsample_common_check.<locals>.<genexpr>¼  s&   è è € Ð*Ð*�aˆA�ŠEÐ*Ð*Ð*Ð*Ð*Ð*r;   c              3   ó"   K  — | ]
}|d k    V — ŒdS r	  r5   r	  s     r9   rw   z(upsample_common_check.<locals>.<genexpr>¼  s&   è è € Ð2NÐ2N¸Q°1°q²5Ð2NÐ2NÐ2NÐ2NÐ2NÐ2Nr;   c                  ó   •— d‰ › d‰› �S )NzDInput and output sizes should be greater than 0, but got input size z and output size r5   )rÆ  ró  s   €€r9   ri   z'upsample_common_check.<locals>.<lambda>½  s)   ø€ ð AØ ðAð AØ3>ðAð A€ r;   )rZ   rk   rî   ri  )rÆ  ró  r	  r@  Úchannelsr	  s   ```  @r9   Úupsample_common_checkr	  °  s  øøøø€ Ý	„LÝˆKÑÔÐ,Ò,ØkÐkÐkÐkÐkñô ð ð +¨QÑ.ÐÝ	„LÝˆJ‰ŒÐ.Ò.ØlÐlÐlÐlÐlñô ð õ
 
„LÝÐ*Ð*˜: a b bœ>Ð*Ñ*Ô*Ñ*Ô*ÐN­sÐ2NÐ2NÀ+Ð2NÑ2NÔ2NÑ/NÔ/Nð	Að 	Að 	Að 	Að 	Añô ð ð " " 1 "”~Ñ€FˆHØ�HÐ+˜{Ð+Ð+Ð+r;   c                 óp  ‡ — t          j        ‰                      ¦   «         dk    p(t          ‰                      ¦   «         dd …         ¦  «        ˆ fd„¦  «         t          ‰                      ¦   «         |d¬¦  «        }‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr   r4   c                  ó2   •— d‰                       ¦   «         › �S )Nz>Non-empty 3D data tensor expected but got a tensor with sizes rÆ   rN  s   €r9   ri   z$upsample_nearest1d.<locals>.<lambda>Ë  ó   ø€ Ð_ÐQV×Q[ÒQ[ÑQ]ÔQ]Ð_Ð_€ r;   ©r	  rÏ   ©
rZ   rk   rš   r	  rÇ   r	  r›   r‚  rT   r   )r  ró  ÚscalesÚfull_output_sizes   `   r9   Úupsample_nearest1dr%	  Å  ó´   ø€ õ 
„LØ�Š‰Œ˜ÒÐAÕ/°·
²
±´¸Q¸R¸RÔ0@ÑAÔAØ_Ð_Ð_Ð_ñô ð õ -Ø�
Š
‰Œ�k°Aðñ ô Ðð �?Š?Ð+Ñ,Ô,×/Ò/ÝÔ1°%Ñ8Ô8ð 0ñ ô ð r;   c                 óØ  ‡ — t          j        ‰                      ¦   «         dk    p(t          ‰                      ¦   «         dd …         ¦  «        ˆ fd„¦  «         t          ‰                      ¦   «         |d¬¦  «        }‰                      |¦  «        }t          j        ‰ ¦  «        }‰ j	        \  }}}}‰ j
        j        dk    r|dk     rt           j        }|                     |¬¦  «        }|S )	Nr   r4   c                  ó2   •— d‰                       ¦   «         › �S ©Nz>Non-empty 4D data tensor expected but got a tensor with sizes rÆ   rN  s   €r9   ri   z$upsample_nearest2d.<locals>.<lambda>Û  r 	  r;   r%  r!	  r  re  rÏ   )rZ   rk   rš   r	  rÇ   r	  r›   rT   r   rœ   r†   r}   rÓ   Ú
contiguous)	r  ró  Úscales_hÚscales_wr$	  r  rÐ   rW   Ú
n_channelss	   `        r9   Úupsample_nearest2dr.	  Õ  sí   ø€ õ 
„LØ�Š‰Œ˜ÒÐAÕ/°·
²
±´¸Q¸R¸RÔ0@ÑAÔAØ_Ð_Ð_Ð_ñô ð õ -Ø�
Š
‰Œ�k°Aðñ ô Ðð �_Š_Ð-Ñ.Ô.€Fõ Ô/°Ñ6Ô6€Mð  œ+Ñ€A€z�1�aØ„|Ô˜FÒ"Ð" z°A¢~ ~ÝÔ/ˆà×Ò¨]ÐÑ;Ô;€Fà€Mr;   ró  rÆ  r+	  r,	  c                 óv  ‡ ‡‡— t          ||d¬¦  «        Št          j        ‰ j        dk    ˆ fd„¦  «         t	          d¦  «        D ]9Št          j        ‰                      ‰¦  «        ‰‰         k    ˆˆ ˆfd„¦  «         Œ:‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr%  r!	  re  c                  ó   •— d‰ j         › �S ©NzFExpected grad_output to be a tensor of dimension 4 but got: dimension r_  r  s   €r9   ri   z-upsample_nearest2d_backward.<locals>.<lambda>  ó   ø€ ÐkÐYdÔYiÐkÐk€ r;   c            
      óR   •— d‰› d‰ ‰         › d‰› d‰                      ‰¦  «        › �S )NzCExpected grad_output to have the same shape as output; output.size(ú) = z but got grad_output.size(rÆ   ©r$	  rZ  r  s   €€€r9   ri   z-upsample_nearest2d_backward.<locals>.<lambda>  s]   ø€ ðJØ !ðJð JØ'7¸Ô':ðJð Jà-.ðJð Jà4?×4DÒ4DÀQÑ4GÔ4GðJð Jð r;   rÏ   )
r	  rZ   rk   rÉ   rð   rÇ   r›   r‚  rT   r   )rZ  ró  rÆ  r+	  r,	  r$	  r  s   `    @@r9   Úupsample_nearest2d_backwardr6	  ï  sõ   øøø€ õ -Ø�K°!ðñ ô Ðõ 
„LØÔ˜AÒØkÐkÐkÐkñô ð õ �1‰XŒXð 
ð 
ˆÝŒØ×Ò˜QÑÔÐ#3°AÔ#6Ò6ðð ð ð ð ð ñ	
ô 	
ð 	
ð 	
ð × Ò  Ñ,Ô,×/Ò/ÝÔ1°+Ñ>Ô>ð 0ñ ô ð r;   c                 óp  ‡ — t          j        ‰                      ¦   «         dk    p(t          ‰                      ¦   «         dd …         ¦  «        ˆ fd„¦  «         t          ‰                      ¦   «         |d¬¦  «        }‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr   r4   c                  ó2   •— d‰                       ¦   «         › �S )Nz>Non-empty 5D data tensor expected but got a tensor with sizes rÆ   rN  s   €r9   ri   z$upsample_nearest3d.<locals>.<lambda>  r 	  r;   r1   r!	  rÏ   r"	  )r  ró  Úscales_dr+	  r,	  r$	  s   `     r9   Úupsample_nearest3dr:	    r&	  r;   c                 ód  — t          j        | ¦  «        t          j        | t           j        ¬¦  «        }}|�÷|�õt          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚|j        }|                     ¦   «         }	t          ||¦  «        }t          ||¦  «        }| 
                    ||	¦  «         | 
                    ||	¦  «         t          ||¬¦  «         t          ||¬¦  «         ||fS ||fS )Nr”   zvalues must be TensorLike, got z indices must be TensorLike, got )ræ  rç  )rZ   r¡   rÚ   rt   r    r�   r}   rœ   rñ   r"   rö   r$   )
r�   Ústabler‰   Ú
descendingrÖ   r×   r	  r  rÌ   Ú
out_strides
             r9   Ú	meta_sortr?	  "  s.  € õ Ô˜DÑ!Ô!¥5Ô#3°DÅÄÐ#LÑ#LÔ#L€q€AØÐ˜gÐ1Ý˜&¥*Ñ-Ô-ð 	SÝ Ð!QÅ4ÈÁ<Ä<Ð!QÐ!QÑRÔRÐRÝ˜'¥:Ñ.Ô.ð 	UÝ Ð!SÅDÈÁMÄMÐ!SÐ!SÑTÔTÐTð ”Gˆ	Ø—X’X‘Z”Zˆ
Ý" 6¨9Ñ5Ô5ˆÝ# G¨YÑ7Ô7ˆØ×Ò˜9 jÑ1Ô1Ð1Ø×Ò˜I zÑ2Ô2Ð2Ý ¨FÐ3Ñ3Ô3Ð3Ý ¨GÐ4Ñ4Ô4Ð4Ø�wˆÐØˆaˆ4€Kr;   c           	      ó  ‡ ‡‡‡‡‡‡‡— t          j        ‰ j        dk    ˆ fd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         ‰                      d¦  «        Š‰�wt          j        ‰j        dk    ˆfd„¦  «         t          j        ‰                     ¦   «         ‰k    ˆˆfd„¦  «         t          j        ‰j        ‰j        k    ˆˆfd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰                      d	¦  «        ‰z  ‰z  Št          j        ‰                     ¦   «         ‰k    ˆˆˆˆ ˆfd
„¦  «         t          j        t          ˆ fd„‰‰‰‰fD ¦   «         ¦  «        d„ ¦  «         d S )Nr%  c                  ó   •— ‰ j         › d�S ©Nz != 2r_  )Úinput_gatess   €r9   ri   z%rnn_cell_checkSizes.<locals>.<lambda>G  ó   ø€ °;Ô3CÐ0JÐ0JÐ0J€ r;   c                  ó&   •— ‰j         › d‰ j         › �S ©NrŸ  rK  )Úhidden_gatesrC	  s   €€r9   ri   z%rnn_cell_checkSizes.<locals>.<lambda>J  s   ø€ �;Ô$Ð>Ð>¨,Ô*<Ð>Ð>€ r;   r4   c                  ó   •— ‰ j         › d�S )Nz != 1r_  )Ú
input_biass   €r9   ri   z%rnn_cell_checkSizes.<locals>.<lambda>N  s   ø€ °j´oÐ3LÐ3LÐ3L€ r;   c                  ó6   •— ‰                      ¦   «         › d‰ › �S rF	  r4  )Ú
gates_sizerI	  s   €€r9   ri   z%rnn_cell_checkSizes.<locals>.<lambda>Q  s!   ø€ �z×'Ò'Ñ)Ô)Ð;Ð;¨zÐ;Ð;€ r;   c                  ó&   •— ‰j         › d‰ j         › �S rF	  rK  )Úhidden_biasrI	  s   €€r9   ri   z%rnn_cell_checkSizes.<locals>.<lambda>U  s   ø€ �zÔ'Ð@Ð@¨[Ô->Ð@Ð@€ r;   c                  ó   •— ‰ j         › d�S rB	  r_  )Úprev_hiddens   €r9   ri   z%rnn_cell_checkSizes.<locals>.<lambda>W  rD	  r;   r   c            
      óp   •— ‰                      ¦   «         › d‰                     d¦  «        › d‰› d‰› d‰ › d�
S )NrŸ  r   z * z // z (aka r|   )rš   rÇ   )Úexpected_prev_hidden_numelÚfactorrK	  rC	  rO	  s   €€€€€r9   ri   z%rnn_cell_checkSizes.<locals>.<lambda>[  sL   ø€ �;×$Ò$Ñ&Ô&ÐÐ¨K×,<Ò,<¸QÑ,?Ô,?ÐÐÀJÐÐÐTZÐÐÐb|ÐÐÐ€ r;   c              3   ó8   •K  — | ]}|j         ‰j         k    V — Œd S rE   r^  )rQ   r>   rC	  s     €r9   rw   z&rnn_cell_checkSizes.<locals>.<genexpr>^  sA   øè è € ð 
ð 
àð ŒH˜Ô*Ò*ð
ð 
ð 
ð 
ð 
ð 
r;   c                  ó   — dS )Nz%expected all inputs to be same devicer5   r5   r;   r9   ri   z%rnn_cell_checkSizes.<locals>.<lambda>b  s   € Ð7€ r;   )rZ   rk   rÉ   rœ   rÇ   rš   ri  )rC	  rG	  rI	  rM	  rR	  rO	  rQ	  rK	  s   ``````@@r9   Úrnn_cell_checkSizesrU	  ?  sò  øøøøøøøø€ õ 
„L�Ô! QÒ&Ð(JÐ(JÐ(JÐ(JÑKÔKÐKÝ	„LØÔ˜\Ô/Ò/Ø>Ð>Ð>Ð>Ð>ñô ð ð ×!Ò! !Ñ$Ô$€JØÐÝŒ�Z”_¨Ò)Ð+LÐ+LÐ+LÐ+LÑMÔMÐMÝŒØ×ÒÑÔ *Ò,Ø;Ð;Ð;Ð;Ð;ñ	
ô 	
ð 	
õ 	ŒØÔ Ô 1Ò1Ø@Ð@Ð@Ð@Ð@ñ	
ô 	
ð 	
õ 
„L�Ô! QÒ&Ð(JÐ(JÐ(JÐ(JÑKÔKÐKØ!,×!1Ò!1°!Ñ!4Ô!4°zÑ!AÀVÑ!KÐÝ	„LØ×ÒÑÔÐ9Ò9ØÐÐÐÐÐÐÐñô ð õ 
„LÝð 
ð 
ð 
ð 
à" J°¸[ÐIð
ñ 
ô 
ñ 	
ô 	
ð 	8Ð7ñô ð ð ð r;   c                 óô   — t          | |||d|¦  «         t          j        | t          j        ¬¦  «        }t          j        |t          j        ¬¦  «        }t          j        |t          j        ¬¦  «        }|||fS )Nre  rÏ   )rU	  rZ   r¡   rÓ   )rC	  rG	  ÚcxrI	  rM	  Ú	workspaceÚhyÚcys           r9   Ú_thnn_fused_lstm_cell_metar[	  f  sq   € õ ˜ \°:¸{ÈAÈrÑRÔRÐRÝÔ  ½EÔ<SÐTÑTÔT€IÝ	Ô	˜"­EÔ,CÐ	DÑ	DÔ	D€BÝ	Ô	˜"­EÔ,CÐ	DÑ	DÔ	D€BØ��IÐÐr;   c                 ót  — t          |¦  «        dk    }|r%t          |¦  «        }|d         }| j        d         }n:|
r| j        d         n| j        d         }|
r| j        d         n| j        d         }d}|rdnd}|dk    r|n|}|r|||z  g}n|
r||||z  gn||||z  g}|                      |¦  «        }|	|z  ||g}|€t          j        d| j        ¬¦  «        }n|                     |¦  «        }|                     |	|z  ||g¦  «        }|rdnd}|                      |t          j        ¬¦  «        }|||||fS )Nr   r4   r¿   r%  r^  r”   )rî   rœ   r›   rZ   r�   r†   rQ  )r  r“  Úweight_stride0Ú
weight_bufÚhxrW	  rµ  Úhidden_sizeÚ	proj_sizeÚ
num_layersÚbatch_firstÚdropoutÚtrainÚbidirectionalrQ  Údropout_stateÚis_input_packedÚ
seq_lengthÚ
mini_batchÚbatch_sizes_sumÚnum_directionsÚout_sizerÌ   r  Ú
cell_shaperZ	  rY	  Úreserve_shapeÚreserves                                r9   Ú
_cudnn_rnnrq	  u  s‰  € õ& ˜+Ñ&Ô&¨!Ò+€OØð Ý˜Ñ%Ô%ˆ
Ø  ”^ˆ
Øœ+ aœ.ˆˆà'2ÐF�U”[ ”^�^¸¼ÀA¼ˆ
Ø'2ÐF�U”[ ”^�^¸¼ÀA¼ˆ
Øˆà'Ð.�Q�Q¨Q€NØ%¨šN˜Nˆyˆy°€HØð 
Ø$ h°Ñ&?Ð@ˆ	ˆ	ð ðEˆZ˜ X°Ñ%>Ð?Ð?à˜j¨(°^Ñ*CÐDð 	ð
 �_Š_˜YÑ'Ô'€Fà˜~Ñ-¨z¸;ÐG€JØ	€zÝŒ[˜ 5¤<Ð0Ñ0Ô0ˆˆà�\Š\˜*Ñ%Ô%ˆà	�Š�z NÑ2°JÀÐIÑ	JÔ	J€Bð Ð%�A�A A€MØ�oŠo˜mµ5´;ˆoÑ?Ô?€Gà�2�r˜7 JÐ.Ð.r;   c                 óÖ   — d}|D ]1}|                      ¦   «         dk    r||                      ¦   «         z  }Œ2|                      |f¦  «        }t          | |||||||d|||	|
|||¦  «        S rÍ  )rš   r›   rq	  )r  r“  r]	  r_	  rW	  rµ  r`	  rb	  rc	  rd	  re	  rf	  rQ  rg	  Útotal_weight_elemsrT  r^	  s                    r9   Ú
miopen_rnnrt	  ­  s•   € ð& ÐØð ,ð ,ˆØ�7Š7‰9Œ9�qŠ=ˆ=Ø !§'¢'¡)¤)Ñ+Ðøà—’Ð"4Ð!6Ñ7Ô7€JÝØØØØØ
Ø
ØØØ	ØØØØØØØñ!ô ð r;   c                 óð  — |r| j         d         n| j         d         }|r| j         d         n| j         d         }|
}|r|||gn|||g}|                      |¦  «        }|€t          j        d| j        ¬¦  «        }n|                     |j         ¦  «        }|€t          j        d| j        ¬¦  «        }n|                     |j         ¦  «        }t          j        d| j        t          j        ¬¦  «        }||||fS )Nr4   r   r^  rÙ   )rœ   r›   rZ   r�   r†   rQ  )r  Úw0Úw1Úw2Úw3Úhx_Úcx_rë   rQ  rµ  r`	  rb	  Ú
has_biasesrf	  rc	  re	  ri	  rj	  Úoutput_chanelsrÌ   r  rY	  rZ	  rX	  s                           r9   Úmkldnn_rnn_layerr~	  Ú  sþ   € ð& $/ÐB�”˜Q”�°E´KÀ´N€JØ#.ÐB�”˜Q”�°E´KÀ´N€JØ €Nð ð	6ˆ�Z Ð0Ð0à˜* nÐ5ð ð
 �_Š_˜YÑ'Ô'€FØ
€{ÝŒ[˜ 5¤<Ð0Ñ0Ô0ˆˆà�]Š]˜3œ9Ñ%Ô%ˆØ
€{ÝŒ[˜ 5¤<Ð0Ñ0Ô0ˆˆà�]Š]˜3œ9Ñ%Ô%ˆÝ”˜A e¤l½%¼+ÐFÑFÔF€IØ�2�r˜9Ð$Ð$r;   c                 óÊ   ‡‡— | j         dk    r%t          j        ‰dk    p‰dk    ˆˆfd„¦  «         d S t          j        |                      ‰¦  «        dk    ˆˆfd„¦  «         d S )Nr   r¿   c                  ó   •— ‰› d‰ › �S )Nz4: Expected reduction dim -1 or 0 for scalar but got r5   ©r‰   r8  s   €€r9   ri   z'zero_numel_check_dims.<locals>.<lambda>  s   ø€ �wÐYÐYÐTWÐYÐY€ r;   c                  ó   •— ‰› d‰ › d�S )Nz: Expected reduction dim z to have non-zero size.r5   r�	  s   €€r9   ri   z'zero_numel_check_dims.<locals>.<lambda>  s   ø€ �wÐUÐU¸ÐUÐUÐU€ r;   )rÉ   rZ   r™   rÇ   )r�   r‰   r8  s    ``r9   Úzero_numel_check_dimsrƒ	    s�   øø€ Ø„y�A‚~€~ÝÔØ�1ŠHÐ!˜˜rš	ØYÐYÐYÐYÐYñ	
ô 	
ð 	
ð 	
ð 	
õ
 	ÔØ�IŠI�c‰NŒN˜aÒØUÐUÐUÐUÐUñ	
ô 	
ð 	
ð 	
ð 	
r;   c                 óÒ   ‡ — |�5t          ||                     ¦   «         ¦  «        }t          ||‰ ¦  «         d S t          j        |                     ¦   «         dk    ˆ fd„¦  «         d S )Nr   c                  ó   •— ‰ › d�S )Nz@: Expected reduction dim to be specified for input.numel() == 0.r5   rš  s   €r9   ri   z%check_argmax_argmin.<locals>.<lambda>  s   ø€ �tÐ]Ð]Ð]€ r;   )rÛ   r‰   rƒ	  rZ   rk   rš   )r  r�   r‰   s   `  r9   Úcheck_argmax_argminr†	    sq   ø€ Ø
€Ý˜S $§(¢(¡*¤*Ñ-Ô-ˆÝ˜d C¨Ñ.Ô.Ð.Ð.Ð.åŒØ�JŠJ‰LŒL˜AÒØ]Ð]Ð]Ð]ñ	
ô 	
ð 	
ð 	
ð 	
r;   c                 óÆ   — t          d| |¦  «         t          j        | j        |�|fnd ¦  «        }t	          | ||¦  «        }|                      |t          j        ¬¦  «        S )NÚargmaxr”   )r†	  rT   rã  rœ   rä  r›   rZ   rÚ   )r�   r‰   ræ  rï  rœ   s        r9   Úargmax_argmin_metar‰	    s[   € å˜ $¨Ñ,Ô,Ð,ÝÔ ¤
°c°o¨S¨F¨FÈ4ÑPÔP€DÝ$ T¨4°Ñ9Ô9€EØ�>Š>˜%¥u¤{ˆ>Ñ3Ô3Ð3r;   c                 ól   — |t           j        k    rt           j        }t          j        d||||¬¦  «        S )Nr5   r6  )rZ   Újaggedr  r�   )r   rb   r…   r†   r‡   s        r9   Úscalar_tensorrŒ	  #  s<   € ð
 •”ÒÐÝ”ˆÝŒ;Ø
�% ¨vÀ*ðñ ô ð r;   c                 óÐ  — t          ||                      ¦   «         d¬¦  «        }|                      ¦   «         dk    rdn|                      |¦  «        }t          j        |dk    ¦  «         t          j        ||k    d„ ¦  «         t          | j        ¦  «        }t          |¦  «        dk    r|||<   |                      |¦  «        |                      |t          j	        ¬¦  «        fS )NT©r…  r   r4   c                  ó   — dS )Nzk not in range for dimensionr5   r5   r;   r9   ri   ztopk_meta.<locals>.<lambda>5  s   € Ð)G€ r;   r”   )
rÛ   r‰   rÇ   rZ   rk   rï   rœ   rî   r›   rÚ   )r�   r   r‰   Úlargestr  Ú	sliceSizeÚtopKSizes          r9   Ú	topk_metar“	  /  sÃ   € õ ˜˜dŸhšh™jœj°dÐ
;Ñ
;Ô
;€CØ—X’X‘Z”Z 1’_�_��¨$¯)ª)°C©.¬.€IÝ	„L��a’ÑÔÐÝ	„L��i’Ð!GÐ!GÑHÔHÐHå�D”JÑÔ€HÝ
ˆ8�}„}�qÒÐØˆ�‰Ø�>Š>˜(Ñ#Ô# T§^¢^°HÅEÄK ^Ñ%PÔ%PÐPÐPr;   c                 óÆ   — |€|€t          d¦  «        ‚|                     ¦   «         }|                      ¦   «         }	t          j        ||	j        |	j        |	j        ¬¦  «        S )Nz;segment_reduce(): Either lengths or offsets must be defined)rb   r†   r…   )r�   r*	  rZ   r¡   rb   r†   r…   )
r¨  r  rV  rÅ  rÐ  rÑ  rÒ  rÔ  Údata_contigÚgrad_contigs
             r9   Úmeta__segment_reduce_backwardr—	  =  sq   € ð
 €˜7˜?ÝØIñ
ô 
ð 	
ð —/’/Ñ#Ô#€KØ—/’/Ñ#Ô#€KÝÔØØÔØÔ!ØÔ!ð	ñ ô ð r;   c                 ó4  ‡— ddl m} t          ‰|                      ¦   «         d¬¦  «        Š|                      ¦   «         dk    r|                      ‰¦  «        nd}t          j         ||dk    ||k    ¦  «        ˆfd„¦  «         t          | j        d ‰…         | j        ‰dz   d …         z   ¦  «        }|r.|                      ¦   «         dk    r| 	                    ‰d¦  «         |  
                    |¦  «        |  
                    |t
          j        ¬¦  «        fS )Nr   r1  TrŽ	  r4   c                  ó   •— d‰ › �S )Nz9kthvalue(): selected number k out of range for dimension r5   rÀ   s   €r9   ri   zkthvalue_meta.<locals>.<lambda>Y  s   ø€ ÐQÈCÐQÐQ€ r;   r”   )r  r'  rÛ   r‰   rÇ   rZ   rk   rï   rœ   r‰  r›   rÚ   )r�   r   r‰   ræ  r'  ÚdimSizerœ   s     `    r9   Úkthvalue_metar›	  P  s  ø€ ð >Ð=Ð=Ð=Ð=Ð=å
˜˜dŸhšh™jœj°dÐ
;Ñ
;Ô
;€CØ $§¢¡
¤
¨Q¢ ˆd�iŠi˜‰nŒnˆn°A€GÝ	„LØˆ��Q’˜˜WšÑ%Ô%ØQÐQÐQÐQñô ð õ
 �”˜D˜S˜DÔ! D¤J¨s°Q©w¨y¨yÔ$9Ñ9Ñ:Ô:€EØð �4—8’8‘:”: ’>�>Ø�Š�S˜!ÑÔÐØ�>Š>˜%Ñ Ô  $§.¢.°½e¼k .Ñ"JÔ"JÐJÐJr;   c                 óÎ  — | �| n|}t          j        |                     ¦   «         dk    d„ ¦  «         |                     ¦   «         }| �,t          j        |                      ¦   «         |k    d„ ¦  «         |�,t          j        |                     ¦   «         |k    d„ ¦  «         t          j        |                     ¦   «         |k    d„ ¦  «         t          j        |                     ¦   «         |k    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         |d         |d	         z  d
z  k    d„ ¦  «         d S )Nr%  c                  ó   — dS ©NÚ r5   r5   r;   r9   ri   z(checkLSTMBackwardSizes.<locals>.<lambda>h  s   € °"€ r;   c                  ó   — dS rž	  r5   r5   r;   r9   ri   z(checkLSTMBackwardSizes.<locals>.<lambda>k  ó   € ¸€ r;   c                  ó   — dS rž	  r5   r5   r;   r9   ri   z(checkLSTMBackwardSizes.<locals>.<lambda>m  r¡	  r;   c                  ó   — dS rž	  r5   r5   r;   r9   ri   z(checkLSTMBackwardSizes.<locals>.<lambda>n  ó   € °€ r;   c                  ó   — dS rž	  r5   r5   r;   r9   ri   z(checkLSTMBackwardSizes.<locals>.<lambda>o  r¤	  r;   c                  ó   — dS rž	  r5   r5   r;   r9   ri   z(checkLSTMBackwardSizes.<locals>.<lambda>p  s   € ¨r€ r;   r   r4   re  c                  ó   — dS rž	  r5   r5   r;   r9   ri   z(checkLSTMBackwardSizes.<locals>.<lambda>q  s   € ÈR€ r;   )rZ   rk   r‰   rÇ   rš   )Úgrad_hyÚgrad_cyrW	  rZ	  rX	  Údefined_gradÚexp_sizes          r9   ÚcheckLSTMBackwardSizesr¬	  f  s2  € Ø%Ð1�7�7°w€LÝ	„L�×!Ò!Ñ#Ô# qÒ(¨*¨*Ñ5Ô5Ð5Ø× Ò Ñ"Ô"€HØÐÝŒ�W—\’\‘^”^ xÒ/°°Ñ<Ô<Ð<ØÐÝŒ�W—\’\‘^”^ xÒ/°°Ñ<Ô<Ð<Ý	„L�—’‘”˜hÒ&¨
¨
Ñ3Ô3Ð3Ý	„L�—’‘”˜hÒ&¨
¨
Ñ3Ô3Ð3Ý	„L�—’‘” AÒ% z zÑ2Ô2Ð2Ý	„L�—’Ñ"Ô" h¨q¤k°H¸Q´KÑ&?À!Ñ&CÒCÀZÀZÑPÔPÐPÐPÐPr;   c                 óà   — | €|€dS t          | ||||¦  «         t          j        |t          ¬¦  «        }t          j        |t          ¬¦  «        }|r|                     dd¬¦  «        nd }|||fS )N©NNNrÏ   r   F)ræ  )r¬	  rZ   r¡   Úlegacy_contiguous_memory_formatr]  )	r¨	  r©	  rW	  rZ	  rX	  Úhas_biasÚ
grad_gatesÚgrad_cxr%  s	            r9   Ú#_thnn_fused_lstm_cell_backward_implr³	  u  sˆ   € à€˜7˜?ØÐÝ˜7 G¨R°°YÑ?Ô?Ð?ÝÔ!ØÕ!@ðñ ô €Jõ Ô˜rÕ1PÐQÑQÔQ€GØ4<ÐF�
—’˜q¨%�Ñ0Ô0Ð0À$€IØ�w 	Ð)Ð)r;   c                 ó`  — d }d }d }|d         r'|                      |                      ¦   «         ¦  «        }|d         s|d         re|                      |                     d¦  «        |                      d¦  «        f¦  «        }|                      |                     d¦  «        ¦  «        }|||fS )Nr   r4   r%  r¿   ©r›   rÇ   )r_  r^  r`  rb  r]  Úgrad_weightr%  s          r9   Úlinear_backwardr·	  ƒ  s°   € à€JØ€KØ€IØ�1„~ð ;Ø!×+Ò+¨F¯KªK©M¬MÑ:Ô:ˆ
Ø�1„~ð B˜ Qœð BØ"×,Ò,¨l×.?Ò.?ÀÑ.CÔ.CÀVÇ[Â[ÐQSÁ_Ä_Ð-UÑVÔVˆØ ×*Ò*¨<×+<Ò+<¸RÑ+@Ô+@ÑAÔAˆ	Ø˜ YÐ/Ð/r;   c                 ó,  ‡ ‡— t          j        t          ‰ j        ¦  «        dk    ˆ fd„¦  «         t          j        ‰ j        d         ‰‰z  z  dk    ˆ ˆfd„¦  «         ˆ fd„}‰ j        d         ‰‰z  z  }‰ j        d         ‰z  }‰ j        d         ‰z  }g ‰ j        d d…         ¢|‘|‘|‘R } |¦   «         }|t           j        u s|t           j        u rt          |¦  «        }nt          |¦  «        }t          j        ||‰ j	        ‰ j
        ¬	¦  «        S )
Nr%  c                  ó   •— d‰ j         › �S )Nú'Invalid input shape for pixel_shuffle: rK  rÔ   s   €r9   ri   z$meta_pixel_shuffle.<locals>.<lambda>”  s   ø€ ÐF¸$¼*ÐFÐF€ r;   r«  r   c                  ó   •— d‰ j         › d‰› �S )Nrº	  z with upscale_factor = rK  )r�   Úupscale_factors   €€r9   ri   z$meta_pixel_shuffle.<locals>.<lambda>˜  s   ø€ Ðm¸$¼*ÐmÐmÐ]kÐmÐm€ r;   c                  óœ   •— t          ‰¦  «        } | t          j        u s| t          j        u rt	          ‰¦  «        dk    r| S t          j        S rN  )r   rZ   rq  r@  r  rÓ   )r'  r�   s    €r9   Úpick_memory_formatz.meta_pixel_shuffle.<locals>.pick_memory_format›  sN   ø€ õ $ DÑ)Ô)ˆà•5Ô&Ð&Ð&¨#µÔ1GÐ*GÐ*GÝ˜$ÑÔ 5Ò(Ð(ØˆJÝÔ&Ð&r;   r  r¿   r3  )rZ   rk   rî   rœ   rq  r@  r   r   r�  rb   r†   )	r�   r¼	  r¾	  r\  ÚHrÚWrrÌ   r'  r  s	   ``       r9   Úmeta_pixel_shufflerÁ	  �  sU  øø€ å	„LÝˆDŒJ‰Œ˜!ÒØFÐFÐFÐFñô ð õ 
„LØŒ
�2Œ˜.¨>Ñ9Ñ:¸aÒ?ØmÐmÐmÐmÐmñô ð ð
'ð 'ð 'ð 'ð 'ð" 	Œ
�2Œ˜>¨NÑ:Ñ;€AØ	Œ�BŒ˜.Ñ	(€BØ	Œ�BŒ˜.Ñ	(€BØ-�$”*˜S˜b˜S”/Ð- 1Ð- bÐ-¨"Ð-Ð-€Ið Ð
Ñ
Ô
€CØ
�eÔ!Ð!Ð! S­EÔ,BÐ%BÐ%BÝ4°YÑ?Ô?ˆˆå1°)Ñ<Ô<ˆÝÔØ�; d¤j¸¼ðñ ô ð r;   c                 ó
  — |                       | j        t          j        ¬¦  «        }|                      |j        t          j        ¬¦  «        }|                      |j        t          j        ¬¦  «        }|                      |j        t          j        ¬¦  «        }|                      |j        t          j        ¬¦  «        }d}||k    rd|z  }n|j        d         }|                      |gt          j        ¬¦  «        }|||||||fS )Nr”   r1   re  r   )r›   rœ   rZ   r^   )r  Úweight0Úweight1Úweight2Úweight3rz	  Úcx_tmpr  Úhy_Úcy_Úgrad_output_r_optÚgrad_hy_r_optÚgrad_cy_r_optrë   rµ  r`	  rb	  r|	  re	  rf	  rQ  rc	  rX	  Údiff_xÚdiff_hxÚdiff_cxÚdiff_w1Údiff_w2Ú	_GRU_MODEÚ	bias_sizeÚdiff_bs                                  r9   Úmkldnn_rnn_layer_backwardrÕ	  ¿  sä   € ð4 �_Š_˜Uœ[µ´ˆ_Ñ<Ô<€FØ�mŠm˜CœI­U¬[ˆmÑ9Ô9€GØ×Ò˜vœ|µ5´;ÐÑ?Ô?€GØ×Ò ¤µU´[ÐÑAÔA€GØ×Ò ¤µU´[ÐÑAÔA€Gð €IØˆyÒÐØ˜‘Oˆ	ˆ	à”M !Ô$ˆ	Ø×Ò 	˜{µ%´+ÐÑ>Ô>€FØ�7˜G V¨V°W¸gÐEÐEr;   )Ú	out_int32Úrightc                ót   — t          j        | |rt           j        nt           j        t           j        ¬¦  «        S )N©rb   rÐ   )rZ   r¡   r�  rÚ   rÓ   ©r�   Ú
boundariesrÖ	  r×	  s       r9   Úmeta_bucketizerÜ	  ì  s7   € õ ÔØØ&Ð7�eŒkˆk­E¬KÝÔ-ðñ ô ð r;   rÛ	  rÖ	  r×	  c                ó`   — |                      d|rt          j        nt          j        ¬¦  «        S )Nr5   r”   )r›   rZ   r�  rÚ   rÚ	  s       r9   Úmeta_bucketize_scalarrÞ	  ö  s4   € ð ×ÒØ
Ø&Ð7�eŒkˆk­E¬Kð  ñ ô ð r;   éd   c                 ó¼  ‡ ‡‡‡‡— dŠt          ‰ ¦  «        dk    r*t          j        ‰                      ¦   «         ˆ fd„¦  «         t          ‰ ¦  «        dk    r(‰                      ¦   «         rt	          j        d¦  «         t          j        t          ‰t          ¦  «        ˆˆfd„¦  «         t          j        ‰dk    ˆˆfd„¦  «         t          j        t          ‰t          ¦  «        ˆˆfd	„¦  «         t          j        t          ‰t          ¦  «        ˆˆfd
„¦  «         t          j        ‰‰k    ˆfd„¦  «         t          j	        ‰‰ j
        ‰ j        ¬¦  «        S )Nzhistc()r  c                  ó   •— d‰ j         › d�S )Nz%"histogram_cpu" not implemented for 'rK  r”   rN  s   €r9   ri   zmeta_histc.<locals>.<lambda>   s   ø€ ÐL¸e¼kÐLÐLÐL€ r;   r  z%_histc_cuda with floating point inputc                  ó,   •— ‰› dt          ‰ ¦  «        › �S )Nz#: argument 'bins' must be int, not rw  ©Úbinsr8  s   €€r9   ri   zmeta_histc.<locals>.<lambda>   s   ø€ �7ÐKÐK½tÀD¹z¼zÐKÐK€ r;   r   c                  ó   •— ‰› d‰ › �S )Nz: bins must be > 0, but got r5   rã	  s   €€r9   ri   zmeta_histc.<locals>.<lambda>   s   ø€  gÐ#QÐ#QÈ4Ð#QÐ#Q€ r;   c                  ó,   •— ‰ › dt          ‰¦  «        › �S )Nz%: argument 'min' must be Number, not rw  )r8  r  s   €€r9   ri   zmeta_histc.<locals>.<lambda>   ó   ø€ �7ÐLÐLÅÀcÁÄÐLÐL€ r;   c                  ó,   •— ‰ › dt          ‰¦  «        › �S )Nz%: argument 'max' must be Number, not rw  )r8  r	  s   €€r9   ri   zmeta_histc.<locals>.<lambda>   rç	  r;   c                  ó   •— ‰ › d�S )Nz: max must be larger than minr5   )r8  s   €r9   ri   zmeta_histc.<locals>.<lambda>   s   ø€ ¨Ð%NÐ%NÐ%N€ r;   rÙ   )r  rZ   rk   r*  rT   rX  rt   r   r   r�   r†   rb   )r  rä	  r  r	  r8  s   ````@r9   Ú
meta_histcrê	     s|  øøøøø€ ð €GÝ�5ÑÔ˜UÒ"Ð"ÝŒØ×#Ò#Ñ%Ô%ØLÐLÐLÐLñ	
ô 	
ð 	
õ �5ÑÔ˜VÒ#Ð#¨×(?Ò(?Ñ(AÔ(AÐ#ÝÔ%Ð&MÑNÔNÐNÝ	„LÝ�4�Ñ!Ô!ØKÐKÐKÐKÐKñô ð õ 
„L�˜’ÐQÐQÐQÐQÐQÑRÔRÐRÝ	„LÝ�3�ÑÔØLÐLÐLÐLÐLñô ð õ 
„LÝ�3�ÑÔØLÐLÐLÐLÐLñô ð õ 
„L�˜’ÐNÐNÐNÐNÑOÔOÐOÝŒ;�t E¤L¸¼ÐDÑDÔDÐDr;   c                 ó„  ‡ — t          ‰                      ¦   «         |d¬¦  «        }t          j        ‰                      ¦   «         dk    p2t          d„ ‰                      ¦   «         dd …         D ¦   «         ¦  «        ˆ fd„¦  «         ‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr%  r!	  r   c              3   ó"   K  — | ]
}|d k    V — ŒdS r	  r5   )rQ   rÇ   s     r9   rw   z,meta_upsample_bimode2d_aa.<locals>.<genexpr>2   s&   è è € Ð!HÐ!H¨t $¨¢(Ð!HÐ!HÐ!HÐ!HÐ!HÐ!Hr;   r4   c                  ó2   •— d‰                       ¦   «         › �S r)	  rÆ   rN  s   €r9   ri   z+meta_upsample_bimode2d_aa.<locals>.<lambda>3   r 	  r;   rÏ   )
r	  rÇ   rZ   rk   rš   ri  r›   r‚  rT   r   )r  ró  rW  r+	  r,	  r$	  s   `     r9   Úmeta_upsample_bimode2d_aarî	      sÂ   ø€ õ -Ø�
Š
‰Œ�k°Aðñ ô Ðõ 
„LØ�Š‰Œ˜ÒÐH�cÐ!HÐ!H°u·z²z±|´|ÀAÀBÀBÔ7GÐ!HÑ!HÔ!HÑHÔHØ_Ð_Ð_Ð_ñô ð ð �?Š?Ð+Ñ,Ô,×/Ò/ÝÔ1°%Ñ8Ô8ð 0ñ ô ð r;   c                 óf  ‡ ‡‡— t          ||d¬¦  «        Št          j        ‰ j        dk    ˆ fd„¦  «         t	          d¦  «        D ]1Št          j        ‰ j        ‰         ‰‰         k    ˆˆ ˆfd„¦  «         Œ2‰                      |¦  «                             t          j	        ‰ ¦  «        ¬¦  «        S )Nr%  r!	  re  c                  ó   •— d‰ j         › �S r1	  r_  r  s   €r9   ri   z4meta_upsample_bimode2d_aa_backward.<locals>.<lambda>M   r2	  r;   c            
      óR   •— d‰› d‰ ‰         › d‰› d‰                      ‰¦  «        › �S )NzD
Expected grad_output to have the same shape as output; output.size(r4	  z
but got grad_output_size(rÆ   r5	  s   €€€r9   ri   z4meta_upsample_bimode2d_aa_backward.<locals>.<lambda>R   sR   ø€ ð 9ØDEð9ð 9ØK[Ð\]ÔK^ð9ð 9àð9ð 9à!,×!1Ò!1°!Ñ!4Ô!4ð9ð 9€ r;   rÏ   )
r	  rZ   rk   rÉ   rð   rœ   r›   r‚  rT   r   )rZ  ró  rÆ  rW  r+	  r,	  r$	  r  s   `     @@r9   Ú"meta_upsample_bimode2d_aa_backwardrò	  :   sï   øøø€ õ -Ø�K°!ðñ ô Ðõ 
„LØÔ˜AÒØkÐkÐkÐkñô ð õ �1‰XŒXð 
ð 
ˆÝŒØÔ˜aÔ Ð$4°QÔ$7Ò7ð9ð 9ð 9ð 9ð 9ð 9ñ	
ô 	
ð 	
ð 	
ð × Ò  Ñ,Ô,×/Ò/ÝÔ1°+Ñ>Ô>ð 0ñ ô ð r;   c                 ó6  — t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |j        j        d„ ¦  «         t          j        |j        j        d„ ¦  «         d S )Nr4   c                  ó   — dS )Nz%found_inf must be a 1-element tensor.r5   r5   r;   r9   ri   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>_   ó   € Ð(O€ r;   c                  ó   — dS )Nz%inv_scale must be a 1-element tensor.r5   r5   r;   r9   ri   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>b   rõ	  r;   c                  ó   — dS )Nz!found_inf must be a float tensor.r5   r5   r;   r9   ri   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>f   ó   € Ð3€ r;   c                  ó   — dS )Nz!inv_scale must be a float tensor.r5   r5   r;   r9   ri   z<_amp_foreach_non_finite_check_and_unscale_.<locals>.<lambda>j   rø	  r;   )rZ   rk   rš   rb   r*  )r�   rs  Ú	inv_scales      r9   Ú*_amp_foreach_non_finite_check_and_unscale_rû	  \   s®   € å	„LØ�ŠÑÔ˜QÒÐ OÐ Oñô ð õ 
„LØ�ŠÑÔ˜QÒÐ OÐ Oñô ð õ 
„LØŒÔ)Ø3Ð3ñô ð õ 
„LØŒÔ)Ø3Ð3ñô ð ð ð r;   c                 ó*   — t          j        | ¦  «        S rE   r    )r�   ÚnanÚposinfÚneginfs       r9   Ú
nan_to_numr 
  o   r¥   r;   c                 ó
  — | j         t          j        t          j        t          j        t          j        hv rt          d| j         › d�¦  «        ‚| j        }t          ||¦  «        }t          ||¦  «        }||k    r| S t          |  
                    ¦   «         ¦  «        }t          |                      ¦   «         ¦  «        }||         ||         c||<   ||<   ||         ||         c||<   ||<   |                      ||¦  «         | S )Nz>torch.transpose_: in-place transposition is not supported for z layout)r…   rZ   r  Ú
sparse_cscr  Ú
sparse_bscr�   rÉ   rÛ   rï   rÇ   rñ   rö   )r�   Údim0rÃ  ÚndimsrÇ   rñ   s         r9   rø  rø  u   s  € à„{ÝÔÝÔÝÔÝÔð	ð ð õ ØaÈTÌ[ÐaÐaÐañ
ô 
ð 	
ð ŒI€Eå˜$ Ñ&Ô&€DÝ˜$ Ñ&Ô&€Dàˆt‚|€|Øˆå�—	’	‘”ÑÔ€DÝ�$—+’+‘-”-Ñ Ô €Fà!'¨¤¨v°d¬|Ð€Fˆ4�L�&˜‘,Ø! $œZ¨¨d¬Ð€Dˆ�J��T‘
à×Ò�T˜6Ñ"Ô"Ð"Ø€Kr;   c                 ó<  — | j         }| j        rK|                      ¦   «         }|                      ¦   «         }|dk    r|dk    st	          d|› d|› d�¦  «        ‚n+|                      ¦   «         dk    rt	          d|› d�¦  «        ‚t          | d|dk     rdnd¦  «        S )	Nr%  r   zEt_ expects a tensor with <= 2 sparse and 0 dense dimensions, but got z sparse and z dense dimensionsz6t_ expects a tensor with <= 2 dimensions, but self is r§  r4   )rÉ   ri  rk  rl  r�   r‰   rø  )r�   r
  rk  rl  s       r9   Út_r
  “   sÖ   € àŒI€Eà„~ð Ø—_’_Ñ&Ô&ˆ
Ø—N’NÑ$Ô$ˆ	Ø˜a’� I°¢N NÝ ðPØ%ðPð PØ3<ðPð Pð Pñô ð ð %3ð �8Š8‰:Œ:˜Š>ˆ>Ý ØQÈÐQÐQÐQñô ð õ �d˜A E¨A¢I I˜q˜q°1Ñ5Ô5Ð5r;   )rÖ	  r×	  ÚsideÚsorterc                ó  ‡ ‡‡— t          j        t          ‰ j        ¦  «        dk    p‰ j        d d…         ‰j        d d…         k    ˆˆ fd„¦  «         t          j        ‰d u p‰ j        ‰j        k    ˆ ˆfd„¦  «         t          j        |dk    p| d„ ¦  «         |rt           j        nt           j        }t          ‰t           j        ¦  «        r!t          j        ‰|t           j	        ¬¦  «        S t          j
        d|‰ j        ¬	¦  «        S )
Nr4   r¿   c                  ó\   •— dt          ‰j        ¦  «        › dt          ‰ j        ¦  «        › �S )Nz¯torch.searchsorted(): boundaries tensor should be 1 dimension or the first N-1 dimensions of boundaries tensor and input value tensor must match, but we got boundaries tensor z and input value tensor rg  )r�   Úsorted_sequences   €€r9   ri   z#meta_searchsorted.<locals>.<lambda>¸   s>   ø€ ð5å37¸Ô8MÑ3NÔ3Nð5ð 5õ #' t¤zÑ"2Ô"2ð5ð 5ð r;   c                  ód   •— dt          ‰ j        ¦  «        › d‰�t          ‰j        ¦  «        ng › �S )Nz[torch.searchsorted(): boundary and sorter must have the same size, but got boundary tensor z and got sorter tensor rg  )r
  r	
  s   €€r9   ri   z#meta_searchsorted.<locals>.<lambda>Ã   sK   ø€ ðBÝ#'¨Ô(=Ñ#>Ô#>ðBð Bà%+Ð%7�t�F”LÑ!Ô!Ð!¸RðBð Bð r;   rþ   c                  ó   — dS )Nzetorch.searchsorted(): side and right can't be set to opposites, got side of left while right was Truer5   r5   r;   r9   ri   z#meta_searchsorted.<locals>.<lambda>Í   s	   € ð $€ r;   rÙ	  r5   r3  )rZ   rk   rî   rœ   r�  rÚ   rt   r   r¡   rÓ   r�   r†   )r
  r�   rÖ	  r×	  r
  r	
  rb   s   ``   ` r9   Úmeta_searchsortedr
  ¨   sF  øøø€ õ 
„LÝˆOÔ!Ñ"Ô" aÒ'ð 	9ØÔ   " Ô%¨¬°C°R°C¬Ò8ð	
ð 	
ð 	
ð 	
ð 	
ñ	ô 	ð 	õ 
„LØ�$ˆÐ?˜/Ô/°6´<Ò?ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØ�ŠÐ#˜e˜)ð	$ð 	$ñô ð ð %Ð5�EŒKˆK­%¬+€EÝ�$�œÑ%Ô%ð KÝÔØ˜­UÔ-Dð
ñ 
ô 
ð 	
õ Œ{˜2 U°?Ô3IÐJÑJÔJÐJr;   c                 ó~   ‡ — t          j        ‰ t           j        t           j        t           j        fvˆ fd„¦  «         d S )Nc                  ó   •— d‰ › �S )Nz/Unsupported input type encountered for isin(): r5   r”   s   €r9   ri   z3_check_for_unsupported_isin_dtype.<locals>.<lambda>Ý   s   ø€ ÐIÀ%ÐIÐI€ r;   )rZ   rk   rP  Ú
complex128Ú	complex64r”   s   `r9   Ú!_check_for_unsupported_isin_dtyper
  Ú   sC   ø€ Ý	„LØ•e”j¥%Ô"2µE´OÐDÐDØIÐIÐIÐIñô ð ð ð r;   c                 óZ   — |                       ||                      d¦  «        f¦  «        }|S )Nr¿   rµ	  )rZ  r×   Únum_weightsr8  rC  r¶	  s         r9   Úmeta_embedding_dense_backwardr
  á   s0   € ð ×'Ò'¨°k×6FÒ6FÀrÑ6JÔ6JÐ(KÑLÔL€KØÐr;   c                 ó|   — |	r#t                                | ||||||||
|¦
  «
        S t          | ||||||||
|¦
  «
        S rE   )r.   Ú_embedding_bag_sparse_backwardÚ!meta_embedding_bag_dense_backward)r¨  r×   rÑ  rG  rH  Úmaximum_indicesr
  rC  rµ  rD  r2  r8  s               r9   Úmeta_embedding_bag_backwardr
  í   st   € ð ð 
Ý×2Ò2ØØØØØØØØØØñ
ô 
ð 	
õ 1ØØØØØØØØØØñ
ô 
ð 	
r;   c
                 ó4  ‡ — t          j        ‰ j        t           j        t           j        t           j        t           j        fv ˆ fd„¦  «         |t          k    rt          j        |d u¦  «         ‰                      |‰  	                    d¦  «        f¦  «        }
|
S )Nc                  ó   •— d‰ j         › �S )Nz$Unsupported input type encountered: r”   )r¨  s   €r9   ri   z3meta_embedding_bag_dense_backward.<locals>.<lambda>'!  s   ø€ ÐC°t´zÐCÐC€ r;   r4   )
rZ   rk   rb   r¼  r½  r»  Úfloat64rA  r›   rÇ   )r¨  r×   rG  rH  r
  r
  rC  rµ  r2  r8  Úindex_grad_weights   `          r9   r
  r
  !  s‰   ø€ õ 
„LØŒ
•u”}¥e¤nµe´mÅUÄ]ÐSÐSØCÐCÐCÐCñô ð ð �xÒÐÝŒ�_¨DÐ0Ñ1Ô1Ð1ØŸš¨°T·Y²Y¸q±\´\Ð'BÑCÔCÐØÐr;   c                 ó  — |                       d¦  «        }t          j        |t          k    d„ ¦  «         t          j        |                      ¦   «         dk    ¦  «         t          j        |                     ¦   «         dk    ¦  «         |                      d¦  «        }t          j        |                     ¦   «         dk    ¦  «         t          j        |                      d¦  «        |k    ¦  «         |                      |f¦  «        }	|	S )Nr4   c                  ó   — dS )NzHembedding_bag_backward: per_sample_weights only supported for mode='sum'r5   r5   r;   r9   ri   z@meta_embedding_bag_per_sample_weights_backward.<locals>.<lambda><!  rt  r;   r%  r   )rÇ   rZ   rk   r@  r‰   r›   )
r¨  r“  r×   rÑ  rG  rµ  r8  Úembedding_featuresr
	  r  s
             r9   Ú.meta_embedding_bag_per_sample_weights_backwardr$
  /!  sÕ   € ð Ÿš 1™œÐÝ	„LØ•ÒØZÐZñô ð õ 
„L�—’‘”˜q’Ñ!Ô!Ð!Ý	„L�—’‘” !Ò#Ñ$Ô$Ð$Ø—,’,˜q‘/”/€KÝ	„L�—’‘” Ò"Ñ#Ô#Ð#Ý	„L�—’˜Q‘”Ð#5Ò5Ñ6Ô6Ð6Ø�^Š^˜[˜NÑ+Ô+€FØ€Mr;   )Úassume_uniqueÚinvertc                óÎ  — t          j        t          | t          ¦  «        pt          |t          ¦  «        d„ ¦  «         t          | t          ¦  «        st          j        | |j        ¬¦  «        } t          |t          ¦  «        st          j        || j        ¬¦  «        }t          | j        ¦  «         t          |j        ¦  «         t          j        | t           j	        ¬¦  «        S )Nc                  ó   — dS )Nz<At least one of elements and test_elements must be a Tensor.r5   r5   r;   r9   ri   zmeta_isin.<locals>.<lambda>L!  r  r;   r^  r”   )
rZ   rk   rt   r   rŠ  r†   r
  rb   r¡   rP  )ÚelementsÚtest_elementsr%
  r&
  s       r9   Ú	meta_isinr+
  G!  sÈ   € õ 
„LÝ�8�VÑ$Ô$ÐI­
°=Å&Ñ(IÔ(IØNÐNñô ð õ �h¥Ñ'Ô'ð GÝ”< °Ô1EÐFÑFÔFˆå�m¥VÑ,Ô,ð LÝœ ]¸8¼?ÐKÑKÔKˆå% h¤nÑ5Ô5Ð5Ý% mÔ&9Ñ:Ô:Ð:ÝÔ˜H­E¬JÐ7Ñ7Ô7Ð7r;   r4  c                 óž   — t          j        | dk    d„ ¦  «         t          |t          j        ¬¦  «        \  }}t          j        ||¬¦  «        S )Nr   c                  ó   — dS )Nz,polygamma(n, x) does not support negative n.r5   r5   r;   r9   ri   z meta_polygamma.<locals>.<lambda>\!  s   € Ð!O€ r;   rï  r”   )rZ   rk   r   r   rð  r¡   )r4  r�   rW   rR   s       r9   Úmeta_polygammar.
  Y!  sW   € õ 
„L��a’ÐOÐOÑPÔPÐPÝ(ØÝ;ÔHðñ ô �O€A€|õ Ô˜D¨Ð5Ñ5Ô5Ð5r;   c                 ó    — t          d¦  «        ‚)Nz.Tensor.item() cannot be called on meta tensors)r�  rÔ   s    r9   Úmeta_local_scalar_denser0
  d!  s   € å
ÐGÑ
HÔ
HÐHr;   c                 ó*   — t          j        | ¦  «        S rE   r    rÔ   s    r9   Úsilur2
  i!  r¥   r;   c                 ój   — t          | t          j        ¬¦  «        \  }}t          j        | |¬¦  «        S rî  )r   r   rð  rZ   r¡   )r�   rW   rR   s      r9   Úsigmoidr4
  o!  s=   € õ )ØÝ;ÔHðñ ô �O€A€|õ Ô˜D¨Ð5Ñ5Ô5Ð5r;   c                 ó°  — |                       ¦   «         dk    }|                      ¦   «         dk    }|r­|r@|                     d¦  «        |                      d¦  «        |                     d¦  «        g}�nVt          j        |                     d¦  «        |                     d¦  «        k    d„ ¦  «         |                      d¦  «        |                     d¦  «        g}në|rkt          j        |                     d¦  «        |                      d¦  «        k    d„ ¦  «         |                      d¦  «        |                     d¦  «        g}n~t          j        |                      d¦  «        |                     d¦  «        k    d„ ¦  «         |                      d¦  «        |                      d¦  «        |                     d¦  «        g}|p| j        }t          j        j        rUd|j        z  }|d         |z   dz
  |z  |z  }||k    r|d         |z  |dg}	n|dg}	t          j        ||	|| j	        ¬	¦  «        }
nt          j
        ||| j	        ¬	¦  «        }
|
S )
Nr%  r   r4   c                  ó   — dS ©Nz matrix batch sizes have to matchr5   r5   r;   r9   ri   z2_create_grouped_mm_output_tensor.<locals>.<lambda>‚!  ó   € Ð6X€ r;   r¿   c                  ó   — dS r7
  r5   r5   r;   r9   ri   z2_create_grouped_mm_output_tensor.<locals>.<lambda>ˆ!  r8
  r;   c                  ó   — dS )Nzbatched dimension has to matchr5   r5   r;   r9   ri   z2_create_grouped_mm_output_tensor.<locals>.<lambda>Ž!  s   € Ð6V€ r;   r�  r3  )r‰   rÇ   rZ   rk   rb   r  r  Úitemsizer�  r†   r�   )r¢  r¤  Úoffsr—  Ú
mat1_is_2dÚ
mat2_is_2drm	  Ú	alignmentÚsize_paddedr>	  rø   s              r9   Ú _create_grouped_mm_output_tensorrA
  y!  s1  € Ø—’‘”˜q’€JØ—’‘”˜q’€Jàð CØð 	5ØŸ	š	 !™œ d§i¢i°¡l¤l°D·I²I¸a±L´LÐAˆH‰HåŒLØ—	’	˜!‘” §	¢	¨!¡¤Ò,Ð.XÐ.Xñô ð ð Ÿ	š	 !™œ d§i¢i°¡m¤mÐ4ˆHˆHàð 
	CÝŒLØ—	’	˜!‘” §	¢	¨!¡¤Ò,Ð.XÐ.Xñô ð ð Ÿ	š	 !™œ d§i¢i°¡l¤lÐ3ˆHˆHõ ŒLØ—	’	˜!‘” §	¢	¨!¡¤Ò,Ð.VÐ.Vñô ð ð Ÿ	š	 !™œ d§i¢i°¡l¤l°D·I²I¸b±M´MÐBˆHàÐ'˜TœZ€Iå„}Ôð IØ˜)Ô,Ñ,ˆ	Ø ”| iÑ/°!Ñ3¸	ÑAÀIÑMˆØ˜Ò#Ð#Ø" 1œ+¨Ñ3°[À!ÐDˆJˆJà% qÐ)ˆJÝÔ!Ø�j¨	¸$¼+ð
ñ 
ô 
ˆˆõ Œk˜(¨)¸D¼KÐHÑHÔHˆØ€Jr;   Úmat_aÚmat_br<
  c	                 óì  ‡ ‡‡‡‡‡— t          j        ‰d u ‰d u k    d„ ¦  «         ‰d uo‰d u}	|	r›t           j        }
t           j        j        rPt           j                             ¦   «         r2dt           j                             d¦  «        j        v rt           j	        }
t          j        ‰ j
        |
k    o
‰j
        |
k    ˆ ˆfd„¦  «         nAt          j        ‰ j
        t           j        k    o‰j
        t           j        k    ˆ ˆfd„¦  «         t          j        ‰                      ¦   «         dv o‰                     ¦   «         dv ˆ ˆfd„¦  «         ‰                      ¦   «         dk    }‰                     ¦   «         dk    }|r|s@t          j        ‰                      d	¦  «        ‰                     d
¦  «        k    d„ ¦  «         |	rHd„ }d„ }t          j         |‰ ¦  «        ˆ fd„¦  «         t          j         |‰¦  «        ˆfd„¦  «         d„ } |d‰ ¦  «          |d‰¦  «         ‰�è‰�æt          j        ‰j
        t           j        k    r‰j
        t           j        k    p)‰j
        t           j        k    o‰j
        t           j        k    ˆˆfd„¦  «         ‰j
        t           j        k    o‰j
        t           j        k    Šdˆfd„	}‰�|r|r‰j        d         nd} |d‰‰ d|¦  «          |d‰‰d|¦  «         t          j        |d u d„ ¦  «         |s|rwt          j        ‰d uˆ ˆfd„¦  «         ‰�Yt          j        ‰                     ¦   «         dk    ˆfd„¦  «         t          j        ‰j
        t           j        k    ˆfd„¦  «         nt          j        ‰d u d„ ¦  «         t          j        |d u d„ ¦  «         t          j        |d u p|t           j        k    d„ ¦  «         t%          ‰ ‰‰|¦  «        S ) Nc                  ó   — dS )Nz,Either both scale factors are given, or noner5   r5   r;   r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>°!  s   € Ð>€ r;   Úgfx94r   c                  ó*   •— d‰ j         › d‰j         › d�S )Nz5Expected inputs of E4M3 FP8 type but got mat_a.dtype=ú and mat_b.dtype=r  r”   ©rB
  rC
  s   €€r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>Â!  s!   ø€ ÐxÈEÌKÐxÐxÐjoÔjuÐxÐxÐx€ r;   c                  ó*   •— d‰ j         › d‰j         › d�S )Nz1Expected inputs of BF16 type but got mat_a.dtype=rH
  r  r”   rI
  s   €€r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>Ç!  s!   ø€ ÐtÈÌÐtÐtÐfkÔfqÐtÐtÐt€ r;   )r%  r1   c                  ó\   •— d‰                       ¦   «         › d‰                      ¦   «         › �S )Nz3Multiplicands must be 2D or 3D but got mat_a.dim()=z and mat_b.dim()=rÀ   rI
  s   €€r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>Ì!  s-   ø€ ÐqÀeÇiÂiÁkÄkÐqÐqÐdi×dmÒdmÑdoÔdoÐqÐq€ r;   r%  r¿   r  c                  ó   — dS )Nz3contraction dimension of mat_a and mat_b must matchr5   r5   r;   r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>Õ!  rP  r;   c                 óZ   — |                       ¦   «         }|d         dk    o|d         dk    S ©Nr  r4   r¿   r7  ©ÚmatÚ
mat_strides     r9   rh  z-_meta_grouped_mm_common.<locals>.is_row_majorÚ!  s,   € ØŸš™œˆJØ˜b”> AÒ%Ð=¨*°R¬.¸AÒ*=Ð=r;   c                 óZ   — |                       ¦   «         }|d         dk    o|d         dk    S rN
  r7  rO
  s     r9   rk  z-_meta_grouped_mm_common.<locals>.is_col_majorÞ!  s,   € ØŸš™œˆJØ˜b”> QÒ&Ð=¨:°b¬>¸AÒ+=Ð=r;   c                  óB   •— d‰                       ¦   «         dd …         › �S )NzNExpected mat_a tensor to be row major in the last two dimensions, got strides r  r7  )rB
  s   €r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>ä!  s)   ø€ ÐzÐej×eqÒeqÑesÔesÐtvÐtwÐtwÔexÐzÐz€ r;   c                  óB   •— d‰                       ¦   «         dd …         › �S )NzQExpected mat_b tensor to be column major in the last two dimensions, got strides r  r7  )rC
  s   €r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>è!  s)   ø€ Ð}Ðhm×htÒhtÑhvÔhvÐwyÐwzÐwzÔh{Ð}Ð}€ r;   c                 óD  ‡ ‡‡‡— ‰                      ¦   «         dz
  Šd‰                     ¦   «         z  }‰                     ¦   «         Š‰‰dz
           dk    rQ‰‰         t          d‰j        ‰dz
           ¦  «        k    r)t          j        ‰‰         |z  dk    ˆˆ ˆfd„¦  «         d S ‰‰         dk    rT‰‰dz
           t          d‰j        ‰         ¦  «        k    r,t          j        ‰‰dz
           |z  dk    ˆˆ ˆfd„¦  «         d S t          j        dˆˆfd„¦  «         d S )Nr4   r�  r   c                  ó(   •— d‰› d‰ › d‰‰          › d�S )Nr*  ú stride along ú% dim to be multiple of 16 bytes, got r  r5   ©Úend_dimÚmat_namerQ
  s   €€€r9   ri   zF_meta_grouped_mm_common.<locals>.check_valid_strides.<locals>.<lambda>ô!  sB   ø€ ð  A Hð  Að  A¸Gð  Að  AÐjtÐu|Ôj}ð  Að  Að  A€ r;   c                  ó4   •— d‰› d‰ dz
  › d‰‰ dz
           › d�S )Nr*  rW
  r4   rX
  r  r5   rY
  s   €€€r9   ri   zF_meta_grouped_mm_common.<locals>.check_valid_strides.<locals>.<lambda>û!  s\   ø€ ð  I Hð  Ið  I¸GÀa¹Kð  Ið  IÐnxð  zAð  DEñ  zEô  oFð  Ið  Ið  I€ r;   Fc                  ó    •— d‰› d‰ j         › d�S )NzInvalid strides/sizes, got z for strides and z for sizes.rK  rO
  s   €€r9   ri   zF_meta_grouped_mm_common.<locals>.check_valid_strides.<locals>.<lambda> "  s   ø€ Ði°jÐiÐiÐSVÔS\ÐiÐiÐi€ r;   )r‰   Úelement_sizerñ   r	  rœ   rZ   rk   )r[
  rP
  r?
  rZ
  rQ
  s   `` @@r9   Úcheck_valid_stridesz4_meta_grouped_mm_common.<locals>.check_valid_stridesë!  s   øøøø€ Ø—'’'‘)”)˜a‘-ˆØ˜#×*Ò*Ñ,Ô,Ñ,ˆ	Ø—Z’Z‘\”\ˆ
Ø�g ‘kÔ" aÒ'Ð'¨J°wÔ,?Å3ØˆsŒy˜ 1™Ô%ñD
ô D
ò -
ð -
õ ŒLØ˜7Ô# iÑ/°1Ò4ð Að  Að  Að  Að  Að  Añô ð ð ð ð ˜Ô  AÒ%Ð%¨*°W¸q±[Ô*AÅSØˆsŒy˜Ô!ñF
ô F
ò +
ð +
õ ŒLØ˜7 Q™;Ô'¨)Ñ3°qÒ8ð Ið  Ið  Ið  Ið  Ið  Iñô ð ð ð õ
 ŒLØØiÐiÐiÐiÐiñô ð ð ð r;   rB
  rC
  c                  ó*   •— d‰ j         › d‰j         › d�S )NzhFor FP8 scales must both be float32, or for MXFP8 both scales must be float8_e8m0fnu. Got scale_a.dtype=z and scale_b.dtype=r  r”   rˆ  s   €€r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>"  sE   ø€ ð  rð  @Gô  @Mð  rð  rð  biô  boð  rð  rð  r€ r;   r4   c                 óÌ  •‡ ‡‡‡‡‡‡	‡
— ‰                      ¦   «         dk    rÚt          j        ‰                     ¦   «         ˆ fd„¦  «         ‰rDt          j        ‰                      ¦   «         ‰                      ¦   «         k    ˆˆˆ fd„¦  «         d S t          j        ‰                      ¦   «         dk    ˆˆ fd„¦  «         t          j        ‰j        d         ‰j        ‰         ‰z  k    ˆˆˆˆ ˆfd„¦  «         d S t          j        ‰                     d¦  «        dk    ˆ fd	„¦  «         t          j        ‰j        d         ‰j        d         k    ˆˆˆ fd
„¦  «         ‰rœt          j        ‰j        ‰j        dz
  k    ˆˆˆ fd„¦  «         ‰j        \  Š}}d}t          ||z  d¦  «        Š	t          |d¦  «        Š
t          j        ‰j        d         ‰k    o‰j        d         ‰	‰
z  k    ˆˆ	ˆ
ˆˆfd„¦  «         d S t          j        ‰                      ¦   «         dk    ˆˆ fd„¦  «         t          j        ‰j        d         ‰j        d‰z            k    ˆˆˆ ˆfd„¦  «         d S )Nr%  c                  ó   •— d‰ › d�S )Nr*  z to be contiguous.r5   ©Ú
scale_names   €r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>"  s   ø€ ÐF¨
ÐFÐFÐF€ r;   c                  ó.   •— d‰› d‰ j         › d‰j         › �S )NzKFor MXFP8, scale must have same number of dimensions as target tensor, but ú has mat.ndim=ú and scale.ndim=r_  ©rP
  rÚ  rd
  s   €€€r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>!"  sN   ø€ ð  !oÐnxð  !oð  !oð  ILô  IQð  !oð  !oð  chô  cmð  !oð  !o€ r;   r4   c                  ó:   •— d‰› d‰                       ¦   «         › d�S )Nr*  z to be 1D tensor, but got ú	D tensor.rÀ   ©rÚ  rd
  s   €€r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>&"  ó(   ø€ Ð h¨JÐ hÐ hÐRW×R[ÒR[ÑR]ÔR]Ð hÐ hÐ h€ r;   r   c                  óN   •— d‰› d‰ j         ‰         ‰z  › d‰j         d         › d�S )Nr*  z	 to have rƒ  r   z
 elements.rK  )rP
  rÚ  Úscale_multiplierrd
  Ú
scaled_dims   €€€€€r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>*"  s^   ø€ ð  !U¨Jð  !Uð  !UÀÄÈ:ÔAVÐYiÑAið  !Uð  !UÐzô  {Fð  GHô  {Ið  !Uð  !Uð  !U€ r;   r¿   c                  ó   •— d‰ › d�S )Nr*  z( to be contiguous in the last dimension.r5   rc
  s   €r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>/"  s   ø€ Ð\¨
Ð\Ð\Ð\€ r;   c                  óH   •— d‰› d‰ j         d         › d‰j         d         › d�S )Nr*  z batch dimension to be r   ú, got r  rK  rh
  s   €€€r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>3"  s4   ø€ Ðp¨
ÐpÐpÈ3Ì9ÐUVÌ<ÐpÐpÐ_dÔ_jÐklÔ_mÐpÐpÐp€ r;   c                  ó.   •— d‰› d‰ j         › d‰j         › �S )Nz0For MXFP8, 3d tensor should have 2d scales, but rf
  rg
  r_  rh
  s   €€€r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>:"  sF   ø€ ð  !TÐS]ð  !Tð  !TÐmpÔmuð  !Tð  !Tð  HMô  HRð  !Tð  !T€ r;   rž  re  rÑ  c                  ó:   •— d‰j         › d‰ › d‰‰z  › d‰j         › �S )NzFor MXFP8, expected mat.shape=z to have scale shape of (ú,z), but got rK  )ÚGÚ	blocked_KÚ	blocked_NrP
  rÚ  s   €€€€€r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>D"  sY   ø€ ð  !YÀÄð  !Yð  !YÐefð  !Yð  !YÐirÐu~Ñi~ð  !Yð  !Yð  LQô  LWð  !Yð  !Y€ r;   c                  ó:   •— d‰› d‰                       ¦   «         › d�S )Nr*  z to be 2D tensor, but got rj
  rÀ   rk
  s   €€r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>I"  rl
  r;   c                  óN   •— d‰› d‰ j         d‰z            › d‰j         d         › d�S )Nr*  z non-batch dimension to be r4   rr
  r  rK  )rP
  rÚ  rd
  ro
  s   €€€€r9   ri   z>_meta_grouped_mm_common.<locals>.check_scale.<locals>.<lambda>M"  s]   ø€ ð  !F¨Jð  !Fð  !FÐSVÔS\Ð]^ÐakÑ]kÔSlð  !Fð  !FÐtyÔtð  ABô  uCð  !Fð  !Fð  !F€ r;   )r‰   rZ   rk   rö  rœ   rñ   rÉ   r@   )rd
  rÚ  rP
  ro
  rn
  rè  rê  ró  rv
  rw
  rx
  Úis_mxfp8s   `````   @@@€r9   Úcheck_scalez,_meta_grouped_mm_common.<locals>.check_scale"  sR  øøøøøøøøø€ Ø�wŠw‰yŒy˜AŠ~ˆ~Ý”Ø×'Ò'Ñ)Ô)ØFÐFÐFÐFñô ð ð ð Ý”LØŸ	š	™œ s§w¢w¡y¤yÒ0ð oð  oð  oð  oð  oð  oñô ð ð ð õ
 ”LØŸ	š	™œ qÒ(ØhÐhÐhÐhÐhñô ð õ ”LØœ Aœ¨#¬)°JÔ*?ÐBRÑ*RÒRð Uð  Uð  Uð  Uð  Uð  Uð  Uð  Uñô ð ð ð õ
 ”Ø—L’L Ñ$Ô$¨Ò)Ø\Ð\Ð\Ð\ñô ð õ ”Ø”K ”N c¤i°¤lÒ2ØpÐpÐpÐpÐpÐpñô ð ð ð Ý”LØœ
 c¤h°¡lÒ2ð Tð  Tð  Tð  Tð  Tð  Tñô ð ð "œi‘G�A�q˜!Ø!#�JÝ (¨¨Z©¸Ñ ;Ô ;�IÝ (¨¨CÑ 0Ô 0�IÝ”LØœ Aœ¨!Ò+ÐW°´¸A´À)ÈiÑBWÒ0Wð Yð  Yð  Yð  Yð  Yð  Yð  Yð  Yñô ð ð ð õ
 ”LØŸ	š	™œ qÒ(ØhÐhÐhÐhÐhñô ð õ ”LØœ Aœ¨#¬)°A¸
±NÔ*CÒCð Fð  Fð  Fð  Fð  Fð  Fð  Fñô ð ð ð r;   rS  rT  c                  ó   — dS )Nz:Scale result tensor provided, but it is not supported yet.r5   r5   r;   r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>X"  rq   r;   c                  ó^   •— d‰                       ¦   «         › d‰                      ¦   «         › d�S )Nz/Offsets tensor not provided, but is needed for zD/zD multiplicand layouts.rÀ   rI
  s   €€r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>^"  s0   ø€ ÐyÀeÇiÂiÁkÄkÐyÐyÐUZ×U^ÒU^ÑU`ÔU`ÐyÐyÐy€ r;   c                  ó4   •— d‰                       ¦   «         › d�S )Nz.Offsets tensor must be 1D, but got offs.dim()=r  rÀ   ©r<
  s   €r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>c"  s   ø€ ÐVÈÏÊÉÌÐVÐVÐV€ r;   c                  ó   •— d‰ j         › d�S )Nz7Offsets tensor must be integer (int32) tensor, but got r  r”   r€
  s   €r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>g"  s   ø€ Ð_ÐRVÔR\Ð_Ð_Ð_€ r;   c                  ó   — dS )NzJOffsets tensor provided, but is not needed for 3D/3D multiplicand layouts.r5   r5   r;   r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>l"  s   € Ð`€ r;   c                  ó   — dS )Nz2Bias tensor provided, but it is not supported yet.r5   r5   r;   r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>q"  s   € ÐD€ r;   c                  ó   — dS )Nz4If output dtype provided, it must be torch.bfloat16.r5   r5   r;   r9   ri   z)_meta_grouped_mm_common.<locals>.<lambda>v"  s   € ÐF€ r;   r  )rZ   rk   r¾  r  r  r  r  Úget_device_propertiesÚgcnArchNamer[  rb   r½  r‰   rÇ   r»  r•  rœ   r�  rA
  )rB
  rC
  rS  rT  r<
  r•  rU  r—  rV  ÚscaledÚ	fp8_dtypeÚmat_a_is_2dÚmat_b_is_2drh  rk  r_
  r|
  rn
  r{
  s   `````             @r9   Ú_meta_grouped_mm_commonr‹
  £!  sû  øøøøøø€ õ 
„LØ	�Dˆ˜g¨˜oÒ.Ø>Ð>ñô ð ð ˜DÐ Ð8 W°DÐ%8€Fð ð 
ÝÔ'ˆ	åŒMÔð	.å”
×'Ò'Ñ)Ô)ð	.ð �5œ:×;Ò;¸AÑ>Ô>ÔJÐJÐJåÔ-ˆIÝŒØŒK˜9Ò$ÐA¨¬¸	Ò)AØxÐxÐxÐxÐxñ	
ô 	
ð 	
ð 	
õ
 	ŒØŒK�5œ>Ò)ÐK¨e¬k½U¼^Ò.KØtÐtÐtÐtÐtñ	
ô 	
ð 	
õ
 
„LØ�	Š	‰Œ�vÐÐ7 %§)¢)¡+¤+°Ð"7ØqÐqÐqÐqÐqñô ð ð
 —)’)‘+”+ Ò"€KØ—)’)‘+”+ Ò"€Kàð 
˜kð 
ÝŒØ�JŠJ�r‰NŒN˜eŸjšj¨™nœnÒ,ØIÐIñ	
ô 	
ð 	
ð
 ð 
ð	>ð 	>ð 	>ð	>ð 	>ð 	>õ 	ŒØˆL˜ÑÔØzÐzÐzÐzñ	
ô 	
ð 	
õ 	ŒØˆL˜ÑÔØ}Ð}Ð}Ð}ñ	
ô 	
ð 	
ð
ð ð ð0 Ð˜ Ñ'Ô'Ð'ØÐ˜ Ñ'Ô'Ð'àÐ˜wÐ2ÝŒØŒ]�eœmÒ+ÐN°´ÅÄÒ0Nð à”¥Ô!5Ò5ð :Ø”M¥UÔ%9Ò9ð rð  rð  rð  rð  rñ	
ô 	
ð 	
ð ŒM�UÔ1Ò1ð 6Ø”¥Ô!5Ò5ð 	ð
:	ð :	ð :	ð :	ð :	ð :	ðz "Ð-°+Ð-À+Ð-ˆDŒJ�qŒMˆMÐSTð 	ð 	ˆ�I˜w¨¨qÐ2BÑCÔCÐCØˆ�I˜w¨¨qÐ2BÑCÔCÐCåŒØ˜DÐ ØPÐPñ	
ô 	
ð 	
ð
 ð 
�kð 
ÝŒØ˜ÐØyÐyÐyÐyÐyñ	
ô 	
ð 	
ð ÐÝŒLØ—’‘
”
˜a’ØVÐVÐVÐVñô ð õ ŒLØ”
�eœkÒ)Ø_Ð_Ð_Ð_ñô ð øõ
 	ŒØ�DˆLØ`Ð`ñ	
ô 	
ð 	
õ
 
„LØ�ˆØDÐDñô ð õ
 
„LØ�TÐÐ8˜Y­%¬.Ò8ØFÐFñô ð õ
 ,¨E°5¸$À	ÑJÔJÐJr;   c           
      ó0   — t          | |d d ||d |¬¦  «        S )N)rS  rT  r<
  r•  rU  r—  )r‹
  )rB
  rC
  r<
  r•  r—  s        r9   Úmeta_grouped_mmr�
  |"  s3   € õ #ØØØØØØØØð	ñ 	ô 	ð 	r;   c	                 óN   — |pt           j        }t          | ||||||||¬¦	  «	        S )N)rS  rT  r<
  r•  rU  r—  rV  )rZ   r½  r‹
  )	rB
  rC
  rS  rT  r<
  r•  rU  r—  rV  s	            r9   Úmeta_scaled_grouped_mmr�
  ‘"  sB   € ð Ð+�Uœ^€Iå"ØØØØØØØ!ØØ%ð
ñ 
ô 
ð 
r;   c                 óL  — t          |¦  «        t          d¦  «        k    r1| D ].}t          j        |                     ¦   «         dk    d„ ¦  «         Œ/g }| D ]M}|�|n|j        }|j        rt          |¦  «        }|                     |                     d|¬¦  «        ¦  «         ŒN|S )NÚinfr   c                  ó   — dS )Nz:_foreach_norm cannot compute infinity norm on empty tensorr5   r5   r;   r9   ri   z#meta_foreach_norm.<locals>.<lambda>³"  s   € ÐT€ r;   r5   r”   )	r^   rZ   rk   rš   rb   r  r   r  r›   )ÚtensorsÚordrb   r)  Úresultsr—  s         r9   Úmeta_foreach_normr–
  ­"  s¾   € åˆS�z„z•U˜5‘\”\Ò!Ð!Øð 	ð 	ˆAÝŒLØ—’‘	”	˜A’ØTÐTñô ð ð ð €GØð 9ð 9ˆØ"Ð.�E�E°A´Gˆ	ØÔð 	<Ý0°Ñ;Ô;ˆIØ�Š�q—{’{ 2¨Y�{Ñ7Ô7Ñ8Ô8Ð8Ð8Ø€Nr;   r>   Úhalf_to_floatc                 ó  — |r7| j         t          j        t          j        fvrt	          d| j         › d�¦  «        ‚t          j        | t
          j        j        ¬¦  «        \  }}|s|n|}t          j	        | |t          j
        ¬¦  «        }|S )Nz%half_to_float is True but x.dtype is z, expected half or bfloat16rï  rÙ	  )rb   rZ   r\   r½  r�   rT   r   r   rU   r¡   rÓ   )r>   r‰   r—
  Úcomputation_dtyperR   rñ  s         r9   Úsoftmaxrš
  ¾"  sž   € ð ð ØŒ7�5œ:¥u¤~Ð6Ð6Ð6Ý Ø\¸¼Ð\Ð\Ð\ñô ð õ ',Ô&>Ø	�uÔDÔLð'ñ 'ô 'Ñ#Ð�|ð (5ÐK�<�<Ð:K€LÝ
Ô
˜1 LÅÔ@WÐ
XÑ
XÔ
X€CØ€Jr;   c           	      ó   ‡‡‡‡	‡
‡— t          j        t          ‰¦  «        dz  dk    ˆfd„¦  «         | j        Št          ‰¦  «        Š
t          ‰¦  «        dz  }‰
|z
  Š	t          j        ‰
|k    ˆ
ˆfd„¦  «         t	          d„ ‰D ¦   «         ¦  «        r¯| }t          ‰	‰
¦  «        D ]ˆŠd‰
‰z
  dz
  z  Š‰‰         dk     r2|                     ‰‰‰          |j        ‰         ‰‰         z   ¦  «        }‰‰dz            dk     r.|                     ‰d|j        ‰         ‰‰dz            z   ¦  «        }Œ‰|                     ¦   «         S t          ‰d ‰	…         ¦  «        }t          |¦  «        D ]oŠt          ‰¦  «        ‰dz   dz  z
  Š‰‰	‰z            ‰‰         z   ‰‰dz            z   }t          j        |dk    ˆˆˆ	ˆˆfd„¦  «         | 	                    |¦  «         Œpt          j
        || j        | j        | j        t          | ¦  «        ¬¦  «        S )	Nr%  r   c                  ó(   •— dt          ‰ ¦  «        › �S )Nz1Length of pad must be even but instead it equals r$  rÝ  s   €r9   ri   z'_constant_pad_nd_meta.<locals>.<lambda>Ö"  s   ø€ ÐNÅCÈÁHÄHÐNÐN€ r;   c                  ó0   •— dt          ‰¦  «        › d‰ › d�S )Nz`Length of pad should be no more than twice the number of dimensions of the input. Pad length is z while the input has r•  r$  )Úl_inprÞ  s   €€r9   ri   z'_constant_pad_nd_meta.<locals>.<lambda>à"  s/   ø€ ð Ý25°c±(´(ðð àðð ð € r;   c              3   óV   K  — | ]$}t          |t          j        ¦  «        o|d k    V — Œ%dS r	  )rt   rT   ÚIntWithoutSymInt)rQ   r¤  s     r9   rw   z(_constant_pad_nd_meta.<locals>.<genexpr>å"  s8   è è € Ð
IÐ
IÀ�:�a�Ô/Ñ0Ô0Ð;°Q¸!²VÐ
IÐ
IÐ
IÐ
IÐ
IÐ
Ir;   r4   c            	      óX   •— d‰‰‰ z            › d‰‰         › d‰‰dz            › d‰‰ z   › d�	S )NzThe input size z, plus negative padding rÅ   r4   zG resulted in a negative output size, which is invalid. Check dimension z of your input.r5   )r  r,  Úl_diffrÞ  Úpad_idxs   €€€€€r9   ri   z'_constant_pad_nd_meta.<locals>.<lambda>ù"  sf   ø€ ð M k°&¸1±*Ô&=ð Mð MØ�7Œ|ðMð MØ"% g°¡kÔ"2ðMð Mà17¸!±ðMð Mð M€ r;   )rb   r†   rˆ   rÐ   )rZ   rk   rî   rœ   ri  rð   Únarrowr½   rï   r  r�   rb   r†   rˆ   r   )r  rÞ  r±  Úl_padÚc_inputÚ	new_shapeÚnew_dimr  r,  r¢
  rž
  r£
  s    `     @@@@@r9   Ú_constant_pad_nd_metar©
  Ð"  sƒ  øøøøøø€ õ 
„LÝˆC‰Œ�1‰˜ÒØNÐNÐNÐNñô ð ð
 ”+€KÝ�ÑÔ€EÝ�‰HŒH˜‰M€EØ�U‰]€Få	„LØ�Šð	ð 	ð 	ð 	ð 	ñô ð õ Ð
IÐ
IÀSÐ
IÑ
IÔ
IÑIÔIð ØˆÝ�v˜uÑ%Ô%ð 	Tð 	TˆAØ˜5 1™9 q™=Ñ)ˆGØ�7Œ|˜aÒÐØ!Ÿ.š.Ø˜˜Gœ�} g¤m°AÔ&6¸¸W¼Ñ&Eñô �ð �7˜Q‘;Ô !Ò#Ð#Ø!Ÿ.š.¨¨A¨w¬}¸QÔ/?À#ÀgÐPQÁkÔBRÑ/RÑSÔS�øà�}Š}‰ŒÐå�[  & Ô)Ñ*Ô*€IÝ�5‰\Œ\ð 	"ð 	"ˆÝ�c‘(”(˜q 1™u¨™kÑ*ˆØ˜f q™jÔ)¨C°¬LÑ8¸3¸wÈ¹{Ô;KÑKˆÝŒØ�qŠLðMð Mð Mð Mð Mð Mð Mð Mñ	
ô 	
ð 	
ð 	×Ò˜Ñ!Ô!Ð!Ð!åŒ;ØØŒkØŒ|ØÔ)Ý+¨EÑ2Ô2ðñ ô ð r;   r8  rC  rD  c                 ó¼  ‡— |                       ¦   «         dk    r%t          d|                       ¦   «         › d�¦  «        ‚t          j        ‰j        t          j        t          j        fv ˆfd„¦  «         | j        }‰j        }‰j        dk    r
|d         f}n)‰j        dk    r|d         |d         f}ng |¢|d         ‘R }| j        }|  	                    ||¬¦  «        S )Nr%  z'weight' must be 2-D, got z-Dc                  ó   •— d‰ j         › d�S )NzhExpected tensor for argument #1 'indices' to have one of the following scalar types: Long, Int; but got r‘  r”   r*  s   €r9   ri   zembedding.<locals>.<lambda>#  s%   ø€ ðHØ07´ðHð Hð Hð r;   r   r4   r”   )
r‰   r�   rZ   rk   rb   r˜   r�  rœ   rÉ   r›   )	r“  r×   r8  rC  rD  Úweight_shapeÚindices_shaperÌ   r—  s	    `       r9   Ú	embeddingr®
  #  sø   ø€ ð ‡z‚z�|„|�qÒÐÝÐJ¸&¿*º*¹,¼,ÐJÐJÐJÑKÔKÐKÝ	„LØŒ�%œ*¥e¤kÐ2Ð2ð	
ð 	
ð 	
ð 	
ñô ð ð ”<€LØ”M€Mà„|�qÒÐØ&2°1¤oÐ%7ˆ	ˆ	Ø	Œ˜Ò	Ð	Ø" 1Ô% |°A¤Ð7ˆ	ˆ	à5�mÐ5 \°!¤_Ð5Ð5ˆ	à”€IØ×Ò˜I¨YÐÑ7Ô7Ð7r;   Úmax_lengthsÚpadding_valuec                 ó\  — t          |¦  «        dk    r t          dt          |¦  «        › d�¦  «        ‚t          |¦  «        dk    r t          dt          |¦  «        › d�¦  «        ‚|d         j        d         dz
  }|d         }||g| j        dd …         ¢R }|                      |¦  «        S )Nr4   z&Only one jagged dim is supported, got z offsetsz max_lengthsr   )rî   r�   rœ   r›   )rÖ   rÑ  r¯
  r°
  r3  rÐ  rÁ  s          r9   Ú$meta__jagged_to_padded_dense_forwardr²
  (#  sÊ   € õ ˆ7�|„|�qÒÐÝØKµS¸±\´\ÐKÐKÐKñ
ô 
ð 	
õ ˆ;ÑÔ˜1ÒÐÝØSµS¸Ñ5EÔ5EÐSÐSÐSñ
ô 
ð 	
ð 	�Œ
Ô˜Ô˜aÑ€AØ�AŒ€AØ�qÐ,˜6œ<¨¨¨Ô+Ð,Ð,€LØ×Ò˜LÑ)Ô)Ð)r;   c                 ó^   — t          | ¦  «        t          ¦   «         d„ ¦   «         ¦   «         }|S )Nc                 ó8   — t          | t          j        ¬¦  «        S r{  ©rX   r   rð  r€  s    r9   Ú_fz)_create_unary_float_meta_func.<locals>._f@#  s$   € õ  ØÕ=ÔJð
ñ 
ô 
ð 	
r;   ©rL   r%   ©Úfuncr¶
  s     r9   Ú_create_unary_float_meta_funcrº
  ?#  ó9   € Ý�4ÑÔÝ�]„]ð
ð 
ñ „]ñ Ôð
ð
 €Ir;   c                 ó   — | j         s|j         s|j         rt          d¦  «        ‚|                      ¦   «         dk    r/|                      | j        ¦  «        |                      d¦  «        fS |                      d¦  «        }|                      d¦  «        }|                     d¦  «        }|                      |||¦  «        }|
r3|r|                      |||¦  «        }n.|                      ||||¦  «        }n|                      d¦  «        }||fS )NzP_native_multi_head_attention fake implementation does not support nested tensorsr   r4   )r»   r¼   rš   r›   rœ   rÇ   )rË  rê   r±  r§   r  r©   rª   r«   r¬   r¸   Úneed_weightsÚaverage_attn_weightsr¹   r3  ÚTÚ
output_dimr  Úattn_weightss                     r9   Ú native_multi_head_attention_fakerÂ
  K#  s  € ð  „ð 
˜#œ-ð 
¨5¬?ð 
Ý!Ø^ñ
ô 
ð 	
ð ‡{‚{�}„}˜ÒÐØ—’ ¤Ñ,Ô,¨e¯oªo¸aÑ.@Ô.@ÐAÐAà�
Š
�1‰Œ€AØ�
Š
�1‰Œ€Að ×!Ò! !Ñ$Ô$€JØ�_Š_˜Q  :Ñ.Ô.€Fàð 
*Øð 	>ð !Ÿ?š?¨1¨a°Ñ3Ô3ˆLˆLð !Ÿ?š?¨1¨h¸¸1Ñ=Ô=ˆLˆLà—’ qÑ)Ô)ˆà�LÐ!Ð!r;   c                 ó^   — t          | ¦  «        t          ¦   «         d„ ¦   «         ¦   «         }|S )Nc                 ó:   — t          | |t          j        ¬¦  «        S r{  rµ
  r=   s     r9   r¶
  z*_create_binary_float_meta_func.<locals>._f}#  s&   € õ  ØˆqÕ!@Ô!Mð
ñ 
ô 
ð 	
r;   r·
  r¸
  s     r9   Ú_create_binary_float_meta_funcrÅ
  |#  r»
  r;   c                 ó´   ‡ — t          ‰ ¦  «        ˆ fd„¦   «         }‰ j        › d�}||_         t          t          t          |¦  «        ¦  «        |¦  «        }|S )Nc                 óT   •—  ‰| g|¢R i |¤Ž}t          | j        |j        ¦  «         | S rE   r°  )r�   rV   rp  rø   rG   s       €r9   Ú_fnz#_register_inplace_meta.<locals>._fn¡#  s;   ø€ àˆb�Ð'˜Ð'Ð'Ð' Ð'Ð'ˆÝ ¤
¨C¬IÑ6Ô6Ð6Øˆr;   rW   )r   r~   rL   Úgetattrr.   )rG   rÈ
  Úinplace_names   `  r9   Ú_register_inplace_metarË
   #  sk   ø€ Ý
ˆ2�Y„Yðð ð ð ñ „Yðð
 ”kÐ$Ð$Ð$€LØ€C„LØ
4�-�¥ lÑ3Ô3Ñ
4Ô
4°SÑ
9Ô
9€Cà€Jr;   c                 óB  ‡ ‡‡— t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         ‰ ‰g}t          ‰t          ¦  «        rG‰j        dk    r't          j        ‰ j        ‰j        k    ˆ ˆfd„¦  «         |                     ‰¦  «         t          |dt          j	        iŽS )Nc                  ó(   •— d‰j         › d‰ j         › �S )Nr   z for `end`, but got dtype r”   )r   r€   s   €€r9   ri   zlerp.<locals>.<lambda>³#  s   ø€ ÐT %¤+ÐTÐTÈÌÐTÐT€ r;   r   c                  ó(   •— d‰ j         › d‰j         › �S )Nr   z for `weight`, but got dtype r”   )r€   r“  s   €€r9   ri   zlerp.<locals>.<lambda>º#  s   ø€ Ðb¨%¬+ÐbÐbÐTZÔT`ÐbÐb€ r;   rM   )
rZ   rk   rb   rt   r    rÉ   r  rX   r   rU   )r€   r   r“  rV   s   ``` r9   ÚlerprÏ
  ®#  sÃ   øøø€ õ 
„LØŒ�s”yÒ ØTÐTÐTÐTÐTñô ð ð �3ˆ<€DÝ�&�*Ñ%Ô%ð ØŒ;˜!ÒÐÝŒLØ”˜vœ|Ò+ØbÐbÐbÐbÐbñô ð ð 	�Š�FÑÔÐÝØ	ðÝ=ÔEðð ð r;   )r±  c                ó<   — t          | ||t          j        ¬¦  «        S r{  r|  ©r  Útensor1Útensor2r±  s       r9   ÚaddcmulrÔ
  Â#  s(   € õ Øˆw˜Õ0OÔ0Wðñ ô ð r;   c                óÊ   — t          j        t          j        |j        ¦  «        ot          j        |j        ¦  «         d„ ¦  «         t          | ||t          j        ¬¦  «        S )Nc                  ó   — dS )N)zFInteger division with addcdiv is no longer supported, and in a future zErelease addcdiv will perform a true division of tensor1 and tensor2. z4The historic addcdiv behavior can be implemented as zA(input + value * torch.trunc(tensor1 / tensor2)).to(input.dtype) zfor integer inputs and as z6(input + value * tensor1 / tensor2) for float inputs. z?The future addcdiv behavior is just the latter implementation: z4(input + value * tensor1 / tensor2), for all dtypes.r5   r5   r;   r9   ri   zaddcdiv.<locals>.<lambda>Ò#  s	   € ð 	
€ r;   r,  )rZ   rk   rT   r–  rb   rX   r   rU   rÑ
  s       r9   Úaddcdivr×
  Ê#  sr   € õ 
„LåÔ" 7¤=Ñ1Ô1ð 6ÝÔ& w¤}Ñ5Ô5ð	
ð		
ð 		
ñô ð õ  Øˆw˜Õ0OÔ0Wðñ ô ð r;   c                  óN  — i } dD ]#}t           |         }|D ]}|| vr||         | |<   ŒŒ$|                      ¦   «         D �]æ\  }}t          |t          j        j        ¦  «        rŒ&t          |t          ¦  «        st          dt          |¦  «        › �¦  «        ‚ | 	                    t          j
        j        j        ¦  «        |¦  «         t          j
                             |                     ¦   «         d¦  «        r"|t           d         v rt          |› d�¦  «        ‚Œà|j        rŒè|                     ¦   «         dv rŒÿd|                     ¦   «         v rt"                               ||¦  «         �Œ2d|                     ¦   «         v rt&                               ||¦  «         �Œed	|                     ¦   «         v rt(                               ||¦  «         �Œ˜d
|                     ¦   «         v rt*                               ||¦  «         �ŒËt,                               ||¦  «         �Œèd S )N)rƒ   Úpost_autogradÚpre_autogradz$op_overload must be OpOverload, got ÚCompositeImplicitAutogradrƒ   z« is a CompositeImplicitAutograd op, we shouldn't register meta function for it. Instead, we should let the decomposition run and write meta kernels for the base operators.>   úaten::cloneúaten::copy_úaten::rot90úaten::_to_copyúaten::empty_stridedúaten::constant_pad_ndúaten::as_strided_scatterzmkldnn::zmkl::zonednn::zquantized::)r   Úitemsrt   rZ   Ú_opsÚHigherOrderOperatorr   r�   r}   Úpy_implÚ_CÚDispatchKeyr0   Ú%_dispatch_has_kernel_for_dispatch_keyr  r�  Úis_viewÚ2_meta_lib_dont_use_me_use_register_meta_for_mkldnnÚimplÚ/_meta_lib_dont_use_me_use_register_meta_for_mklÚ2_meta_lib_dont_use_me_use_register_meta_for_onednnÚ5_meta_lib_dont_use_me_use_register_meta_for_quantizedÚ'_meta_lib_dont_use_me_use_register_meta)Úactivate_meta_tableÚtypÚregistryÚopoÚop_overloadrG   s         r9   Úactivate_metarö
  î#  s…  € ØÐð 9ð 9ð 9ˆÝ-¨cÔ2ˆàð 	9ð 	9ˆCØÐ-Ð-Ð-Ø+3°C¬=Ð# CÑ(øð	9ð /×4Ò4Ñ6Ô6ð 9Nñ 9N‰ˆ�Rõ
 �k¥5¤:Ô#AÑBÔBð 	ØÝ˜+¥zÑ2Ô2ð 	Ý ØJµt¸KÑ7HÔ7HÐJÐJñô ð ð 	7ˆ×Ò�EœHÔ0Ô5Ñ6Ô6°rÑ:Ô:Ð:åŒ8×9Ò9Ø×ÒÑÔÐ ;ñ
ô 
ð +	Nð Õ8¸Ô@Ð@Ð@Ý"Ø"ð ;ð ;ð ;ñô ð ð Að Ô ð 	Nð à×ÒÑÔðð	ð 	ð à˜[×-Ò-Ñ/Ô/Ð/Ð/ÝB×GÒGÈÐUWÑXÔXÐXÑXØ˜K×,Ò,Ñ.Ô.Ð.Ð.Ý?×DÒDÀ[ÐRTÑUÔUÐUÑUØ˜{×/Ò/Ñ1Ô1Ð1Ð1ÝB×GÒGÈÐUWÑXÔXÐXÑXØ +×"2Ò"2Ñ"4Ô"4Ð4Ð4ÝE×JÒJØ ñô ð ñ õ 8×<Ò<¸[È"ÑMÔMÐMÑMðs9Nð 9Nr;   rE   r2  râ   )rl  rm  r®	  )NNNFr   r4   r¿   )Tr&  )r7  )r@  T)FF)TT)r·  )FTN)TFF)TFr  )rÊ  N)rA   rñ  )r5   rí   r  F)r5   rí   FTN)Fr   FNFr¿   )NF)r¿   F)r   r¡  FN)NNNNN)r   NNr4   )r   r   r4   )NNF)rl  FFN)Nrl  FFN)rl  FNN)Nrl  FNNF)rl  FN)FN)NNNNNNN)FNNNN)NNNF)NNNNF)Nr¿   FNN)NNNN)r¿   TT)NNr   N)rß	  r   r   )r¿   )r%  N)r¿   FF)rl  )NTTN(Ë  r   Úcollections.abcr   r   Úenumr   Ú	functoolsr   Útypingr   Útyping_extensionsr   rZ   Útorch._prims_commonr  rT   r	   r
   r   Útorch._decompr   r   r   r   Ú
torch._opsr   Útorch._primsr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    Útorch._prims_common.wrappersr!   r"   r#   r$   r%   rK  r&   r'   Útorch.fx.experimentalr(   rÁ  Útorch.nn.functionalr)   r*   Útorch.utilsr+   rI   r,   r-   r(  r.   ÚlibraryÚLibraryrð
  rð   r@  rB  rA  r:   r@   rL   rX   rd   rm   ÚlinspaceÚlogspacer  r‘   Útaker*  rø   rž   Ú_standard_gammar¤   Ú_transformer_encoder_layer_fwdr  rP  r^   r¾   rÍ   rÕ   ÚcummaxÚcumminrÜ   rß   r  rï   r  Ú_fft_c2cr#  r  r&  Ú_fft_r2cr1  ÚrandpermÚgenerator_outr5  r˜   r:  ÚrandintrC  r@  Úlow_outrF  ÚrandrH  Ú_philox_key_splitrR  Ú_philox_key_fold_inrW  rk  ro  rs  ru  rv  Ú_fft_c2rr{  rô  r‡  rŽ  Ú
unsqueeze_r’  Ú_sparse_semi_structured_linearrñ  rb   r¡  Ú_sparse_semi_structured_mmr®  Ú_sparse_semi_structured_addmmr²  Ú_cslt_sparse_mmrÂ  Úindex_reducerÉ  Úindex_reduce_rË  Úindex_selectrÏ  Úsegment_reducerÚ  r	  Ú	unary_outrÞ  r‰   rç  r  rê  rì  rõ  rñ  rö  Ú_assert_asyncrú  Úmsgrþ  Ú_printr  Ú_make_dep_tokenr  r  Ú_functional_sym_constrain_ranger  r  Ú(_functional_sym_constrain_range_for_sizer  Ú_functional_assert_asyncr  rÑ   r(  rÒ   r2  r6  r<  rD  Ú_linalg_eighrE  rN  Ú_linalg_eigvalsÚlinalg_eigvalsrQ  Ú
linalg_eigrU  rY  r[  ra  rf  rj  rp  rƒ  Úlinalg_inv_exr†  Úlinalg_ldl_factor_exrj   rŒ  Úlinalg_ldl_solverš  Ú	linalg_lur¡  Úlinalg_lu_factor_exr¥  Úlinalg_lu_solver®  Ú	lu_unpackr´  r½  Ú	linalg_qrrÄ  rÈ  rÅ  Ú_linalg_svdrÑ  r—  rb  rà  ró  Úlinalg_solve_triangularrû  r  r
  Ú_linalg_detr  r!  r/  rB  Úreflection_pad1drG  Úreplication_pad1drQ  r\  Úreflection_pad1d_backwardra  Úreplication_pad1d_backwardrc  rs  Úreflection_pad2dru  Úreplication_pad2drx  Ú_weight_norm_interface_backwardr€  Úreflection_pad2d_backwardr]  Úreplication_pad2d_backwardr‡  r–  Úreflection_pad3dr˜  Úreplication_pad3dr›  Úreflection_pad3d_backwardÚreplication_pad3d_backwardr£  Ú_pdist_forwardr§  Ú_pdist_backwardr­  ÚbaddbmmrÇ  Ú	bernoullirÉ  Ú
bernoulli_rÍ  r¤  rÐ  ÚpoissonrÒ  Ú_fused_moving_avg_obs_fq_helperrâ  Úmmrì  rä  r  r  r  Úmiopen_batch_normr/  Úconvolutionr6  Ú_convolutionr=  rç
  Ú_has_mkldnnrë
  r>  Ú_convolution_pointwiserE  Ú_linear_pointwiserI  Úhas_mklrí
  r  Ú_mkl_linearrM  rî
  rN  Úqconv2d_pointwiseÚqconv_pointwiserŠ  r[  ÚbinaryÚbinary_tensorrf  Úqlinear_pointwiserk  rp  Úlinear_dynamic_fp16Úlinear_relu_dynamic_fp16rr  rï
  rs  Ú
max_pool2dr}  Úint4mm_packed_weight_cpur�  r’  Úquantize_per_tensorr”  Ú
avg_pool2drº  r¿  Úavg_pool2d_backwardrÇ  Ú
avg_pool3drä  Úavg_pool3d_backwardrï  Ú_adaptive_avg_pool2drô  Ú_adaptive_avg_pool3dr÷  Ú_adaptive_avg_pool2d_backwardr  Ú_adaptive_avg_pool3d_backwardr  r  Úadaptive_max_pool2dr  r  r  Úadaptive_max_pool3dr$  r&  r'  Úrepeat_interleaver*  ru   r/  r4  r9  r–   Ú_unsafe_indexrV  Úconvolution_backwardrf  Úaddbmmrn  Úrandint_likerq  Ú_fused_adam_Ú_fused_adamw_r‡  Ú_fused_adamrŽ  Ú_int_mmr–  Ú_convert_weight_to_int4packr¡  Ú#_convert_weight_to_int4pack_for_cpur¦  Ú_weight_int4pack_mmr°  Ú_weight_int4pack_mm_for_cpur¶  r¿  rÁ  rí  Ú_dyn_quant_pack_4bit_weightr÷  Ú_dyn_quant_matmul_4bitrý  Ú_weight_int8pack_mmr  Ú_cdist_forwardr  Ú_cdist_backwardr'  Ú_embedding_bagrL  Ú_embedding_bag_forward_onlyrO  rR  ÚnansumrT  ÚmedianÚ	nanmedianrV  Ú
dim_valuesrµ  rÖ   rY  Úlogical_not_r[  Úrepeatrd  Úzero_rf  Úmul_ÚScalarÚlogical_and_Úlogical_or_Úlogical_xor_ri  Údiv_ro  Úadd_Úsub_ry  r¡  Úsubr~  ÚroundÚdecimalsr€  r†  Ú
__rshift__rŠ  Ú
__lshift__rŽ  Úzeror�  rn  r˜  Úfillr›  Úrelu_r�  Ú	_add_relurŸ  Úrrelu_with_noiser¦  Úrrelu_with_noise_functionalr¨  Úrrelu_with_noise_rª  Ú	index_putÚ_unsafe_index_putr®  Úmasked_fill_r²  Ú_masked_scalerµ  Úmasked_scatter_r¹  Úmasked_scatterr»  Úmasked_scatter_backwardr½  Ú
index_put_r¿  rÍ  ÚbmmrÐ  Ú	dtype_outrÒ  rÔ  rÙ  r®  r¯  rÙ  r   rë  rw  Ú max_pool2d_with_indices_backwardr  Úmax_pool2d_with_indicesr  Úfractional_max_pool2dr&  Úmax_pool3d_with_indicesr5  Ú max_pool3d_with_indices_backwardr<  rF  rH  rR  Úgrid_sampler_2d_backwardrZ  r`  rb  re  r"  Úonesrs  Úzerosrv  Úselect_scatterrz  Úslice_scatterr~  Údiagonal_scatterr�  ry  rÛ   r‰  r‘  Úgatherr—  r¦  r­  r¯  r¹  r¼  Úscatter_addrÁ  Úscatter_add_rÄ  r»  r¦   r±  rÅ  Úvalue_reducerÈ  Úscatter_rÊ  Ú#_scaled_dot_product_flash_attentionrÝ  râ  ré  Ú#_scaled_dot_product_cudnn_attentionrñ  Ú0_scaled_dot_product_fused_attention_overrideablerô  Ú9_scaled_dot_product_fused_attention_overrideable_backwardr   Ú,_scaled_dot_product_flash_attention_backwardr  Ú+_scaled_dot_product_flash_attention_for_cpur  Ú4_scaled_dot_product_flash_attention_for_cpu_backwardr
  Ú*_scaled_dot_product_attention_math_for_mpsr  Ú'_scaled_dot_product_efficient_attentionr"  Ú0_scaled_dot_product_efficient_attention_backwardr)  Ú,_scaled_dot_product_cudnn_attention_backwardr+  Ú_flash_attention_forwardr4  Ú+_flash_attention_forward_no_dropout_inplacer6  r8  Ú_flash_attention_backwardr=  Ú_efficient_attention_forwardrI  Ú_efficient_attention_backwardÚSymIntrR  rœ  Ú
_scaled_mmrž  rþ  Ú_scaled_mm_v2r	  Úscatter_reduceÚtwoÚtwo_outr	  Úscatter_reduce_r	  Úmultinomialr	  r	  r	  r%	  Ú_upsample_nearest_exact1dr.	  Ú_upsample_nearest_exact2dr6	  Ú"_upsample_nearest_exact2d_backwardr:	  Ú_upsample_nearest_exact3drò   r<	  Úvalues_stabler?	  rU	  Ú_thnn_fused_lstm_cellr[	  rq	  rt	  r~	  rƒ	  r†	  rˆ	  Úargminr‰	  rŒ	  Útopkr“	  Ú_segment_reduce_backwardr—	  Úkthvaluer›	  rÓ   r¯	  r¬	  r³	  r·	  Úpixel_shufflerÁ	  rÕ	  Ú	bucketizeÚ
Tensor_outrÜ	  Ú
Scalar_outrÞ	  Úhistcrê	  Ú_upsample_bilinear2d_aaÚ_upsample_bicubic2d_aaÚ_upsample_lanczos2d_aarî	  Ú _upsample_bilinear2d_aa_backwardÚ_upsample_lanczos2d_aa_backwardrò	  rû	  r 
  rø  r
  Úsearchsortedr
  r
  Úembedding_dense_backwardr
  Ú_embedding_bag_backwardr
  Ú_embedding_bag_dense_backwardr
  Ú*_embedding_bag_per_sample_weights_backwardr$
  Úisinr+
  Ú	polygammar.
  Ú_local_scalar_denser0
  r2
  r4
  rA
  r‹
  Ú_grouped_mmr�
  Ú_scaled_grouped_mmr�
  Ú_foreach_normr–
  Ú_softmaxrš
  Úconstant_pad_ndr©
  r®
  Ú_jagged_to_padded_dense_forwardr²
  rº
  Ú_native_multi_head_attentionrÂ
  rÅ
  Úspecial_airy_aiÚspecial_bessel_y0Úspecial_bessel_y1Úspecial_modified_bessel_i0Úspecial_modified_bessel_i1Úspecial_modified_bessel_k0Úspecial_modified_bessel_k1Ú!special_scaled_modified_bessel_k0Ú!special_scaled_modified_bessel_k1Úspecial_chebyshev_polynomial_tÚspecial_chebyshev_polynomial_uÚspecial_chebyshev_polynomial_vÚspecial_chebyshev_polynomial_wÚ&special_shifted_chebyshev_polynomial_tÚ&special_shifted_chebyshev_polynomial_uÚ&special_shifted_chebyshev_polynomial_vÚ&special_shifted_chebyshev_polynomial_wÚspecial_hermite_polynomial_hÚspecial_hermite_polynomial_heÚspecial_laguerre_polynomial_lÚspecial_legendre_polynomial_prË
  rÏ
  rÔ
  r×
  Úlerp_Úaddcmul_Úaddcdiv_Útorch._refs.nn.functionalÚtorch._refs.specialrö
  r5   r;   r9   ú<module>r     s`h  ðà €€€Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð Ø 'Ð 'Ð 'Ð 'Ð 'Ð 'à €€€Ø #Ð #Ð #Ð #Ð #Ð #Ø +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +Ð +ðð ð ð ð ð ð ð ð ð ð ð ð "Ð !Ð !Ð !Ð !Ð !Ø UÐ UÐ UÐ UÐ UÐ UÐ UÐ Uðð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð ð <Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ð ;Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7Ø 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ð 8Ø )Ð )Ð )Ð )Ð )Ð )ð €WˆT�]„]€Ø€Yˆt�_„_€à„y„~€à*/¬-×*?Ò*?ÀÈÐPVÑ*WÔ*WÐ 'Ø %  a¡¤Ñ €ˆ)�Xðð ð ð"ð "ð "ð

˜ 8¨B°¨FÔ#3Ð"4°h¸rÀ2¸vÔ6FÐ"FÔGð 
ð 
ð 
ð 
ðà3ðð ð ð ð(*ð *ð *ðð ð ð €�”˜tœ}Ð-Ñ.Ô.Ø€�„ð
 
Ø
ØØŒ=ØØð7ð 7ð 7ñ „ñ /Ô.ð7ðt €�”	Ô! 4¤9¤=Ð1Ñ2Ô2Ø€�„ð'ð 'ñ „ñ 3Ô2ð'ð €�Ô$Ô,¨dÔ.BÔ.FÐGÑHÔHØ€�„ñ"ð "ð "ñ „ñ IÔHð"ð €àÔ+Ô3ØÔ+Ô/ðñô ð €�„ð( !%Ø ñ)!ð !Ø	ð!àð!ð ð!ð ð	!ð
 ð!ð ð!ð ð!ð ð!ð ð!ð 
ð!ð ð!ð ð!ð ð!ð ð!ð ð!ð  ð!!ð" ð#!ð$ ð%!ð& Œ,˜Ñ
ð'!ð( �T‰zð)!ð* ð+!ð !ð !ñ „ñô ð!ð> €�Ô!Ô)¨4Ô+<Ô+@ÐAÑBÔBØ€�„Ø%'ð %ð %ð %ð %ñ „ñ CÔBð%ð$ €ˆtÔ%Ñ&Ô&Ø€�„ðIð Iñ „ñ 'Ô&ðIð €Ø	„[Ô˜$œ+œ/¨4¬;Ô+>ÀÄÄÐPñô ð €ˆX�yÑ!Ô!ðð ñ "Ô!ñô ðð €�Ô!Ô)¨4Ô+<Ô+@ÐAÑBÔBØ€�„ðIð Iñ „ñ CÔBðIð.ð .ð .ñbð �Vð  $ s¤)ð ¸4ð ð ð ð ð €�”Ô% t¤}Ô'8Ð9Ñ:Ô:Ø€�„ð"<ð "<ñ „ñ ;Ô:ð"<ðJ €ð $ s¤)ð ð ð ð ð €�”Ô% t¤}Ô'8Ð9Ñ:Ô:Ø€�„ð@
ð @
ñ „ñ ;Ô:ð@
ðF €ˆtŒ}Ô*Ñ+Ô+Ø"&ð 3ð 3ð 3ð 3ñ ,Ô+ð3ð €ˆtŒ}Ô$Ñ%Ô%ð Œ*ØØØð
ð 
ð 
ð 
ñ &Ô%ð
ð €�”Ô$ d¤lÔ&6Ð7Ñ8Ô8Ø€�„ð
 Œ*ØØØðð ð ð ñ „ñ 9Ô8ðð& €�”Ô  $¤,Ô"6Ð7Ñ8Ô8Ø€�„ð Œ*ØØØðð ð ð ñ „ñ 9Ô8ðð& €�”	Ô! 4¤9¤=Ð1Ñ2Ô2Ø€�„Ø%)°$¸tÐPTð ð ð ð ñ „ñ 3Ô2ðð €ˆtÔ%Ô-Ñ.Ô.ð8ð 8ñ /Ô.ð8ð" €ˆtÔ'Ô/Ñ0Ô0ð	!ð 	!ñ 1Ô0ð	!ð%
ð %
ð %
ðP €ˆtÔ#Ô+Ñ,Ô,ñð ð ñ -Ô,ðð
 €ˆtÔ$Ô,Ñ-Ô-ñð ð ñ .Ô-ðð
 €�”Ô% t¤}Ô'8Ð9Ñ:Ô:Ø€�„ð*L�vð *L D¨¤Ið *L¸cð *LÈCð *Lð *Lð *Lñ „ñ ;Ô:ð*LðZ €ˆtŒzÔ!Ñ"Ô"ñð ð ñ #Ô"ðð:	(ð 	(ð 	(ð €ˆtŒÔ&Ñ'Ô'ðð ñ (Ô'ðð €ˆtÔ2Ñ3Ô3ð
 Ø"&Ø$(ñ)ð )Øð)àð)ð ð)ð �4‰-ð	)ð
 ˜4‘Zð)ð Œ{˜TÑ!ð)ð )ð )ñ 4Ô3ð)ðX €ˆtÔ.Ñ/Ô/ð
 %)ñ	ð Ø
ðàðð ðð Œ{˜TÑ!ð	ð ð ñ 0Ô/ðð> €ˆtÔ1Ñ2Ô2ð Ø	
Ø$(ð)ð )ð )Øð)à
ð)ð ð)ð ð	)ð Œ{˜TÑ!ð)ð )ð )ñ 3Ô2ð)ðX €ˆtÔ#Ñ$Ô$ð ØØ$(Ø"ØØØñ8<ð 8<Ø”,ð8<àŒ\ð8<ð �4‰-ð8<ð �D‰=ð	8<ð
 Œ{˜TÑ!ð8<ð ð8<ð ð8<ð ð8<ð ð8<ð 8<ð 8<ñ %Ô$ð8<ðv €ˆtÔ Ô(Ñ)Ô)ð ð	Ið 	Ið 	IØ
ð	Ià	ð	Ið ð	Ið ŒLð		Ið
 ð	Ið ð	Ið ð	Ið 	Ið 	Iñ *Ô)ð	Ið €ˆtÔ!Ô)Ñ*Ô*ð ð	ð 	ð 	Ø
ð	à	ð	ð ð	ð ŒLð		ð
 ð	ð ð	ð ð	ð 	ð 	ñ +Ô*ð	ð €�„Ø€ˆtÔ Ô(Ñ)Ô)ð'ð 'ñ *Ô)ñ „ð'ð €ˆtÔ"Ô*Ñ+Ô+ð
 "Ø!Ø!ØØØð Wð  Wð  WØ
ð Wàð Wð �d‰]ð	 Wð
 �d‰]ð Wð �d‰]ð Wð ð Wð ð Wð ð Wð  Wð  Wñ ,Ô+ð WðF €�”Ô  $¤(Ô"4Ð5Ñ6Ô6Ø€�„ðð ñ „ñ 7Ô6ðð €ˆtŒxŒ|ÑÔñð ð ñ Ôðð €�”Ô  $¤(Ô"4Ð5Ñ6Ô6Ø€�„ðð ñ „ñ 7Ô6ðð €ˆtŒxŒ|ÑÔñð ð ñ Ôðð €ˆtŒzÔ!Ñ"Ô"ð6ð 6ñ #Ô"ð6ð €ˆtŒzŒ~ÑÔð(ð (ñ Ôð(ð
 €ˆtÔ!Ô)Ñ*Ô*ðð ñ +Ô*ðð €ˆtÔ!Ô%Ñ&Ô&ðð ñ 'Ô&ðð €ˆtŒ{Ô"Ñ#Ô#ðð ñ $Ô#ðð €ˆtÔ#Ô+Ñ,Ô,ð ØØØØð*ð *ð *ð *ñ -Ô,ð*ð €ˆtÔ'Ô/Ñ0Ô0ñ,ð ,ð ,ñ 1Ô0ð,ð €ˆtÔ3Ô;Ñ<Ô<ñð ð ñ =Ô<ðð
 €ˆtÔ0Ô8Ñ9Ô9ñ6ð 6ð 6ñ :Ô9ð6ð& €ˆtÔ<ÔDÑEÔEðð ñ FÔEðð
 €ˆtÔ,Ô0Ñ1Ô1ðð ñ 2Ô1ðð

˜Fð 
¨Cð 
ð 
ð 
ð 
ð   ð  ¨Fð  ¸#ð  ð  ð  ð  ðN (,ñ
ð 
Øð
àð
ð !%ð
ð 
ð 
ð 
ñ$ð �Vð  Sð °Cð ð ð ð ð
˜ð 
 Fð 
°$ð 
Àð 
ð 
ð 
ð 
ð"  ñ	ð Øðàðð ðð ð	ð ð ð ð�Cð ð ð ð ð €�Ô!Ô)¨4Ô+<Ô+HÐIÑJÔJØ€ˆ]˜NÑ+Ô+ñð ˜ð  sð ¸Tð ð ð ñ ,Ô+ñ KÔJðð" €�Ô$Ô,¨dÔ.AÔ.EÐFÑGÔGØ€�„ðB ð B¨6ð Bð Bð Bñ „ñ HÔGðBð €�”Ð Ñ!Ô!Ø€ˆ]˜NÑ+Ô+ð˜6ð ð ð ñ ,Ô+ñ "Ô!ðð&Q ð Q¨Fð Qð Qð Qð Qð €ˆtÔ*Ñ+Ô+Ø€�„ð) ð )¨Fð )¸4ð )ÀFð )ð )ð )ñ „ñ ,Ô+ð)ð €ˆtÔ"Ñ#Ô#Ø€�„ñJð J˜ð J Fð J°4ð JÀFð Jð Jð Jñ „ñ $Ô#ðJð €ˆtŒ}ÑÔØ€�„ñ)ð )�6ð ) $ð )°6ð )ð )ð )ñ „ñ Ôð)ð €ˆtÔ$Ñ%Ô%Ø€�„ñ)ð )˜6ð )¨$ð )¸6ð )ð )ð )ñ „ñ &Ô%ð)ð €ˆtÔ&Ô.Ñ/Ô/ñð ˜&ð ¨ð ÀTð ð ð ñ 0Ô/ðð" €Ø	Ô$Ô,¨dÔ.MÔ.QÐRñô ð €�„ð. fð .°6ð .¸fð .ð .ð .ñ „ñô ð.ðd €ˆtÔ!Ô)Ñ*Ô*ñð ˜&ð °ð ð ð ñ +Ô*ðð €�Ô)Ô1°4Ô3LÔ3PÐQÑRÔRØ€ˆT�8˜VÑ$Ô$ð Øð	ð ð Ø
ðð ðð ð	ð
 ˆ6�6˜6Ð!Ô"ðð ð ñ %Ô$ñ SÔRðð& €�Ô%Ô-¨tÔ/DÔ/HÐIÑJÔJØ€�„ð ð'ð 'ð 'Øð'àð'ð ð'ð
 ð'ð ð'ð 'ð 'ñ „ñ KÔJð'ðT €�”Ô&¨¬Ô(:Ð;Ñ<Ô<Ø€ˆS�#�sÑÔØ/3ð ð ð �fð ¨ð ¸¸fÀfÈfÐ>TÔ8Uð ð ð ñ Ôñ =Ô<ðð6 €�Ô(Ô0°$Ô2JÔ2NÐOÑPÔPØ€ˆT�8˜VÑ$Ô$ð Øð	 ð  ð  Øð ð ð ð ð	 ð
 ˆ6�6˜6Ð!Ô"ð ð  ð  ñ %Ô$ñ QÔPð ðF €�Ô$Ô,¨dÔ.BÔ.FÐGÑHÔHØ€�„ð Øð4ð 4ð 4Øð4àð4ð ð4ð
 ð4ð ð4ð ð4ð 4ð 4ñ „ñ IÔHð4ðn €ˆtŒ~ÑÔØ€ˆS�#�sÑÔð Øñ	$ð $Øð$àð$ð ð$ð ð	$ð
 ˆ6�6˜6Ð!Ô"ð$ð $ð $ñ Ôñ Ôð$ðP˜ð   t¨T zÔ!2ð ð ð ð ð* €�”Ô&¨¬Ô(:Ð;Ñ<Ô<Ø€ˆS�#ÑÔñð �fð  Cð ¸¸fÀf¸nÔ8Mð ð ð ñ Ôñ =Ô<ðð4 €�Ô$Ô,¨dÔ.BÔ.GÐHÑIÔIØ€ˆV�[ $¨Ñ1Ô1ð'�vð ' %¨°¸ÀÐ(FÔ"Gð 'ð 'ð 'ñ 2Ô1ñ JÔIð'ð$ €ˆtÔÔ'Ñ(Ô(ð  ØØñ	"ð "Øð"àð"ð ð"ð �$‰Jð	"ð "ð "ñ )Ô(ð"ðJ.Ø
ð.à
ð.ð ˆ4�Œ9�d˜3”iÐÔ ð.ð .ð .ð .ð".Ø
ð.à
ð.ð �‰*ð.ð ˆ6�6ˆ>Ôð	.ð .ð .ð .ð( fð °Vð Àð ð ð ð ð €ˆtÔ$Ñ%Ô%ð
 ØØ ØØ Øð7ð 7ð 7Øð7àð7ð ð	7ð
 ð7ð �T‰Mð7ð 	�‰ð7ð �T‰Mð7ð �4‰-ð7ð ˆ6�6˜6 6Ð)Ô*ð7ð 7ð 7ñ &Ô%ð7ðt €�Ô,Ô4°dÔ6RÔ6VÐWÑXÔXð ØØðð ð Øðàðð ð	ð
 ðð ðð 
�$‰ðð ðð ð ñ YÔXðð4 €ˆtÔ$Ñ%Ô%Ø€ˆS�# 4Ð(Ñ(Ô(ð ØØñ+(ð +(Ø
ð+(àð+(ð ð+(ð ð	+(ð
 ð+(ð ˆ6�6ˆ>Ôð+(ð +(ð +(ñ )Ô(ñ &Ô%ð+(ð^ €ˆtÔÔ'Ñ(Ô(ð
ð 
ñ )Ô(ð
ð €ˆtŒzÑÔØ€�„ð
 ØñWð WØðWà	ðWð ðWð ð	Wð
 ðWð ðWð Wð Wñ „ñ ÔðWðtð ð ðB%;ð %;ð %;ðP €ˆtÔ$Ñ%Ô%Ø€�„ð=ð =ñ „ñ &Ô%ð=ð €ˆtÔ%Ñ&Ô&Ø€�„ð>ð >ñ „ñ 'Ô&ð>ð(ð (ð (ð@ €ˆtÔ-Ñ.Ô.Ø€ˆ\ÑÔðSð Sñ Ôñ /Ô.ðSð €ˆtÔ.Ñ/Ô/Ø€ˆ\ÑÔðTð Tñ Ôñ 0Ô/ðTð<ð <ð <ð~ €ˆtÔ$Ñ%Ô%Ø€�„ð=ð =ñ „ñ &Ô%ð=ð €ˆtÔ%Ñ&Ô&Ø€�„ð>ð >ñ „ñ 'Ô&ð>ð €ØÔ(Ô0ñô ðð ñô ðð €àÔ&Ô.ØÔ&Ô1ØÕ'Ô/ØÕ'Ô2ð	ñô ð €ˆ\ÑÔð&ð &ñ Ôñô ñ&ð:@Gð @Gñ @GðF €ˆtÕ$Ñ%Ô%Ø€�„ð=ð =ñ „ñ &Ô%ñ=ð €ˆtÕ%Ñ&Ô&Ø€�„ð>ð >ñ „ñ 'Ô&ñ>ð €àÕ&Ô.ØÕ&Ô1ØÕ'Ô/ØÕ'Ô2ð	ñô ð €ˆ\ÑÔð((ð ((ñ Ôñô ñ((ðV €ˆtÕ"Ñ#Ô#Ø€�„ñð ˜fð ¨ð °vð ñ ð ñ „ñ $Ô#ñð €ˆtÕ#Ñ$Ô$Ø€�„ñP˜vð P¨Vð P¸ñ PÀfð PÐQWð Pñ Pð Pñ „ñ %Ô$ñPð €�•Ô$ d¥lÔ&6Ð7Ñ8Ô8Ø€˜ÐÑÔØ/0¸ñ 'ð 'ñ 'ð 'ñ Ôñ 9Ô8ñ'ð: €�•Ô&¨­Ô(:Ð;Ñ<Ô<Ø€�„Ø&*ð Ið Iñ Ið Iñ „ñ =Ô<ñIð
 €ˆt�Ô$Ñ%Ô%ññ ð ñ &Ô%ñð €ˆt�~ÕÑ Ô ñIñ Ið Iñ !Ô ñIð
 €�•Ô$ d¥lÔ&6Ð7Ñ8Ô8Ø€�„ñ"ñ "ð "ñ „ñ 9Ô8ñ"ð €ˆtÕ3Ô;Ñ<Ô<ð Øñ*ñ *ð *ñ =Ô<ñ*ð. €ˆt�wÑÔØ€˜ÐÑÔñ3ð 3˜Uœ[¨4Ñ/ð 3ñ 3ð 3ñ Ôñ Ôñ3ñ,Bð Bñ Bñ
ñ 
ð 
ñ 
ð* .2ñ\ñ \Ø”,ð\àŒLñ\ð �ŒI˜‰Oñ\ð �#ŒY˜‰_ñ	\ð
 �3Œi˜#‰oñ\ð ñ\ð ñ\ð ˜”I ‘O dÑ*ð\ñ \ð \ñ \ñ~Qð Qñ Qð €ˆtÕ%Ô-Ñ.Ô.ñ$$Ø”,ð$$àŒLð$$ð Œ,˜Ñ
ñ$$ð ”, Ñ%ñ	$$ð
 ” Ñ$ñ$$ð ñ$$ð !&ñ$$ð ð$$ñ $$ð $$ñ /Ô.ñ$$ðN €ˆtÕÔ'Ñ(Ô(ñ#Ø”,ð#àŒLð#ð Œ,˜Ñ
ñ#ð �ŒIñ	#ð
 �#ŒYñ#ð �3Œiñ#ð ñ#ð ˜”Iñ#ð ð#ñ #ð #ñ )Ô(ñ#ðL €ˆtÕ Ô(Ñ)Ô)ð ññ Ø”,ðàŒLðð Œ,˜Ñ
ñð �ŒIñ	ð
 �#ŒYñð �3Œiñð ñð ˜”Iñð ñð ñð ñð ñð ðñ ð ñ *Ô)ñð8 	…8Õñ T@Ø9>¼×9NÒ9NÙ�&˜&ñ:ô :Ñ6ð €]�5”9Õ#Õ:ÔBÑCÔCñð ñ DÔCñð, €]�5”9Õ#Õ5Ô=Ñ>Ô>ñSð Sñ ?Ô>ñSð
 …xÕð 	Ø:?¼-×:OÒ:OÙ�6˜6ñ;
ô ;
Ñ7ð 
ˆ�u”y•}Õ0Ñ	1Ô	1ñ	ð 	ñ 
2Ô	1ñ	ð
 :?¼×9NÒ9NÙ�&˜&ñ:ô :Ñ6ð €]�5”9Õ#Õ5Ô=Ñ>Ô>Ø€]�5”9Õ#Õ3Ô;Ñ<Ô<Ø€]�5”9Õ#Õ3Õ:Ñ;Ô;ñ4ð 4ñ <Ô;ñ =Ô<ñ ?Ô>ñ4ðl €]�5”9Õ#Õ5Õ<Ñ=Ô=Ø€]�5”9Õ#Õ5ÕCÑDÔDñð ñ EÔDñ >Ô=ñð< €]�5”9Õ#Õ5Ô=Ñ>Ô>Ø€]�5”9Õ#Õ5Õ<Ñ=Ô=ñð ñ >Ô=ñ ?Ô>ñð> €]�5”9Õ#Õ5Õ<Ñ=Ô=Ø€]�5”9Õ#Õ5ÕCÑDÔDñ$ð $ñ EÔDñ >Ô=ñ$ðL €]�5”9Õ#Õ7Ô?Ñ@Ô@Ø€]�5”9Õ#Õ<ÔDÑEÔEñ	ð 	ñ FÔEñ AÔ@ñ	ð =B¼M×<QÒ<QÙ�V˜Vñ=ô =Ñ9ð €]�5”9Õ&Õ1Ñ2Ô2ð ØØØñ
ñ 
ð 
ñ 3Ô2ñ
ð8 €]�5”9Õ&Õ?Ñ@Ô@ñ@ð @ñ AÔ@ñ@ñ,ð ñ ð €ˆtÕ'Ñ(Ô(ð#ØŒ<ñ#Ø %ñ#Ø36ñ#Ø?D¼{ð#à
„\ð#ñ #ð #ñ )Ô(ñ#ð €ˆt�Ô&Ñ'Ô'ð ØØØØñMñ Mð Mñ (Ô'ñMñb(<ð (<ñ (<ðX €ˆtÕ'Ô/Ñ0Ô0ñEð Eñ 1Ô0ñEðP €ˆt�ÑÔØ€�„ð ØØØØñUJñ UJð UJñ „ñ  ÔñUJðp €ˆtÕ'Ñ(Ô(Ø€ˆ\ÑÔñK(ð K(ñ Ôñ )Ô(ñK(ð\ €ˆtÕ(Ô0Ñ1Ô1ñð ñ 2Ô1ñð" €ˆtÕ(Ô0Ñ1Ô1ñ@ð @ñ 2Ô1ñ@ð €ˆtÕ1Ô9Ñ:Ô:ñFð Fñ ;Ô:ñFð, €ˆtÕ1Ñ2Ô2Ø€ˆ\ÑÔñPð Pñ Ôñ 3Ô2ñPñ
	
°6ð 	
ÀSð 	
ñ 	
ð 	
ñ 	
ð €ˆtÕ'Ñ(Ô(Ø€ˆU�IÑÔñ+ð +ñ Ôñ )Ô(ñ+ð\ €ˆtÕ0Ñ1Ô1Ø€ˆ\ÑÔñHð Hñ Ôñ 2Ô1ñHð$ €ˆtÕ'Ñ(Ô(Ø€ˆU�IÑÔñ'ð 'ñ Ôñ )Ô(ñ'ðT €ˆtÕ0Ñ1Ô1Ø€ˆ\ÑÔñ(ð (ñ Ôñ 2Ô1ñ(ð
 €ˆtÕ%Ô,Ñ-Ô-ñ*ñ *ð *ñ .Ô-ñ*ð €�•Ô$ d¥lÔ&6Ð7Ñ8Ô8Ø€�„ñ
ð 
ñ „ñ 9Ô8ñ
ð €�Õ#Ô+¨TÕ-@Ô-DÐEÑFÔFØ€�„Ø46ñ 

ð 

ñ 

¨cð 

ñ 

ð 

ñ „ñ GÔFñ

ð €�”	”Õ&Ô.°´	´Õ0FÔ0JÐKÑLÔLØ€�„ñð ñ „ñ MÔLñð" €�•
Ô! 4Õ#5Ô#<Ð=Ñ>Ô>ñAð Añ ?Ô>ñAðH €�Õ)Ô1Ð2Ñ3Ô3ñ.Hð .Hñ 4Ô3ñ.Hðb €�•Ô# T¥[¤_Ð5Ñ6Ô6Ø€˜ÐÑÔØ./°qñ 'ð 'ñ 'ð 'ñ Ôñ 7Ô6ñ'ð0 €�Õ!Ô(Ð)Ñ*Ô*ñð ñ +Ô*ñð €�Õ!Ô)¨4Õ+=Ô+EÐFÑGÔGð  Øñ!
ð 
ñ 
ð 
ñ HÔGñ
ð2 €�Õ Ô(Ð)Ñ*Ô*ð  Øñ!!ð !ñ !ð !ñ +Ô*ñ!ðH €�•ˆ~ÑÔØ€�„ñBð Bñ „ñ ÔñBð* €�Õ0Ð1Ñ2Ô2ñð ñ 3Ô2ñð& €�Õ8Ð9Ñ:Ô:ñð ñ ;Ô:ñð €�Õ(Ð)Ñ*Ô*ñ8ð 8ñ +Ô*ñ8ð  €�Õ0Ð1Ñ2Ô2ñ<ð <ñ 3Ô2ñ<ð €�Õ>Ð?Ñ@Ô@ñ<ð <ñ AÔ@ñ<ñ"�3ñ "˜3ð " 3ð "ñ "ð "ñ "ñ@ð @ñ @ðF €�Õ0Ð1Ñ2Ô2ðDØ!'¨$¡ðDñ Dð Dñ 3Ô2ñDð4 €�Õ+Ð,Ñ-Ô-ñ;ð ;ñ .Ô-ñ;ð( €�Õ(Ð)Ñ*Ô*ñ<ð <ñ +Ô*ñ<ð, €ˆtÕ"Ô*Ñ+Ô+ñ &ð  &ñ ,Ô+ñ &ðF €ˆtÕ#Ñ$Ô$Ø€�„ñGð Gñ „ñ %Ô$ñGð* €ˆtÕ"Ô*Ñ+Ô+ð
 Ø	
ØØØØñ`5ñ `5ð `5ñ ,Ô+ñ`5ðF €ˆtÕ/Ô7Ñ8Ô8ñ5ð 5ñ 9Ô8ñ5ñ
ñ 
ð 
ñ 
ð €�•Ô# T¥[¤_Ð5Ñ6Ô6Ø€�„ñ=¸$ñ =ð =ñ =ð =ñ „ñ 7Ô6ñ=ð €�•Ô# T¥^Ô%;Ð<Ñ=Ô=ñ)ð )ñ >Ô=ñ)ð €à�ŒØ�ÕØ�ÔØ�Õ!Ø�	ÔØ�	Õðñ	ô 	ð €ˆX�yÑ!Ô!ññ ð ñ "Ô!ñ	ô 	ñð €ˆtÕ Ô(Ñ)Ô)ñð ñ *Ô)ñð €ˆt�{Ô"Ñ#Ô#ñ'ð 'ñ $Ô#ñ'ð& €ˆt�zÔ!Ñ"Ô"ñð ñ #Ô"ñð €à�	ÕØ�	ÔØÕÔ!ØÕÔ ØÕÔ!ðñô ñð ñô ñð €�•	Õ  $¥)Ô"2Ð3Ñ4Ô4ñð ñ 5Ô4ñð& €à�	ÕØ�	ÕØ�	ÔØ�	Ôð	ñô ñ*ñ *ð *ñô ñ*ðZ €à��Ø��ðñô ññ ð ñô ñð €�•
Ô" D¥JÕ$7Ð8Ñ9Ô9ñð ñ :Ô9ññ
ð 
ñ 
ð" €�•Ô&¨­Õ(>Ð?Ñ@Ô@ñð ñ AÔ@ñð €�•Ô&¨­Õ(>Ð?Ñ@Ô@ñð ñ AÔ@ñð €ˆt�yÔ Ñ!Ô!ñ"ð "ñ "Ô!ñ"ð €�•
Ô! 4¥:Õ#4Ð5Ñ6Ô6ñð ñ 7Ô6ñð €�•	Ô  $¥)Õ"2Ð3Ñ4Ô4ñ"ð "ñ 5Ô4ñ"ð €ˆt�zÔ!Ñ"Ô"ñð ñ #Ô"ñð €ˆt�~Ô$Ñ%Ô%Ø€�„ñð ¨Fð ñ ð ñ „ñ &Ô%ñð €�Õ%Ð&Ñ'Ô'Ø€�„àRVñ"ñ "ð "ñ „ñ (Ô'ñ"ð €�Õ0Ð1Ñ2Ô2àRVñ;ñ ;ð ;ñ 3Ô2ñ;ð €�Õ&Ð'Ñ(Ô(àKOññ ð ñ )Ô(ñð €�•Ô&¨Õ(>Ô(FÐGÑHÔHñ"ñ "ð "ñ IÔHñ"ð €ˆtÕ Õ'Ñ(Ô(ñð ñ )Ô(ñð
 €ˆtÕ!Ô)Ñ*Ô*ñð ñ +Ô*ñð €ˆtÕ#Ñ$Ô$ñ	ð 	ñ %Ô$ñ	ð €ˆtÕ"Ñ#Ô#Ø€�„ñ6ð 6ñ „ñ $Ô#ñ6ð €ˆtÕ+Ñ,Ô,ñ!ð !ñ -Ô,ñ!ð €ˆt�Ô&Ñ'Ô'ññ ð ñ (Ô'ññ,ñ ,ð ,ñ ,ð^ €�•Ô  $¥(¤,Ð/Ñ0Ô0Ø€˜ÐÑÔñ5ð 5ñ Ôñ 1Ô0ñ5ð €�•” ¥Õ 2Ð3Ñ4Ô4Ø€˜ÐÑÔñJð Jñ Ôñ 5Ô4ñJñð ñ ñð ñ ñ6ð ñ ñ?ð ?ñ ?ðp #ñ-[ð [Øñ[àñ[ð 	ñ[ð 	ñ	[ð
 	ñ[ð 	ñ[ð 	ñ[ð 	ñ[ð 	ñ[ð 	ñ[ð 	ñ[ð ñ[ð ñ[ð ñ[ð ñ[ð  ñ![ð" ñ#[ð$ ñ%[ð& ñ'[ð( ð)[ð* ñ+[ð, ð-[ñ [ð [ñ [ñ|;4ð ;4ñ ;4ð|38Øñ38àñ38ð ñ38ð 	ñ	38ð
 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð 	ñ38ð ñ38ð ñ38ð ñ38ð  ñ!38ð" ñ#38ð$ ð%38ð& ð'38ñ 38ð 38ñ 38ñlI2ð I2ñ I2ðX €ˆtÕ4Ñ5Ô5Ø€ˆ\ÑÔñ(ð (ñ Ôñ 6Ô5ñ(ðV €ˆtÕ+Ô3Ñ4Ô4ð ØØØñ#ñ #ð #ñ 5Ô4ñ#ðL €ˆtÕ)Ô1Ñ2Ô2ñQð Qñ 3Ô2ñQðh €ˆtÕ+Ñ,Ô,Ø€ˆU�IÑÔð ØØØñ_ñ _ð _ñ Ôñ -Ô,ñ_ðD €ˆtÕ4Ñ5Ô5Ø€ˆ\ÑÔñ\ð \ñ Ôñ 6Ô5ñ\ð~%
 Vñ %
°6ð %
ñ %
ð %
ñ %
ðPð ñ ð ñ ˜tñ ô ñ ð ñ ¨vñ È3ð ñ ð ñ ð$ €ˆtÕ,Ô4Ñ5Ô5ñ#ð #ñ 6Ô5ñ#ð$ €ˆtÕ#Ñ$Ô$Ø€�„ñ8ð 8ñ „ñ %Ô$ñ8ð" €ˆtÕ,Ñ-Ô-Ø€ˆ\™;Ñ'Ô'ñ!ð !ñ (Ô'ñ .Ô-ñ!ð, €�•	Ô!Ð"Ñ#Ô#ñ.ð .ñ $Ô#ñ.ð €ˆt�Ô&Ñ'Ô'ð ØØØØñ)ñ )ð )ñ (Ô'ñ)ðX €�•	Ô! 4¥9¤=Ð1Ñ2Ô2Ø€�„ð ØØØØñð ñ ð ñ „ñ 3Ô2ñð( €�•
Ô" D¥J¤NÐ3Ñ4Ô4Ø€�„ð ØØØØñð ñ ð ñ „ñ 5Ô4ñð( €ˆtÕ"Ô*Ñ+Ô+ñ&ð &ñ ,Ô+ñ&ð €ˆtÕ!Ô)Ñ*Ô*ñ&ñ &ð &ñ +Ô*ñ&ð €ˆtÕ$Ô,Ñ-Ô-ñ&ñ &ð &ñ .Ô-ñ&ñ.ð .ñ .ñð ˜ñ ¨Cñ ¸dð ñ ð ñ ñ$/ð /ñ /ñ
ð ñ ð  €ˆt�{Ô"Ñ#Ô#ñ'ñ 'ð 'ñ $Ô#ñ'ññ ð ñ ñ6
ñ 
ð 
ñ 
ñ ð ñ ñ
%ñ %ð %ñ %ñR4ñ 4ð 4ñ 4ð €ˆtÕÔ'Ñ(Ô(ñ&ð &ñ )Ô(ñ&ð
 €ˆtÕ Ñ!Ô!ñð ñ "Ô!ñð
 €à�ÕØ�ÕØ�ÕØ�Õ!ð	ñô ð €�„ñ&ñ &ð &ñ „ñô ñ&ð €à�ÕØ�ÕØ�ÕØ�Õ"ð	ñô ññ ð ñô ñð €�Õ8Ô@ÐAÑBÔBð
 ØØ#Øñ<ñ <Øñ<à	ñ<ð ñ<ð ñ	<ð
 ñ<ð ñ<ð �4‰<ð<ñ <ð <ñ CÔBñ<ð~ €�Õ8ÕBÐCÑDÔDð ØØ#Øññ Øñà	ñð ñð ˜‰}ñ	ð
 ˜‰}ñð ˜‰}ñð ñð ñð ñð �4‰<ðñ ð ñ EÔDññ4Øñà�S™#�XŒðñ ð ñ ð, €�Õ8Ð9Ñ:Ô:ð ØØ#Øñ(ñ (Øñ(à	ñ(ð ñ(ð ˜‰}ñ	(ð
 ñ(ð ñ(ð ñ(ð ñ(ð �4‰<ð(ñ (ð (ñ ;Ô:ñ(ðV €�ÕEÐFÑGÔGð
  $ØØØ#Øñ0ñ 0Øñ0à	ñ0ð ñ0ð ˜‰}ñ	0ð
 ñ0ð ñ0ð ñ0ð �4‰<ð0ñ 0ð 0ñ HÔGñ0ðf €ˆtÕMÑNÔNð& ñ%2ð 2ñ 2Øñ2àñ2ð 
ñ2ð ñ	2ð
 ñ2ð ˜$”Zð2ð 
ñ2ð ñ2ð ñ2ð ñ2ð ñ2ð ñ2ð ñ2ð ñ2ð ñ2ð  ñ!2ð$ �4‰<ð%2ñ 2ð 2ñ OÔNñ2ð6 €àÕ9ðñô ð( ñ"ñ "Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð �4‰<ð"ñ "ð "ñô ñ
"ð. €àÕ8ðñô ð ØØ#Øññ Øñà	ñð ñð ñ	ð
 ñð ˜‰}ñð �4‰<ðñ ð ñô ñ
ð: €àÕAðñô ð  $Øñ!"ñ !"Øñ!"àñ!"ð 
ñ!"ð ð	!"ð
 
ñ!"ð ñ!"ð ñ!"ð ñ!"ð ˜‰}ñ!"ð �4‰<ð!"ñ !"ð !"ñô ñ
!"ðH €�Õ?Ð@ÑAÔAð
  $ØØØ"&ØØñ-ñ -Øñ-à	ñ-ð ñ-ð ˜‰}ñ	-ð
 ñ-ð ñ-ð ˜4‘-ñ-ð �4‰<ñ-ð ð-ð ˆ6�6ˆ>Ôð-ñ -ð -ñ BÔAñ-ð` €�Õ<Ð=Ñ>Ô>ð ØØñ))ñ ))Øñ))à	ñ))ð ñ))ð ˜‰}ñ	))ð
 ñ))ð ñ))ð �4‰<ð))ñ ))ð ))ñ ?Ô>ñ))ðX €àÕ=ðñô ð" Øñ4-ñ 4-Øñ4-àñ4-ð 
ñ4-ð ñ	4-ð
 ˜‰}ð4-ð 
ñ4-ð ñ4-ð ñ4-ð ñ4-ð ñ4-ð ˜$”Zñ4-ð ñ4-ð �4‰<ð4-ñ 4-ð 4-ñô ñ
4-ðn €àÕ9ðñô ð* ñ!"ñ "Øñ"àñ"ð 
ñ"ð ð	"ð
 
ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð ñ"ð  �4‰<ð!"ñ "ð "ñô ñ
"ð0 €àÕ%Ô-ðñô ð  Ø#'Ø$(Ø#Ø"&Ø!%Ø!ñ#Jñ JØñJà	ñJð ñJð ˜‰}ñ	Jð
 ˜‰}ñJð ñJð ñJð ñJð ñJð ñJð �4‰<ñJð ˜D‘jñJð ˜T‘zñJð ˜‰}ñJð ˜4‘-ñJð  ˜$‘ñ!Jð" �d‘
ð#Jñ Jð Jñô ñ
JðZ €�Õ@ÔHÐIÑJÔJð Ø#'Ø$(Ø#Ø"&Ø!%Ø!ñ%&ð &Ø	ñ&àñ&ð 
ñ&ð ñ	&ð
 ˜‰}ñ&ð ˜‰}ñ&ð ñ&ð ñ&ð ñ&ð ñ&ð ñ&ð �4‰<ñ&ð ˜D‘jñ&ð ˜T‘zñ&ð ˜‰}ñ&ð  ˜4‘-ñ!&ð" ˜$‘ñ#&ð$ �d‘
ð%&ñ &ð &ñ KÔJñ&ðR €�Õ-Õ7Ð8Ñ9Ô9ð Ø#'Ø$(Ø#Ø"&ñ%'ñ 'Øñ'à	ñ'ð ñ'ð ˜‰}ñ	'ð
 ˜‰}ñ'ð ñ'ð ñ'ð ñ'ð ñ'ð ñ'ð ˜‰}ñ'ð ˜‰}ñ'ð ˜‰}ñ'ð �4‰<ñ'ð ˜D‘jñ'ð  ˜T‘zñ!'ð" ˜‰}ñ#'ð$ ˜4‘-ð%'ñ 'ð 'ñ :Ô9ñ'ðT €àÕ&ðñô ð( Ø#'Ø$(ñ#,ñ ,Øñ,àñ,ð 
ñ,ð ð	,ð
 
ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð ñ,ð �4‰<ñ,ð  ˜D‘jñ!,ð" ˜T‘zð#,ñ ,ð ,ñô ñ
,ð4 €àÕ)ðñô ð   %ØØ%)Ø"Ø"ñ/Sñ /SØñ/Sà	ñ/Sð ð/Sð �4‰-ñ	/Sð
 ˜4‘-ñ/Sð ˜4‘-ñ/Sð ˜‘*ñ/Sð ˜‘*ñ/Sð ñ/Sð ñ/Sð ñ/Sð �4‰<ñ/Sð ˜d‘]ñ/Sð �t‰mñ/Sð �t‘ð/Sñ /Sð /Sñô ñ
/Sðd €àÕ*ðñô ð* Ø!%Ø"'ñ%47ñ 47Øñ47àñ47ð 
ñ47ð ð	47ð
 �4‰-ñ47ð ˜4‘-ñ47ð ˜4‘-ñ47ð •,ñ47ð •,ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð ñ47ð  �4‰<ñ!47ð" ˜$‘Jñ#47ð$  ð%47ñ 47ð 47ñô ñ
47ðx !%Ø(,Ø$(Ø ñAYð AYØ
Œ,ðAYà
Œ,ñAYð Œ\ñAYð Œ\ð	AYð
 Œ,˜Ñ
ñAYð ”, Ñ%ðAYð Œ{˜TÑ!ñAYð ðAYñ AYð AYñ AYðH €�•Ô'Ð(Ñ)Ô)ð !%Ø(,Ø$(Ø ñð Ø
Œ,ðà
Œ,ñð Œ\ñð Œ\ð	ð
 Œ,˜Ñ
ñð ”, Ñ%ðð Œ{˜TÑ!ñð ðñ ð ñ *Ô)ñð, !%Ø$(Ø*.Ø*.Ø ñ{Cð {CØ
Œ,ð{Cà
Œ,ñ{Cð �%”,Ôñ{Cð ˜Ô%ñ	{Cð
 �%”,Ôñ{Cð ˜Ô%ð{Cð Œ,˜Ñ
ð{Cð Œ{˜TÑ!ñ{Cð �KÔ  4Ñ'ñ{Cð �KÔ  4Ñ'ñ{Cð ð{Cñ {Cð {Cñ {Cð| €�Õ"Ô*Ð+Ñ,Ô,ð !%Ø'+Ø)-Ø ñð Ø
Œ,ðà
Œ,ñð �%”,Ôñð ˜Ô%ñ	ð
 �KÔ ñð �%”,Ôñð ˜Ô%ñð �KÔ ðð Œ,˜Ñ
ñð ”+ Ñ$ñð ˜3”i $Ñ&ñð ðñ ð ñ -Ô,ñð: €�Õ#Õ'¨Õ)<Õ)DÐEÑFÔFØ€�„ñ&ñ &ð &ñ „ñ GÔFñ&ð
 €ˆtÕ#Õ'Ñ(Ô(ññ ð ñ )Ô(ñð
 €�Õ Ô(¨$Õ*:Ô*>Ð?Ñ@Ô@Ø€�„ñ	Èð 	ð 	ñ 	ð 	ñ „ñ AÔ@ñ	ñð ñ ñ,ð ,ñ ,ð* €Ø	ÕÔ$ dÕ&DÔ&LÐMñô ñ
ñ 
ð 
ñô ñ
ð €Ø	ÕÔ$ dÕ&DÔ&LÐMñô ññ ð ñô ñð. €àÕ(Ô0ØÕ/Ô7ðñô ð "Ø!ññ Øñà˜# ¥Ñ,Ô-ñð ˜˜u�|Ñ+Ô,ñð �d‰lñ	ð
 �d‰lðñ ð ñô ñð: €Ø	ÕÔ$ dÕ&DÔ&LÐMñô ñ
ñ 
ð 
ñô ñ
ð €à�	ÔØ�	ÕØ�	ÕØ�	Õð	ñô ññ ð ñô ññ*$ð $ñ $ðN €ˆtÕ)Ô1Ñ2Ô2ð
 Øññ ð ñ 3Ô2ñð €ˆt�Ô&Ñ'Ô'ñ4/ð 4/ñ (Ô'ñ4/ðn €ˆt�Ô&Ñ'Ô'ñ)ð )ñ (Ô'ñ)ðX €ˆtÕ$Ô,Ñ-Ô-ñ$%ð $%ñ .Ô-ñ$%ñN

ð 

ñ 

ñ
ð 
ñ 
ð €�•Ô# T¥[Ô%8Ð9Ñ:Ô:ñ4ñ 4ð 4ñ ;Ô:ñ4ð €ˆtÕ!Ô)Ñ*Ô*ññ ð ñ +Ô*ñð €ˆt�yÔ Ñ!Ô!ñ
Qñ 
Qð 
Qñ "Ô!ñ
Qð €ˆtÕ,Ñ-Ô-Ø€�„àLPññ ð ñ „ñ .Ô-ñð" €�•Ô% t¥}Õ';Ð<Ñ=Ô=Ø€ˆX�yÑ!Ô!ñKñ Kð Kñ "Ô!ñ >Ô=ñKð  #(Õ"9Ñ ñQð Qñ Qð €ˆtÕ7Ô?Ñ@Ô@ñ	*ð 	*ñ AÔ@ñ	*ð €ˆtÕ#Ô+Ñ,Ô,ñ	0ð 	0ñ -Ô,ñ	0ð €ˆtÕ!Ô)Ñ*Ô*ñ+ð +ñ +Ô*ñ+ð\ €ˆtÕ-Ô5Ñ6Ô6ñ)Fð )Fñ 7Ô6ñ)FðX €�•Ô% t¥~Õ'@ÐAÑBÔBØ€�„Ø27¸uñ ð ñ ð ñ „ñ CÔBñð €�•Õ% t¥~Õ'@ÐAÑBÔBð
 Øñ
ð 
ð 
Ø
ñ
àñ
ð ñ	
ð
 ð
ñ 
ð 
ñ CÔBñ
ð €�•
ˆ|ÑÔØ€�„ñEñ Eð Eñ „ñ ÔñEð4 €àÕ$Ô,ØÕ#Ô+ØÕ#Ô+ðñô ð Øññ ð ñô ñð& €àÕ-Ô5ØÕ,Ô4ðñô ð Øññ ð ñô ñð8 €ˆtÕ>ÔFÑGÔGñð ñ HÔGñð$ €�•Ô'¨­Ô)<Ð=Ñ>Ô>Ø€�„ñ"ñ "ð "ñ „ñ ?Ô>ñ"ð €ˆuŒyŒ~Õ(Ñ)Ô)ñð ñ *Ô)ñð: €ˆuŒyŒ~Õ Ñ!Ô!ñ6ð 6ñ "Ô!ñ6ð( €ˆtÕ Ñ!Ô!Ø€�„ð
 Ø
Ø	Øñ-Kð -Kñ -Kð -Kñ „ñ "Ô!ñ-Kñ`ð ñ ð €ˆtÕ,Ñ-Ô-ñð ñ .Ô-ñð €ˆtÕ+Ñ,Ô,ð ñ'
ñ '
ð '
ñ -Ô,ñ'
ðT €ˆtÕ1Ñ2Ô2ð ññ ð ñ 3Ô2ñð, €ˆtÕ>Ñ?Ô?ð ññ ð ñ @Ô?ñð. €ˆt�yÑÔØ€�„Ø8=Àeñ 8ð 8ñ 8ð 8ñ „ñ Ôñ8ð  €ˆt�~ÑÔØ€�„ñ6�cð 6 ð 6¨Fð 6ñ 6ð 6ñ „ñ Ôñ6ð €ˆtÕ'Ñ(Ô(ðI &ð Iñ Ið Iñ )Ô(ñIð €ˆt�yÑÔØ€˜ÐÑÔð"ˆvð "˜&ð "ñ "ð "ñ Ôñ Ôñ"ð €ˆt�|ÑÔØ€�„ð6�&ð 6˜Vð 6ñ 6ð 6ñ „ñ Ôñ6ñ'ð 'ñ 'ð^ ØØ(,Ø$(Ø ñVKñ VKØñVKàñVKð Œ\˜DÑ ñVKð Œ\˜DÑ ñ	VKð
 �4‰-ðVKð �4‰-ñVKð ”, Ñ%ðVKð Œ{˜TÑ!ñVKð ðVKñ VKð VKñ VKðr €ˆtÕÑ Ô Ø€�„ð ØØ$(ññ Øñàñð �4‰-ðð �4‰-ð	ð
 Œ{˜TÑ!ðð ðñ ð ñ „ñ !Ô ñð& €�Õ'Ð(Ñ)Ô)ð !%Ø $Ø(,Ø$(Ø ññ ØŒ<ñàŒ<ñð Œ\ñð Œ\ñ	ð
 Œ,˜Ñ
ðð Œ,˜Ñ
ñð ”, Ñ%ðð Œ{˜TÑ!ñð ðñ ð ñ *Ô)ñð6 €ˆtÕ!Õ(Ñ)Ô)ññ ð ñ *Ô)ñð  €ˆt�}ÑÔØ€�„ñˆvð ˜Cñ °ð ¸ð ñ ð ñ „ñ Ôñð  €ˆtÕ#Ñ$Ô$Ø€�„ñ3ñ 3ð 3ñ „ñ %Ô$ñ3ðl €ˆt�~ÑÔØ€�„ð Ø$Øñ8ð 8Øð8àñ8ð ñ8ð ñ	8ð
 ð8ð ð8ñ 8ð 8ñ „ñ Ôñ8ð< €ˆtÕ3Ô;Ñ<Ô<ð
 ñ	*ð *Øð*à�&Œ\ñ*ð �c”ñ*ð ð	*ñ *ð *ñ =Ô<ñ*ñ,ð ñ ð €ˆtÕ0Ô8Ñ9Ô9ð 
ØØØñ-"ñ -"ð -"ñ :Ô9ñ-"ñ`ð ñ ð Ñ ˜dÕ2Ñ 3Ô 3Ð 3Ø Ñ ˜dÕ4Ñ 5Ô 5Ð 5Ø Ñ ˜dÕ4Ñ 5Ô 5Ð 5Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕ=Ñ >Ô >Ð >Ø Ñ ˜dÕDÑ EÔ EÐ EØ Ñ ˜dÕDÑ EÔ EÐ Eð Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕBÑ CÔ CÐ CØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕJÑ KÔ KÐ KØ Ñ ˜tÕ@Ñ AÔ AÐ AØ Ñ ˜tÕAÑ BÔ BÐ BØ Ñ ˜tÕAÑ BÔ BÐ BØ Ñ ˜tÕAÑ BÔ BÐ Bñð ñ ð €ˆt�yÑÔØ€�„ñð ñ „ñ Ôñð$ €ˆt�|ÑÔØ€�„Ø./ñ ð ñ ð ñ „ñ Ôñð €ˆt�|ÑÔØ€�„Ø./ñ ð ñ ð ñ „ñ Ôñð, 	Ñ˜t�yÑ)Ô)�Ø!Ñ! $¥,Ñ/Ô/�Ø!Ñ! $¥,Ñ/Ô/�ð
 Ð Ð Ð Ø  Ð  Ñ  Ð  Ø Ð Ñ Ð ñENð ENñ ENðP ��„€€€r;   