§
    ŠŠtj=K ã            !       óÔw  — U d dl Z d dlZd dlZd dlZd dlZd dlmZmZ d dlm	Z	 d dl
mZ d dl mZmZ d dlmZmZ d dlmZmZ d dlZd dlZd dlmZ d dlmZ d dlmc mZ d dlmZm Z m!Z! d d	l"m#Z# d d
l$m%Z% d dlm&Z&m'Z'm(Z(m)Z)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/ d dl0m1Z2 d dl3m4Z4 ej5        j6        Z6g Z7e8e9         e:d<   ej;        j<        j=        Z= G d„ de¦  «        Z>	 	 �d»dedej?        de@de@fd„ZA eeAej?        jB        d¬¦  «        ZC eeAej?        jB        ¬¦  «        ZD eeAej?        jB        d¬¦  «        ZE eeAej?        jF        ¬¦  «        ZGde!deHde!fd„ZI e#e=jJ        ¦  «         e/d ¦  «        eDd!e!d"e!fd#„¦   «         ¦   «         ¦   «         ZJ e#e=jK        ¦  «         e/d ¦  «        eDd!e!d"e!fd$„¦   «         ¦   «         ¦   «         ZK e#e=jL        ¦  «         e/d ¦  «        eDd!e!de!d%eMd&eMfd'„¦   «         ¦   «         ¦   «         ZL e#e=jN        ¦  «         e/d ¦  «        eDd(e!d)eMd*eMd+eMd,e@d-e!fd.„¦   «         ¦   «         ¦   «         ZN e#e=jO        jP        g¦  «        d/„ ¦   «         ZQ e#e=jO        j!        g¦  «        d0e!fd1„¦   «         ZR e#e=jS        ¦  «         e/¦   «         eDd2e!de!fd3„¦   «         ¦   «         ¦   «         ZS e#e=jT        ¦  «         e/d ¦  «        eDd(e!d2e!fd4„¦   «         ¦   «         ¦   «         ZT e#e=jU        ¦  «         e/d ¦  «        eDd(e!d2e!d5eMd6eMfd7„¦   «         ¦   «         ¦   «         ZU e#e=jV        ¦  «         e/¦   «         eDd2e!de!fd8„¦   «         ¦   «         ¦   «         ZV e#e=jW        ¦  «         e/¦   «         eDd(e!d2e!de!fd9„¦   «         ¦   «         ¦   «         ZW e#e=jX        ¦  «         e/d ¦  «        d(e!d2e!d&eMfd:„¦   «         ¦   «         ZX e#e=jY        ¦  «         e/d ¦  «        eDd(e!d2e!d;eMd<e@fd=„¦   «         ¦   «         ¦   «         ZY e#e=jZ        ¦  «         e/d ¦  «        eD�d¼d?e!d2e!d@e9fdA„¦   «         ¦   «         ¦   «         ZZ e#e=j[        ¦  «        eDd(e!dBe!fdC„¦   «         ¦   «         Z[ e#e=j\        ¦  «         e/¦   «         eDd2e!de!fdD„¦   «         ¦   «         ¦   «         Z\ e#e=j]        ¦  «         e/d ¦  «        eDd(e!d2e!de!fdE„¦   «         ¦   «         ¦   «         Z] e#e=j^        ¦  «        d2e!dFe!de!fdG„¦   «         Z^ e#e=j_        ¦  «        d(e!d2e!dFe!de`e!e!f         fdH„¦   «         Z_ e#e=ja        ¦  «         e/¦   «         eDd(e!d2e!dIe!dJeMdKeMdLe@d<e@de!fdM„¦   «         ¦   «         ¦   «         Za e#e=jb        ¦  «         e/d ¦  «        eDd(e!d2e!dNe!de!fdO„¦   «         ¦   «         ¦   «         Zb e#e=jc        ¦  «         e/¦   «         d2e!dPe!de!fdQ„¦   «         ¦   «         ZcdRe!dSeHfdT„ZddUeje        fdV„Zf e#e=jg        ¦  «         e/¦   «         eDe>jh        ji        fd2e!dWe!dSeHde!fdX„¦   «         ¦   «         ¦   «         Zg e#e=jj        ¦  «         e/d ¦  «        eDd(e!dBe!dWe!dSeHfdY„¦   «         ¦   «         ¦   «         Zj e#e=jk        ¦  «        �d½dZ„¦   «         Zl e#e=jm        ¦  «         e/¦   «         eDe>jh        ji        d[fd2e!dWe!dSeHd%eMfd\„¦   «         ¦   «         ¦   «         Zm e#e=jn        jo        ¦  «        eDd(e!d2e!dWe!dSeHd%eMf
d]„¦   «         ¦   «         Zn e#e=jn        jp        ¦  «        eDd(e!d2e!dWe!dSeHd%eMd e!fd^„¦   «         ¦   «         Zq e#e=jr        jo        ¦  «        eDd(e!d2e!dWe!dSeHd_eMf
d`„¦   «         ¦   «         Zr e#e=jr        js        ¦  «        eDd(e!d2e!dWe!dSeHd_eMd e!fda„¦   «         ¦   «         Ztd(e!d2e!dWe!dFe!dz  dSeHdbeHdce!de!fdd„Zu e#e=jv        ¦  «         e/d ¦  «        eDd(e!d2e!deHde!fde„¦   «         ¦   «         ¦   «         Zv e#e=jw        ¦  «         e/d ¦  «        d(e!d2e!dWe!dFe!dz  dSeHdbeHdce!de!fdf„¦   «         ¦   «         Zw e#e=jx        ¦  «         e/d ¦  «        d(e!d2e!dWe!dFe!dz  dSeHdbeHdce!de!fdg„¦   «         ¦   «         Zx e#e=jy        ¦  «         e/¦   «         eDde>jh        ji        fd2e!dWe!dFe!dz  dSeHde!f
dh„¦   «         ¦   «         ¦   «         Zy e#e=jz        ¦  «         e/d ¦  «        eDde>jh        ji        fd(e!d2e!dWe!dFe!dz  dSeHde!fdi„¦   «         ¦   «         ¦   «         Zz e#e=j{        ¦  «         e/¦   «         eDe>jh        ji        fdBe!dWe!dSeHde!fdj„¦   «         ¦   «         ¦   «         Z{ e#e=j|        ¦  «         e/d ¦  «        eDe>jh        ji        fd(e!d2e!dWe!dSeHde!f
dk„¦   «         ¦   «         ¦   «         Z| e#e=j}        ¦  «         e/¦   «         �d¾dBe!dPe!dmeMfdn„¦   «         ¦   «         Z} e#e=j~        ¦  «         e/¦   «         doe!dpe!de!fdq„¦   «         ¦   «         Z~ e#e=j        ¦  «         e/¦   «         d(e!dre8eH         deHdseHdteHdueHfdv„¦   «         ¦   «         Z e#e=j€        j!        ¦  «        	 	 	 	 �d¿d2e!deHdseHdz  dteHdz  dueHf
dx„¦   «         Z�de!deHdseHdz  dteHdz  de`eHeHf         f
dy„Z‚ e#e=jƒ        ¦  «         e/¦   «         	 	 	 	 �d¿dBe!dze!deHdseHdz  dteHdz  dueHfd{„¦   «         ¦   «         Zƒ e#e=j„        ¦  «         e/¦   «         d(e!dre8eH         deHd|eHfd}„¦   «         ¦   «         Z„ e#e=j…        ¦  «         e/¦   «         d(e!dre8eH         d~eHdeHd€eHf
d�„¦   «         ¦   «         Z…d(e!d e!d‚eje        fdƒ„Z† e#e=j‡        ¦  «         e/d ¦  «        eCd(e!d„e!deHd‚eje        fd…„¦   «         ¦   «         ¦   «         Z‡ e#e=jˆ        ¦  «         e/¦   «         eCd(e!d„e!deHd‚eje        fd†„¦   «         ¦   «         ¦   «         Zˆd‡„ Z‰ e#e=jŠ        ¦  «         e/¦   «         dBe!dˆe8eH         d‰e8eH         dŠe8eH         d‹e8eH         de!fdŒ„¦   «         ¦   «         ZŠ e#e=j‹        ¦  «         e/¦   «         eDdBe!d�e8eH         dˆe8eH         d‰e8eH         dŠe8eH         d‹e8eH         de!fdŽ„¦   «         ¦   «         ¦   «         Z‹ e#e=jŒ        ¦  «         e/¦   «         d(e!d�e!d*eMfd�„¦   «         ¦   «         ZŒ e#e=j�        ¦  «         e/¦   «         d?e!d‘e8eH         d’eHd“eHdueHde!fd”„¦   «         ¦   «         Z� e#e=jŽ        jo        ¦  «        eD	 �d½d(e!d2e!d•eMdz  de!fd–„¦   «         ¦   «         ZŽ e#e=j�        ¦  «        e=j�        jo         �                    e6j‘        ¦  «        e=j�        jo         �                    e6j’        ¦  «        dBe!dmeMd—e@dz  fd˜„¦   «         ¦   «         ¦   «         Z� e#e=j“        ¦  «         e/d™dš¦  «        dBe!dmeMd—e@dz  fd›„¦   «         ¦   «         Z“ e#e=j”        ¦  «         e/¦   «         de!deHdœe@fd�„¦   «         ¦   «         Z”de!deHde!fdž„Z• e#e=j–        ¦  «         e/d¬Ÿ¦  «        de!deHdœe@fd „¦   «         ¦   «         Z– e#e=j—        ¦  «         e/¦   «         	 	 	 �dÀdFe!d¢e!d£eHd¤e@d¥e@de!fd¦„¦   «         ¦   «         Z— e#e=j˜        ¦  «         e/¦   «         d(e!d¢e!d§eHd£eHd¤e@f
d¨„¦   «         ¦   «         Z˜de8eH         fd©„Z™dªe8e!         deHd«eHde8e!         fd¬„Zšdªe8e!         fd­„Z›dªe8e!         deHfd®„Zœdªe8e!         deHd«eHfd¯„Z� e#e=jž        jo        e=jž        js        g¦  «        	 �d½dªe8e!         deHd«eHd°e!dz  de!f
d±„¦   «         Zž e#e=jŸ        jo        e=jŸ        js        g¦  «        	 	 �dÁd2e!d²e8eH         deHd°e8e!         dz  de8e!         dz  f
d³„¦   «         ZŸ e#e=j         j!        ¦  «        �dÂdBe!d´eHdeHde`e!dµf         fd¶„¦   «         Z  e#e=j¡        jo        ¦  «        	 �dÂdBe!d²e8eH         deHde`e!dµf         fd·„¦   «         Z¡ e#e=j¢        j!        ¦  «        �dÂd2e!d´eHdeHde`e!dµf         fd¸„¦   «         Z¢e=j£        j¤         �                    e6j‘        ¦  «        	 �dÂd2e!d¹e!deHde`e!dµf         fdº„¦   «         Z¥ e#e=j¦        jo        e=j¦        js        g¦  «         e/d¬Ÿ¦  «        eD�dÃd2e!d»e!d¼e!d%eHd)eHf
d½„¦   «         ¦   «         ¦   «         Z¦ e#e=j¦        je        e=j¦        j§        g¦  «         e/d¬Ÿ¦  «        	 	 �dÃd2e!d»e!d¼e!d¾eje        d%eHd)eHfd¿„¦   «         ¦   «         Z¨ e#e=j©        ¦  «         e/¦   «         eD	 	 	 �dÄd2e!d»e!d¼e!d%eHd)eHdÀe@fdÁ„¦   «         ¦   «         ¦   «         Z©eD�dÃd2e!d»e!dÂe!d%eHd)eHf
dÃ„¦   «         Zª e#e=j«        ¦  «         e/d¬Ÿ¦  «        �dÃd2e!d»e!dÂe!d%eHd)eHf
dÄ„¦   «         ¦   «         Z« e#e=j¬        jo        ¦  «        eDd(e!dBe!dÅe!dÆe!dÇe!dz  dÈeHdÉeHdÊeHdËeHdÌe8e@         de`e!dz  e!dz  e!dz  f         fdÍ„¦   «         ¦   «         Z¬ e#e=j¬        js        ¦  «        d(e!dBe!dÅe!dÆe!dÇe!dz  dÈeHdÉeHdÊeHdËeHdÌe8e@         d™ej!        dšej!        dÎej!        de`e!dz  e!dz  e!dz  f         fdÏ„¦   «         Z­de!dz  de!dz  fdÐ„Z® e#e=j¯        jo        ¦  «        dÑe!dBe!dÒe8eH         dÅe!dÆe!dFe!dz  dÓe!dz  dÌe8e@         de`e!dz  e!dz  e!dz  f         fdÔ„¦   «         Z¯ e#e=j¯        js        ¦  «        dÑe!dBe!dÒe8eH         dÅe!dÆe!dFe!dz  dÓe!dz  dÌe8e@         d™ej!        dšej!        dÎej!        de`e!dz  e!dz  e!dz  f         fdÕ„¦   «         Z° e#e=j±        jo        ¦  «        dBe!dÒe8eH         dFe!dz  d•eMdz  de`e!e!f         f
dÖ„¦   «         Z± e#e=j²        jo        ¦  «        dÑe!dBe!dÒe8eH         dÆe!dFe!dz  dÌe8e@         de`e!dz  e!dz  f         fd×„¦   «         Z²dBe!dFe!dz  dÓe!dz  dØe!dz  dÙe!dz  dLe@dÚeMd•eMdÛe@de`e!e!e!e!dz  e!dz  f         fdÜ„Z³ e#e=j´        ¦  «         e/d°dÝdÞ¦  «        dBe!dFe!dz  dÓe!dz  dØe!dz  dÙe!dz  dLe@dÚeMd•eMde`e!e!e!f         fdß„¦   «         ¦   «         Z´e=j´        jo         �                    e6j’        ¦  «        e=j´        jo         �                    e6j‘        ¦  «        dBe!dFe!dz  dÓe!dz  dØe!dz  dÙe!dz  dLe@dÚeMd•eMde`e!e!e!f         fdà„¦   «         ¦   «         Zµe=j¶        jo         �                    e6j‘        ¦  «        �dÂde8e!         fdá„¦   «         Z· e#e=j¸        jo        ¦  «        dBe!dFe!dz  dÓe!dz  dØe!dÙe!dÚeMd•eMde`e!e!e!f         fdâ„¦   «         Z¸ e#e=j¹        jo        ¦  «        dBe!dFe!dz  dÓe!dz  dØe!dÙe!dLe@dÚeMd•eMde`e!e!e!f         fdã„¦   «         Z¹ e#e=j¹        jº        ¦  «        dBe!dFe!dz  dÓe!dz  dLe@dÚeMd•eMde`e!e!e!f         fdä„¦   «         Z» e#e=j¼        jo        ¦  «        dBe!dFe!dz  dÓe!dz  dØe!dÙe!dLe@dÚeMd•eMde`e!e!e!e!e!f         fdå„¦   «         Z¼dBe!dFe!dz  dÓe!dz  dØe!dÙe!d•eMdLe@de!fdæ„Z½ e#e=j¾        jo        ¦  «        dBe!dFe!dz  dÓe!dz  dØe!dÙe!dÚeMd•eMde`e!e!e!e!f         fdç„¦   «         Z¾ e#e=j¿        jo        ¦  «        dBe!dFe!dz  dÓe!dz  dØe!dÙe!dÚeMd•eMde`e!e!e!e!e!e!f         fdè„¦   «         Z¿ e#e=jÀ        jo        ¦  «        dBe!dFe!dz  dÓe!dz  dØe!dÙe!dÚeMd•eMde`e!e!e!e!f         fdé„¦   «         ZÀ e#e=jÁ        ¦  «         e/d™dš¦  «        �d½dê„¦   «         ¦   «         ZÂ e#e=jÃ        ¦  «         e/¦   «         dddddddëœde!e'z  dUeje        dz  dìejÄ        dz  díe@dîe@dïejÅ        dz  fdð„¦   «         ¦   «         ZÃ e#e=jÆ        e=jÇ        e=jÈ        g¦  «         e/¦   «         dñ„ ¦   «         ¦   «         ZÉe=jÊ        jo         �                    e6j’        ¦  «         e#e=jÊ        ¦  «         e/d™dšdÎdò¦  «        dBe!dFe!dÓe!dz  dØe!dz  dÙe!dz  dLe@dóeMdôeMfdõ„¦   «         ¦   «         ¦   «         ZÊdö„ ZË e#e=jÌ        jo        ¦  «        dÑe!dBe!dFe!dz  dØe!dz  dÙe!dz  dÝe!dz  dÞe!dz  d—e@d•eMdÌe8e@         d÷e!de`e!e!dz  e!dz  f         fdø„¦   «         ZÌ e#e=jÍ        jo        ¦  «        dÑe!dBe!dFe!dz  dØe!dz  dÙe!dz  dÝe!dz  dÞe!dz  d—e@d•eMdÌe8e@         de`e!e!dz  e!dz  f         fdù„¦   «         ZÍ e#e=jÍ        js        ¦  «        dÑe!dBe!dFe!dz  dØe!dz  dÙe!dz  dÝe!dz  dÞe!dz  d—e@d•eMdÌe8e@         d™ej!        dšej!        dÎej!        de`e!e!dz  e!dz  f         fdú„¦   «         ZÎ e#e=jÏ        ¦  «         e/d™dšdÎ¦  «        dBe!d(e!dFe!dØe!dz  dÙe!dz  dÝe!dz  dûe!dz  dôeMfdü„¦   «         ¦   «         ZÏ e#e=jÐ        ¦  «         e/d™dšdÎ¦  «        dBe!d(e!dFe!dØe!dz  dÙe!dz  dÝe!dz  dûe!dz  dôeMdýe!fdþ„¦   «         ¦   «         ZÐ e#e=jÑ        ¦  «         e/¦   «         eDdBe!d�e`eHeHf         fdÿ„¦   «         ¦   «         ¦   «         ZÒd2e!dˆe8eH         d‹e8eH         dŠe8eH         d‰e8eH         �d e@�deHde`e!e!f         f�d„ZÓ e#e=jÔ        ¦  «         e/d°d¢¦  «        g d gdwgdfd2e!dˆe8eH         d‹e8eH         dŠe8eH         d‰e8eH         �d e@de`e!e!f         f�d„¦   «         ¦   «         ZÔ e#e=jÕ        ¦  «         e/d°d¢¦  «        g d gdwgdfd2e!dˆe8eH         d‹e8eH         dŠe8eH         d‰e8eH         �d e@de`e!e!f         f�d„¦   «         ¦   «         ZÕ e#e=jÖ        ¦  «         e/d°d¢¦  «        dBe!d�e`eHeHf         de`e!e!f         f�d„¦   «         ¦   «         ZÖ e#e=j×        ¦  «         e/d°d¢¦  «        dBe!d�e`eHeHeHf         de`e!e!f         f�d„¦   «         ¦   «         Z×d2e)d¢e)d�e8eH         deHf�d„ZØ e#e=jÙ        ¦  «         e/¦   «         d2e)d¢e)d�e8eH         f�d„¦   «         ¦   «         ZÙ e#e=jÚ        ¦  «         e/¦   «         dBe)d¢e)d�e8eH         d‹e8eH         dŠe8eH         f
�d	„¦   «         ¦   «         ZÚ e#e=jÛ        ¦  «        dw�d
œde)deHd|e)�de)d)e'f
�d„¦   «         ZÛ e#e=jÜ        ¦  «         e/¦   «         dw�d
œde)deHd|e)�de)d)e'f
�d„¦   «         ¦   «         ZÜdw�d
œde)deHd|e)�de)�de@d)e'f�d„ZÝ e#e=jÞ        jo        ¦  «        e=jÞ        jo         �                    e6j‘        ¦  «        �dÅ�d„¦   «         ¦   «         ZÞ e#e=jß        ¦  «        de)deHd|e)�de)f�d„¦   «         Zß e#e=jà        ¦  «         e/¦   «         de)deHd|e)�de)f�d„¦   «         ¦   «         Zàde)deHd|e)�de)�de@f
�d„Zá e#e=jâ        ¦  «         e/d„dN¦  «        eDd2e!de`e!e!f         f�d„¦   «         ¦   «         ¦   «         Zâ e#e=jã        ¦  «         e/¦   «         	 	 	 �dÆde!�de@eHz  eMz  �de@eHz  eMz  �dejä        dz  f�d„¦   «         ¦   «         Zã e#e=jå        ¦  «        �dÇ�d„¦   «         Zå�d„ Zæ�d„ Zç e#e=jè        jé        ¦  «         e#e=jê        jé        ¦  «         e#e=jë        jé        ¦  «        e=jè        jé         �                    e6j‘        ¦  «        e=jè        jé         �                    e6j’        ¦  «        e=jê        jé         �                    e6j‘        ¦  «        e=jê        jé         �                    e6j’        ¦  «        e=jë        jé         �                    e6j‘        ¦  «        e=jë        jé         �                    e6j’        ¦  «        dBe!d�e8eH         dz  �de8eM         dz  de!f�d„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Zì e#e=jí        jé        ¦  «         e#e=jî        jé        ¦  «         e#e=jï        jé        ¦  «        e=jí        jé         �                    e6j‘        ¦  «        e=jí        jé         �                    e6j’        ¦  «        e=jî        jé         �                    e6j‘        ¦  «        e=jî        jé         �                    e6j’        ¦  «        e=jï        jé         �                    e6j‘        ¦  «        e=jï        jé         �                    e6j’        ¦  «        dBe!d�e8eH         dz  �de8eM         dz  de!f�d „¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Zð�dÈ�d!„Zñ e#e=jè        jo        e=jè        js        g¦  «        e=jè        jo         �                    e6j‘        ¦  «        e=jè        jo         �                    e6j’        ¦  «         e/dd�¬"¦  «        	 �d½dBe!d�e8eH         �d#eMdz  de!f�d$„¦   «         ¦   «         ¦   «         ¦   «         Zè e#e=jí        jo        e=jí        js        g¦  «        e=jí        jo         �                    e6j‘        ¦  «        e=jí        jo         �                    e6j’        ¦  «         e/dd�¬"¦  «        	 �d½dBe!d�e8eH         �d#eMdz  de!f�d%„¦   «         ¦   «         ¦   «         ¦   «         Zò e#e=jê        jo        e=jê        js        g¦  «        e=jê        jo         �                    e6j‘        ¦  «        e=jê        jo         �                    e6j’        ¦  «         e/dd�¬"¦  «        	 	 �dÉdBe!d�e8eH         �d&eMdz  �d'eMdz  de!f
�d(„¦   «         ¦   «         ¦   «         ¦   «         Zê e#e=jî        jo        e=jî        js        g¦  «        e=jî        jo         �                    e6j‘        ¦  «        e=jî        jo         �                    e6j’        ¦  «         e/dd�¬"¦  «        	 	 �dÉdBe!d�e8eH         �d&eMdz  �d'eMdz  de!f
�d)„¦   «         ¦   «         ¦   «         ¦   «         Zî e#e=jë        jo        e=jë        js        g¦  «        e=jë        jo         �                    e6j‘        ¦  «        e=jë        jo         �                    e6j’        ¦  «         e/dd�¬"¦  «        	 	 	 �dÊdBe!d�e8eH         �d*eMdz  �d&eMdz  �d'eMdz  de!f�d+„¦   «         ¦   «         ¦   «         ¦   «         Zë e#e=jï        jo        e=jï        js        g¦  «        e=jï        jo         �                    e6j‘        ¦  «        e=jï        jo         �                    e6j’        ¦  «         e/dd�¬"¦  «        	 	 	 �dÊdBe!d�e8eH         �d*eMdz  �d&eMdz  �d'eMdz  de!f�d,„¦   «         ¦   «         ¦   «         ¦   «         ZïeD	 �dÈdBe!d�e8eH         �d#e8eMdz           �d-e@de!f
�d.„¦   «         Zó�d/„ Zô�d0„ Zõ�d1„ Zö�d2„ Z÷	 �dÈ�d3„Zø�d4„ Zù�d5„ Zú�dÈ�d6„Zû�dÈ�d7„Zü�d8„ Zý e#e=jþ        jÿ        ¦  «        e=jþ        jÿ         �                    e6j‘        ¦  «        e=jþ        jÿ         �                    e6j’        ¦  «        �d9„ ¦   «         ¦   «         ¦   «         �Z  e#e=�j        jÿ        ¦  «        e=�j        jÿ         �                    e6j‘        ¦  «        e=�j        jÿ         �                    e6j’        ¦  «        �d:„ ¦   «         ¦   «         ¦   «         �Z e#e=�j        �j        ¦  «        e=�j        �j         �                    e6j‘        ¦  «        e=�j        �j         �                    e6j’        ¦  «        �d;„ ¦   «         ¦   «         ¦   «         �Z e#e=jþ        �j        ¦  «        e=jþ        �j         �                    e6j‘        ¦  «        e=jþ        �j         �                    e6j’        ¦  «        �d<„ ¦   «         ¦   «         ¦   «         �Z�d=„ �Z�dÈ�d>„�Z�dÈ�d?„�Z�d@„ �Z	 e#e=�j
        jÿ        ¦  «        e=�j
        jÿ         �                    e6j‘        ¦  «        e=�j
        jÿ         �                    e6j’        ¦  «        �dA„ ¦   «         ¦   «         ¦   «         �Z e#e=�j
        �j        ¦  «        e=�j
        �j         �                    e6j‘        ¦  «        e=�j
        �j         �                    e6j’        ¦  «        �dB„ ¦   «         ¦   «         ¦   «         �Z�dC„ �Z�dD„ �Z e#e=�j        �j        ¦  «        e=�j        �j         �                    e6j‘        ¦  «        e=�j        �j         �                    e6j’        ¦  «        �dE„ ¦   «         ¦   «         ¦   «         �Z e#e=�j        jÿ        ¦  «        e=�j        jÿ         �                    e6j‘        ¦  «        e=�j        jÿ         �                    e6j’        ¦  «        �dF„ ¦   «         ¦   «         ¦   «         �Z e#e=�j        jé        ¦  «        e=�j        jé         �                    e6j‘        ¦  «        e=�j        jé         �                    e6j’        ¦  «        �dG„ ¦   «         ¦   «         ¦   «         �Z e#e=�j        jé        ¦  «        e=�j        jé         �                    e6j‘        ¦  «        e=�j        jé         �                    e6j’        ¦  «        �dH„ ¦   «         ¦   «         ¦   «         �Z e#e=�j        jé        ¦  «        e=�j        jé         �                    e6j‘        ¦  «        e=�j        jé         �                    e6j’        ¦  «        �dI„ ¦   «         ¦   «         ¦   «         �Z e#e=�j        jé        ¦  «         e#e=�j        jé        ¦  «        e=�j        jé         �                    e6j‘        ¦  «        e=�j        jé         �                    e6j’        ¦  «        e=�j        jé         �                    e6j‘        ¦  «        e=�j        jé         �                    e6j’        ¦  «        e=�j        jé         �                    e6j‘        ¦  «        e=�j        jé         �                    e6j’        ¦  «        �dJ„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z e#e=�j        jo        e=�j        js        g¦  «         e/¦   «         	 �d½dBe!d�e8eH         �dKe@�d'eMdz  de!f
�dL„¦   «         ¦   «         �Z e#e=�j        jo        e=�j        js        g¦  «        e=�j        jo         �                    e6j’        ¦  «         e/¦   «         	 	 �dÉdBe!d�e8eH         �dKe@�d&eMdz  �d'eMdz  de!f�dM„¦   «         ¦   «         ¦   «         �Z e#e=�j        jo        e=�j        js        g¦  «         e/¦   «         	 	 	 �dÊdBe!d�e8eH         �dKe@�d*eMdz  �d&eMdz  �d'eMdz  de!f�dN„¦   «         ¦   «         �Z�d½�dO„�Z�dP„ �Zdzee!         �dQee!         �dRe!de!f�dS„�Z�dQe*de!f�dT„�ZeDdBe!d�e8eH         �dKe@�d#e8eMdz           de!f
�dU„¦   «         �Z  e#e=�j!        jo        ¦  «        �dVe!�dWe!de@f�dX„¦   «         �Z! e#e=�j"        e=�j#        g¦  «         e/¦   «         �dY„ ¦   «         ¦   «         �Z" e#e=�j$        g¦  «        �dZ„ ¦   «         �Z$ e#e=�j%        g¦  «        �dÈ�d[„¦   «         �Z% e#e=�j&        g¦  «        �d\„ ¦   «         �Z& e#e=�j'        g¦  «        �d]„ ¦   «         �Z'd2e!dWe!dFe!dz  dSeHdbeHde`e!e!f         f�d^„�Z( e#e=�j)        ¦  «         e/d„dc¦  «        d2e!dWe!dFe!dz  dSeHdbeHde`e!e!f         f�d_„¦   «         ¦   «         �Z) e#e=�j*        ¦  «         e/d„dc¦  «        d2e!dWe!dFe!dz  dSeHdbeHde`e!e!f         f�d`„¦   «         ¦   «         �Z*de!�daeMde!f�db„�Z+de!�daeMde!f�dc„�Z,�dde!de*f�de„�Z-�dfe*�dge!de!f�dh„�Z.�dgee!         de!f�di„�Z/�djeH�dKe@dUeje        dìejÄ        f�dk„�Z0�dle!�dmeH�dneH�dKe@f�do„�Z1�dle!�dpeH�dmeH�dneH�dKe@f
�dq„�Z2�dle!d“e8eH         �dKe@f�dr„�Z3�dle!d“e8eH         �dKe@f�ds„�Z4 e#e=�j5        ¦  «         e/¦   «         eD�dle!d“e8eH         �dKe@f�dt„¦   «         ¦   «         ¦   «         �Z5	 	 	 	 �dË�dVe!�due!�dveH�dweH�dKe@�dxe@de!f�dy„�Z6 e#e=�j7        ¦  «         e/¦   «         eD	 	 	 �dÌ�dVe!�due!�dveH�dweH�dKe@de!f�dz„¦   «         ¦   «         ¦   «         �Z7 e#e=�j8        ¦  «         e/d¬Ÿ¦  «        eD�d{„ ¦   «         ¦   «         ¦   «         �Z8 e#e=�j9        ¦  «         e/¦   «         dde>jh        ji        f�d|„¦   «         ¦   «         �Z9�d}ej!        �d~ej!        �de@de@f�d€„�Z:e=�j;        jo         �                    e6j‘        ¦  «        e=�j;        js         �                    e6j‘        ¦  «         e/d�¬�¦  «        d�d‚œ�dƒ„¦   «         ¦   «         ¦   «         �Z; e#e=�j<        jo        e=�j<        js        g¦  «        e=�j<        jo         �                    e6j’        ¦  «         e/¦   «         eD	 	 �dÉdBe!d�e`eHeHf         �dKe@�d„eMdz  �d…eMdz  de!f�d†„¦   «         ¦   «         ¦   «         ¦   «         �Z= e#e=�j<        jé        ¦  «        e=�j<        jé         �                    e6j‘        ¦  «        e=�j<        jé         �                    e6j’        ¦  «         e/¦   «         eD	 �d½�dVe!d�e`eHeHf         dz  �dKe@�de`eMeMf         dz  de!f
�d‡„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z> e#e=�j?        ¦  «         e#e=�j@        ¦  «         e#e=�jA        ¦  «        eD e/¦   «         �dVe!dŠe`eHdµf         de!f�dˆ„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �ZB e#e=�jC        ¦  «         e#e=�jD        ¦  «         e#e=�jE        ¦  «        eD e/¦   «         �dVe!dŠe`eHdµf         de!f�d‰„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �ZF�dVe!dŠe`eHdµf         �dŠeeHeHeHge!f         de!f�d‹„�ZG e#e=�jH        ¦  «         e#e=�jI        ¦  «         e#e=�jJ        ¦  «         e/d ¦  «        �dŒ„ ¦   «         ¦   «         ¦   «         ¦   «         �ZK e#e=�jL        ¦  «         e/�d��dŽ¦  «        dd�d�œ�d�„¦   «         ¦   «         �ZL e#e=�jM        ¦  «         e/¦   «         �dÍd�d‘œ�d’„¦   «         ¦   «         �ZM e#e=�jN        jo        e=�jN        js        g¦  «         e/¦   «         de�jO        dd�d“œdte'dUeje        dz  �d”e�jP        dìejÄ        dz  díe@f
�d•„¦   «         ¦   «         �ZQ e#e=�jN        �jR        g¦  «        de�jO        dd�d“œdse'dte'dUeje        dz  �d”e�jP        dìejÄ        dz  díe@f�d–„¦   «         �ZS e#e%¦  «        �d—„ ¦   «         �ZT e#e=�jU        ¦  «        e=�jU        jo         �                    e6j’        ¦  «         e/¦   «         dwdwde>jh        ji        fdBe!dWe!dme'�d˜e'dFe!dz  dSeHde!f�d™„¦   «         ¦   «         ¦   «         �ZU e#e=�jV        ¦  «        e=�jV        jo         �                    e6j’        ¦  «         e/d„�dš¦  «        dBe!dWe!dSeHde`e!e!f         f�d›„¦   «         ¦   «         ¦   «         �ZV e#e=�jW        jo        ¦  «        	 	 �dÎdd�dœœ�d�e!�dže!d0e!�dŸeM�d e@�d¡e!dz  d*eMdz  de`e!e!f         f�d¢„¦   «         �ZX�d£„ �ZY e#e=�jZ        g¦  «         e/d¬Ÿ¦  «        eD�dÃ�d¤„¦   «         ¦   «         ¦   «         �ZZ e#e=�j[        ¦  «         e/¦   «         �d¥„ ¦   «         ¦   «         �Z[ e#e=�j\        ¦  «        �d¦„ ¦   «         �Z\ e#e=�j]        jo        e=�j]        js        g¦  «        dd�d§œd2e!dUeje        dz  d°e!dz  de!f�d¨„¦   «         �Z^ e#e=�j_        jo        e=�j_        �j`        g¦  «        �d½d2e!deHdz  f�d©„¦   «         �Za e#ej<        j=        �jb        ¦  «        �dÂ�dª„¦   «         �Zb e#e=�jc        ¦  «         e/¦   «         dd�d«œ�d¬„¦   «         ¦   «         �Zc e#e=�jd        jo        ¦  «        d�d­œd2ej!        �dejä        dz  dej!        f�d®„¦   «         �Zdd�d¯œ�d°„�Zedd�d«œ�d±„�Zf e#e=�jg        ¦  «         e/¦   «         �d²„ ¦   «         ¦   «         �Zg e#e=�jh        ¦  «        �d½�d³„¦   «         �Zh e#e=�ji        ¦  «        d(e!d2e!�d e@d¢e!f�d´„¦   «         �Zi e#e=�jj        jo        e=�jj        js        g¦  «         e/¦   «         dddd�d“œ�dµeHdUeje        dz  �d”e�jP        dz  dìejÄ        dz  díe@dz  de!f�d¶„¦   «         ¦   «         �Zj e#e=�jj        �jk        e=�jj        �jl        g¦  «         e/¦   «         	 �dÏdddd�d“œ�dµeH�d·e@dUeje        dz  �d”e�jP        dz  dìejÄ        dz  díe@dz  de!f�d¸„¦   «         ¦   «         �Zm �eYe=�jn        e=�jo        ¦  «          �eYe=�jp        e=j¦        ¦  «          �eYe=�jq        e=j«        ¦  «          �eYe=�jr        e=�jZ        ¦  «          �eYe=�js        e=jO        ¦  «          �eYe=�jt        e=�ju        ¦  «          �eYe=�jv        e=jV        ¦  «          �eYe=�jw        e=�jx        ¦  «          �eYe=�jy        e=jS        ¦  «          �eYe=�jz        e=�j{        ¦  «          �eYe=�j|        e=�j}        ¦  «          �eYe=�j~        e=�j        ¦  «          �eYe=�j€        e=�j�        ¦  «          �eYe=�j‚        e=�jƒ        ¦  «          �eYe=�j„        e=�j…        ¦  «          �eYe=�j†        e=�j‡        ¦  «          �eYe=�jˆ        e=jc        ¦  «          �eYe=�j‰        e=�jŠ        ¦  «          �eYe=�j‹        e=�jŒ        ¦  «          �eYe=�j�        e=�jŽ        ¦  «          �eYe=�j�        e=�j�        ¦  «          �eYe=�j‘        e=�j’        ¦  «          �eYe=�j“        e=�j”        ¦  «          �eYe=�j•        e=�j–        ¦  «          �eYe=�j—        e=�j˜        ¦  «          �eYe=�j™        e=j\        ¦  «         e=�jš        jo         �                    e6j‘        ¦  «        �dÐd2e!�d¹eHde!f�dº„¦   «         �ZšdS (Ñ  é    N)ÚCallableÚIterable)Únullcontext)ÚEnum)ÚpartialÚreduce)ÚchainÚproduct)ÚAnyÚcast)Ú	sym_floatÚsym_intÚTensor©Úregister_decomposition©Ú	out_dtype)ÚIntLikeÚ
NumberTypeÚsuggest_memory_formatÚ
TensorLikeÚTensorSequenceType)Ú_maybe_convert_to_dtypeÚ_maybe_resize_outÚ_safe_copy_outÚout_wrapper)Ú_pytree)Útree_mapÚ__all__c                   ó   — e Zd ZdZdZdZdS )Ú	Reductionr   é   é   N)Ú__name__Ú
__module__Ú__qualname__ÚNONEÚMEANÚSUM© ó    úZ/var/www/html/CA-Chatbot/venv/lib/python3.11/site-packages/torch/_decomp/decompositions.pyr!   r!   1   s   € € € € € Ø€DØ€DØ
€C€C€Cr+   r!   FÚfÚtype_promotionÚcompute_dtype_onlyÚinclude_non_tensor_argsc                 óR   ‡ ‡‡‡— t          j        ‰ ¦  «        ˆˆ ˆˆfd„¦   «         }|S )Nc                  ó4  •‡‡‡— ‰rt           t          j        j        fnt           fŠˆfd„t	          j        | i |¤ŽD ¦   «         }t          j        |d‰iŽ\  ŠŠˆfd„}ˆfd„} ‰
t          || ¦  «        i t          ||¦  «        ¤Ž}‰	r|S t          ||¦  «        S )Nc                 ó4   •— g | ]}t          |‰¦  «        ¯|‘ŒS r*   )Ú
isinstance)Ú.0ÚxÚallowed_typess     €r,   ú
<listcomp>z-type_casts.<locals>.inner.<locals>.<listcomp>E   s9   ø€ ð 
ð 
ð 
àÝ˜!˜]Ñ+Ô+ð
Øð
ð 
ð 
r+   Útype_promotion_kindc                 ó\   •— t          | t          ¦  «        r|                      ‰¦  «        S | S ©N©r4   r   Úto)r6   Úcomputation_dtypes    €r,   Úincrease_precz0type_casts.<locals>.inner.<locals>.increase_precO   s-   ø€ Ý˜!�VÑ$Ô$ð Ø—t’tÐ-Ñ.Ô.Ð.à�r+   c                 ó\   •— t          | t          ¦  «        r|                      ‰¦  «        S | S r;   r<   )r6   Úresult_dtypes    €r,   Údecrease_precz0type_casts.<locals>.inner.<locals>.decrease_precU   s,   ø€ Ý˜!�VÑ$Ô$ð Ø—t’t˜LÑ)Ô)Ð)à�r+   )	r   ÚtorchÚtypesÚ_NumberÚpytreeÚarg_tree_leavesÚutilsÚelementwise_dtypesr   )ÚargsÚkwargsÚ	flat_argsr?   rB   Úrr7   r>   rA   r/   r-   r0   r.   s         @@@€€€€r,   Úinnerztype_casts.<locals>.inner@   sý   øøøø€ ð .EÐS�V•U”[Ô(Ð)Ð)Í6È)ð 	ð
ð 
ð 
ð 
åÔ+¨TÐ<°VÐ<Ð<ð
ñ 
ô 
ˆ	õ
 +0Ô*BØð+
Ø,:ð+
ð +
Ñ'Ð˜<ð
	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð ˆA�x˜ tÑ,Ô,ÐPµ¸ÈÑ0OÔ0OÐPÐPˆØð 	.ØˆHå˜M¨1Ñ-Ô-Ð-r+   )Ú	functoolsÚwraps)r-   r.   r/   r0   rN   s   ```` r,   Ú
type_castsrQ   :   sM   øøøø€ õ „_�QÑÔð.ð .ð .ð .ð .ð .ð .ñ Ôð.ð@ €Lr+   T)r.   r/   )r.   )r.   r0   r6   ÚdimÚreturnc                 ó~   — t          ||                      ¦   «         z
  ¦  «        D ]}|                      d¦  «        } Œ| S ©Néÿÿÿÿ)ÚrangerR   Ú	unsqueeze)r6   rR   Ú_s      r,   Ú_unsqueeze_to_dimrZ   w   s;   € Ý�3˜Ÿš™œ‘=Ñ!Ô!ð ð ˆØ�KŠK˜‰OŒOˆˆØ€Hr+   Ú
grad_inputÚout_gradÚyc                 ó<   — | d||z  z
                        ¦   «         z  S ©Nr"   ©Úconj_physical©r\   r]   s     r,   Útanh_backwardrc   }   s#   € ð �q˜1˜q™5‘y×/Ò/Ñ1Ô1Ñ1Ð1r+   c                 ó<   — | |d|z
  z                        ¦   «         z  S r_   r`   rb   s     r,   Úsigmoid_backwardre   „   s#   € ð �q˜A ™E‘{×1Ò1Ñ3Ô3Ñ3Ð3r+   ÚbetaÚ	thresholdc                 ó|   — ||z                        ¦   «         }t          j        ||z  |k    | | |z  |dz   z  ¦  «        S ©Nç      ð?)ÚexprC   Úwhere)r\   r6   rf   rg   Úzs        r,   Úsoftplus_backwardrn   ‹   sA   € ð 
ˆT‰�ŠÑÔ€AÝŒ;˜˜D™ IÒ-¨x¸ÀA¹ÈÈSÉÑ9QÑRÔRÐRr+   Úgrad_outputÚalphaÚscaleÚinput_scaleÚ	is_resultÚself_or_resultc                 óÚ   — ||z  }|}|}|r&t          j        |dk    | |z  ||z   z  | |z  ¦  «        S t          j        |dk    | |z  |z  t          j        ||z  ¦  «        z  | |z  ¦  «        S ©Nr   )rC   rl   rk   )	ro   rp   rq   rr   rs   rt   ÚnegcoefÚposcoefÚ
negiptcoefs	            r,   Úelu_backwardrz   “   sœ   € ð �e‰m€GØ€GØ€JØð 
ÝŒ{Ø˜aÒØ˜*Ñ$¨¸Ñ(@ÑAØ˜'Ñ!ñ
ô 
ð 	
õ Œ{Ø˜aÒØ˜*Ñ$ wÑ.µ´¸>ÈJÑ;VÑ1WÔ1WÑWØ˜'Ñ!ñ
ô 
ð 	
r+   c                 ó,   — t          j        | |¦  «        S r;   )rC   Ú	full_like©ÚselfÚvalues     r,   Úfill_scalarr€   ¯   s   € åŒ?˜4 Ñ'Ô'Ð'r+   r   c                 ó–   ‡— t          j        ‰                     ¦   «         dk    ˆfd„¦  «         t                               | ‰¦  «        S )Nr   c                  ó4   •— d‰                       ¦   «         › d�S )Nz@fill only supports 0-dimension value tensor but got tensor with z dimensions©rR   ©r   s   €r,   ú<lambda>zfill_tensor.<locals>.<lambda>¸   s    ø€ ÐkÐSX×S\ÒS\ÑS^ÔS^ÐkÐkÐk€ r+   )rC   Ú_checkrR   ÚatenÚcopyr}   s    `r,   Úfill_tensorr‰   ´   sI   ø€ å	„LØ�	Š	‰Œ�qÒØkÐkÐkÐkñô ð õ �9Š9�T˜5Ñ!Ô!Ð!r+   r~   c                 ób   — t          j        t          j        | dz   d¬¦  «        d¬¦  «        dz  S ©Né   r   ©Úminé   ©Úmax©rC   Úclamp©r~   s    r,   Úhardsigmoidr•   ½   s1   € õ Œ;•u”{ 4¨!¡8°Ð3Ñ3Ô3¸Ð;Ñ;Ô;¸aÑ?Ð?r+   c                 óJ   — t          j        |dk    |dk     z  | dz  d¦  «        S )Ng      Àg      @gUUUUUUÅ?ç        ©rC   rl   ©ro   r~   s     r,   Úhardsigmoid_backwardrš   Ä   s3   € õ Œ;Ø	�Š˜ šÑ$Ø�yÑ!Øñô ð r+   Úmin_valÚmax_valc                 óD   — t          j        ||k    ||k    z  d| ¦  «        S )Nr—   r˜   )ro   r~   r›   rœ   s       r,   Úhardtanh_backwardrž   Ï   s%   € õ Œ;˜ š¨D°GªOÑ<¸cÀ;ÑOÔOÐOr+   c                 óh   — | t          j        t          j        | dz   d¬¦  «        d¬¦  «        z  dz  S r‹   r’   r”   s    r,   Ú	hardswishr    Ü   s6   € ð •%”+�eœk¨$°©(¸Ð:Ñ:Ô:ÀÐBÑBÔBÑBÀQÑFÐFr+   c           
      óx   — t          j        |dk    dt          j        |dk     | |dz  dz   z  | ¦  «        ¦  «        S )Néýÿÿÿr—   rŒ   ç      à?r˜   r™   s     r,   Úhardswish_backwardr¤   ã   sE   € õ Œ;Ø�Š
ØÝŒ�D˜1’H˜k¨d°Q©h¸#Ñ-=Ñ>ÀÑLÔLñô ð r+   c                 ó6   — t          j        ||k    d| ¦  «        S rv   r˜   )ro   r~   rg   s      r,   Úthreshold_backwardr¦   î   s   € õ Œ;�t˜yÒ(¨!¨[Ñ9Ô9Ð9r+   Únegative_slopeÚself_is_resultc                 ó<   — t          j        |dk    | | |z  ¦  «        S rv   r˜   )ro   r~   r§   r¨   s       r,   Úleaky_relu_backwardrª   ô   s!   € õ Œ;�t˜a’x ¨k¸NÑ.JÑKÔKÐKr+   ÚnoneÚgradÚapproximatec                 óˆ  — d}d}d}|dk    rh||z  dz  }d}||z  }||z  }	||||	z  z   z  }
t          j        |
¦  «        }d|z  }d|z   }d|z  }d||z  z
  }|dd|z  |z  z   z  }||z  |z  }| ||z   z  S |}||z  dz  }ddt          j        ||z  ¦  «        z   z  }|t          j        ||z  d	z  ¦  «        z  }| |||z  z   z  S )
NgÍ;fž ö?gÍ;fž æ?gm›BP×ò?Útanhr£   g÷Hmâä¦?r"   rŒ   ç      à¿)rC   r¯   Úerfrk   )r¬   r~   r­   ÚM_SQRT2Ú	M_SQRT1_2Ú
M_2_SQRTPIÚkBetaÚkKappaÚx_sqÚx_cuberN   Ú
tanh_innerÚleftÚrightÚleft_derivativeÚtanh_derivativeÚinner_derivativeÚright_derivativeÚkAlphaÚcdfÚpdfs                        r,   Úgelu_backwardrÃ   ý   s-  € ð %€GØ&€IØ'€JØ�fÒÐØ˜*Ñ$ sÑ*ˆØˆØ�d‰{ˆØ˜‘ˆØ˜ ¨¡Ñ/Ñ0ˆÝ”Z Ñ&Ô&ˆ
à�T‰zˆØ�J‘ˆà ™+ˆà˜j¨:Ñ5Ñ5ˆØ  A¨¨F©
°TÑ(9Ñ$9Ñ:ÐØ /Ñ1Ð4DÑDÐà�Ð)9Ñ9Ñ:Ð:àˆØ˜YÑ&¨Ñ,ˆØ�Q�œ 4¨&¡=Ñ1Ô1Ñ1Ñ2ˆØ•e”i  t¡¨dÑ 2Ñ3Ô3Ñ3ˆØ�s˜T C™ZÑ'Ñ(Ð(r+   Úinputc                 ó¢   — t          j        t          j        |¦  «        ¦  «        }t          j        |¦  «        }||z  d||z  z
  z  }| ||z   z  S r_   )rC   r¯   ÚFÚsoftplusÚsigmoid)ro   rÄ   Úinput_tanh_softplusÚinput_sigmoidÚouts        r,   Úmish_backwardrÌ     sY   € õ  œ*¥Q¤Z°Ñ%6Ô%6Ñ7Ô7ÐÝ”M %Ñ(Ô(€MØ
�-Ñ
 1Ð':Ð=PÑ'PÑ#PÑ
Q€CØÐ-°Ñ3Ñ4Ð4r+   c                 ó0   — | t          j        | ¦  «        z  S r;   ©rC   rÈ   r”   s    r,   ÚsilurÏ   '  s   € ð •%”- Ñ%Ô%Ñ%Ð%r+   c                 óL   — t          j        |¦  «        }| |z  d|d|z
  z  z   z  S r_   rÎ   )ro   r~   rÈ   s      r,   Úsilu_backwardrÑ   .  s1   € õ Œm˜DÑ!Ô!€GØ˜Ñ  A¨°°G±Ñ(<Ñ$<Ñ=Ð=r+   Úweightc                 ó<   — t          j        | dk    | || z  ¦  «        S rv   r˜   )r~   rÒ   s     r,   Ú_prelu_kernelrÔ   6  s   € åŒ;�t˜a’x  v°¡}Ñ5Ô5Ð5r+   c                 ó~   — t          j        |dk    | || z  ¦  «        }t          j        |dk    d|| z  ¦  «        }||fS )Nr   r—   r˜   )ro   r~   rÒ   Ú
input_gradÚweight_grads        r,   Ú_prelu_kernel_backwardrØ   ;  sG   € õ ”˜T AšX {°F¸[Ñ4HÑIÔI€JÝ”+˜d Qšh¨¨T°KÑ-?Ñ@Ô@€KØ˜Ð$Ð$r+   ÚnoiseÚlowerÚupperÚtrainingc                 óz   — |r|                       |¦  «        S ||z   dz  }t                               | |||¦  «        S ©Nr#   )Úmulr‡   rª   )ro   r~   rÙ   rÚ   rÛ   rÜ   r¨   r§   s           r,   Úrrelu_with_noise_backwardrà   F  sM   € ð ð 
Ø�Š˜uÑ%Ô%Ð%à %™-¨1Ñ,ˆÝ×'Ò'Ø˜˜~¨~ñ
ô 
ð 	
r+   Úbufferc                 ó
  — |dk     }t          j        |dd¦  «        }t          j        |dd¦  «        }|                     ¦   «         dk    r|n&t          j        t          j        |¦  «         ¦  «        }| |||d|z   z  z  z
  z  S )Nr   r"   rV   )rC   rl   Únumelrk   Úabs)ro   r~   rá   Úin_negativeÚ	max_derivÚsignrm   s          r,   Úlog_sigmoid_backwardrè   [  s‚   € ð ˜’(€KÝ”˜K¨¨AÑ.Ô.€IÝŒ;�{ A rÑ*Ô*€Dð —,’,‘.”. 1Ò$Ð$ˆˆ­%¬)µU´Y¸t±_´_Ð4DÑ*EÔ*E€AØ˜) d¨a°1°q±5©kÑ&:Ñ:Ñ;Ð;r+   Úotherc                 óì   — t          j        | j        ¦  «        st          j        | j        ¦  «        rt          j        n| j        }|                      dd|¬¦  «        }| t	          j        ||¦  «        z  S )Nr*   ç       @©Údtype)rH   Úis_integer_dtyperí   Úis_boolean_dtyperC   Úfloat32Únew_fullÚpow)r~   ré   Ú	two_dtypeÚ
two_tensors       r,   Úldexprõ   h  sn   € õ
 Ô! $¤*Ñ-Ô-ð	Ý16Ô1GÈÌ
Ñ1SÔ1Sð	�ŒˆàŒZð ð
 —’˜r 3¨i�Ñ8Ô8€JØ•%”)˜J¨Ñ.Ô.Ñ.Ð.r+   ÚlossÚ	reductionc                 óª   — |t           j        j        k    rt          j        | ¦  «        S |t           j        j        k    rt          j        | ¦  «        S | S r;   )r!   r(   r   rC   Úmeanr)   Úsum)rö   r÷   s     r,   Úapply_loss_reductionrû   t  sE   € Ø•I”NÔ(Ò(Ð(ÝŒz˜$ÑÔÐØ	•i”mÔ)Ò	)Ð	)ÝŒy˜‰ŒÐàˆr+   rí   c                 ó®   — | t           j        k    rt           j        S | t           j        k    rt           j        S | t           j        k    rt           j        S d S r;   )rC   Ú	complex32Úfloat16Ú	complex64rð   Ú
complex128Úfloat64rì   s    r,   Úto_real_dtyper  }  sJ   € Ø•”ÒÐÝŒ}ÐØ	•%”/Ò	!Ð	!ÝŒ}ÐØ	•%Ô"Ò	"Ð	"ÝŒ}Ðð 
#Ð	"r+   Útargetc                 ó2   — | |z
  dz  }t          ||¦  «        S rÞ   )rû   )r~   r  r÷   rö   s       r,   Úmse_lossr  Œ  s"   € ð �6‰M˜aÑ€DÝ  iÑ0Ô0Ð0r+   c                 ót   — |t           j        j        k    rd|                     ¦   «         z  nd}|||z
  z  | z  S )Nrë   )r!   r(   r   rã   )ro   rÄ   r  r÷   Únorms        r,   Úmse_loss_backwardr  –  s>   € ð #,­y¬~Ô/CÒ"CÐ"Cˆ3�—’‘”ÑÐÈ€DØ�5˜6‘>Ñ" [Ñ0Ð0r+   c                 óö   — t          j        | ||¬¦  «        }|                      t          d¦  «        ¦  «        }t          j        ||d¬¦  «        }t          j        |¦  «        }t          j        |||¦  «        S )N)rR   rí   ú-infT©rR   Úkeepdim)rC   ÚsoftmaxÚeqÚfloatÚallÚ
zeros_likerl   )r~   rR   rí   rË   ÚmaskedÚmasked_rowsÚzeross          r,   Úsafe_softmaxr     si   € å
Œ-˜ #¨UÐ
3Ñ
3Ô
3€CØ�WŠW•U˜6‘]”]Ñ#Ô#€FÝ”)˜F¨°TÐ:Ñ:Ô:€KÝÔ˜SÑ!Ô!€EÝŒ;�{ E¨3Ñ/Ô/Ð/r+   rj   c                 ó¢   — | |z
                        ¦   «         }t          j        ||k     d|dz  z  |z  |d|z  z
  ¦  «        }t          ||¦  «        S )Nr£   r#   )rä   rC   rl   rû   )r~   r  r÷   rf   rö   s        r,   Úsmooth_l1_lossr  ©  sV   € ð �6‰M×ÒÑ Ô €DåŒ;�t˜d’{ C¨$°©'¡M°DÑ$8¸$ÀÀtÁÑ:KÑLÔL€DÝ  iÑ0Ô0Ð0r+   c                 ó  — |t           j        j        k    rd|                     ¦   «         z  nd}||z
  }t	          j        |¦  «        }|| z  }t	          j        ||k     ||z  |z  |t	          j        |¦  «        z  ¦  «        S ri   )r!   r(   r   rã   rC   rä   rl   rç   )	ro   r~   r  r÷   rf   r  r6   Úabs_xÚ	norm_grads	            r,   Úsmooth_l1_loss_backwardr  ¸  s�   € ð
 "+­i¬nÔ.BÒ!BÐ!Bˆ3�—’‘”ÑÐÈ€DØˆv‰€AÝŒI�a‰LŒL€EØ�{Ñ"€IÝŒ;Ø�ŠØ�A‰˜ÑØ•E”J˜q‘M”MÑ!ñô ð r+   c                 óv   — t          | ||||¦  «        }t          ||j        ¦  «         t          ||d¬¦  «        S ©NT©Ú	copy_fromÚcopy_toÚexact_dtype)r  r   Úshaper   )ro   r~   r  r÷   rf   r[   Úresults          r,   Úsmooth_l1_loss_backward_outr$  È  s@   € õ % [°$¸À	È4ÑPÔP€FÝ�j &¤,Ñ/Ô/Ð/Ý F°JÈDÐQÑQÔQÐQr+   Údeltac           
      óô   — |t           j        j        k    rd|                     ¦   «         z  nd}||z
  }t	          j        || k     | | z  |z  t	          j        ||k    || z  |z  ||z  | z  ¦  «        ¦  «        S ri   )r!   r(   r   rã   rC   rl   )ro   r~   r  r÷   r%  r  r6   s          r,   Úhuber_loss_backwardr'  ×  s‡   € ð
 "+­i¬nÔ.BÒ!BÐ!Bˆ3�—’‘”ÑÐÈ€DØˆv‰€AÝŒ;Ø	ˆUˆFŠ
Ø	ˆ�Ñ˜eÑ#ÝŒ�A˜’I˜t kÑ1°EÑ9¸4À!¹8ÀkÑ;QÑRÔRñô ð r+   c                 óv   — t          | ||||¦  «        }t          ||j        ¦  «         t          ||d¬¦  «        S r  )r'  r   r"  r   )ro   r~   r  r÷   r%  r[   r#  s          r,   Úhuber_loss_backward_outr)  æ  s@   € õ ! ¨d°F¸IÀuÑMÔM€FÝ�j &¤,Ñ/Ô/Ð/Ý F°JÈDÐQÑQÔQÐQr+   Úignore_indexÚtotal_weightc                 ó  — |                      ¦   «         dk     rdnd}|t          j        j        k    r| |z  } |                      ¦   «         dk    r |                      ¦   «         dk    r|d         }|                     |¦  «        }t          j        ||k    |d¦  «        }t          j        |¦  «        }	t          j        |	||d¦  «        }	|	                      ¦   «         |                       ¦   «         cxk    rdk    rn n|                      |¦  «        } |�Ud„ t          |                      ¦   «         ¦  «        D ¦   «         }
|j
        d         |
|<   |                     |
¦  «        }| |z  } t          j        ||k    | d¦  «        } |	| z  S )Nr#   r   r"   g      ð¿c                 ó   — g | ]}d ‘ŒS ©r"   r*   ©r5   rY   s     r,   r8   z&_nll_loss_backward.<locals>.<listcomp>  s   € Ð2Ð2Ð2˜1�QÐ2Ð2Ð2r+   )rR   r!   r(   r   rX   rC   rl   r  ÚscatterrW   r"  Úreshape)ro   r~   r  rÒ   r÷   r*  r+  Úchannel_dimÚsafe_targetr[   Ú	new_shapes              r,   Ú_nll_loss_backwardr5  õ  su  € ð —x’x‘z”z A’~�~�!�!¨1€KØ•I”NÔ(Ò(Ð(Ø! LÑ0ˆð
 ‡x‚x�z„z�Q‚€˜6Ÿ:š:™<œ<¨!Ò+Ð+Ø˜”ˆà×Ò˜kÑ*Ô*€FÝ”+˜f¨Ò4°f¸aÑ@Ô@€KÝÔ! $Ñ'Ô'€JÝ”˜z¨;¸ÀTÑJÔJ€Jà‡~‚~ÑÔ˜+Ÿ/š/Ñ+Ô+Ð/Ð/Ò/Ð/¨aÒ/Ð/Ð/Ð/Ð/Ø!×+Ò+¨KÑ8Ô8ˆàÐØ2Ð2¥ d§h¢h¡j¤jÑ 1Ô 1Ð2Ñ2Ô2ˆ	Ø!'¤¨a¤ˆ	�+ÑØ—’ 	Ñ*Ô*ˆØ! FÑ*ˆå”+˜f¨Ò4°kÀ1ÑEÔE€Kà˜Ñ#Ð#r+   c                 óè  — |                      ¦   «         dk    rt          d¦  «        ‚t          j        |                      ¦   «         |¦  «        }|                     |¦  «        }|dz  dk    rt          d|› d|› �¦  «        ‚|dz  }|                     |d|¦  «        }|                     |||¦  «        }t          j        |¦  «        }d|z
  |z  |z  | z  }	|| z  }t          j        ||	g|¬¦  «        S )Nr   z*glu does not support 0-dimensional tensorsr#   z.Halving dimension must be even, but dimension z	 is size rj   rƒ   )	rR   ÚAssertionErrorrH   Úcanonicalize_dimÚsizeÚnarrowrC   rÈ   Úcat)
ro   r~   rR   Úwrap_dimÚnInÚ	inputSizeÚ	firstHalfÚ
secondHalfÚgradInputFirstHalfÚgradInputSecondHalfs
             r,   Úglu_backwardrC    s  € ð ‡x‚x�z„z�Q‚€ÝÐIÑJÔJÐJÝÔ% d§h¢h¡j¤j°#Ñ6Ô6€HØ
�)Š)�HÑ
Ô
€CØ
ˆQ�w�!‚|€|ÝØU¸XÐUÐUÐPSÐUÐUñ
ô 
ð 	
ð �q‘€IØ—’˜H a¨Ñ3Ô3€IØ—’˜X y°)Ñ<Ô<€JÝœ zÑ2Ô2Ðà	Ð!Ñ	!Ð%7Ñ7¸)ÑCÀkÑQð ð ,¨kÑ9ÐÝŒ9Ð(Ð*=Ð>ÀHÐMÑMÔMÐMr+   c           	      óÒ  — d|                      ¦   «         cxk    rdk    s'n t          d|                      ¦   «         › d�¦  «        ‚|                      ¦   «         dk    r%t          d|                      ¦   «         › d�¦  «        ‚|                      ¦   «         dk    o|                      ¦   «         dk    }|s<|j        d         |j        d         k    s t          d|j        › d|j        › d	�¦  «        ‚|                     ¦   «         dk    r-t          d
|j        › d|                     ¦   «         › d�¦  «        ‚|�2|                     ¦   «         |j        d         k    rt          d¦  «        ‚|t          j        j        k    r�|                      ¦   «         dk    ru|                       ¦   «         dk    r| j        d         |j        d         k    s@t          d|j        d         › d|                       ¦   «         › d| j        d         › �¦  «        ‚nG|                       ¦   «         dk    r|                      ¦   «         dk    st          d| j        › �¦  «        ‚t          | ||||||¦  «        S )Nr   r#   ú%input tensor should be 1D or 2D, got ÚDr"   úA0D or 1D target tensor expected, multi-target not supported, got úsize mismatch (got input: ú
, target: ú)ú:expected total_weight to be a single element tensor, got: z (z
 elements)rV   z<weight tensor should be defined either for all or no classesz7Expected a tensor of dimension 1 and tensor.size[0] == z but got: dimension z and tensor.size[0] == z7Expected a single element grad_output tensor, but got: )rR   r7  r"  rã   r!   r'   r   r5  )ro   r~   r  rÒ   r÷   r*  r+  Úno_batch_dims           r,   Únll_loss_backwardrM  2  s¸  € ð �—’‘”Ð Ð Ò Ð ˜qÒ Ð Ð Ð ÝÐRÀTÇXÂXÁZÄZÐRÐRÐRÑSÔSÐSØ‡z‚z�|„|�aÒÐÝØ_ÐPV×PZÒPZÑP\ÔP\Ð_Ð_Ð_ñ
ô 
ð 	
ð —8’8‘:”: ’?Ð8 v§z¢z¡|¤|°qÒ'8€LØð 
˜TœZ¨œ]¨f¬l¸1¬oÒ=Ð=ÝØN¨¬ÐNÐN¸v¼|ÐNÐNÐNñ
ô 
ð 	
ð ×ÒÑÔ˜qÒ Ð ÝðFØÔ!ðFð FØ%1×%7Ò%7Ñ%9Ô%9ðFð Fð Fñ
ô 
ð 	
ð
 Ð˜fŸlšl™nœn°´
¸2´Ò>Ð>ÝØJñ
ô 
ð 	
ð •I”NÔ(Ò(Ð(¨T¯XªX©Z¬Z¸1ª_¨_Ø—’Ñ!Ô! QÒ&Ð&¨;Ô+<¸QÔ+?À4Ä:ÈaÄ=Ò+PÐ+PÝ ðcÈ$Ì*ÐUVÌ-ð cð cØ"-§/¢/Ñ"3Ô"3ðcð cØLWÔL]Ð^_ÔL`ðcð cñô ð ð ,Qð —’Ñ!Ô! QÒ&Ð&¨;×+<Ò+<Ñ+>Ô+>À!Ò+CÐ+CÝ Ø]È+ÔJ[Ð]Ð]ñô ð õ Ø�T˜6 6¨9°lÀLñô ð r+   c           	      óŒ  — |                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|                      ¦   «         dk    r$t          d|                      ¦   «         › �¦  «        ‚|j        d         |j        d         k    r8|j        d         |j        d         k    r|j        d         |j        d         k    st          d|j        › d	|j        › �¦  «        ‚|                     ¦   «         dk    r-t          d
|j        › d|                     ¦   «         › d�¦  «        ‚t	          | ||||||¦  «        S )Né   zSonly batches of spatial inputs supported (4D tensors), but got input of dimension: rŒ   zUonly batches of spatial targets supported (3D tensors) but got targets of dimension: r   r#   r"   rH  rI  rK  z ( z, elements))rR   r7  r"  rã   r5  )ro   r~   r  rÒ   r÷   r*  r+  s          r,   Únll_loss2d_backwardrP  e  su  € ð ‡x‚x�z„z�Q‚€ÝØnÐbf×bjÒbjÑblÔblÐnÐnñ
ô 
ð 	
ð ‡z‚z�|„|�qÒÐÝØrÐdj×dnÒdnÑdpÔdpÐrÐrñ
ô 
ð 	
ð
 	Œ
�1Œ˜œ aœÒ(Ð(ØŒJ�qŒM˜Vœ\¨!œ_Ò,Ð,ØŒJ�qŒM˜Vœ\¨!œ_Ò,Ð,åØM¨¬ÐMÐM¸v¼|ÐMÐMñ
ô 
ð 	
ð ×ÒÑÔ˜qÒ Ð ÝðMØ Ô&ðMð MØ+7×+=Ò+=Ñ+?Ô+?ðMð Mð Mñ
ô 
ð 	
õ
 Ø�T˜6 6¨9°lÀLñô ð r+   c           	      ó2  — |dz
  t          j        t          j        |  ¦  «        |                      dd¦  «        ¦  «        z  |t          j        t          j        | ¦  «        |                      dd¦  «        ¦  «        z  z
  }|�||z  }t          ||¦  «        S )Nr"   r*   iœÿÿÿ)rC   ÚmaximumÚlog1prñ   Úlogrû   )r~   r  rÒ   r÷   rö   s        r,   Úbinary_cross_entropyrU  Ž  s�   € ð �Q‰J�%œ-ÝŒ�T�EÑÔ˜DŸMšM¨"¨dÑ3Ô3ñô ñ à•”�uœy¨™œ°·²¸bÀ$Ñ0GÔ0GÑHÔHÑHñI€Dð ÐØ�f‰}ˆÝ  iÑ0Ô0Ð0r+   c                 óº   — d}| ||z
  z  t          j        |d|z
  z  |¬¦  «        z  }|�||z  }|t          j        j        k    r||                     ¦   «         z  }|S )Ngê-�™—q=r"   r�   )rC   r“   r!   r(   r   rã   )ro   r~   r  rÒ   r÷   ÚEPSILONr#  s          r,   Úbinary_cross_entropy_backwardrX  ¤  sk   € ð €GØ˜D 6™MÑ*­U¬[¸ÀÀTÁÑ9JÐPWÐ-XÑ-XÔ-XÑX€FØÐØ˜&‘ˆØ•I”NÔ(Ò(Ð(Ø˜$Ÿ*š*™,œ,Ñ&ˆØ€Mr+   c                 óv   — t          j        t          j        |  |z  ¦  «        ¦  «        }t          ||¦  «        S r;   )rC   rS  rk   rû   )rÄ   r  r÷   rö   s       r,   Úsoft_margin_lossrZ  ·  s3   € õ Œ;•u”y % ¨&¡Ñ1Ô1Ñ2Ô2€DÝ  iÑ0Ô0Ð0r+   c                 óž   — || z  t          j        ||z  ¦  «        dz
  z  }|t          j        j        k    r||                     ¦   «         z  }|S r_   )rC   rÈ   r!   r(   r   rã   )ro   r~   r  r÷   r[   s        r,   Úsoft_margin_loss_backwardr\  Ã  sN   € ð ˜+Ñ%­¬°vÀ±}Ñ)EÔ)EÈÑ)IÑJ€JØ•I”NÔ(Ò(Ð(Ø $§*¢*¡,¤,Ñ.ˆ
ØÐr+   r#   Úpc                 ó@   — t                                | |z
  |¬¦  «        S )N)r]  )r‡   r  )rÄ   ré   r]  s      r,   Údistr_  Ò  s   € õ �9Š9�U˜U‘] aˆ9Ñ(Ô(Ð(r+   Úx1Úx2c                 ó.  — |                       d¦  «                             dd¦  «        }t          j        |t          j        ¬¦  «        }|                      d¦  «                             dd¦  «        }t          j        |t          j        ¬¦  «        }t          j        |                      d¦  «        ||gd¦  «        }t          j        |||gd¦  «        }|                     |j        ¦  «        }| 	                    d¦  «         
                    ¦   «         S )Nr#   rV   T©Úmemory_formatéþÿÿÿr   )rò   rú   rC   Ú	ones_likeÚcontiguous_formatr;  rß   ÚmatmulÚmTÚ	clamp_minÚsqrt)	r`  ra  Úx1_normÚx1_padÚx2_normÚx2_padÚx1_Úx2_r#  s	            r,   Ú_euclidean_distrr  Ø  sÙ   € ð �fŠf�Q‰iŒi�mŠm˜B Ñ%Ô%€GÝŒ_˜WµEÔ4KÐLÑLÔL€FØ�fŠf�Q‰iŒi�mŠm˜B Ñ%Ô%€GÝŒ_˜WµEÔ4KÐLÑLÔL€FÝ
Œ)�R—V’V˜B‘Z”Z ¨&Ð1°2Ñ
6Ô
6€CÝ
Œ)�R˜ Ð)¨2Ñ
.Ô
.€CØ�ZŠZ˜œÑÔ€FØ×Ò˜AÑÔ×#Ò#Ñ%Ô%Ð%r+   Úinput_sizesÚstartÚendÚstepc                 ó^   — |                       |¦  «        }t          j        || ||||¦  «        S r;   )Ú	new_zerosrC   Úslice_scatter)ro   rs  rR   rt  ru  rv  r[   s          r,   Úslice_backwardrz  å  s2   € ð ×&Ò& {Ñ3Ô3€JÝÔ˜z¨;¸¸UÀCÈÑNÔNÐNr+   r"   c                 ód  — ddl m} |                      ¦   «         }|dk    rt          d¦  «        ‚t	          j        |                      ¦   «         |¦  «        }t          |                      ¦   «         ¦  «        }t          |                      ¦   «         ¦  «        }|dk    rt          d¦  «        ‚|�|nd}	|�|nt          j
        }
|	dk     r|	||         z  }	|
dk     r|
||         z  }
|	dk     rd}	n|	||         k    r||         }	 ||
t          j
        k    ¦  «        r	||         }
n|
|	k     r|	}
n|
||         k    r||         }
|                      ¦   «         |	||         z  z   }|
|	z
  }||z   dz
  |z  ||<   ||xx         |z  cc<   | j        rt          d¦  «        ‚|                      |||¦  «        S )Nr   ©Ústatically_known_truez,slice() cannot be applied to a 0-dim tensor.zslice step must be positiver"   z<Slice decomposition for quantized tensors aren't implemented)Ú%torch.fx.experimental.symbolic_shapesr}  rR   ÚRuntimeErrorrH   r8  Úlistr9  ÚstrideÚsysÚmaxsizeÚstorage_offsetÚis_quantizedÚNotImplementedErrorÚ
as_strided)r~   rR   rt  ru  rv  r}  ÚndimÚsizesÚstridesÚ	start_valÚend_valr„  Úlens                r,   Úslice_forwardrŽ  ó  sç  € ð LÐKÐKÐKÐKÐKà�8Š8‰:Œ:€DØˆq‚y€yÝÐIÑJÔJÐJÝ
Ô
  §¢¡¤¨SÑ
1Ô
1€CÝ�—’‘”ÑÔ€EÝ�4—;’;‘=”=Ñ!Ô!€Gàˆq‚y€yÝÐ8Ñ9Ô9Ð9àÐ*��°€IØ�_ˆcˆc­#¬+€Gà�1‚}€}Ø�U˜3”ZÑˆ	à�‚{€{Ø�5˜”:Ñˆà�1‚}€}Øˆ	ˆ	Ø	�U˜3”ZÒ	Ð	Ø˜#”Jˆ	àÐ˜W­¬Ò3Ñ4Ô4ð Ø˜”*ˆˆØ	�9Ò	Ð	ØˆˆØ	�5˜”:Ò	Ð	Ø˜”*ˆà×(Ò(Ñ*Ô*¨Y¸À¼Ñ-EÑE€NØ
�IÑ
€CØ˜‘*˜q‘. TÑ)€Eˆ#�JØˆC€L€L„L�DÑ€L€L�LàÔð ?Ý!ØJñ
ô 
ð 	
ð �Š˜u g¨~Ñ>Ô>Ð>r+   c                 óx   ‡— | j         |         Šdt          fˆfd„} ||d‰d¦  «        } |||‰‰¦  «        }||fS )zn
    Normalize start and end such that both are in the range
    [0, x.get_size()[dim]] and start <= end.
    rS   c                 ó^   •— | €|S | dk     r| ‰z   } t          t          | |¦  «        |¦  «        S rv   ©rŽ   r‘   )ÚvalrÚ   rÛ   ÚdefaultÚdim_sizes       €r,   Ú
clamp_wrapz(_normalize_start_end.<locals>.clamp_wrap3  s7   ø€ Øˆ;ØˆNØ�Š7ˆ7Ø˜‘.ˆCÝ•3�s˜E‘?”? EÑ*Ô*Ð*r+   r   )r"  Úint)r6   rR   rt  ru  r•  r”  s        @r,   Ú_normalize_start_endr—  *  sk   ø€ ð Œw�sŒ|€Hð+µ#ð +ð +ð +ð +ð +ð +ð ˆJ�u˜a ¨1Ñ-Ô-€EØ
ˆ*�S˜% ¨8Ñ
4Ô
4€CØ�#ˆ:Ðr+   Úsrcc           	      óš  — t          j        | j        |¦  «        }| j        |         }t	          | |||¦  «        \  }}t          | j        ¦  «        }||z
  |dz
  z   |z  ||<   |                     |¦  «        }|dk    r ||k    r|dk    r|                     ¦   «         S d g|                      ¦   «         z  }t          j
        || j        ¬¦  «        }	|	|z
  |z  ||<   t          j        || j        t          j        ¬¦  «        }
|dk    rt          j        |
|	|k    ¦  «        }
||k    rt          j        |
|	|k     ¦  «        }
|dk    rt          j        |
|	|z
  |z  dk    ¦  «        }
dg|                      ¦   «         z  }d||<   |
                     |¦  «        }
t                                |
t                                ||
|d¦  «        | ¦  «        S )Nr"   r   ©Údevice©r›  rí   rV   )rH   r8  rˆ  r"  r—  r€  ÚexpandÚclonerR   rC   Úaranger›  ÚonesÚboolÚlogical_andÚviewr‡   rl   Ú_unsafe_masked_index)rÄ   r˜  rR   rt  ru  rv  r”  Úsrc_sizeÚindicesÚidxÚmaskÚ
mask_shapes               r,   ry  ry  A  s²  € õ Ô
  ¤¨SÑ
1Ô
1€CØŒ{˜3Ô€HÝ% e¨S°%¸Ñ=Ô=�J€Eˆ3å�E”KÑ Ô €HØ˜5‘[ D¨1¡HÑ-°$Ñ6€HˆS�MØ
�*Š*�XÑ
Ô
€Cà�‚z€z�c˜X’o�o¨$°!ª)¨)Ø�yŠy‰{Œ{Ðà$( 6¨E¯IªI©K¬KÑ#7€GÝ
Œ,�x¨¬Ð
5Ñ
5Ô
5€CØ˜%‘K DÑ(€GˆC�LåŒ:�h u¤|½5¼:ÐFÑFÔF€DØ�‚z€zÝÔ   s¨e¢|Ñ4Ô4ˆà
ˆh‚€ÝÔ   s¨S¢yÑ1Ô1ˆàˆq‚y€yÝÔ  ¨¨e©°tÑ';¸qÒ'@ÑAÔAˆà��u—y’y‘{”{Ñ"€JØ€Jˆs�OØ�9Š9�ZÑ Ô €DÝ�:Š:�d�D×5Ò5°c¸4ÀÈ!ÑLÔLÈeÑTÔTÐTr+   Úindexc                 óZ   — |                       |¦  «        }t          j        || ||¦  «        S r;   )rx  rC   Úselect_scatter)ro   rs  rR   rª  r[   s        r,   Úselect_backwardr­  j  s.   € ð ×&Ò& {Ñ3Ô3€JÝÔ 
¨K¸¸eÑDÔDÐDr+   ÚoffsetÚdim1Údim2c                 ó\   — |                       |¦  «        }t          j        || |||¦  «        S r;   )rx  rC   Údiagonal_scatter)ro   rs  r®  r¯  r°  r[   s         r,   Údiagonal_backwardr³  q  s0   € ð
 ×&Ò& {Ñ3Ô3€JÝÔ! *¨k¸6À4ÈÑNÔNÐNr+   Úinput_dtypec                 óF   — | j         |k    r|                     |¦  «        }|S r;   )rí   r=   )ro   r[   r´  s      r,   Ú_cast_grad_to_input_dtyper¶  z  s)   € ð Ô˜KÒ'Ð'Ø—]’] ;Ñ/Ô/ˆ
ØÐr+   Úoutputc                 óŒ   — | |z  }||t          j        ||d¬¦  «        z  z
  }t          | ||¦  «                             ¦   «         S ©NTr  )rC   rú   r¶  Ú
contiguous)ro   r·  rR   r´  Únew_grad_outputr[   s         r,   Ú_softmax_backward_datar¼  ‚  sY   € ð " FÑ*€OØ  6­E¬IØ˜S¨$ð-ñ -ô -ñ $ñ €Jõ % [°*¸kÑJÔJ×UÒUÑWÔWÐWr+   c                 ó‚   — | t          j        |¦  «        t          j        | |d¬¦  «        z  z
  }t          | ||¦  «        S r¹  )rC   rk   rú   r¶  )ro   r·  rR   r´  r[   s        r,   Ú_log_softmax_backward_datar¾  ”  sM   € ð �uœy¨Ñ0Ô0µ5´9Ø˜ dð4ñ 4ô 4ñ  ñ €Jõ % [°*¸kÑJÔJÐJr+   c                 ó   — | |dz  z   ||dz
  z  z
  }t          t          j        t          j        |¬¦  «        } |d||¦  «                             d¦  «        } |d||z  |¦  «                             d¦  «        }	||	z   S )z/Utility function to implement im2col and col2imr#   r"   ©rí   r›  r   rV   )r   rC   rŸ  Úint64rX   )
Úinput_dÚkernel_dÚ
dilation_dÚ	padding_dÚstride_dr›  Úblocks_dÚ	arange_kwÚblocks_d_indicesÚkernel_grids
             r,   Ú _im2col_col2im_indices_along_dimrË     s‘   € ð ˜ Q™Ñ&¨°xÀ!±|Ñ)DÑD€Hå�œ­E¬KÀÐGÑGÔG€Ið !�y  H¨hÑ7Ô7×AÒAÀ!ÑDÔDÐð �)˜A˜x¨*Ñ4°jÑAÔA×KÒKÈBÑOÔO€Kð ˜kÑ)Ð)r+   Úkernel_sizeÚdilationÚpaddingr�  c           
      óš  ‡‡‡‡‡‡— t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         dd„} |‰d¦  «          |‰d	¦  «          |‰d
d¬¦  «          |‰d¦  «         | j        Št          ‰¦  «        }t          j        |dv o t	          d„ ‰dd …         D ¦   «         ¦  «        ˆfd„¦  «         t          d„ t          ‰dd …         ‰‰‰‰¦  «        D ¦   «         ¦  «        Št          j        t	          d„ ‰D ¦   «         ¦  «        ˆˆˆˆˆˆfd„¦  «         |dk    }|s|                      d¦  «        } | j        \  }}	}
}‰\  }}‰\  }}‰\  }}‰\  }}t          |
||||| j	        ¦  «        }t          |||||| j	        ¦  «        }t          j        | ||||f¦  «        }|                     d¦  «                             d¦  «        }|d d …d d …||f         }|                     dddddd¦  «        }|                     d¦  «        }|                     d¦  «        }|                     ||	|z  |z  ||z  ¦  «        }|s|                     d¦  «        }|S )Nr#   c                  ó   — dS )Nz"im2col(): only 2D kernel supportedr*   r*   r+   r,   r…   zim2col.<locals>.<lambda>¼  s   € Ð0T€ r+   c                  ó   — dS )Nz$im2col(): only 2D dilation supportedr*   r*   r+   r,   r…   zim2col.<locals>.<lambda>½  s   € Ð-S€ r+   c                  ó   — dS )Nz#im2col(): only 2D padding supportedr*   r*   r+   r,   r…   zim2col.<locals>.<lambda>¾  s   € Ð,Q€ r+   c                  ó   — dS )Nz"im2col(): only 2D stride supportedr*   r*   r+   r,   r…   zim2col.<locals>.<lambda>¿  s   € Ð+O€ r+   Tc                 ó¤   ‡ ‡— |rt          d„ ‰ D ¦   «         ¦  «        nt          d„ ‰ D ¦   «         ¦  «        }t          j        |ˆ ˆfd„¦  «         d S )Nc              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   Nr*   ©r5   r]  s     r,   ú	<genexpr>z1im2col.<locals>.check_positive.<locals>.<genexpr>Â  ó&   è è € Ð(Ð(˜Q�1�q’5Ð(Ð(Ð(Ð(Ð(Ð(r+   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÖ  r*   r×  s     r,   rØ  z1im2col.<locals>.check_positive.<locals>.<genexpr>Â  ó&   è è € Ð;RÐ;RÀq¸AÀºFÐ;RÐ;RÐ;RÐ;RÐ;RÐ;Rr+   c                  ó   •— ‰› d‰ › �S ©Nz& should be greater than zero, but got r*   ©ÚparamÚ
param_names   €€r,   r…   z0im2col.<locals>.check_positive.<locals>.<lambda>Ä  ó   ø€ ˜ZÐVÐVÈuÐVÐV€ r+   ©r  rC   r†   ©rß  rà  ÚstrictÚconds   ``  r,   Úcheck_positivezim2col.<locals>.check_positiveÁ  óq   øø€ Ø,2ÐR�sÐ(Ð( %Ð(Ñ(Ô(Ñ(Ô(Ð(½Ð;RÐ;RÈEÐ;RÑ;RÔ;RÑ8RÔ8RˆÝŒØÐVÐVÐVÐVÐVñ	
ô 	
ð 	
ð 	
ð 	
r+   rÌ  rÍ  rÎ  F©rä  r�  ©rŒ   rO  c              3   ó"   K  — | ]
}|d k    V — ŒdS rÖ  r*   ©r5   Úds     r,   rØ  zim2col.<locals>.<genexpr>Ï  ó&   è è € Ð:Ð:¨!˜q AšvÐ:Ð:Ð:Ð:Ð:Ð:r+   r¢   c                  ó(   •— dt          ‰ ¦  «        › �S )NzmExpected 3D or 4D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: ©Útuple©r"  s   €r,   r…   zim2col.<locals>.<lambda>Ð  ó   ø€ ð <Ý-2°5©\¬\ð<ð <€ r+   c              3   óV   K  — | ]$\  }}}}}d |d|z  z   ||d z
  z  z
  d z
  |z  z   V — Œ%dS )r"   r#   Nr*   ©r5   rË   ÚpadÚdilÚkerÚsts         r,   rØ  zim2col.<locals>.<genexpr>Ó  sd   è è € ð ð á"ˆC��c˜3 ð 	
ˆS�1�s‘7‰]˜S C¨!¡G™_Ñ,¨qÑ0°RÑ7Ñ7ðð ð ð ð ð r+   re  c              3   ó"   K  — | ]
}|d k    V — ŒdS rÖ  r*   )r5   Úcs     r,   rØ  zim2col.<locals>.<genexpr>Ú  s&   è è € Ð'Ð'�aˆA�ŠEÐ'Ð'Ð'Ð'Ð'Ð'r+   c                  óX   •— dt          ‰dd …         ¦  «        › d‰› d‰ › d‰› d‰› d‰› d�S )	Nz!Given an input with spatial size re  ú, kernel_size=ú, dilation=ú
, padding=ú	, stride=z9, the calculated shape of the array of sliding blocks is z*, but its components must be at least one.rï  )rÍ  rÌ  Úoutput_sizerÎ  r"  r�  s   €€€€€€r,   r…   zim2col.<locals>.<lambda>Û  s|   ø€ ð FµE¸%ÀÀÀ¼*Ñ4EÔ4Eð Fð FØ"ðFð FØ/7ðFð FàðFð Fà%+ðFð Fð ð	Fð Fð F€ r+   rO  r   rV   r"   rŒ   é   ©T)rC   r†   r�  r"  r  rð  ÚziprX   rË  r›  rÆ   rõ  Úpermuter9  r1  Úsqueeze)rÄ   rÌ  rÍ  rÎ  r�  ræ  rˆ  Úbatched_inputÚ	batch_dimr2  Úinput_hÚinput_wÚstride_hÚstride_wÚ	padding_hÚ	padding_wÚ
dilation_hÚ
dilation_wÚkernel_hÚkernel_wÚblocks_row_indicesÚblocks_col_indicesÚpadded_inputr·  Únum_blocks_rowÚnum_blocks_colr   r"  s    ````                     @@r,   Úim2colr  ³  s‰  øøøøøø€ õ 
„L•�[Ñ!Ô! QÒ&Ð(TÐ(TÑUÔUÐUÝ	„L•�X‘” !Ò#Ð%SÐ%SÑTÔTÐTÝ	„L•�W‘” Ò"Ð$QÐ$QÑRÔRÐRÝ	„L•�V‘” Ò!Ð#OÐ#OÑPÔPÐPð
ð 
ð 
ð 
ð €N�; Ñ.Ô.Ð.Ø€N�8˜ZÑ(Ô(Ð(Ø€N�8˜Y¨uÐ5Ñ5Ô5Ð5Ø€N�6˜8Ñ$Ô$Ð$àŒK€EÝˆu‰:Œ:€DÝ	„LØ�ˆÐ:�3Ð:Ð:¨u°R°S°S¬zÐ:Ñ:Ô:Ñ:Ô:ð	<ð 	<ð 	<ð 	<ñô ð õ
 ð ð å&)Ø�"�#�#ŒJ˜ ¨;¸ñ'
ô '
ðñ ô ñ ô €Kõ 
„LÝÐ'Ð'˜;Ð'Ñ'Ô'Ñ'Ô'ð	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fð 	Fñô ð ð ˜A’I€MØð #Ø—’ Ñ"Ô"ˆà/4¬{Ñ,€Iˆ{˜G WàÑ€HˆhØ"Ñ€IˆyØ%Ñ€J�
Ø$Ñ€Hˆhå9Ø�˜: y°(¸E¼Lñô Ðõ :Ø�˜: y°(¸E¼Lñô Ðõ ”5˜ ¨I°yÀ)Ð LÑMÔM€Là+×5Ò5°bÑ9Ô9×CÒCÀBÑGÔGÐØ˜!˜!˜!˜Q˜Q˜QÐ 2Ð4FÐFÔG€FØ�^Š^˜A˜q ! Q¨¨1Ñ-Ô-€FØ'×,Ò,¨QÑ/Ô/€NØ'×,Ò,¨QÑ/Ô/€NØ�^Š^Ø�; Ñ)¨HÑ4°nÀ~Ñ6Uñô €Fð ð #Ø—’ Ñ"Ô"ˆØ€Mr+   r   c           
      óø  ‡‡‡‡‡‡‡— t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         t          j        t          ‰¦  «        dk    d„ ¦  «         d d„} |‰d	¦  «          |‰d
¦  «          |‰dd¬¦  «          |‰d¦  «          |‰d¦  «         | j        Št          ‰¦  «        }t          j        |dv o t	          d„ ‰dd …         D ¦   «         ¦  «        ˆfd„¦  «         ‰d         ‰d         z  }t          j        ‰d         |z  dk    ˆˆfd„¦  «         d„ t          ‰‰‰‰‰¦  «        D ¦   «         }	|	d         |	d         z  Št          j        ‰d         ‰k    ˆˆˆˆˆˆˆfd„¦  «         t          j        ‰dk    ˆˆˆˆˆˆˆfd„¦  «         |dk    }
|
s|                      d¦  «        } | j        Š‰\  }}‰\  }}‰\  }}‰\  }}‰\  }}|                      ‰d         ‰d         |z  g‰z   |	z   ¦  «        } |                      dddddd¦  «        } t          |||||| j
        ¦  «        }t          |d¦  «        }t          |||||| j
        ¦  «        }d„ t          ‰‰¦  «        D ¦   «         }|                      ‰d         ‰d         t          ‰¦  «        z  g|z   ¦  «        }d d ||f}t                               ||| d¬¦  «        }t!          j        || | | | f¦  «        }|
s|                     d¦  «        }|S )!Nr#   c                  ó   — dS )Nzonly 2D output_size supportedr*   r*   r+   r,   r…   zcol2im.<locals>.<lambda>  s   € Ð0O€ r+   c                  ó   — dS )Nzonly 2D kernel supportedr*   r*   r+   r,   r…   zcol2im.<locals>.<lambda>  s   € Ð0J€ r+   c                  ó   — dS )Nzonly 2D dilation supportedr*   r*   r+   r,   r…   zcol2im.<locals>.<lambda>  s   € Ð-I€ r+   c                  ó   — dS )Nzonly 2D padding supportedr*   r*   r+   r,   r…   zcol2im.<locals>.<lambda>  s   € Ð,G€ r+   c                  ó   — dS )Nzonly 2D stride supportedr*   r*   r+   r,   r…   zcol2im.<locals>.<lambda>  s   € Ð+E€ r+   Tc                 ó¤   ‡ ‡— |rt          d„ ‰ D ¦   «         ¦  «        nt          d„ ‰ D ¦   «         ¦  «        }t          j        |ˆ ˆfd„¦  «         d S )Nc              3   ó"   K  — | ]
}|d k    V — ŒdS rÖ  r*   r×  s     r,   rØ  z1col2im.<locals>.check_positive.<locals>.<genexpr>  rÙ  r+   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÖ  r*   r×  s     r,   rØ  z1col2im.<locals>.check_positive.<locals>.<genexpr>  rÛ  r+   c                  ó   •— ‰› d‰ › �S rÝ  r*   rÞ  s   €€r,   r…   z0col2im.<locals>.check_positive.<locals>.<lambda>  rá  r+   râ  rã  s   ``  r,   ræ  zcol2im.<locals>.check_positive  rç  r+   rÌ  rÍ  rÎ  Frè  r�  r   )r#   rŒ   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÖ  r*   rë  s     r,   rØ  zcol2im.<locals>.<genexpr>%  rí  r+   re  c                  ó(   •— dt          ‰ ¦  «        › �S )NzmExpected 2D or 3D (batch mode) tensor for input with possible 0 batch size and non-zero dimensions, but got: rï  rñ  s   €r,   r…   zcol2im.<locals>.<lambda>&  rò  r+   r   r"   c                  ó    •— d‰d         › d‰ › �S )Nz|Expected size of input's first non-batch dimension to be divisible by the product of kernel_size, but got input.shape[-2] = re  z and kernel_size=r*   )rÌ  r"  s   €€r,   r…   zcol2im.<locals>.<lambda>,  s(   ø€ ð %Ø=BÀ2¼Yð%ð %à"ð%ð %€ r+   c                 óN   — g | ]"\  }}}}}d |d|z  z   ||d z
  z  z
  d z
  |z  z   ‘Œ#S ©r"   r#   r*   rô  s         r,   r8   zcol2im.<locals>.<listcomp>0  sV   € ð ð ð á"ˆC��c˜3 ð 	
ˆS�1�s‘7‰]˜S C¨!¡G™_Ñ,¨qÑ0°RÑ7Ñ7ðð ð r+   rV   c                  ó@   •— d‰› d‰› d‰› d‰› d‰› d‰ › d‰d         › d	�S ©
NzGiven output_size=rü  rý  rþ  rÿ  z , expected input.size(-1) to be ú	 but got rV   ú.r*   ©ÚLrÍ  rÌ  r   rÎ  r"  r�  s   €€€€€€€r,   r…   zcol2im.<locals>.<lambda>9  ó|   ø€ ð B [ð Bð BÀð Bð BØðBð BØ(/ðBð BØ:@ðBð Bà)*ðBð Bà5:¸2´YðBð Bð B€ r+   c                  ó@   •— d‰› d‰› d‰› d‰› d‰› d‰ › d‰d         › d	�S r(  r*   r+  s   €€€€€€€r,   r…   zcol2im.<locals>.<lambda>?  r-  r+   rŒ   rO  r  c                 ó$   — g | ]\  }}|d |z  z   ‘ŒS ©r#   r*   )r5   Úor]  s      r,   r8   zcol2im.<locals>.<listcomp>[  s$   € ÐJÐJÐJ©¨¨1˜!˜a !™e™)ÐJÐJÐJr+   ©Ú
accumulater  )rC   r†   r�  r"  r  r  rX   r1  r  rË  r›  rZ   rx  Úprodr‡   Ú_unsafe_index_putrÆ   rõ  r  )rÄ   r   rÌ  rÍ  rÎ  r�  ræ  rˆ  Úprod_kernel_sizeÚcolr  Úout_hÚout_wr
  r  r  r  r  r  r  r  Úindices_rowÚindices_colÚoutput_padded_sizer·  r§  r,  r"  s    `````                    @@r,   Úcol2imr=    s”  øøøøøøø€ õ 
„L•�[Ñ!Ô! QÒ&Ð(OÐ(OÑPÔPÐPÝ	„L•�[Ñ!Ô! QÒ&Ð(JÐ(JÑKÔKÐKÝ	„L•�X‘” !Ò#Ð%IÐ%IÑJÔJÐJÝ	„L•�W‘” Ò"Ð$GÐ$GÑHÔHÐHÝ	„L•�V‘” Ò!Ð#EÐ#EÑFÔFÐFð
ð 
ð 
ð 
ð €N�; Ñ.Ô.Ð.Ø€N�8˜ZÑ(Ô(Ð(Ø€N�7˜I¨eÐ4Ñ4Ô4Ð4Ø€N�6˜8Ñ$Ô$Ð$Ø€N�; Ñ.Ô.Ð.àŒK€EÝˆu‰:Œ:€DÝ	„LØ�ˆÐ:�3Ð:Ð:¨u°R°S°S¬zÐ:Ñ:Ô:Ñ:Ô:ð	<ð 	<ð 	<ð 	<ñô ð ð
 # 1”~¨°A¬Ñ6ÐÝ	„LØˆbŒ	Ð$Ñ$¨Ò)ð	%ð 	%ð 	%ð 	%ð 	%ñô ð ðð å&)Ø˜ (¨K¸ñ'
ô '
ðñ ô €Cð 	ˆAŒ��Q”‰€AÝ	„LØˆbŒ	�QŠð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bñô ð õ 
„LØ	ˆAŠð	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bð 	Bñô ð ð ˜A’I€MØð #Ø—’ Ñ"Ô"ˆàŒK€Eà�L€Eˆ5ØÑ€HˆhØ"Ñ€IˆyØ%Ñ€J�
Ø$Ñ€Hˆhð �MŠM˜5 œ8 U¨1¤XÐ1AÑ%AÐBÀ[ÑPÐSVÑVÑWÔW€EØ�MŠM˜!˜Q  1 a¨Ñ+Ô+€Eå2Øˆx˜ Y°¸%¼,ñô €Kõ $ K°Ñ3Ô3€KÝ2Øˆx˜ Y°¸%¼,ñô €Kð KÐJµ°KÀÑ0IÔ0IÐJÑJÔJÐØ�_Š_Ø	ˆqŒ�5˜”8�t KÑ0Ô0Ñ0Ð1Ð4FÑFñô €Fð ��{ KÐ
0€CÝ×#Ò# F¨C°À4Ð#ÑHÔH€FÝŒU�6˜Y˜J¨¨
°Y°JÀÀ
ÐKÑLÔL€Fàð #Ø—’ Ñ"Ô"ˆØ€Mr+   r¨  c                 óˆ   — | |                      | ¦  «        |z  z                       t          j        | ¦  «        ¬¦  «        }|S ©Nrc  )Útype_asrž  rH   r   )ro   r¨  rq   rM   s       r,   Únative_dropout_backwardrA  h  sJ   € ð 
˜Ÿš [Ñ1Ô1°EÑ9Ñ	:×AÒAÝÔ1°+Ñ>Ô>ð 	Bñ 	ô 	€Að €Hr+   Ú
input_sizeÚ	dimensionr9  c                 ó  ‡ ‡‡‡‡‡‡— t          j        ‰dk    ˆfd„¦  «         t          ‰¦  «        dk    rt          j        ‰ d¦  «        S t	          j        t          ‰¦  «        |¦  «        Š‰                      ‰¦  «        Šdt          fˆˆ ˆˆˆˆfd„}‰‰k    r
 |¦   «         S ddlm	Š dt          fˆˆ ˆˆˆˆfd„} |¦   «         r
 |¦   «         S ˆfd„}ˆfd„}d	t          d
t          t                   dt          fˆˆfd„}	‰‰         }
‰                      ‰¦  «        }t          t          ‰¦  «        ¦  «        D ]¼} ||
|z
  ‰z   dz
  ‰z  d¦  «        } |||¦  «        }t          j        |‰ j        t           j        ¬¦  «        }|‰z  |z   }‰                      d|¦  «                             ‰d|¦  «        }t          ‰¦  «        }||‰<    |	||¦  «        }t*                               ‰‰||¦  «        ŠŒ½‰                     ¦   «         S )Nr   c                  ó   •— d‰ › d�S )Nzstep is z but must be > 0r*   )rv  s   €r,   r…   z!unfold_backward.<locals>.<lambda>|  s   ø€ Ð)J°DÐ)JÐ)JÐ)J€ r+   rS   c                  ó€  •— t          j        ‰‰         ‰j        t           j        ¬¦  «        } |                      d‰‰¦  «                             ¦   «         } ‰                     d‰dz   ¦  «                             ‰‰dz   ¦  «        }d‰z  | fz   }t                               ‰||d¬¦  «         	                    ¦   «         S )Nrœ  r   rV   r"   r;   Tr2  )
rC   rŸ  r›  Úint32ÚunfoldÚflattenÚmovedimr‡   r5  rº  )	r§  Úsourcerª  rR   r¬   r[   rB  r9  rv  s	      €€€€€€r,   Ú_vectorized_index_putz.unfold_backward.<locals>._vectorized_index_put‚  s¬   ø€ ÝŒl˜: cœ?°4´;ÅeÄkÐRÑRÔRˆØ�jŠj˜˜D $Ñ'Ô'×/Ò/Ñ1Ô1ˆØ—’˜b #¨¡'Ñ*Ô*×2Ò2°3¸¸a¹Ñ@Ô@ˆØ˜#‘  Ñ&ˆÝ×%Ò%Ø˜˜v°$ð &ñ 
ô 
ç
Š*‰,Œ,ð	r+   r|  c                  ó^  •— ‰                      ¦   «         t          ‰¦  «        dz   k    rdS  ‰‰                     d¦  «        ‰k    ¦  «        sdS ‰‰         ‰z
  ‰z  dz   }  ‰‰                     ‰¦  «        | k    ¦  «        sdS t          ˆˆˆfd„t	          ‰¦  «        D ¦   «         ¦  «        S )Nr"   FrV   c              3   ón   •K  — | ]/\  }}|‰k    p! ‰‰                      |¦  «        |k    ¦  «        V — Œ0d S r;   ©r9  )r5   Ú
source_dimr”  rR   r¬   r}  s      €€€r,   rØ  zDunfold_backward.<locals>._is_canonical_grad_shape.<locals>.<genexpr>š  sg   øè è € ð 
ð 
ñ %�
˜Hð ˜#Òð HØ$Ð$ T§Y¢Y¨zÑ%:Ô%:¸hÒ%FÑGÔGð
ð 
ð 
ð 
ð 
ð 
r+   )rR   r�  r9  r  Ú	enumerate)Ún_foldsrR   r¬   rB  r9  r}  rv  s    €€€€€€r,   Ú_is_canonical_grad_shapez1unfold_backward.<locals>._is_canonical_grad_shape�  sØ   ø€ Ø�8Š8‰:Œ:�˜Z™œ¨1Ñ,Ò,Ð,Ø�5Ø$Ð$ T§Y¢Y¨r¡]¤]°dÒ%:Ñ;Ô;ð 	Ø�5à˜c”? TÑ)¨dÑ2°QÑ6ˆØ$Ð$ T§Y¢Y¨s¡^¤^°wÒ%>Ñ?Ô?ð 	Ø�5åð 
ð 
ð 
ð 
ð 
ð 
õ )2°*Ñ(=Ô(=ð
ñ 
ô 
ñ 
ô 
ð 	
r+   c                 ór   •—  ‰| |k    ¦  «        r| S  ‰|| k    ¦  «        r|S t          j        | |¦  «        S r;   )rC   Úsym_min©ÚaÚbr}  s     €r,   Ú_sym_min_if_neededz+unfold_backward.<locals>._sym_min_if_needed£  óM   ø€ Ø Ð   a¢Ñ(Ô(ð 	ØˆHØ Ð   a¢Ñ(Ô(ð 	ØˆHÝŒ}˜Q Ñ"Ô"Ð"r+   c                 ór   •—  ‰| |k    ¦  «        r| S  ‰|| k    ¦  «        r|S t          j        | |¦  «        S r;   )rC   Úsym_maxrV  s     €r,   Ú_sym_max_if_neededz+unfold_backward.<locals>._sym_max_if_neededª  rZ  r+   rK  Útarget_shapec                 ó   •— t          |¦  «        }|                      ¦   «         }||k    r|                      |¦  «        S ||z
  }dg|z  }t          |¦  «        D ]}}|‰k    r‰n||z   }|dk     s||k    r|                      |¦  «        c S  ‰	||         dk    ¦  «        r| j        |         ||<   ŒXt          j        | j        |         dk    d„ ¦  «         Œ~|                      |¦  «                             |¦  «        S )Nr"   r   c                  ó   — dS )Nz=unfold_backward grad shape is not broadcastable to input_sizer*   r*   r+   r,   r…   z:unfold_backward.<locals>._reshape_source.<locals>.<lambda>Å  s	   € ð $€ r+   )r�  rR   r�  rW   r"  rC   r†   r1  )
rK  r^  rˆ  Úsource_ndimÚ
dim_offsetÚ
view_shaperP  Ú
target_dimrR   r}  s
           €€r,   Ú_reshape_sourcez(unfold_backward.<locals>._reshape_source±  s0  ø€ Ý�<Ñ Ô ˆØ—j’j‘l”lˆØ˜ÒÐØ—=’= Ñ.Ô.Ð.à˜KÑ'ˆ
Ø�S˜4‘Zˆ
Ý Ñ,Ô,ð 	ð 	ˆJØ *¨cÒ 1Ð 1˜˜°zÀJÑ7NˆJØ˜AŠ~ˆ~ ¨tÒ!3Ð!3Ø—}’} \Ñ2Ô2Ð2Ð2Ð2Ø$Ð$ Z°
Ô%;¸qÒ%@ÑAÔAð 
Ø)/¬°jÔ)A�
˜:Ñ&Ð&õ
 ”Ø”L Ô,°Ò1ð$ð $ñô ð ð ð �~Š~˜jÑ)Ô)×0Ò0°Ñ>Ô>Ð>r+   r"   rœ  rV   )rC   Ú_check_valuer�  Úsqueeze_copyrH   r8  rx  r   r~  r}  r¡  r€  r–  r9  ÚreversedrW   rŸ  r›  rG  Úselectr:  r‡   Ú	index_addrº  )r¬   rB  rC  r9  rv  rL  rS  rY  r]  re  Úinput_dim_sizeÚgrad_dim_sizer®  Úmax_valid_lenÚ	valid_lenr§  rK  Úsource_shaperR   r[   r}  s   `` ``             @@@r,   Úunfold_backwardrp  w  sË  øøøøøøø€ õ
 
Ô�t˜a’xÐ!JÐ!JÐ!JÐ!JÑKÔKÐKÝ
ˆ:�„˜!ÒÐÝÔ! $¨Ñ*Ô*Ð*Ý
Ô
 ¥ Z¡¤°)Ñ
<Ô
<€CØ—’ 
Ñ+Ô+€Jð¥6ð ð ð ð ð ð ð ð ð ð ð ð ˆt‚|€|Ø$Ð$Ñ&Ô&Ð&àKÐKÐKÐKÐKÐKð
¥dð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
ð   ÐÑ!Ô!ð 'Ø$Ð$Ñ&Ô&Ð&ð#ð #ð #ð #ð #ð#ð #ð #ð #ð #ð?¥ð ?µd½3´ið ?ÅFð ?ð ?ð ?ð ?ð ?ð ?ð ?ð4   ”_€NØ—I’I˜c‘N”N€Mõ �5 ™;œ;Ñ'Ô'ð Bð BˆØ*Ð*Ø˜fÑ$ tÑ+¨aÑ/°DÑ8¸!ñ
ô 
ˆð 'Ð& }°mÑDÔDˆ	ÝŒl˜9¨T¬[ÅÄÐLÑLÔLˆØ�D‰j˜6Ñ!ˆØ—’˜R Ñ(Ô(×/Ò/°°Q¸	ÑBÔBˆÝ˜JÑ'Ô'ˆØ%ˆ�SÑØ � ¨Ñ6Ô6ˆÝ—^’^ J°°S¸&ÑAÔAˆ
ˆ
à× Ò Ñ"Ô"Ð"r+   Úepsc           
      ó>  — |�A|}d|z
  }t          j        t          j        ||k    ||k    ¦  «        | |d|z
  z  z  d¦  «        S t          j        t          j        |dk    |dk    ¦  «        | |d|z
  z  z  |                     dt	          d¦  «        ¦  «        ¦  «        S )Nrj   r—   r*   Únan)rC   rl   r¢  rñ   r  )ro   r~   rq  ÚloÚhis        r,   Úlogit_backwardrv  ß  s­   € ð
 €ØˆØ�2‰XˆÝŒ{ÝÔ˜d bšj¨$°"ª*Ñ5Ô5Ø˜4 3¨¡:Ñ.Ñ/Øñ
ô 
ð 	
õ Œ{ÝÔ˜d cšk¨4°3ª;Ñ7Ô7Ø˜4 3¨¡:Ñ.Ñ/Ø�MŠM˜"�e E™lœlÑ+Ô+ñ
ô 
ð 	
r+   Útrainc                 ó~   — |r(|dk    r"t                                | ||¦  «        d         S |                      ¦   «         S rv   )r‡   Únative_dropoutrž  )rÄ   r]  rw  s      r,   Údropoutrz  ô  s?   € ð ð ��a’�Ý×"Ò" 5¨!¨UÑ3Ô3°AÔ6Ð6à�{Š{‰}Œ}Ðr+   Úout0Úout1c                 ón  — |r’|dk    rŒ|dk    r4t          j        | ¦  «        t          j        | t           j        ¬¦  «        fS | j        j        st          d¦  «        ‚t          j        | ¦  «        |k    }|| z  t          dd|z
  z  ¦  «        z  }||fS | t          j        | t           j        ¬¦  «        fS )Nr   r"   rì   z?result type Float can't be cast to the desired output type Longrj   )	rC   r  r¡  rí   Úis_floating_pointr  Ú	rand_liker  rf  )rÄ   r]  rw  Ú	bool_maskÚress        r,   ry  ry  þ  sÄ   € ð ð A��a’�Ø�Š6ˆ6ÝÔ$ UÑ+Ô+­UÔ-=¸eÍ5Ì:Ð-VÑ-VÔ-VÐWÐWØŒ{Ô,ð 	ÝØQñô ð õ ”O EÑ*Ô*¨QÒ.ˆ	Ø˜%Ñ¥%¨¨s°Q©w©Ñ"8Ô"8Ñ8ˆØ�YÐÐà•u” uµE´JÐ?Ñ?Ô?Ð@Ð@r+   Úhalf_to_floatc                 ó¶  — |                       ¦   «         } |r-| j        t          j        k    rt	          d| j        › d�¦  «        ‚t          j        | t
          j        j        ¬¦  «        \  }}|  	                    |¦  «        } t          | |¦  «        }t          j        | |z
  ¦  «        }|t          j        ||d¬¦  «        z  }|s| 	                    |¦  «        }|S ©Nz%half_to_float is True but x.dtype is z, expected torch.half©r9   T©r  )rº  rí   rC   Úhalfr7  rH   rI   ÚELEMENTWISE_TYPE_PROMOTION_KINDÚDEFAULTr=   Ú_softmax_unbacked_safe_amaxrk   rú   )r6   rR   r‚  r>   rA   Úx_maxÚunnormalizedr#  s           r,   Ú_softmaxr�    sã   € ð
 	
�Š‰Œ€AØð ØŒ7•e”jÒ Ð Ý ØV¸¼ÐVÐVÐVñô ð õ ',Ô&>Ø	�uÔDÔLð'ñ 'ô 'Ñ#Ð�|ð 	
�ŠÐÑÔ€AÝ'¨¨3Ñ/Ô/€EÝ”9˜Q ™YÑ'Ô'€LØ�EœI l°CÀÐFÑFÔFÑF€FØð )Ø—’˜<Ñ(Ô(ˆØ€Mr+   c           	      óº  — ddl m} | j        dk    rt          j        | |d¬¦  «        S t          j        | j        |¦  «        } || j        |         dk    ¦  «        rt          j        | |d¬¦  «        S t          | j        ¦  «        }d||<   t          j	        | |  
                    |t          d¦  «        ¦  «        f|¬¦  «        } t          j        | |d¬¦  «        S )Nr   ©Úguard_or_falseTr†  r"   r
  rƒ   )r~  r�  rˆ  rC   ÚamaxrH   r8  r"  r€  r;  rñ   r  )r6   rR   r�  Úcanonical_dimÚ	pad_shapes        r,   rŠ  rŠ  &  sÜ   € ØDÐDÐDÐDÐDÐDà„v�‚{€{ÝŒz˜!˜S¨$Ð/Ñ/Ô/Ð/åÔ*¨1¬6°3Ñ7Ô7€MØ€~�a”g˜mÔ,¨qÒ0Ñ1Ô1ð 0ÝŒz˜!˜S¨$Ð/Ñ/Ô/Ð/õ �Q”W‘”€IØ €IˆmÑÝŒ	�1�a—j’j ­E°&©M¬MÑ:Ô:Ð;ÀÐEÑEÔE€AÝŒ:�a˜ dÐ+Ñ+Ô+Ð+r+   )r!  c                 óÞ  — |                       ¦   «         } |r-| j        t          j        k    rt	          d| j        › d�¦  «        ‚t          j        | t
          j        j        ¬¦  «        \  }}|  	                    |¦  «        } t          | |¦  «        }| |z
  }t          j        t          j        t          j        |¦  «        |d¬¦  «        ¦  «        }||z
  }|s| 	                    |¦  «        }|S r„  )rº  rí   rC   r‡  r7  rH   rI   rˆ  r‰  r=   rŠ  rT  rú   rk   )	r6   rR   r‚  r>   rA   r‹  ÚshiftedÚshifted_logsumexpr#  s	            r,   Ú_log_softmaxr—  :  sô   € ð
 	
�Š‰Œ€AØð ØŒ7•e”jÒ Ð Ý ØV¸¼ÐVÐVÐVñô ð õ ',Ô&>Ø	�uÔDÔLð'ñ 'ô 'Ñ#Ð�|ð 	
�ŠÐÑÔ€AÝ'¨¨3Ñ/Ô/€EØ�%‰i€GÝœ	¥%¤)­E¬I°gÑ,>Ô,>ÀÈTÐ"RÑ"RÔ"RÑSÔSÐØÐ(Ñ(€FØð )Ø—’˜<Ñ(Ô(ˆØ€Mr+   rV   r¦  Úpadding_idxÚscale_grad_by_freqÚsparsec                 ó  — |                       ¦   «         dk    r%t          d|                       ¦   «         › d�¦  «        ‚|j        dk    r8|                      d|¦  «        }|j        dk    r|                     d¦  «        }|S | |         S )Nr#   z'weight' must be 2-D, got z-Dr"   r   )rR   r7  rˆ  Úindex_selectr  )rÒ   r¦  r˜  r™  rš  rË   s         r,   Ú	embeddingr�  R  s†   € ð ‡z‚z�|„|�qÒÐÝÐJ¸&¿*º*¹,¼,ÐJÐJÐJÑKÔKÐKà„|�qÒÐà×!Ò! ! WÑ-Ô-ˆØŒ<˜1ÒÐØ—+’+˜a‘.”.ˆCØˆ
à�gŒÐr+   Únum_weightsc                 óº  — t          j        | t           j        j        ¬¦  «        \  }}|                      |¦  «        } t          |t          j        ¦  «        }|dk    ||k     z  }|r~|                     |f¦  «        }t          j	        |¦  «        }	t                               |||g|	¦  «        }t                               |||gd¦  «        }
| |
                     d¦  «        z  } t          |||k    z  | j        ¦  «        }|                      |f| j        |j        d …         z   ¦  «        }t                               |||g| ¦  «                             |¦  «        S )Nr…  r   r"   rV   )rH   rI   rˆ  r‰  r=   r   rC   Úlongrx  rf  r‡   Ú#_unsafe_masked_index_put_accumulater¤  rX   rZ   rˆ  r"  )ro   r¦  rž  r˜  r™  r>   rA   Úvalid_indicesÚcountsr   Úgrad_weights_scaler¨  Úgrad_weights                r,   Úembedding_dense_backwardr¦  h  sj  € õ ',Ô&>Ø­Ô)NÔ)Vð'ñ 'ô 'Ñ#Ð�|ð —.’.Ð!2Ñ3Ô3€KÝ% g­u¬zÑ:Ô:€GØ ’\ g°Ò&;Ñ<€MØð 	EØ×"Ò" K >Ñ2Ô2ˆÝŒ˜wÑ'Ô'ˆÝ×9Ò9Ø�M G 9¨dñ
ô 
ˆõ "×6Ò6Ø�M G 9¨añ
ô 
Ðð "Ð$6×$@Ò$@ÀÑ$DÔ$DÑDˆå˜]¨g¸Ò.DÑEÀ{ÔGWÑXÔX€DØ×'Ò'Ø	ˆ˜Ô*¨7¬<¨>¨>Ô:Ñ:ñô €Kõ ×3Ò3Ø�T˜G˜9 kñô ç‚bˆÑÔðr+   c                 ó   — d}| D ]}||z  }Œ|S r_   r*   )r6   rM   Úis      r,   r4  r4  ‹  s&   € Ø	€AØð ð ˆØ	ˆQ‰ˆˆØ€Hr+   ÚtensorsÚ
num_chunksc                 óŠ  — g }| D ]½}|                      ¦   «         }||         |z   dz
  |z  |z  }|||         k    r>dgdz  |j        |z
  dz
  z  d|||         z
  gz   }t                               ||d¦  «        }|d |…         t	          j        |dg¦  «        z   }|                     |                     |¦  «        ¦  «         Œ¾|S )Nr"   r   r#   rV   )r9  rˆ  r‡   Úconstant_pad_ndrC   ÚSizeÚappendr1  )	r©  rR   rª  Úpadded_tensorsÚtensorÚtensor_sizeÚpad_along_dimrõ  Ú	view_sizes	            r,   Ú
_pad_chunkr´  ’  sí   € ð
 €NØð 9ð 9ˆØ—k’k‘m”mˆØ$ SÔ)¨JÑ6¸Ñ:¸zÑIÈJÑVˆØ˜K¨Ô,Ò,Ð,à�#˜‘'˜Vœ[¨3Ñ.°Ñ2Ñ3ØØ ¨CÔ 0Ñ0ð7ñ ˆCõ ×)Ò)¨&°#°qÑ9Ô9ˆFØ   Ô%­¬
°JÀÐ3CÑ(DÔ(DÑDˆ	Ø×Ò˜fŸnšn¨YÑ7Ô7Ñ8Ô8Ð8Ð8ØÐr+   c                 óF   — | d         j         }| D ]}|j         |k    r dS ŒdS )Nr   FT©rˆ  )r©  rˆ  r°  s      r,   Úhave_same_ndimsr·  §  s:   € Ø�1Œ:Œ?€DØð ð ˆØŒ;˜$ÒÐØ�5�5ð àˆ4r+   c                 ó¼   — | d                               ¦   «         d |…         }| D ]6}t          j        |                      ¦   «         d |…         |k    d„ ¦  «         Œ7d S )Nr   c                  ó   — dS )NzG_chunk_cat expects same sizes of 0,...,dim-1 dimensions for all tensorsr*   r*   r+   r,   r…   z+leading_dimension_matches.<locals>.<lambda>´  s   € Ð]€ r+   )r9  rC   r†   )r©  rR   Úleading_dim_sizesr°  s       r,   Úleading_dimension_matchesr»  ¯  sq   € Ø œ
ŸšÑ)Ô)¨$¨3¨$Ô/ÐØð 
ð 
ˆÝŒØ�KŠK‰MŒM˜$˜3˜$ÔÐ#4Ò4Ø]Ð]ñ	
ô 	
ð 	
ð 	
ð
ð 
r+   c                 ó°  — t          j        |dk    d„ ¦  «         t          j        t          | ¦  «        dk    d„ ¦  «         | d         j        }| d         j        }| D ]l}t          j        |                     ¦   «         dk    d„ ¦  «         t          j        |j        |k    d„ ¦  «         t          j        |j        |k    d„ ¦  «         Œmt          | ¦  «        r.t          j        | d          	                    ¦   «         |¦  «        }n>t          j        |dk    d„ ¦  «         | D ]!}t          j        ||j
        k     d	„ ¦  «         Œ"t          | |¦  «         |S )
Nr"   c                  ó   — dS )Nz&_chunk_cat expects positive num_chunksr*   r*   r+   r,   r…   z._preprocess_chunk_cat_inputs.<locals>.<lambda>½  s   € Ð*R€ r+   r   c                  ó   — dS )Nz0_chunk_cat expects a non-empty input tensor listr*   r*   r+   r,   r…   z._preprocess_chunk_cat_inputs.<locals>.<lambda>¿  s   € Ð"T€ r+   c                  ó   — dS )Nz#_chunk_cat expects non-empty tensorr*   r*   r+   r,   r…   z._preprocess_chunk_cat_inputs.<locals>.<lambda>Ä  s   € Ð1V€ r+   c                  ó   — dS )Nz8_chunk_cat expects all input tensors with the same dtyper*   r*   r+   r,   r…   z._preprocess_chunk_cat_inputs.<locals>.<lambda>Ç  ó   € ÐN€ r+   c                  ó   — dS )Nz8_chunk_cat expects all inputs tensors on the same devicer*   r*   r+   r,   r…   z._preprocess_chunk_cat_inputs.<locals>.<lambda>Ë  rÁ  r+   c                  ó   — dS )NzK_chunk_cat expects non-negative dim when input tensors have different ndimsr*   r*   r+   r,   r…   z._preprocess_chunk_cat_inputs.<locals>.<lambda>Ò  s   € Ða€ r+   c                  ó   — dS )Nz3_chunk_cat expects dim < ndim for all input tensorsr*   r*   r+   r,   r…   z._preprocess_chunk_cat_inputs.<locals>.<lambda>×  ó   € ÐM€ r+   )rC   r†   r�  rí   r›  rã   r·  rH   r8  rR   rˆ  r»  )r©  rR   rª  Úexpected_dtypeÚexpected_devicer°  s         r,   Ú_preprocess_chunk_cat_inputsrÈ  ¸  s‡  € õ
 
„L�˜q’Ð"RÐ"RÑSÔSÐSÝ	„LÝˆG‰Œ�qÒÐTÐTñô ð ð ˜Q”ZÔ%€NØ˜a”jÔ'€OØð 	
ð 	
ˆÝŒ�V—\’\‘^”^ aÒ'Ð)VÐ)VÑWÔWÐWÝŒØŒL˜NÒ*ØNÐNñ	
ô 	
ð 	
õ 	ŒØŒM˜_Ò,ØNÐNñ	
ô 	
ð 	
ð 	
õ �wÑÔð ÝÔ$ W¨Q¤Z§^¢^Ñ%5Ô%5°sÑ;Ô;ˆˆåŒØ�1ŠHØaÐañ	
ô 	
ð 	
ð ð 	ð 	ˆFÝŒLØ�f”kÒ!ØMÐMñô ð ð õ ˜g sÑ+Ô+Ð+Ø€Jr+   rË   c                 ó²   — t          | ||¦  «        }t          | ||¦  «        }|€t          j        ||dz   ¦  «        S t          j        ||dz   |¬¦  «         |S )Nr"   )rË   )rÈ  r´  rC   r;  )r©  rR   rª  rË   r¯  s        r,   Ú
_chunk_catrÊ  Ý  sa   € õ ' w°°ZÑ
@Ô
@€CÝ ¨¨jÑ9Ô9€NØ
€{ÝŒy˜¨¨q©Ñ1Ô1Ð1åŒ	�. #¨¡'¨sÐ3Ñ3Ô3Ð3Øˆ
r+   Úsplit_sizesc                 óÖ   — t                                | ||¬¦  «        }|€d„ |D ¦   «         S t          ||¦  «        D ],\  }}t          ||j        ¦  «         t          ||d¬¦  «         Œ-d S )Nrƒ   c                 óN   — g | ]"}|                      t          j        ¬ ¦  «        ‘Œ#S )rc  )rž  rC   rg  ©r5   Úss     r,   r8   z)split_with_sizes_copy.<locals>.<listcomp>ù  s)   € ÐOÐOÐOÀ1�—’¥eÔ&=�Ñ>Ô>ÐOÐOÐOr+   Tr  )r‡   Úsplit_with_sizesr  r   r"  r   )r~   rË  rR   rË   Úsplitsr·  Úsplits          r,   Úsplit_with_sizes_copyrÓ  î  s…   € õ ×"Ò" 4¨¸#Ð"Ñ>Ô>€FØ
€{ØOÐOÈÐOÑOÔOÐOå   fÑ-Ô-ð 	Nð 	N‰MˆF�EÝ˜f e¤kÑ2Ô2Ð2Ý U°FÈÐMÑMÔMÐMÐMØˆtr+   Ú
split_size.c                 óD   — t           j                             | ||¦  «        S r;   )r‡   rÒ  r   )rÄ   rÔ  rR   s      r,   Úunsafe_splitrÖ    s   € åŒ:×Ò˜U J°Ñ4Ô4Ð4r+   c                 óD   — t           j                             | ||¦  «        S r;   )r‡   rÐ  r“  )rÄ   rË  rR   s      r,   Úunsafe_split_with_sizesrØ    s   € õ Ô ×(Ò(¨°¸SÑAÔAÐAr+   c                 ó€  ‡‡— | j         }||         Št          j        ‰dk    ˆfd„¦  «         ‰dk    r|                      ¦   «         fS t          j        ‰dk    ˆfd„¦  «         ‰‰z   dz
  ‰z  }ddlm}  ||¦  «        }ˆfd„t          |¦  «        D ¦   «         }‰‰|z  ‰z
  z
  |d<   t          j        | ||¦  «        S )Nr   c                  ó   •— d‰ › �S )Nz=split expects split_size be non-negative, but got split_size=r*   )rÔ  s   €r,   r…   zsplit.<locals>.<lambda>  s   ø€ Ð\ÐPZÐ\Ð\€ r+   c                  ó   •— d‰ › �S )NzKsplit_size can only be 0 if dimension size is 0, but got dimension size of r*   )r”  s   €r,   r…   zsplit.<locals>.<lambda>  s   ø€ ð 0Ø%-ð0ð 0€ r+   r"   )Ú	guard_intc                 ó   •— g | ]}‰‘ŒS r*   r*   )r5   r¨  rÔ  s     €r,   r8   zsplit.<locals>.<listcomp>"  s   ø€ Ð5Ð5Ð5 !�:Ð5Ð5Ð5r+   rV   )r"  rC   r†   Údetachr~  rÜ  rW   rÒ  )r~   rÔ  rR   rs  ÚchunksrÜ  rË  r”  s    `     @r,   rÒ  rÒ    s  øø€ à”*€KØ˜3Ô€HÝ	„LØ�aŠØ\Ð\Ð\Ð\ñô ð ð �1‚}€}Ø—’‘”ÐÐÝ	„LØ�QŠð	0ð 	0ð 	0ð 	0ñô ð ð
 ˜Ñ# aÑ'¨JÑ6€Fð @Ð?Ð?Ð?Ð?Ð?àˆY�vÑÔ€FØ5Ð5Ð5Ð5¥u¨V¡}¤}Ð5Ñ5Ô5€KØ  J°Ñ$7¸(Ñ$BÑC€K��OÝŒ;�t˜[¨#Ñ.Ô.Ð.r+   Útensor_indices_or_sectionsc                 óÞ  ‡— |j         j        dk    rt          d|j         › �¦  «        ‚|j        t          j        k    rt          d|j        › �¦  «        ‚|                     ¦   «         Št	          j        ‰dk    p‰dk    ˆfd„¦  «         ‰dk    rc|                     ¦   «         }t          |t          ¦  «        s$t          dt          |¦  «        j        › �¦  «        ‚|                      ||¦  «        S t          }t          j                             ¦   «         x}r|j        x}r|j        } |¦   «         5  d„ |D ¦   «         }d d d ¦  «         n# 1 swxY w Y   |                      ||¦  «        S )	NÚcpuz/tensor_indices_or_sections must be on CPU, got z.tensor_indices_or_sections must be int64, got r"   r   c                  ó   •— d‰ › d�S )Nz{tensor_split expected tensor_indices_or_sections to be a zero-dimensional or one-dimensional tensor, but got a tensor with z dimsr*   )Ú	split_dims   €r,   r…   zAtensor_split_tensor_indices_or_sections_py_impl.<locals>.<lambda>:  s    ø€ ð MØ<EðMð Mð M€ r+   z%Expected sections to be IntLike, got c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r*   )Úitem)r5   r¨  s     r,   r8   zCtensor_split_tensor_indices_or_sections_py_impl.<locals>.<listcomp>O  s    € ÐDÐDÐD A�q—v’v‘x”xÐDÐDÐDr+   )r›  Útyper7  rí   rC   rÁ  rR   r†   ræ  r4   r   r$   Útensor_splitr   Ú_guardsÚdetect_fake_modeÚ	shape_envÚignore_fresh_unbacked_symbols)	r~   rà  rR   ÚsectionsÚctxÚ	fake_moderë  r¦  rä  s	           @r,   Ú/tensor_split_tensor_indices_or_sections_py_implrð  '  sÿ  ø€ ð "Ô(Ô-°Ò6Ð6ÝØaÐ>XÔ>_ÐaÐañ
ô 
ð 	
ð "Ô'­5¬;Ò6Ð6ÝØ_Ð=WÔ=]Ð_Ð_ñ
ô 
ð 	
ð +×.Ò.Ñ0Ô0€IÝ	„LØ�QŠÐ(˜) qš.ð	Mð 	Mð 	Mð 	Mñô ð ð
 �A‚~€~Ø-×2Ò2Ñ4Ô4ˆÝ˜(¥GÑ,Ô,ð 	Ý ØQ½¸X¹¼Ô8OÐQÐQñô ð ð × Ò  ¨3Ñ/Ô/Ð/åˆÝœ×7Ò7Ñ9Ô9Ð9ˆIð 	:Ø"Ô,Ð,ˆIð	:ð Ô9ˆCð
 ˆS‰UŒUð 	Eð 	EØDÐDÐ)CÐDÑDÔDˆGð	Eð 	Eð 	Eñ 	Eô 	Eð 	Eð 	Eð 	Eð 	Eð 	Eð 	Eøøøð 	Eð 	Eð 	Eð 	Eð × Ò  ¨#Ñ.Ô.Ð.s   Ä5EÅEÅEÚmat1Úmat2c                 óÞ   — |                       ¦   «         s2|                      ¦   «         st          |¦  «        }t          |¦  «        }|t          j        ||¦  «        z  }|dk    r|S ||| z  z   S rv   )r~  Ú
is_complexr–  rC   Úmm)r~   rñ  rò  rf   rp   rË   s         r,   Úaddmmrö  ]  st   € ð ×!Ò!Ñ#Ô#ð ¨D¯OªOÑ,=Ô,=ð Ý�4‰yŒyˆÝ�E‘
”
ˆØ
•%”(˜4 Ñ&Ô&Ñ
&€CØˆq‚y€yØˆ
ð �˜‘ÑÐr+   r   c                 ó|   — |t          j        |||¬¦  «        z  }|dk    r|S |||                      |¦  «        z  z   S )Nr   r   )rC   rõ  r=   )r~   rñ  rò  r   rf   rp   rË   s          r,   Úaddmm_dtyperø  q  sI   € ð •%”(˜4 °Ð;Ñ;Ô;Ñ
;€CØˆq‚y€yØˆ
Ø�˜Ÿš 	Ñ*Ô*Ñ*Ñ*Ð*r+   Úuse_geluc                 óÚ   — t          | ||||¦  «        }|r=| j        rt                               |d¬¦  «        S t                               |¦  «        S t                               |¦  «        S )Nr¯   )r­   )rö  Úis_cudar‡   ÚgeluÚrelu)r~   rñ  rò  rf   rp   rù  rË   s          r,   Ú_addmm_activationrþ  �  sa   € õ ��d˜D $¨Ñ
.Ô
.€CØð "ØŒ<ð 	"Ý—9’9˜S¨f�9Ñ5Ô5Ð5å—9’9˜S‘>”>Ð!Ý�9Š9�S‰>Œ>Ðr+   Úvecc                 ó  — |                       ¦   «         s2|                      ¦   «         st          |¦  «        }t          |¦  «        }|t          j        ||¦  «        z  }|dk    r|S |                     ¦   «         dk    r|| z  S ||| z  z   S rv   )r~  rô  r–  rC   Úmvrã   )r~   rñ  rÿ  rf   rp   rË   s         r,   Ú_addmv_implr  •  s�   € à×!Ò!Ñ#Ô#ð ¨D¯OªOÑ,=Ô,=ð Ý�4‰yŒyˆÝ�E‘
”
ˆØ
•%”(˜4 Ñ%Ô%Ñ
%€CØˆq‚y€yØˆ
Ø
‡y‚y�{„{�aÒÐØ�d‰{ÐØ�˜‘ÑÐr+   c                 óž   ‡ ‡‡— t          j        ‰ j        ‰j        k    o‰j        ‰j        k    ˆˆ ˆfd„¦  «         t          ‰ ‰‰||¦  «        S )Nc                  ó8   •— d‰j         › d‰ j         › d‰j         › �S )Nz6addmv input tensors must have the same dtype, but got ú, z, and rì   )rñ  r~   rÿ  s   €€€r,   r…   zaddmv.<locals>.<lambda>§  s*   ø€ ÐtÈÌÐtÐtÐW[ÔWaÐtÐtÐilÔirÐtÐt€ r+   )rC   r†   rí   r  )r~   rñ  rÿ  rf   rp   s   ```  r,   Úaddmvr  ¢  s_   øøø€ õ 
„LØŒ
�d”jÒ Ð< T¤Z°3´9Ò%<ØtÐtÐtÐtÐtÐtñô ð õ �t˜T 3¨¨eÑ4Ô4Ð4r+   rù   ÚrstdÚgammaÚNÚCÚHxWÚgroupÚoutput_maskc
           	      ó	  ‡‡‡‡‡‡— t          j        | |‰|d¬¦  «         t          j        || d¬¦  «         t          j        ‰|d¬¦  «         t          j        |                     ¦   «         ‰‰z  ‰z  k    ˆˆˆfd„¦  «         t          j        ‰j        ‰‰fk    ˆˆˆfd„¦  «         t          j        ‰d u p‰                     ¦   «         ‰k    ˆˆfd„¦  «         ‰‰z  }
t          j        ‰|
‰z  k    ˆˆfd„¦  «         t          j        | |¦  «                             ‰‰‰¦  «         	                    dg¬¦  «        }|                      ‰‰‰¦  «         	                    dg¬¦  «        }d }d }d }|	d	         �rdd
‰|
z  z  }‰�Þt          j        |‰ 
                    d	¦  «        ¦  «                             ‰‰|
¦  «         	                    d¦  «        }t          j        |‰ 
                    d	¦  «        ¦  «                             ‰‰|
¦  «         	                    d¦  «        }t          j        | 
                    d¦  «        ‰                     d‰|
¦  «        ¦  «        }n˜|                     ‰‰|
¦  «         	                    d¦  «        }|                     ‰‰|
¦  «         	                    d¦  «        }t          j        | 
                    d¦  «        t          j        d‰|
f|j        ¬¦  «        ¦  «        }|‰z  |z
  |z  |z  |z  |z  }| ‰z  ||z  |z  z
  }| 
                    d¦  «        }t          |d¦  «        }t          |d¦  «        }t          j        |                      ‰‰|
‰¦  «        |¦  «        t          j        |                     ‰‰|
‰¦  «        |¦  «        z   |z   }|                     |j        ¦  «                             |j        ¦  «        }|	d         rƒ|                     ‰‰|
¦  «        |                     ‰‰|
¦  «        ‰ 
                    d¦  «        z  z
  | 
                    d¦  «        z   	                    d	g¬¦  «                             ‰¦  «        }|	d         r| 	                    d	g¬¦  «        }|||fS )NF)Úallow_cpu_scalar_tensorsc                  ó   •— d‰‰ z  ‰z  › d�S )NzExpect input to have z	 elementsr*   )r
  r  r	  s   €€€r,   r…   z,native_group_norm_backward.<locals>.<lambda>Á  s   ø€ Ð>¨¨A©°©Ð>Ð>Ð>€ r+   c                  ó$   •— d‰ › d‰› d‰j         › �S )NzExpect mean to have shape (r  z
, but got rñ  )r	  r  rù   s   €€€r,   r…   z,native_group_norm_backward.<locals>.<lambda>Å  s"   ø€ ÐP¨aÐPÐP°5ÐPÐPÀDÄJÐPÐP€ r+   c                  ó@   •— d‰ › d‰�‰                      ¦   «         nd› �S )NzExpect gamma to have z elements but got rV   )rã   )r
  r  s   €€r,   r…   z,native_group_norm_backward.<locals>.<lambda>É  s*   ø€ Ði¨ÐiÐiÈeÐN_¸U¿[º[¹]¼]¸]ÐegÐiÐi€ r+   c                  ó   •— d‰ › d‰› �S )NzExpect number of channels z, to be evenly-divisible by number of groups r*   )r
  r  s   €€r,   r…   z,native_group_norm_backward.<locals>.<lambda>Ï  s   ø€ Ðc¨QÐcÐcÐ\aÐcÐc€ r+   r#   rƒ   r   rj   rV   r"   rš  rO  )rH   Úcheck_same_deviceÚcheck_same_shaperC   r†   rã   r"  rß   r£  rú   rX   r1  r   r›  rZ   r=   rí   )ro   rÄ   rù   r  r  r	  r
  r  r  r  ÚcpgÚdsÚdbÚd_inputÚd_gammaÚd_biasrÏ  Úds_valÚdb_valÚc1Úc2Úc3s     ` `````             r,   Únative_group_norm_backwardr!  ¬  s£  øøøøøø€ õ 
ÔØ�U˜D $Àðñ ô ð õ 
Ô˜5 +ÈÐNÑNÔNÐNÝ	Ô˜4 ÀÐFÑFÔFÐFÝ	„LØ�Š‰Œ˜˜Q™ ™Ò$Ø>Ð>Ð>Ð>Ð>Ð>ñô ð õ 
„LØŒ
�q˜%�jÒ ØPÐPÐPÐPÐPÐPñô ð õ 
„LØ�ˆÐ+˜Ÿš™œ¨!Ò+ØiÐiÐiÐiÐiñô ð ð
 ˆu‰*€CÝ	„LØ	ˆS�5‰[ÒØcÐcÐcÐcÐcñô ð õ 
Œ�; Ñ	&Ô	&×	+Ò	+¨A¨q°#Ñ	6Ô	6×	:Ò	:À¸sÐ	:Ñ	CÔ	C€BØ	×	Ò	˜!˜Q Ñ	$Ô	$×	(Ò	(¨a¨SÐ	(Ñ	1Ô	1€Bà!€GØ!€GØ €FØ�1„~ñ ?Ø�3˜‘9ÑˆØÐÝ”Y˜r 5§?¢?°1Ñ#5Ô#5Ñ6Ô6×>Ò>¸qÀ%ÈÑMÔM×QÒQÐRSÑTÔTˆFÝ”Y˜r 5§?¢?°1Ñ#5Ô#5Ñ6Ô6×>Ò>¸qÀ%ÈÑMÔM×QÒQÐRSÑTÔTˆFÝ”Ø—’˜rÑ"Ô"Ø—’˜a ¨Ñ,Ô,ñô ˆBˆBð
 —Z’Z  5¨#Ñ.Ô.×2Ò2°1Ñ5Ô5ˆFØ—Z’Z  5¨#Ñ.Ô.×2Ò2°1Ñ5Ô5ˆFÝ”Ø—’˜rÑ"Ô"Ý”
˜A˜u c˜?°4´;Ð?Ñ?Ô?ñô ˆBð �t‰m˜fÑ$¨Ñ,¨tÑ3°dÑ:¸QÑ>ˆØˆS�4‰Z˜& 4™-¨!Ñ+Ñ+ˆà�\Š\˜"ÑÔˆÝ˜r 1Ñ%Ô%ˆÝ˜r 1Ñ%Ô%ˆåŒI�k×)Ò)¨!¨U°C¸Ñ=Ô=¸rÑBÔBÝŒi˜Ÿš a¨°°SÑ9Ô9¸2Ñ>Ô>ñ?àñð 	ð
 —/’/ %¤+Ñ.Ô.×1Ò1°%´+Ñ>Ô>ˆØ�1„~ð 
ð —’˜˜E 3Ñ'Ô'¨"¯'ª'°!°U¸CÑ*@Ô*@À4Ç>Â>ÐRTÑCUÔCUÑ*UÑUØ—.’. Ñ$Ô$ñ%÷ ŠS�a�SˆS‰\Œ\ßŠW�Q‰ZŒZð 	ð �1„~ð !Ø—’˜Q˜C�‘”ˆà�W˜fÐ%Ð%r+   Úout2c
                óÔ   — t          | |||||||||	¦
  «
        }|
||f}t          |¦  «        D ]:\  }}|�3t          ||         |j        ¦  «         t	          |||         d¬¦  «         Œ;|S r  )r!  rQ  r   r"  r   )ro   rÄ   rù   r  r  r	  r
  r  r  r  r{  r|  r"  r#  r[   r¨  rM   s                    r,   Únative_group_norm_backward_outr$    sŽ   € õ" (Ø�U˜D $¨¨q°!°S¸%Àñô €Fð ˜˜dÐ#€JÝ˜&Ñ!Ô!ð Qð Q‰ˆˆ1Øˆ=Ý˜j¨œm¨Q¬WÑ5Ô5Ð5Ý Q°
¸1´È4ÐPÑPÔPÐPøàÐr+   c                 ó4   — | �|                       |¦  «        S | S r;   ©r=   )r6   rí   s     r,   Ú_maybe_castr'  "  s   € Ø€}Ø�tŠt�E‰{Œ{ÐØ€Hr+   Úgrad_outÚnormalized_shapeÚbiasc                 óF  ‡"— |j         }|                     ¦   «         }	t          j        |j        ¦  «        Š"ˆ"fd„| |||fD ¦   «         \  }
}}}|
€t          d¦  «        ‚|	t          |¦  «        z
  }||d …         }|d |…         }g }g }t          |	¦  «        D ]3}||k    r|                     |¦  «         Œ|                     |¦  «         Œ4t          |¦  «        }t          |¦  «        }ddl
m}  ||dk    ¦  «        s ||dk    ¦  «        rl|d         r|                     |¦  «        nd |d         r|                     ||d …         ¦  «        nd |d         r|                     ||d …         ¦  «        nd fS t          ||                     ¦   «         ¦  «        }t          ||                     ¦   «         ¦  «        }|€t          d¦  «        ‚||z
  |z  }|�|
|z  }n|
}||z  }t          j        ||d¦  «        }t          j        ||¦  «        }t          j        ||d¦  «        }t          j        ||¦  «        }||z
  |z
  }d }d } d }!|d         r||z  |z  }|d         r4|�2t          |¦  «        dk    rt          j        |
|z  |d	¦  «        } n|
|z  } |d         r@|�>t          |¦  «        dk    rt          j        |
|d	¦  «        }!n|
                     ¦   «         }!t%          ||j        ¦  «        t%          | |�|j        nd ¦  «        t%          |!|�|j        nd ¦  «        fS )
Nc              3   ób   •K  — | ])}|�!|                      ‰t          j        ¬¦  «        n|V — Œ*d S r?  )r=   rC   rg  ©r5   r6   r>   s     €r,   rØ  z-native_layer_norm_backward.<locals>.<genexpr>7  sZ   øè è € ð 9ð 9ð ð ˆ=ð 	
�ŠÐ­eÔ.EˆÑFÔFÐFàð9ð 9ð 9ð 9ð 9ð 9r+   ú grad_out_cast should not be Noner   r|  r"   r#   zinput_cast should not be NoneTF)r"  rR   rH   Úget_computation_dtyperí   r7  r�  rW   r®  r4  r~  r}  rx  rZ   rC   rú   rß   rž  r'  )#r(  rÄ   r)  rù   r  rÒ   r*  r  Úinput_shapeÚ
input_ndimÚgrad_out_castÚ
input_castÚweight_castÚ	bias_castÚaxisÚ
inner_dimsÚ
outer_dimsÚinner_dim_indicesÚouter_dim_indicesr¨  r	  ÚMr}  Úx_hatÚ
grad_x_hatrW  rX  r  r  r   rN   r  Úd_weightr  r>   s#                                     @r,   Únative_layer_norm_backwardr?  )  s®  ø€ ð ”+€KØ—’‘”€JÝÔ3°E´KÑ@Ô@Ðð9ð 9ð 9ð 9ð ˜E 6¨4Ð0ð	9ñ 9ô 9Ñ5€M�:˜{¨Ið ÐÝÐ?Ñ@Ô@Ð@à�Ð,Ñ-Ô-Ñ-€DØ˜T˜U˜UÔ#€JØ˜U˜d˜UÔ#€JØ#%ÐØ#%ÐÝ�:ÑÔð (ð (ˆØ�Š9ˆ9Ø×$Ò$ QÑ'Ô'Ð'Ð'à×$Ò$ QÑ'Ô'Ð'Ð'åˆZÑÔ€AÝˆZÑÔ€AØKÐKÐKÐKÐKÐKàÐ˜Q !šVÑ$Ô$ð 
Ð(=Ð(=¸aÀ1ºfÑ(EÔ(Eð 
à,7¸¬NÐDˆE�OŠO˜KÑ(Ô(Ð(ÀØ3>¸q´>ÐKˆE�OŠO˜K¨¨¨Ô.Ñ/Ô/Ð/ÀtØ3>¸q´>ÐKˆE�OŠO˜K¨¨¨Ô.Ñ/Ô/Ð/Àtð
ð 	
õ
 ˜T :§>¢>Ñ#3Ô#3Ñ4Ô4€DÝ˜T :§>¢>Ñ#3Ô#3Ñ4Ô4€DØÐÝÐ<Ñ=Ô=Ð=Ø˜$Ñ $Ñ&€EØÐØ" [Ñ0ˆ
ˆ
à"ˆ
Ø�Q‰€AÝŒ	�*Ð/°Ñ6Ô6€AÝ	Œ�:˜uÑ	%Ô	%€BÝ	Œ�2Ð(¨$Ñ	/Ô	/€BÝ	Œ�5˜"Ñ	Ô	€Bà�‰E�B‰J€EØ!€GØ"€HØ €FØ�1„~ð %Ø˜!‘8˜uÑ$ˆà�1„~ð -˜+Ð1ÝÐ Ñ!Ô! AÒ%Ð%Ý”y °Ñ!6Ð8IÈ5ÑQÔQˆHˆHà$ uÑ,ˆHà�1„~ð +˜)Ð/ÝÐ Ñ!Ô! AÒ%Ð%Ý”Y˜}Ð.?ÀÑGÔGˆFˆFà"×(Ò(Ñ*Ô*ˆFõ 	�G˜Uœ[Ñ)Ô)Ý�H¨fÐ.@˜fœl˜lÀdÑKÔKÝ�F¨$Ð*:˜DœJ˜JÀÑEÔEðð r+   c          
      óÐ   — t          | |||||||¦  «        }||	|
f}t          |¦  «        D ]:\  }}|�3t          ||         |j        ¦  «         t	          |||         d¬¦  «         Œ;|S r  )r?  rQ  r   r"  r   )r(  rÄ   r)  rù   r  rÒ   r*  r  r{  r|  r"  r#  r[   r¨  rM   s                  r,   Únative_layer_norm_backward_outrA    s‹   € õ (Ø�%Ð)¨4°°v¸tÀ[ñô €Fð ˜˜dÐ#€JÝ˜&Ñ!Ô!ð Qð Q‰ˆˆ1Øˆ=Ý˜j¨œm¨Q¬WÑ5Ô5Ð5Ý Q°
¸1´È4ÐPÑPÔPÐPøàÐr+   c                 óð  — g }t          t          |¦  «        ¦  «        D ]/}|                     |                      ¦   «         |z
  dz
  ¦  «         Œ0t	          j        | j        ¦  «        }|                      |¦  «        }|€b|t          j	        t          j
        fv r$t          j        t          j	        ¦  «        j        }n&t          j        t          j        ¦  «        j        }n|}t          j        t          j        j        j                             t          j        |d¦  «                             |d¬¦  «        |¦  «        ¦  «        }	|                     |	¦  «        }
|�|
                     |¦  «        }
| j        p
|d uo|j        }t	          j        | ¦  «        }|t          j        t          j        fv }|s*|s(|
                     ¦   «         }
|	                     ¦   «         }	|
                     | ¦  «        }||	fS )Nr"   r#   Tr  )rW   r�  r®  rR   rH   r/  rí   r=   rC   rð   rÿ   Úfinforq  r  ÚrsqrtÚopsr‡   ÚaddÚScalarrò   rù   rß   Ú	is_nestedr   Úchannels_lastÚchannels_last_3drº  r@  )rÄ   r)  rÒ   rq  Údims_to_reducer¨  r>   Úupcasted_inputÚeps_valÚrqrst_inputÚupcasted_resultrH  rd  Úis_channels_lastr#  s                  r,   Ú_fused_rms_normrQ  š  sß  € ð !#€NÝ•3Ð'Ñ(Ô(Ñ)Ô)ð 3ð 3ˆØ×Ò˜eŸiši™kœk¨A™o°Ñ1Ñ2Ô2Ð2Ð2õ Ô3°E´KÑ@Ô@ÐØ—X’XÐ/Ñ0Ô0€Nð €{Ø¥¤µ´Ð @Ð@Ð@Ý”k¥%¤-Ñ0Ô0Ô4ˆGˆGå”k¥%¤-Ñ0Ô0Ô4ˆGˆGàˆå”+õ 	Œ	ŒÔ×!Ò!ÝŒI�n aÑ(Ô(×-Ò-°.È$Ð-ÑOÔOÐQXñ	
ô 	
ñô €Kð %×(Ò(¨Ñ5Ô5€OàÐØ)×-Ò-¨fÑ5Ô5ˆð ”ÐL F°$Ð$6Ð$K¸6Ô;K€IÝÔ/°Ñ6Ô6€MØ$ÝÔÝÔð)ð Ðð
 ð /Ð-ð /Ø)×4Ò4Ñ6Ô6ˆØ!×,Ò,Ñ.Ô.ˆð ×$Ò$ UÑ+Ô+€Fà�;ÐÐr+   c                 óÚ  — |j         }|                     ¦   «         }t          j        |j        ¦  «        }|                      |t          j        ¬¦  «        }	|                     |t          j        ¬¦  «        }
|�!|                     |t          j        ¬¦  «        nd }|	€t          d¦  «        ‚|t          |¦  «        z
  }||d …         }|d |…         }g }g }t          |¦  «        D ]3}||k    r|                     |¦  «         Œ|                     |¦  «         Œ4t          |¦  «        }t          |¦  «        }ddlm}  ||dk    ¦  «        s ||dk    ¦  «        rF|d         r|                     |¦  «        nd |d         r|                     ||d …         ¦  «        nd fS t!          ||
                     ¦   «         ¦  «        }|�|	|z  }n|	}d }d }|
|z  }|d         r(t          j        ||z  |d¬¦  «        }|||z  |z  z
  |z  }|d         r4|�2|	|z  }t          |¦  «        dk    rt          j        ||d¬¦  «        }n|}t%          ||j        ¦  «        t%          ||j        ¦  «        fS )	Nrc  r.  r   r�  r"   Tr  F)r"  rR   rH   r/  rí   r=   rC   rg  r7  r�  rW   r®  r4  r~  r�  rx  rZ   rú   r'  )r(  rÄ   r)  r  rÒ   r  r0  r1  r>   r2  r3  r4  r6  r7  r8  r9  r:  r¨  r	  r;  r�  r=  r  r>  r<  Úsum_valÚd_weight_full_shapes                              r,   Ú_fused_rms_norm_backwardrU  Ñ  sÝ  € ð ”+€KØ—’‘”€JÝÔ3°E´KÑ@Ô@Ðà—K’KØ­Ô)@ð  ñ ô €Mð —’Ð+½5Ô;R�ÑSÔS€Jð Ðð 	�	Š	Ð#µ5Ô3Jˆ	ÑKÔKÐKàð ð
 ÐÝÐ?Ñ@Ô@Ð@à�Ð,Ñ-Ô-Ñ-€DØ˜T˜U˜UÔ#€JØ˜U˜d˜UÔ#€JØ#%ÐØ#%ÐÝ�:ÑÔð (ð (ˆØ�Š9ˆ9Ø×$Ò$ QÑ'Ô'Ð'Ð'à×$Ò$ QÑ'Ô'Ð'Ð'åˆZÑÔ€AÝˆZÑÔ€AØDÐDÐDÐDÐDÐDà€~�a˜1’fÑÔð 
  °°Q²Ñ!7Ô!7ð 
à,7¸¬NÐDˆE�OŠO˜KÑ(Ô(Ð(ÀØ3>¸q´>ÐKˆE�OŠO˜K¨¨¨Ô.Ñ/Ô/Ð/Àtð
ð 	
õ
 ˜T :§>¢>Ñ#3Ô#3Ñ4Ô4€DØÐØ" [Ñ0ˆ
ˆ
à"ˆ
à!€GØ"€Hà˜Ñ€Eà�1„~ð >Ý”)˜E JÑ.Ð4EÈtÐTÑTÔTˆØ ¨¡¨gÑ 5Ñ5¸Ñ=ˆà�1„~ð +˜+Ð1Ø+¨eÑ3ÐÝÐ Ñ!Ô! AÒ%Ð%Ý”yØ#Ð):ÀEðñ ô ˆHˆHð +ˆHõ 	�G˜Uœ[Ñ)Ô)Ý�H˜eœkÑ*Ô*ðð r+   Úrunning_meanÚrunning_varÚmomentumÚ
functionalc	                 ó   — dgt          t          d|                      ¦   «         ¦  «        ¦  «        z   }	t          j        | j        ¦  «        }
|}|}|�r$t          j        | j        ¦  «        }
|                      |
¬¦  «        }t          j        ||	dd¬¦  «        \  }}t          j	        ||z   ¦  «        }| |z
  |z  }t          j
        ||	¦  «        }t          j
        ||	¦  «        }|�%||z  d|z
  |z  z   }|s|                     |¦  «         |�g|                      ¦   «         | j        d         z  }t          j
        ||	¦  «        }|||dz
  z  z  }||z  d|z
  |z  z   }|s|                     |¦  «         nò|�|€t          d¦  «        ‚|                     |
d¬¦  «        }|}|                     |
d¬¦  «        }|}|}dt          j        ||z   ¦  «        z  }| j        j        d	k    r|}|}n*|                      d
¦  «        }|                      d
¦  «        }t'          ||                      ¦   «         dz
  ¦  «        }t'          ||                      ¦   «         dz
  ¦  «        }| |z
  |z  }|�>|                     ¦   «         }t'          ||                      ¦   «         dz
  ¦  «        }||z  }|�>|                     ¦   «         }t'          ||                      ¦   «         dz
  ¦  «        }||z   }| j        j        d	k    r6|                     | j        ¬¦  «        }|                     | j        ¬¦  «        }|                     | j        ¬¦  «        ||||fS )Nr   r#   rì   T)rR   Ú
correctionr  r"   z:running_mean and running_var must not be None in eval mode)rí   rˆ   râ  ©r   )r€  rW   rR   rH   r/  rí   r=   rC   Úvar_meanrD  r  Úcopy_rã   r"  r7  rk  r›  rç  rx  rZ   rI  )rÄ   rÒ   r*  rV  rW  rÜ   rX  rq  rY  Úreduction_dimsr>   Únew_running_meanÚnew_running_varÚ	input_accÚ
biased_varrù   r  r·  Ú	save_meanÚ	save_rstdÚnÚsqueezed_varÚunbiased_varÚinvstds                           r,   Únative_batch_norm_helperrj    sa  € ð �S�4¥ a¨¯ª©¬Ñ 5Ô 5Ñ6Ô6Ñ6€NÝÔ3°E´KÑ@Ô@ÐØ#ÐØ!€OØñ .)Ý!Ô7¸¼ÑDÔDÐØ—H’HÐ#4�HÑ5Ô5ˆ	Ý œ>Ø˜>°aÀð
ñ 
ô 
Ñˆ
�Dõ Œ{˜:¨Ñ+Ñ,Ô,ˆà˜$‘, $Ñ&ˆå”M $¨Ñ7Ô7ˆ	Ý”M $¨Ñ7Ô7ˆ	ØÐ#Ø'¨)Ñ3°q¸8±|À|Ñ6SÑSÐØð 5Ø×"Ò"Ð#3Ñ4Ô4Ð4ØÐ"Ø—’‘” ¤¨A¤Ñ.ˆAõ !œ=¨°^ÑDÔDˆLØ'¨1°°A±©;Ñ7ˆLØ&¨Ñ5¸¸X¹ÈÑ8TÑTˆOØð 3Ø×!Ò! /Ñ2Ô2Ð2øàÐ ;Ð#6Ý ØLñô ð ð $—’Ð->ÀT�ÑJÔJˆØ'ÐØ!—n’nÐ+<À4�nÑHÔHˆØ%ˆØˆØ•e”j ¨sÑ!2Ñ3Ô3Ñ4ˆàŒ<Ô Ò%Ð%Ø$ˆIØˆIˆIàŸš¨Ñ-Ô-ˆIØŸš¨Ñ-Ô-ˆIÝ   u§y¢y¡{¤{°Q¡Ñ7Ô7ˆÝ" 6¨5¯9ª9©;¬;¸©?Ñ;Ô;ˆØ˜$‘, &Ñ(ˆàÐØ—’Ñ!Ô!ˆÝ" 6¨5¯9ª9©;¬;¸©?Ñ;Ô;ˆØ˜&‘ˆàÐØ�|Š|‰~Œ~ˆÝ   u§y¢y¡{¤{°Q¡Ñ7Ô7ˆØ˜$‘ˆà„|Ô˜EÒ!Ð!Ø—L’L u¤{�LÑ3Ô3ˆ	Ø—L’L u¤{�LÑ3Ô3ˆ	à�	Š	˜œˆ	Ñ$Ô$ØØØØðð r+   rd  Úsave_invstdc                 óF   — t          | |||||||d¦	  «	        \  }}	}
}}||	|
fS ©NF©rj  ©rÄ   rÒ   r*  rV  rW  rÜ   rX  rq  r·  rd  re  rY   s               r,   Únative_batch_normrp  r  sB   € õ *BØˆv�t˜\¨;¸À(ÈCÐQVñ*ô *Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r+   c           
      ó  — |€!|€t                                | |||||¦  «        S |€t          d¦  «        ‚|€t          d¦  «        ‚|r!t                                | |||||||¦  «        S t                                | ||||||¦  «        S )Nz`running_mean is None, but running_var is provided. They should both be None or both be provided.z`running_var is None, but running_mean is provided. They should both be None or both be provided.)r‡   Ú_native_batch_norm_legitr  Ú$_native_batch_norm_legit_no_training)rÄ   rÒ   r*  rV  rW  rÜ   rX  rq  s           r,   Únative_batch_norm_decompositionrt  Ž  sÏ   € ð Ð Ð 3Ý×,Ò,Ø�6˜4 ¨8°Sñ
ô 
ð 	
ð ÐÝð<ñ
ô 
ð 	
ð ÐÝð<ñ
ô 
ð 	
ð ð 
å×,Ò,Ø�6˜4 ¨{¸HÀhÐPSñ
ô 
ð 	
õ ×8Ò8Ø�6˜4 ¨{¸HÀcñ
ô 
ð 	
r+   c                 ó`  ‡— |                       |¦  «        }||z   dz
  |z  Š‰dk    r]|dk    rWˆfd„t          |¦  «        D ¦   «         }‰‰|z  |z
  z
  ||dz
  <   t          j        j        j                             | ||¦  «        S t          j        j        j                             | ‰|¦  «        S )Nr"   r   c                 ó   •— g | ]}‰‘ŒS r*   r*   )r5   rY   rÔ  s     €r,   r8   z(unsafe_chunk_py_impl.<locals>.<listcomp>¹  s   ø€ Ð9Ð9Ð9 a�zÐ9Ð9Ð9r+   )	r9  rW   rC   rE  r‡   rØ  r“  rÖ  r   )r°  rß  rR   r”  rË  rÔ  s        @r,   Úunsafe_chunk_py_implrw  ³  s´   ø€ à�{Š{˜3ÑÔ€HØ˜VÑ# aÑ'¨FÑ2€Jà�Q‚€˜8 qš=˜=Ø9Ð9Ð9Ð9­5°©=¬=Ð9Ñ9Ô9ˆØ",°
¸VÑ0CÀhÑ0NÑ"Oˆ�F˜Q‘JÑÝŒyŒ~Ô5×=Ò=¸fÀkÐSVÑWÔWÐWÝŒ9Œ>Ô&×-Ò-¨f°jÀ#ÑFÔFÐFr+   c           
      óN   — t           j                             | ||||d||¦  «        S rm  )r‡   rr  r“  )rÄ   rÒ   r*  rV  rW  rX  rq  s          r,   rs  rs  ¿  s7   € õ Ô(×0Ò0ØØØØØØØØñ	ô 	ð 	r+   c                 óF   — t          | |||||||d¦	  «	        \  }}	}
}}||	|
fS rm  rn  ro  s               r,   rr  rr  Õ  sB   € õ *BØˆv�t˜\¨;¸À(ÈCÐQVñ*ô *Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r+   c                 óF   — t          | ||d d |||d¦	  «	        \  }}}}	}	|||fS rm  rn  )
rÄ   rÒ   r*  rÜ   rX  rq  r·  rd  re  rY   s
             r,   Ú!_native_batch_norm_legit_no_statsr{  æ  sA   € õ *BØˆv�t˜T 4¨°8¸SÀ%ñ*ô *Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r+   c                 óŽ   — t          | |||||||d¦	  «	        \  }}	}
}}|€t          d¦  «        ‚|€t          d¦  «        ‚||	|
||fS )NTú#new_running_mean should not be Noneú"new_running_var should not be None)rj  r7  )rÄ   rÒ   r*  rV  rW  rÜ   rX  rq  r·  rd  re  r`  ra  s                r,   Ú#_native_batch_norm_legit_functionalr  õ  sw   € õ" 	!Øˆv�t˜\¨;¸À(ÈCÐQUñ	ô 	ñØØØØØð ÐÝÐBÑCÔCÐCØÐÝÐAÑBÔBÐBØ�9˜iÐ)9¸?ÐJÐJr+   c           	      ó  — t           j                             | ||||d|¦  «        }d}|t           j        j        j        k    r t           j                             | |¦  «        }t          j        |t           j        | j        | j	        ¬¦  «        S )a©  
    Return a reserve tensor for batch norm, used only by cudnn to pass forward state to the
    backward pass. This is needed for `_batch_norm_with_update` and `_batch_norm_no_update`,
    which support a variety of backends including cudnn. We create this tensor here to get
    the correct shape in the traced graph if we detect that will call the cudnn kernel,
    and rely on DCE to avoid materializing this tensor.
    Tr   )rí   Úlayoutr›  )
rC   Ú_CÚ_select_batch_norm_backendÚ_BatchNormBackendÚCudnnÚ(_get_cudnn_batch_norm_reserve_space_sizeÚemptyÚuint8r�  r›  )	rÄ   rÒ   r*  rV  rW  rq  rÜ   ÚbackendÚreserve_sizes	            r,   Ú_get_batch_norm_reserve_tensorr‹  	  sŠ   € õ  Œh×1Ò1Øˆv�t˜\¨;¸¸cñô €Gð €LØ•%”(Ô,Ô2Ò2Ð2Ý”x×HÒHØ�8ñ
ô 
ˆõ Œ;Ø�EœK°´ÀUÄ\ðñ ô ð r+   c                 ót   — t          | ||||d||d¦	  «	        \  }}}	}
}
t          | |||||d¬¦  «        }|||	|fS )NTF©rÜ   ©rj  r‹  ©rÄ   rÒ   r*  rV  rW  rX  rq  r·  rd  re  rY   Úreserves               r,   Ú_batch_norm_with_updater‘  -	  sp   € õ *BØØØØØØØØØñ
*ô 
*Ñ&€FˆI�y ! Qõ -Øˆv�t˜\¨;¸Àdðñ ô €Gð �9˜i¨Ð0Ð0r+   c                 ó¼   — t          | ||||d||d¦	  «	        \  }}}	}
}t          | |||||d¬¦  «        }|
€t          d¦  «        ‚|€t          d¦  «        ‚|||	||
|fS )NTr�  r}  r~  )rj  r‹  r7  )rÄ   rÒ   r*  rV  rW  rX  rq  r·  rd  re  Únew_rmÚnew_rvr�  s                r,   Ú"_batch_norm_with_update_functionalr•  H	  sš   € õ  	!Øˆv�t˜\¨;¸¸hÈÈTñ	ô 	ñØØØØØõ -Øˆv�t˜\¨;¸Àdðñ ô €Gð €~ÝÐBÑCÔCÐCØ€~ÝÐAÑBÔBÐBØ�I˜y¨'°6¸6ÐBÐBr+   c                 ót   — t          | ||||d||d¦	  «	        \  }}}	}
}
t          | |||||d¬¦  «        }|||	|fS )NFr�  rŽ  r�  s               r,   Ú_batch_norm_no_updater—  e	  sp   € õ *BØØØØØØØØØñ
*ô 
*Ñ&€FˆI�y ! Qõ -Øˆv�t˜\¨;¸Àeðñ ô €Gð �9˜i¨Ð0Ð0r+   c                 ó²  — |�t          d|› �¦  «        ‚t          j        | t          j        j        ¬¦  «        \  }}|                      |¦  «        }t          j        |¦  «        |k                          t          j        ¬¦  «        }t          j	        d|| j
        ¬¦  «        |z  }|                     |¦  «        |z  |z  }|                     |¦  «        |fS )Nz=generator must be None for _fused_dropout decomposition, got r…  rì   rj   rÀ  )r7  rH   rI   rˆ  r‰  r=   rC   r  rˆ  Úscalar_tensorr›  )	rÄ   r]  Ú	generatorr>   rA   rb  r¨  rq   r�  s	            r,   Ú_fused_dropout_decompositionr›  €	  sß   € ð ÐÝØWÈIÐWÐWñ
ô 
ð 	
õ ',Ô&>Ø¥5Ô#HÔ#Pð'ñ 'ô 'Ñ#Ð�|ð —’Ð*Ñ+Ô+€IÝŒO˜IÑ&Ô&¨Ò*×.Ò.µU´[Ð.ÑAÔA€DÝÔ Ð+<ÀUÄ\ÐRÑRÔRÐUVÑV€EØ
�'Š'Ð#Ñ
$Ô
$ yÑ
0°5Ñ
8€CØ�FŠF�<Ñ Ô  $Ð'Ð'r+   )rí   r�  r›  Ú
pin_memoryÚnon_blockingrd  r›  rœ  r�  rd  c                ó„  — |r"|t           j        k    rt          d|› �¦  «        ‚|rt          d¦  «        ‚t          | t           j        t
          t          t          t          f¦  «        s$t          dt          | ¦  «        j
        › �¦  «        ‚|€4|€2|€0t          | t           j        ¦  «        r|                      ¦   «         S | S d}t          | t           j        ¦  «        r| }nt          j        | ¦  «        }|�Š||j        k    r|�\d}	|j	        dk    rd}	n(|j        t           j        k    rddlm}
  |
|¦  «        sd}	|	r"t           j                             ||¦  «        }d}t           j                             |||¦  «        }|�$|s"t           j                             ||¦  «        }d}|�t          j        ||¬	¦  «        S |S )
Nz*layout must be None or torch.strided, got z:pin_memory=True is not supported in _to_copy decompositionz x must be Tensor or scalar, got Frâ  Tr   )Údevice_supports_fp64rc  )rC   Ústridedr7  r4   r   r–  r  r¡  Úcomplexrç  r$   rž  r™  r›  rí   r  Útorch._inductor.utilsrŸ  Ú_primsÚconvert_element_typeÚ
device_put)r6   rí   r�  r›  rœ  r�  rd  Údtype_convertedÚx_tensorÚconvert_before_transferrŸ  s              r,   Ú_to_copyr©  ‘	  sí  € ð ð T�&�EœMÒ)Ð)ÝÐRÈ&ÐRÐRÑSÔSÐSØð 
ÝØHñ
ô 
ð 	
õ �a�%œ,­­UµD½'ÐBÑCÔCð TÝÐRÅÀQÁÄÔ@PÐRÐRÑSÔSÐSØ€~˜%˜-¨MÐ,AÝ�a�œÑ&Ô&ð 	Ø—7’7‘9”9ÐàˆHØ€Oå�!•U”\Ñ"Ô"ð *ØˆˆåÔ& qÑ)Ô)ˆàÐ˜f¨¬Ò7Ð7ð ÐØ&+Ð#ØŒ{˜eÒ#Ð#ð +/Ð'Ð'Ø”¥5¤=Ò0Ð0ð
 GÐFÐFÐFÐFÐFà+Ð+¨FÑ3Ô3ð 3Ø.2Ð+à&ð 'Ý œ<×<Ò<¸XÀuÑMÔM�Ø"&�Ý”<×*Ò*¨8°V¸\ÑJÔJˆàÐ ÐÝ”<×4Ò4°X¸uÑEÔEˆØˆàÐ ÝŒ{˜8°=ÐAÑAÔAÐAØ€Or+   c                 ó6   — t                                | ¦  «        S r;   )r‡   Úalias)r6   s    r,   Únop_decompositionr¬  Ú	  s   € õ �:Š:�a‰=Œ=Ðr+   Úout3Úexponential_average_factorÚepsilonc           
      ó0  — t                                | |||||||¦  «        \  }}	}
|r%||	|
|                      dt          j        ¬¦  «        fS ||                     d¦  «        |                     d¦  «        |                      dt          j        ¬¦  «        fS )Nr\  rì   )r‡   rp  rx  rC   rˆ  )rÄ   rÒ   r*  rV  rW  rÜ   r®  r¯  rW  rX  rú  s              r,   Úcudnn_batch_normr±  â	  s§   € õ ×$Ò$ØØØØØØØ"Øñ	ô 	�G€A€qˆ!ð ð CØ�1�a˜Ÿš¨µU´[˜ÑAÔAÐBÐBà	Ø×Ò˜ÑÔØ×Ò˜ÑÔØ�Š˜¥E¤KˆÑ0Ô0ð	ð r+   c                 óž   — t          |¦  «        D ]<\  }}|dk    r1|| j        k     r| j        |         |k    s|                      |¦  «        } Œ=| S r_   )rQ  rˆ  r"  rX   )r6   Úbroadcast_maskr6  r¨  s       r,   Ú_broadcast_batch_norm_backwardr´  
  sW   € Ý Ñ/Ô/ð "ð "‰
ˆˆdØ�1Š9ˆ9˜d Q¤Všm˜m°´¸´ÀÒ0EÐ0EØ—’˜DÑ!Ô!ˆAøØ€Hr+   r�  c                 ó2   — t          | |||||||||	¦
  «
        S r;   )Únative_batch_norm_backward)r(  rÄ   rÒ   rV  rW  rd  rk  rw  rq  r  r�  s              r,   Úbatch_norm_backwardr·  
  s4   € õ &ØØØØØØØØØØñô ð r+   c
                 ó‚  ‡&— |j         }
|�|j         }n|
}t          j        |j         ¦  «        Š&ˆ&fd„| ||||||fD ¦   «         \  }}}}}}}|j        }|                     ¦   «         }|dk     rt          d|› �¦  «        ‚d}t          t          |¦  «        ¦  «        ||         z  }|}|}|r|�|€t          d¦  «        ‚n,|�|€t          d¦  «        ‚|}t          j	        ||z   ¦  «        }dg|z  }||         ||<   g }t          |¦  «        D ]}||k    r|                     |¦  «         Œt          ||¦  «        }d|z  }t          j        ||¦  «        }t          j        |||z
  z  |¦  «        }t          ||z  |¦  «        }t          t          j        ||z  ||z  ¦  «        |¦  «        } |€t          ||¦  «        dz  }!nt          ||z  |¦  «        }!|r||z
  | z  }"||"z
  |z
  |!z  }#n||!z  }#|	d         r||z  }$nd }$|	d         r|}%nd }%|#                     |
¦  «        t!          |$|¦  «        t!          |%|¦  «        fS )Nc              3   óJ   •K  — | ]}|�|                      ‰¦  «        n|V — Œd S r;   r&  r-  s     €r,   rØ  z-native_batch_norm_backward.<locals>.<genexpr>B
  sM   øè è € ð 	ð 	àð $% =ˆ�ŠÐÑÔÐ°að	ð 	ð 	ð 	ð 	ð 	r+   r#   z*rank of the input must be at least 2, got r"   z1mean and invstd must not be None in training modezDrunning_mean_cast and running_var_cast must not be None in eval moderj   )rí   rH   r/  r"  rR   r7  r4  r€  rC   rD  rW   r®  r´  rú   rß   r=   r'  )'r(  rÄ   rÒ   rV  rW  rd  rk  rw  rq  r  r´  Úweight_dtyper2  r3  r4  Úrunning_mean_castÚrunning_var_castÚsave_mean_castÚsave_invstd_castr0  Ú
input_rankr6  Únum_featuresrù   ri  r³  Úreduction_axesr¨  r  Úgrad_output_sumÚdot_pÚ	grad_meanÚ
proj_scaleÚ
grad_scaleÚprojr[   r¥  Ú	grad_biasr>   s'                                         @r,   r¶  r¶  '
  s  ø€ ð ”+€KØÐØ”|ˆˆà"ˆÝÔ3°E´KÑ@Ô@Ðð	ð 	ð 	ð 	ð ØØØØØØð
ð	ñ 	ô 	ñØØØØØØØð ”+€KØ—’‘”€JØ�A‚~€~ÝÐVÈ*ÐVÐVÑWÔWÐWà€DÝ�˜[Ñ)Ô)Ñ*Ô*¨[¸Ô->Ñ>€LØ€DØ€FØð 
5Øˆ<˜6˜>Ý Ð!TÑUÔUÐUð *ð Ð$Ð(8Ð(@Ý ØVñô ð ð !ˆÝ”Ð-°Ñ3Ñ4Ô4ˆà!"  jÑ 0€NØ& tÔ,€N�4Ñà "€NÝ�:ÑÔð %ð %ˆØ�Š9ˆ9Ø×!Ò! !Ñ$Ô$Ð$øå)¨$°Ñ?Ô?€DØ�Ñ€DÝ”i ¨~Ñ>Ô>€OÝŒI�m z°DÑ'8Ñ9¸>ÑJÔJ€Eå.¨ÀÑ/EÀ~ÑVÔV€IÝ/ÝŒ	�%˜$‘, ¨¡Ñ0Ô0Øñô €Jð
 ÐÝ3°F¸NÑKÔKÈcÑQˆ
ˆ
å3Ø�[Ñ  .ñ
ô 
ˆ
ð ð 0Ø˜TÑ! ZÑ/ˆØ$ tÑ+¨yÑ8¸JÑFˆ
ˆ
à" ZÑ/ˆ
à�1„~ð Ø˜f‘nˆˆàˆà�1„~ð Ø#ˆ	ˆ	àˆ	ð 	�Š�kÑ"Ô"Ý�K Ñ.Ô.Ý�I˜|Ñ,Ô,ðð r+   c
                óÔ   — t          | |||||||||	¦
  «
        }|
||f}t          |¦  «        D ]:\  }}|�3t          ||         |j        ¦  «         t	          |||         d¬¦  «         Œ;|S r  )r¶  rQ  r   r"  r   )r(  rÄ   rÒ   rV  rW  rd  rk  rw  rq  r  r{  r|  r"  r#  r[   r¨  rM   s                    r,   Únative_batch_norm_backward_outrÊ  •
  s—   € õ" (ØØØØØØØØØØñô €Fð ˜˜dÐ#€JÝ˜&Ñ!Ô!ð Qð Q‰ˆˆ1Øˆ=Ý˜j¨œm¨Q¬WÑ5Ô5Ð5Ý Q°
¸1´È4ÐPÑPÔPÐPøàÐr+   Úsave_varc                 óL   — t                                || |||||d|g d¢¦
  «
        S ©NT)TTT©r‡   r¶  )rÄ   ro   rÒ   rV  rW  rd  rË  r¯  s           r,   Úmiopen_batch_norm_backwardrÏ  »
  s@   € õ ×*Ò*ØØØØØØØØØØÐÐñô ð r+   ÚreserveSpacec	                 óL   — t                                || |||||d|g d¢¦
  «
        S rÍ  rÎ  )	rÄ   ro   rÒ   rV  rW  rd  rË  r¯  rÐ  s	            r,   Úcudnn_batch_norm_backwardrÒ  Õ
  s@   € õ ×*Ò*ØØØØØØØØØØÐÐñô ð r+   c                 ó^  ‡‡‡‡‡— | j         Š| j        Št          ‰¦  «        Št          j        ‰dv ˆfd„¦  «         | j        dd …         D ]}t          j        |dk    ˆfd„¦  «         Œ‰d         |d         z  dk    rš‰d         |d         z  dk    r…t          d„ t          ‰dd …         |¦  «        D ¦   «         ¦  «        }t          d„ t          ‰dd …         ||¦  «        D ¦   «         ¦  «        }t          j        j         	                    | ||¦  «        S d	„ Šd
„ Šˆˆˆfd„} |‰d         |d         ¦  «        \  }}}}	 |‰d         |d         ¦  «        \  }
}}}| dt          |d¦  «        |
f         }|	s|st          j        |d¬¦  «        S d„ } |||||	d¬¦  «        \  }} |||||d¬¦  «        \  }}d }t          t          |j        d         ¦  «        t          |j        d         ¦  «        ¦  «        D ]'\  }}|€|d|d d …|f         }Œ||d|d d …|f         z   }Œ(|||z  z  S )Nré  c                  ó   •— d‰ › �S )Nz9adaptive_avg_pool2d(): Expected 3D or 4D tensor, but got r*   r¶  s   €r,   r…   z%adaptive_avg_pool2d.<locals>.<lambda>ú
  s   ø€ ÐRÈDÐRÐR€ r+   re  r   c                  ó*   •— dt          ‰ ¦  «        › d�S )Nzjadaptive_avg_pool2d(): Expected input to have non-zero size for non-batch dimensions, but input has shape r*  rï  rñ  s   €r,   r…   z%adaptive_avg_pool2d.<locals>.<lambda>ÿ
  s&   ø€ ð IÝ9>¸u¹¼ðIð Ið I€ r+   rV   c              3   ó&   K  — | ]\  }}||z  V — Œd S r;   r*   )r5   r¨  r1  s      r,   rØ  z&adaptive_avg_pool2d.<locals>.<genexpr>  s*   è è € ÐGÐG¡$ ! Q�q˜A‘vÐGÐGÐGÐGÐGÐGr+   c              3   ó4   K  — | ]\  }}}||d z
  |z  z
  V — ŒdS ©r"   Nr*   )r5   r¨  r1  rÏ  s       r,   rØ  z&adaptive_avg_pool2d.<locals>.<genexpr>  sE   è è € ð 
ð 
Ù '  1 aˆA��Q‘˜!‘‰Oð
ð 
ð 
ð 
ð 
ð 
r+   c                 ó6   — t          j        | |z  |d¬¦  «        S )NÚtrunc©Úrounding_mode©rC   Údiv©rW  rX  rú  s      r,   Ústart_indexz(adaptive_avg_pool2d.<locals>.start_index  s   € ÝŒy˜˜Q™ °Ð9Ñ9Ô9Ð9r+   c                 óH   — t          j        | dz   |z  |z   dz
  |d¬¦  «        S )Nr"   rÚ  rÛ  rÝ  rß  s      r,   Ú	end_indexz&adaptive_avg_pool2d.<locals>.end_index  s*   € ÝŒy˜!˜a™% 1™ q™¨1Ñ,¨a¸wÐGÑGÔGÐGr+   c                 óÞ  •— t          j        |‰t           j        ¬¦  «        } ‰||| ¦  «        }| |z  dz   }| |z  }|dk    p||z  dk     }|r|dz  }n|dk    r|dz  }t          j        |‰t           j        ¬¦  «        }|                     d¦  «        |z   }|rLt          j        | dz
  |j        |j        ¬¦  «        }	t          j        ||	¦  «        } ‰||| ¦  «        }
|
|z
  }n|}||||fS )Nrœ  r"   r   rV   rÀ  )rC   rŸ  rÁ  rX   r™  rí   r›  Úminimum)Úin_sizeÚout_sizeÚorangeÚi0Ú	maxlengthÚin_size_modÚadaptiveÚ	range_maxr§  ÚmaxvalÚi1Úlengthr›  râ  rà  s               €€€r,   Úcompute_idxz(adaptive_avg_pool2d.<locals>.compute_idx  s1  ø€ Ý”˜h¨v½U¼[ÐIÑIÔIˆØˆ[˜ ¨7Ñ3Ô3ˆð ˜xÑ'¨!Ñ+ˆ	Ø Ñ(ˆà# qÒ(ÐG¨H°{Ñ,BÀaÒ,GÐHˆØð 	Ø˜‰NˆIˆIØ˜AÒÐØ˜‰NˆIå”L °6ÅÄÐMÑMÔMˆ	Ø�lŠl˜2ÑÔ Ñ*ˆØð 	õ Ô(Ø˜!‘ 3¤9°S´Zðñ ô ˆFõ ”-  VÑ,Ô,ˆCð �˜6 8¨WÑ5Ô5ˆBØ˜"‘WˆFˆFàˆFØ�F˜I xÐ/Ð/r+   .rO  )r¢   rV   rƒ   c                 ó  — t          |t          ¦  «        r| |fS |dk    rt          d|› �¦  «        ‚||                     d¦  «        k    }|dk    rt	          |d¦  «        }t          j        | |d¦  «        } t	          || ¦  «        }| |fS )Nr   z)dim should be negative when masking, got rV   re  rO  r—   )r4   r   r7  rX   rZ   rC   Úmasked_fill)Úvalsrï  rì  rë  rR   r¨  s         r,   Ú
maybe_maskz'adaptive_avg_pool2d.<locals>.maybe_mask9  s    € Ý�f�gÑ&Ô&ð 	 Ø˜�<Ðð �aŠxˆxÝ$Ð%VÐQTÐ%VÐ%VÑWÔWÐWà × 0Ò 0°Ñ 4Ô 4Ò4ˆDØ�bŠyˆyÝ(¨¨qÑ1Ô1�ÝÔ$ T¨4°Ñ5Ô5ˆDå& v°¨tÑ4Ô4ˆFØ˜�<Ðr+   )rë  rR   r¢   )r›  r"  r�  rC   r†   rð  r  ÚnnrY  Ú
avg_pool2drZ   rù   r
   rW   )rÄ   r   rì  r�  Úkernelrð  ÚidxhÚlength_hÚrange_max_hÚ
adaptive_hÚidxwÚlength_wÚrange_max_wÚ
adaptive_wró  rô  Úretr¨  Újr›  râ  rˆ  r"  rà  s                      @@@@@r,   Úadaptive_avg_pool2dr  ð
  s  øøøøø€ ð
 Œ\€FØŒK€EÝˆu‰:Œ:€DÝ	„LØ�ˆØRÐRÐRÐRñô ð ð Œ[˜˜˜Ôð 
ð 
ˆÝŒØ�ŠFðIð Ið Ið Iñ	
ô 	
ð 	
ð 	
ð ˆR„y�;˜r”?Ñ" aÒ'Ð'¨E°"¬I¸ÀB¼Ñ,GÈ1Ò,LÐ,LÝÐGÐG­#¨e°B°C°C¬j¸+Ñ*FÔ*FÐGÑGÔGÑGÔGˆÝð 
ð 
Ý+.¨u°R°S°S¬z¸;ÈÑ+OÔ+Oð
ñ 
ô 
ñ 
ô 
ˆõ ŒxÔ"×-Ò-¨e°V¸VÑDÔDÐDð:ð :ð :ðHð Hð Hð0ð 0ð 0ð 0ð 0ð 0ð 0ð@ /:¨k¸%À¼)À[ÐQSÄ_Ñ.UÔ.UÑ+€Dˆ(�K Ø.9¨k¸%À¼)À[ÐQSÄ_Ñ.UÔ.UÑ+€Dˆ(�K à�Õ'¨¨aÑ0Ô0°$Ð6Ô7€Dàð .˜jð .ÝŒz˜$ HÐ-Ñ-Ô-Ð-ð ð  ð  ð   �ZØˆh˜¨j¸bðñ ô �N€Dˆ(ð  �ZØˆh˜¨j¸bðñ ô �N€Dˆ(ð
 €CÝ�˜dœj¨œnÑ-Ô-­u°T´ZÀ´^Ñ/DÔ/DÑEÔEð +ð +‰ˆˆ1Øˆ;Ø�s˜A˜q˜q˜q !�|Ô$ˆCˆCà˜˜S ! Q Q Q¨˜\Ô*Ñ*ˆCˆCØ�(˜XÑ%Ñ&Ð&r+   Ú	ceil_modeÚn_dimc           	      ó`  ‡ ‡‡‡$‡%‡&‡'‡(‡)— ddt           t                   t          z  dt           t                   d z  dt           t                   fˆfd„} ||¦  «        Š& ||‰&¬¦  «        Š) ||¦  «        Š( ||¦  «        Š$t          j        ‰ j        ‰dz   ‰dz   fv ˆˆ fd„¦  «         ‰ j        ‰dz   k    }|s‰                      d	¦  «        Š t          ‰ j        ‰ d …         ¦  «        Š%‰ j        }	ˆˆ$ˆ%ˆ&ˆ(ˆ)fd
„t          ‰¦  «        D ¦   «         }
‰ j	        }d}|t          j
        u rd}n¸|j        rt          d¦  «        }n¡t          j        |¦  «        }|j        dk     r ‰                      t          j        ¦  «        Š n*|j        dk     r‰                      t          j        ¦  «        Š |j        dk     rt          |j        dz
  ¦  «        nt          |j        ¦  «        }d}g }t'          t          ‰¦  «        ¦  «        D ]{}‰(|         }|
|         dz
  ‰)|         z  ‰&|         dz
  ‰$|         z  z   dz   }t)          d	|‰%|         d‰(|         z  z   z
  ¦  «        ‰(|         z   }|                     ||g¦  «         Œ|t-          j        ‰ ||¬¦  «        }g }t          ‰¦  «        D ]Ù}t          j        |
|         |	t          j        ¬¦  «                             d¦  «        ‰)|         z  t          j        ‰&|         |	t          j        ¬¦  «                             d	¦  «        ‰$|         z  z   }dgd‰z  z  }|
|         |d|z  <   ‰&|         |d|z  dz   <   |                     |                     |¦  «        ¦  «         ŒÚ|t6          g|¢R          }dŠ't          t          ‰'¦  «        ¦  «        }|ˆ'fd„t          ‰¦  «        D ¦   «         z  }|ˆ'fd„t          ‰¦  «        D ¦   «         z  }|                     |¦  «        }t          |j        d ‰'‰z   …         ¦  «        } |j        g |¢d‘R Ž }|                     d¬¦  «        \  }}g }|}t          ‰¦  «        D ]B}d}t          |dz   ‰¦  «        D ]} |‰&|          z  }Œ|                     ||z  ¦  «         ||z  }ŒCg }!t          ‰¦  «        D ]Œ}dg‰'‰z   z  }|
|         |‰'|z   <   t          j        |
|         |	t          j        ¬¦  «                             |¦  «        }"|!                     |"‰)|         z  ||         ‰$|         z  z   ‰(|         z
  ¦  «         Œ�|!d	         }#t          d‰¦  «        D ]}|#‰%|         z  |!|         z   }#Œ|r|                     |¦  «        }|s*|                     d	¦  «        }|#                     d	¦  «        }#||#fS )Nr’  r“  rS   c                 óÎ   •— t          | t          t          f¦  «        s| g‰z  S | st          j        |d ud„ ¦  «         |S t          | ¦  «        dk    r| ‰z  nt          | ¦  «        S )Nc                  ó   — dS )Nzdefault must be providedr*   r*   r+   r,   r…   z<_max_pool_nd_with_indices.<locals>._expand.<locals>.<lambda>g  s   € Ð6P€ r+   r"   )r4   r€  rð  rC   r†   r�  )r’  r“  r  s     €r,   Ú_expandz*_max_pool_nd_with_indices.<locals>._expandc  so   ø€ Ý˜#¥¥e˜}Ñ-Ô-ð 	!Ø�5˜5‘=Ð Øð 	ÝŒL˜¨Ð,Ð.PÐ.PÑQÔQÐQØˆNÝ! #™hœh¨!šm˜mˆs�U‰{ˆ{µ°c±´Ð:r+   )r“  r"   r#   c                  ó2   •— d‰ dz   › d‰ dz   › d‰j         › d�S )Nz	Expected r"   úD or r#   zD input, got rF  r¶  )r  r~   s   €€r,   r…   z+_max_pool_nd_with_indices.<locals>.<lambda>r  s-   ø€ ÐP˜E A™IÐPÐP¨E°A©IÐPÐPÀDÄIÐPÐPÐP€ r+   r   c           
      ó”   •— g | ]D}t           j                             ‰|         ‰|         ‰|         ‰|         ‰|         ‰¦  «        ‘ŒES r*   )rC   Ú_meta_registrationsÚpooling_output_shape)r5   rì  r  Údirs  ÚksÚparø  s     €€€€€€r,   r8   z-_max_pool_nd_with_indices.<locals>.<listcomp>|  s_   ø€ ð ð ð ð õ 	Ô!×6Ò6Ø˜ŒN˜B˜qœE 2 a¤5¨"¨Q¬%°°A´¸	ñ	
ô 	
ðð ð r+   Fr—   r
  é    é@   Tr„   rœ  c                 ó    •— g | ]
}‰d |z  z   ‘ŒS r0  r*   ©r5   rì  Ún_batchs     €r,   r8   z-_max_pool_nd_with_indices.<locals>.<listcomp>µ  s!   ø€ Ð3Ð3Ð3 ˆW�q˜1‘u‰_Ð3Ð3Ð3r+   c                 ó&   •— g | ]}‰d |z  z   dz   ‘ŒS ©r#   r"   r*   r  s     €r,   r8   z-_max_pool_nd_with_indices.<locals>.<listcomp>¶  s&   ø€ Ð7Ð7Ð7 QˆW�q˜1‘u‰_˜qÑ Ð7Ð7Ð7r+   rV   rƒ   r;   )r€  r–  rC   r†   rˆ  rX   r"  r›  rW   rí   r¡  r~  r  ÚiinfoÚbitsr=   rG  rÁ  rŽ   rh  r‘   ÚextendrÆ   rõ  rŸ  r®  r1  ÚEllipsisr  r  )*r~   rÌ  r�  rÎ  rÍ  r  r  r  Ú
is_batchedr›  Úoutput_sizesrí   ÚpromotedÚ
fill_valueÚinfoÚpad_argsrì  rº   Úneededr»   r6   Úidx_tensorsr§  r"  ÚwindowsÚpermÚ	out_shapeÚvaluesÚlocal_argmaxÚ
kernel_posÚ	remainingÚdivisorÚddÚorig_coordsÚout_posÚflat_indicesr  rs  r  r  r  rø  s*   `    ``                             @@@@@@r,   Ú_max_pool_nd_with_indicesr0  Z  sY  øøøøøøøøø€ ð;ð ;•T�#”Y¥‘_ð ;­tµC¬y¸4Ñ/?ð ;Í4ÕPSÌ9ð ;ð ;ð ;ð ;ð ;ð ;ð 
ˆ�Ñ	Ô	€BØ	ˆ� Ð	$Ñ	$Ô	$€BØ	ˆ�Ñ	Ô	€BØ	ˆ�Ñ	Ô	€Bå	„LØŒ	�e˜a‘i ¨¡Ð+Ð+ØPÐPÐPÐPÐPñô ð ð
 ”˜e a™iÒ'€JØð !Ø�~Š~˜aÑ Ô ˆå�t”z 5 & ' 'Ô*Ñ+Ô+€KØŒ[€Fðð ð ð ð ð ð ð ð õ �u‘”ð	ñ ô €Lð ŒJ€EØ€HØ•”
ÐÐØˆ
ˆ
Ø	Ô	 ð 	Ý˜6‘]”]ˆ
ˆ
åŒ{˜5Ñ!Ô!ˆØŒ9�rŠ>ˆ>Ø—7’7�5œ;Ñ'Ô'ˆDˆDØŒY˜Š^ˆ^Ø—7’7�5œ;Ñ'Ô'ˆDØ,0¬I¸ªN¨N•U˜4œ8 a™<Ñ(Ô(Ð(ÅÀdÄhÁÄˆ
Øˆð €HÝ•e˜E‘l”lÑ#Ô#ð 'ð 'ˆØ�!ŒuˆØ˜q”/ AÑ%¨¨A¬Ñ.°"°Q´%¸!±)¸rÀ!¼uÑ1DÑDÀqÑHˆÝ�A�v ¨Q¤°!°b¸´e±)Ñ!;Ñ<Ñ=Ô=ÀÀ1ÄÑEˆØ�Š˜˜u˜Ñ&Ô&Ð&Ð&Ý	Œˆd�H JÐ/Ñ/Ô/€Að
 €KÝ�5‰\Œ\ð 	/ð 	/ˆåŒL˜ aœ°½u¼{ÐKÑKÔK×UÒUÐVWÑXÔXØ�ŒeñåŒl˜2˜aœ5¨µu´{ÐCÑCÔC×MÒMÈaÑPÔPÐSUÐVWÔSXÑXñYð 	ð
 ��q˜5‘yÑ!ˆØ# A”ˆˆa�!‰e‰Ø˜aœ5ˆˆa�!‰e�a‰iÑØ×Ò˜3Ÿ;š; uÑ-Ô-Ñ.Ô.Ð.Ð.ð •Ð(˜KÐ(Ð(Ô)€Gð €GÝ•�g‘”ÑÔ€DØÐ3Ð3Ð3Ð3¥e¨E¡l¤lÐ3Ñ3Ô3Ñ3€DØÐ7Ð7Ð7Ð7­%°©,¬,Ð7Ñ7Ô7Ñ7€DØ�oŠo˜dÑ#Ô#€Gõ �W”]Ð#4 W¨u¡_Ð#4Ô5Ñ6Ô6€IØˆgŒoÐ-˜yÐ-¨"Ð-Ð-Ð-€GØ"Ÿ;š;¨2˜;Ñ.Ô.Ñ€FˆLð €JØ€IÝ�5‰\Œ\ð (ð (ˆØˆÝ˜˜A™˜uÑ%Ô%ð 	ð 	ˆBØ�r˜"”vÑˆGˆGØ×Ò˜) wÑ.Ñ/Ô/Ð/Ø Ñ'ˆ	ˆ	ð €KÝ�5‰\Œ\ð Lð LˆØ��w ‘Ñ'ˆØ)¨!œ_ˆˆg˜‰kÑÝ”,Ø˜ŒO Fµ%´+ð
ñ 
ô 
ç
Š'�%‰.Œ.ð 	ð 	×Ò˜7 R¨¤U™?¨Z¸¬]¸RÀ¼UÑ-BÑBÀRÈÄUÑJÑKÔKÐKÐKà˜q”>€LÝ�1�e‰_Œ_ð Fð FˆØ# k°!¤nÑ4°{À1´~ÑEˆˆàð "Ø—’˜5Ñ!Ô!ˆàð /Ø—’ Ñ"Ô"ˆØ#×+Ò+¨AÑ.Ô.ˆà�<ÐÐr+   c           	      ó.   — t          | |||||d¬¦  «        S )Nr#   ©r  ©r0  ©r~   rÌ  r�  rÎ  rÍ  r  s         r,   Úmax_pool2d_with_indicesr5  à  ó*   € õ %Øˆk˜6 7¨H°iÀqðñ ô ð r+   c           	      ó.   — t          | |||||d¬¦  «        S )NrŒ   r2  r3  r4  s         r,   Úmax_pool3d_with_indicesr8  ï  r6  r+   c                 ó<  ‡ ‡
‡— ‰ j         Št          j        ‰dv ˆfd„¦  «         t          d‰¦  «        D ]2Š
t          j        ‰                      ‰
¦  «        dk    ˆ
ˆ fd„¦  «         Œ3‰ j        d         }‰ j        d         }|\  }}|dk    s|dk    rWt          ‰ j        d d…         ¦  «        ||gz   }‰                      |¦  «        ‰                      |t          j        ¬¦  «        fS |dk    rp|dk    rjt          j	        ‰ d	d
¬¦  «        }t          j
        ‰                      d¦  «        d¬¦  «                             d¦  «                             d¦  «        }||fS ||z  dk    r.||z  dk    r%||z  ||z  g}	t                               ‰ |	¦  «        S t          S )Nré  c                  ó   •— d‰ › d�S )Nz9adaptive_max_pool2d(): Expected 3D or 4D tensor, but got rF  r*   r¶  s   €r,   r…   z%adaptive_max_pool2d.<locals>.<lambda>  ó   ø€ ÐSÈDÐSÐSÐS€ r+   r"   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 ú with dimension ú being emptyrñ  ©r¨  rÄ   s   €€r,   r…   z%adaptive_max_pool2d.<locals>.<lambda>  ó4   ø€ ðTØ',¤{ðTð TØDEðTð Tð Tð r+   re  rV   rì   )re  rV   Tr  rƒ   )rˆ  rC   r†   rW   r9  r"  r€  Ú	new_emptyrÁ  r‘  ÚargmaxrI  rX   r‡   r5  ÚNotImplemented)rÄ   r   Úh_inÚw_inÚh_outÚw_outÚoutput_shaper'  r¦  rÌ  r¨  rˆ  s   `         @@r,   Úadaptive_max_pool2drI  þ  sÔ  øøø€ ð Œ:€DÝ	„LØ�ˆØSÐSÐSÐSñô ð õ �1�d‰^Œ^ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
ð Œ;�rŒ?€DØŒ;�rŒ?€DØ�L€Eˆ5ð �‚z€z�U˜a’Z�ZÝ˜EœK¨¨¨Ô,Ñ-Ô-°¸°Ñ>ˆà�OŠO˜LÑ)Ô)Ø�OŠO˜Lµ´ˆOÑ<Ô<ð
ð 	
ð �‚z€z�e˜q’j�jÝ”˜E x¸Ð>Ñ>Ô>ˆÝ”,˜uŸ}š}¨RÑ0Ô0°bÐ9Ñ9Ô9×CÒCÀBÑGÔG×QÒQÐRTÑUÔUˆØ�wˆÐð ˆe�|�qÒÐ˜T E™\¨QÒ.Ð.Ø˜u‘} d¨e¡mÐ4ˆÝ×+Ò+¨E°;Ñ?Ô?Ð?õ Ðr+   c                 ó²  ‡ ‡‡— ‰ j         Št          j        ‰dv ˆfd„¦  «         t          d‰¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆˆ fd„¦  «         Œ3‰ j        d         }‰ j        d         }‰ j        d         }|\  }}}|dk    s|dk    s|dk    rXt          ‰ j        d d…         ¦  «        |||gz   }‰                      |¦  «        ‰                      |t          j        ¬	¦  «        fS |dk    r‰|dk    rƒ|dk    r}t          j	        ‰ d
d¬¦  «        }	t          j
        ‰                      d¦  «        d¬¦  «                             d¦  «                             d¦  «                             d¦  «        }
|	|
fS ||z  dk    r;||z  dk    r2||z  dk    r)||z  ||z  ||z  g}t                               ‰ |¦  «        S t          S )N©rO  r  c                  ó   •— d‰ › d�S )Nz9adaptive_max_pool3d(): Expected 4D or 5D tensor, but got rF  r*   r¶  s   €r,   r…   z%adaptive_max_pool3d.<locals>.<lambda>8  r;  r+   r"   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>  rñ  r?  s   €€r,   r…   z%adaptive_max_pool3d.<locals>.<lambda>=  r@  r+   r¢   re  rV   rì   )r¢   re  rV   Tr  rƒ   )rˆ  rC   r†   rW   r9  r"  r€  rA  rÁ  r‘  rB  rI  rX   r‡   r8  rC  )rÄ   r   Úd_inrD  rE  Úd_outrF  rG  rH  r'  r¦  rÌ  r¨  rˆ  s   `           @@r,   Úadaptive_max_pool3drP  /  s  øøø€ ð Œ:€DÝ	„LØ�ˆØSÐSÐSÐSñô ð õ �1�d‰^Œ^ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
ð Œ;�rŒ?€DØŒ;�rŒ?€DØŒ;�rŒ?€DØ%Ñ€Eˆ5�%ð �‚z€z�U˜a’Z�Z 5¨A¢: :Ý˜EœK¨¨¨Ô,Ñ-Ô-°¸¸uÐ0EÑEˆà�OŠO˜LÑ)Ô)Ø�OŠO˜Lµ´ˆOÑ<Ô<ð
ð 	
ð �‚z€z�e˜q’j�j U¨a¢Z ZÝ”˜E |¸TÐBÑBÔBˆåŒL˜Ÿš rÑ*Ô*°Ð3Ñ3Ô3ßŠY�r‰]Œ]ßŠY�r‰]Œ]ßŠY�r‰]Œ]ð	 	ð �wˆÐð ˆe�|�qÒÐ˜T E™\¨QÒ.Ð.°4¸%±<À1Ò3DÐ3DØ˜u‘} d¨e¡m°T¸U±]ÐCˆÝ×+Ò+¨E°;Ñ?Ô?Ð?õ Ðr+   c                 ó–  ‡— t          j        d‰› d�¦  «         t          |¦  «        D ]$\  }}t          j        |dk    ||fˆfd„	¦  «         Œ%t          | j        d ‰ …         ¦  «        t          |¦  «        z   }t          d„ |D ¦   «         ¦  «        r|                      |¦  «        S t          t          j        | j        d ‰ …         ¦  «        }t          t          j        |¦  «        }dg| j        z  }	| j        d ‰ …         |	d ‰ …<   |t                               || j        ¬¦  «                             |	¦  «        |z  z                        d¦  «        }
|                      |¦  «        }t                               |                     d¦  «        |
g|                      d¦  «        d	¬
¦  «                             |j        ¦  «        S )NÚmax_unpoolingÚd_forward_outr   c                 ó   •— d‰› d| › d|› �S )NrR  zSd(): output_size must contain non-negative spatial dimensions, but got output_size[z]=r*   )r¨  r9  rR   s     €r,   r…   z_max_unpoolnd.<locals>.<lambda>t  s:   ø€ ðG ð Gð GØ;<ðGð GØ@DðGð Gð r+   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÖ  r*   rÎ  s     r,   rØ  z _max_unpoolnd.<locals>.<genexpr>z  s&   è è € Ð
(Ð
(�aˆ1�Š6Ð
(Ð
(Ð
(Ð
(Ð
(Ð
(r+   r"   rš  rV   Fr2  )rH   Úalert_not_deterministicrQ  rC   r†   r€  r"  Úanyrx  r   Úoperatorrß   rˆ  r‡   rŸ  r›  r£  r1  r5  )r~   r¦  r   rR   r¨  r9  rH  ÚncÚhwÚindices_nc_shapeÚindices_flatr·  s      `        r,   Ú_max_unpoolndr]  g  sÐ  ø€ õ 
Ô!Ð"D°#Ð"DÐ"DÐ"DÑEÔEÐEÝ˜[Ñ)Ô)ð 
ð 
‰ˆˆ4ÝŒØ�AŠIØ˜Tð ð ð ð ð ñ	
ô 	
ð 	
ð 	
õ ˜œ
 5 S D 5Ô)Ñ*Ô*­T°+Ñ->Ô->Ñ>€LÝ
Ð
(Ð
(˜<Ð
(Ñ
(Ô
(Ñ(Ô(ð ,Ø�~Š~˜lÑ+Ô+Ð+Ý	•”˜dœj¨¨3¨$¨Ô/Ñ	0Ô	0€BÝ	•”˜kÑ	*Ô	*€BØ�s˜TœY‘ÐØ"œj¨¨3¨$¨Ô/Ð�U�s�d�UÑà•$—+’+˜b¨¬�+Ñ5Ô5×:Ò:Ð;KÑLÔLÈrÑQÑQß‚gˆb�k„kð ð �^Š^˜LÑ)Ô)€FÝ×!Ò!Ø�Š�rÑÔ˜\˜N¨D¯LªL¸Ñ,<Ô,<Èð "ñ ô ç
‚dˆ6Œ<ÑÔðr+   c                 óò  ‡ ‡‡‡— t          j        ‰j        t           j        k    ˆfd„¦  «         t          j        t	          ‰¦  «        dk    ˆfd„¦  «         t          j        ‰ j        dv ˆ fd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          d‰ j        ¦  «        D ]2Št          j        ‰                      ‰¦  «        dk    ˆˆ fd	„¦  «         Œ3t          ‰ ‰‰d¦  «        S )
Nc                  ó   •— d‰ j         › �S )Nz2elements in indices should be type int64 but got: rì   )r¦  s   €r,   r…   zmax_unpool2d.<locals>.<lambda>“  s   ø€ ÐTÀWÄ]ÐTÐT€ r+   r#   c                  ó*   •— dt          ‰ ¦  «        › d�S )NzMThere should be exactly two elements (height, width) in output_size, but got ú
 elements.©r�  ©r   s   €r,   r…   zmax_unpool2d.<locals>.<lambda>—  ó'   ø€ ð4Ý˜;Ñ'Ô'ð4ð 4ð 4ð r+   ré  c                  ó   •— d‰ j         › d�S )NzLInput to max_unpooling2d should be a 3d or 4d Tensor, but got a tensor with ú dimensions.r¶  r”   s   €r,   r…   zmax_unpool2d.<locals>.<lambda>Ÿ  s!   ø€ ð=Ø%)¤Yð=ð =ð =ð r+   c                  ó(   •— d‰j         › d‰ j         › �S ©NzBExpected shape of indices to be same as that of the input tensor (z%) but got indices tensor with shape: rñ  )r¦  r~   s   €€r,   r…   zmax_unpool2d.<locals>.<lambda>¦  s1   ø€ ðBÐQUÔQ[ð Bð BØ29´-ðBð Bð r+   r"   r   c                  ó    •— d‰j         › d‰ › d�S )NzZmax_unpooling2d(): Expected input to have non-zero size for non-batch dimensions, but got r=  ú being empty.rñ  )r¨  r~   s   €€r,   r…   zmax_unpool2d.<locals>.<lambda>¯  s4   ø€ ðHàœ:ðHð Hà78ðHð Hð Hð r+   )
rC   r†   rí   rÁ  r�  rˆ  r"  rW   r9  r]  )r~   r¦  r   r¨  s   ```@r,   Úmax_unpool2drk  Š  sT  øøøø€ õ 
„LØŒ�œÒ$ØTÐTÐTÐTñô ð õ 
„LÝˆKÑÔ˜AÒð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ	�VÐð	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�g”mÒ#ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �1�d”iÑ Ô ð 
ð 
ˆÝŒØ�IŠI�a‰LŒL˜1Òðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ ˜˜w¨°QÑ7Ô7Ð7r+   c                 ó
  ‡ ‡‡‡‡‡— t          j        ‰j        t           j        k    d„ ¦  «         t          j        ‰ j        dv ˆ fd„¦  «         t          j        t          ‰¦  «        dk    ˆfd„¦  «         t          j        t          ‰¦  «        dk    ˆfd„¦  «         t          j        t          ‰¦  «        dk    ˆfd„¦  «         t          j        ‰ j        ‰j        k    ˆˆ fd„¦  «         t          d	‰ j        ¦  «        D ]2Št          j        ‰                      ‰¦  «        d
k    ˆˆ fd„¦  «         Œ3t          j        ‰d
         d
k    o‰d	         d
k    o‰d         d
k    ˆfd„¦  «         t          ‰ ‰‰d¦  «        S )Nc                  ó   — dS )Nz(elements in indices should be type int64r*   r*   r+   r,   r…   zmax_unpool3d.<locals>.<lambda>Ã  s   € Ð.X€ r+   rK  c                  ó   •— d‰ j         › d�S )NzLInput to max_unpooling3d should be a 4d or 5d Tensor, but got a tensor with rf  r¶  ©rÄ   s   €r,   r…   zmax_unpool3d.<locals>.<lambda>Ç  s   ø€ ÐwÐ_dÔ_iÐwÐwÐw€ r+   rŒ   c                  ó*   •— dt          ‰ ¦  «        › d�S )NzVThere should be exactly three elements (depth, height, width) in output_size, but got ra  rb  rc  s   €r,   r…   zmax_unpool3d.<locals>.<lambda>Ë  rd  r+   c                  ó*   •— dt          ‰ ¦  «        › d�S )NzRThere should be exactly three elements (depth, height, width) in stride, but got: ra  rb  ©r�  s   €r,   r…   zmax_unpool3d.<locals>.<lambda>Ò  s   ø€ Ð|ÕehÐioÑepÔepÐ|Ð|Ð|€ r+   c                  ó*   •— dt          ‰ ¦  «        › d�S )NzSThere should be exactly three elements (depth, height, width) in padding, but got: ra  rb  )rÎ  s   €r,   r…   zmax_unpool3d.<locals>.<lambda>Ö  s   ø€ Ð~ÕfiÐjqÑfrÔfrÐ~Ð~Ð~€ r+   c                  ó(   •— d‰j         › d‰ j         › �S rh  rñ  )r¦  rÄ   s   €€r,   r…   zmax_unpool3d.<locals>.<lambda>Ú  s1   ø€ ðBÐQVÔQ\ð Bð BØ29´-ðBð Bð r+   r"   r   c                  ó    •— d‰j         › d‰ › d�S )NzZmax_unpooling3d(): Expected input to have non-zero size for non-batch dimensions, but got r=  rj  rñ  r?  s   €€r,   r…   zmax_unpool3d.<locals>.<lambda>ã  s4   ø€ ðIà œ;ðIð Ià89ðIð Ið Ið r+   r#   c                  ó   •— d‰ › �S )Nz5strides should be greater than zero, but got stride: r*   rr  s   €r,   r…   zmax_unpool3d.<locals>.<lambda>ì  s   ø€ ÐPÈÐPÐP€ r+   )
rC   r†   rí   rÁ  rˆ  r�  r"  rW   r9  r]  )rÄ   r¦  r   r�  rÎ  r¨  s   `````@r,   Úmax_unpool3drw  ¹  sï  øøøøøø€ õ 
„LØŒ�œÒ$Ð&XÐ&Xñô ð õ 
„LØŒ
�fÐØwÐwÐwÐwñô ð õ 
„LÝˆKÑÔ˜AÒð	
ð 	
ð 	
ð 	
ñô ð õ 
„LÝˆF‰Œ�qÒØ|Ð|Ð|Ð|ñô ð õ 
„LÝˆG‰Œ˜ÒØ~Ð~Ð~Ð~ñô ð õ 
„LØŒ�w”}Ò$ð	
ð 	
ð 	
ð 	
ð 	
ñô ð õ �1�e”jÑ!Ô!ð 
ð 
ˆÝŒØ�JŠJ�q‰MŒM˜AÒðð ð ð ð ñ	
ô 	
ð 	
ð 	
õ 
„LØˆqŒ	�AŠÐ9˜& œ) aš-Ð9¨F°1¬I¸ªMØPÐPÐPÐPñô ð õ
 ˜ ¨°aÑ8Ô8Ð8r+   )rp   r°  c                ó,   — t          | |||d|¬¦  «        S )NT©Úinplacerp   ©Ú
_index_add©r6   rR   rª  r°  rp   s        r,   Ú
index_add_r~  ò  s   € õ �a˜˜e V°TÀÐGÑGÔGÐGr+   c                ó,   — t          | |||d|¬¦  «        S )NFry  r{  r}  s        r,   rj  rj  þ  s   € õ �a˜˜e V°UÀ%ÐHÑHÔHÐHr+   rz  c                ó’  ‡ ‡‡‡‡‡‡‡— t          j        ‰ j        ‰¦  «        Št          j        ‰ j        ‰j        k    o‰ j        ‰j        k    ˆˆˆ fd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰j        dk    r‰                     d¦  «        ndŠ‰j        dk    r‰                     ‰¦  «        ndŠt          j        ‰‰k    ˆˆˆfd„¦  «         ‰dk    r`t          j        ‰ j        ¦  «        Št          j        ‰t          u p!t          j
        t          ‰¦  «        ‰¦  «        ˆˆfd„¦  «         ‰‰z  Š‰ j        dk    }|r‰                      d¦  «        n‰ }d‰z  ‰fz   }|rt          j        nt          j        }	 |	||‰d¬	¦  «        }
|r‰ S |r|
                     d¦  «        n|
                     ¦   «         S )
Nc                  ó8   •— d‰j         › d‰ j         › d‰j         › �S )NzVindex_add(): self, index and source expected to be in the same device, but got (self) ú
, (index) ú, and (source) rš  ©rª  r°  r6   s   €€€r,   r…   z_index_add.<locals>.<lambda>  ó:   ø€ ð,Øœhð,ð ,Ø27´,ð,ð ,à"œMð,ð ,ð r+   r"   c                  ó   •— d‰ j         › d�S ©Nz(Index should have dimension 1 or 0 (got rJ  r¶  ©rª  s   €r,   r…   z_index_add.<locals>.<lambda>  ó   ø€ ÐH¸5¼:ÐHÐHÐH€ r+   r   c                  ó   •— d‰› d‰› d‰ ›�S )NzNumber of indices (z') should be equal to tensor.size(dim) (z), for dim=r*   )rR   Ú
index_sizer±  s   €€€r,   r…   z_index_add.<locals>.<lambda>%  s"   ø€ Ðs jÐsÐsÐYdÐsÐsÐmpÐsÐs€ r+   c                  ó0   •— dt          ‰ ¦  «        › d‰› d�S )Nzalpha argument of type z cannot be safely cast to type ú!)rç  )rp   Úpython_types   €€r,   r…   z_index_add.<locals>.<lambda>,  s"   ø€ Ðh­d°5©k¬kÐhÐhÐZeÐhÐhÐh€ r+   r;   Tr2  )rH   Úcanonicalize_dimsrˆ  rC   r†   r›  r9  Údtype_to_typerí   r¡  Úis_weakly_lesser_typerç  rX   r‡   Ú
index_put_Ú	index_putr  rº  )r6   rR   rª  r°  rz  rp   Úzero_dimr`  r§  r“  rË   r‹  rŽ  r±  s   ```` `     @@@r,   r|  r|    s  øøøøøøøø€ õ Ô
! !¤&¨#Ñ
.Ô
.€CÝ	„LØ	Œ�E”LÒ Ð> Q¤X°´Ò%>ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�aŠØHÐHÐHÐHñô ð ð #(¤*°¢/ /�—’˜A‘”�°q€JØ&,¤k°A¢o o�&—+’+˜cÑ"Ô"Ð"¸1€KÝ	„LØ�zÒ!ØsÐsÐsÐsÐsÐsñô ð ð �‚z€zÝÔ)¨!¬'Ñ2Ô2ˆÝŒØ�4Ðð EÝÔ*­4°©;¬;¸ÑDÔDØhÐhÐhÐhÐhñ	
ô 	
ð 	
ð
 ˜%‘ˆàŒv˜Š{€HØ#Ð	*ˆ�Š�Q‰Œˆ¨€BØ
�C‰-˜5˜(Ñ
"€CØ#*Ð>•”�µ´€IØ
ˆ)�B˜˜V°Ð
5Ñ
5Ô
5€CØð @Øˆà!)Ð?ˆs�{Š{˜1‰~Œ~ˆ~¨s¯~ª~Ñ/?Ô/?Ð?r+   r—   r»   c                 óT  ‡— t          j        t          | ¦  «        dk    d„ ¦  «         t          j        ‰dk    p‰dk    ˆfd„¦  «         t          | ¦  «        }| d                              ¦   «         }|dd …         }t	          d„ | D ¦   «         ¦  «        }|r||f}n||f}||z   }| d                              ||¦  «        }	dt          |¦  «        z  }
t          |¦  «        D ]Ã}| |                              |	j        ¬	¦  «        }||                     d¦  «        z
  }‰dk    r"t           
                    ||
d|fz   |¦  «        }n!t           
                    ||
|dfz   |¦  «        }|rt                               |	|d|¬
¦  «        }	Œ¥t                               |	|d|¬
¦  «        }	ŒÄ|	S )Nr   c                  ó   — dS )Nz#received an empty list of sequencesr*   r*   r+   r,   r…   zpad_sequence.<locals>.<lambda>>  s   € Ð-R€ r+   rº   r»   c                  ó   •— d‰ › d�S )Nz:Expected padding_side to be one of left or right, but got r*  r*   )Úpadding_sides   €r,   r…   zpad_sequence.<locals>.<lambda>A  s   ø€ Ð\È\Ð\Ð\Ð\€ r+   r"   c              3   ó@   K  — | ]}|                      d ¦  «        V — ŒdS rÖ  rO  )r5   r6   s     r,   rØ  zpad_sequence.<locals>.<genexpr>F  s,   è è € Ð/Ð/ �!—&’&˜‘)”)Ð/Ð/Ð/Ð/Ð/Ð/r+   )r   r   rì   ©rR   rª  )rC   r†   r�  r9  r‘   rñ   rW   r=   rí   r‡   r¬  r¬  )Ú	sequencesÚbatch_firstÚpadding_valuer˜  Úsequences_sizeÚmax_sizeÚtrailing_dimsÚmax_lenÚout_dimsrË   Údim_paddingsr¨  ÚcurrseqÚ
pad_amountÚrows      `           r,   Úpad_sequencer§  ;  sá  ø€ õ 
„L•�Y‘” !Ò#Ð%RÐ%RÑSÔSÐSÝ	„LØ˜ÒÐ9 ,°'Ò"9Ø\Ð\Ð\Ð\ñô ð õ ˜‘^”^€NØ˜Œ|× Ò Ñ"Ô"€HØ˜Q˜R˜R”L€MÝÐ/Ð/ YÐ/Ñ/Ô/Ñ/Ô/€GØð -Ø" GÐ,ˆˆà˜^Ð,ˆØ˜-Ñ'€HØ
�AŒ,×
Ò
 ¨-Ñ
8Ô
8€CØ�C Ñ.Ô.Ñ.€LÝ�>Ñ"Ô"ð @ð @ˆØ˜A”,—/’/¨¬	�/Ñ2Ô2ˆØ˜wŸ|š|¨A™œÑ.ˆ
Ø˜7Ò"Ð"Ý×&Ò&Ø˜¨¨J¨Ñ7¸ñô ˆCˆCõ ×&Ò&Ø˜¨°Q¨Ñ7¸ñô ˆCð ð 	@Ý×%Ò% c¨3°A¸QÐ%Ñ?Ô?ˆCˆCå×%Ò% c¨3°A¸QÐ%Ñ?Ô?ˆCˆCØ€Jr+   c                 ó*   — t          | |||d¬¦  «        S )NT©rz  ©Ú_index_copy©r6   rR   rª  r°  s       r,   Úindex_copy_r­  `  s   € å�q˜#˜u f°dÐ;Ñ;Ô;Ð;r+   c                 ó*   — t          | |||d¬¦  «        S )NFr©  rª  r¬  s       r,   Ú
index_copyr¯  e  s   € õ �q˜#˜u f°eÐ<Ñ<Ô<Ð<r+   c                ó¤  ‡ ‡‡‡‡‡‡— ddl m} t          j        ‰ j        ‰¦  «        Št          j        ‰ j        ‰j        k    o‰ j        ‰j        k    ˆˆˆ fd„¦  «         t          j        ‰j        dk    ˆfd„¦  «         ‰                     ¦   «         Š‰j        dk    rt          j        ‰dk    ˆfd„¦  «         n2‰ j        dk    r't          j        ‰j        ‰ j        k    ˆˆ fd„¦  «         ‰ j        dk    r"‰ j	        d ‰…         ‰ j	        ‰dz   d …         z   ndŠ‰j        dk    r"‰j	        d ‰…         ‰j	        ‰dz   d …         z   ndŠt          j         |‰‰¦  «        ˆˆˆfd	„¦  «         ‰j        dk    r1t          j        ‰‰ 
                    ‰¦  «        k    ˆˆˆfd
„¦  «         ‰ j        dk    }|r‰                      d¦  «        n‰ }‰j        dk    r‰                     d¦  «        n‰Šd‰z  ‰fz   }|rt          j        nt          j        }	 |	||‰¦  «        }
|r‰ S |r|
                     d¦  «        n|
                     ¦   «         S )Nr   )Úsym_eqc                  ó8   •— d‰j         › d‰ j         › d‰j         › �S )NzWindex_copy(): self, index and source expected to be in the same device, but got (self) r‚  rƒ  rš  r„  s   €€€r,   r…   z_index_copy.<locals>.<lambda>s  r…  r+   r"   c                  ó   •— d‰ j         › d�S r‡  r¶  rˆ  s   €r,   r…   z_index_copy.<locals>.<lambda>{  r‰  r+   c                  ó   •— d‰ › d�S )NzIindex_copy_(): When source is scalar, index should have one element (got rJ  r*   )Únum_indicess   €r,   r…   z_index_copy.<locals>.<lambda>�  s   ø€ ð3Ø$/ð3ð 3ð 3ð r+   c                  ó*   •— d‰ j         › d‰j         › d�S )Nztindex_copy_(): When source and destination are not scalars, their dimensionality must match. Source dimensionality (z), destination dimensionality (rJ  r¶  )r°  r6   s   €€r,   r…   z_index_copy.<locals>.<lambda>‰  s6   ø€ ðJà”KðJð Jà@AÄðJð Jð Jð r+   r*   c                  ó   •— d‰› d‰ › d‰› d�S )Nz_index_copy_(): Source/destination tensor must have same slice shapes. Destination slice shape: z at dimension z and source slice shape: z at dimension 0.r*   )rR   Útensor_sliced_shapeÚx_sliced_shapes   €€€r,   r…   z_index_copy.<locals>.<lambda>–  sA   ø€ ðMØ(6ðMð MØFIðMð Mà':ðMð Mð Mð r+   c                  ó<   •— d‰› d‰                      ‰ ¦  «        › d�S )Nz"index_copy_(): Number of indices (z') should be equal to source.size(dim) (rJ  rO  )rR   rµ  r°  s   €€€r,   r…   z_index_copy.<locals>.<lambda>Ÿ  s=   ø€ ðB°[ð Bð BØ.4¯kªk¸#Ñ.>Ô.>ðBð Bð Bð r+   r;   )r~  r±  rH   r�  rˆ  rC   r†   r›  rã   r"  r9  rX   r‡   r’  r“  r  rº  )r6   rR   rª  r°  rz  r±  r”  r`  r§  r“  rË   rµ  r¸  r¹  s   ````       @@@r,   r«  r«  k  sí  øøøøøøø€ ð =Ð<Ð<Ð<Ð<Ð<å
Ô
! !¤&¨#Ñ
.Ô
.€CÝ	„LØ	Œ�E”LÒ Ð> Q¤X°´Ò%>ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð õ 
„LØŒ
�aŠØHÐHÐHÐHñô ð ð —+’+‘-”-€KØ„{�aÒÐÝŒØ˜1Òðð ð ð ñ	
ô 	
ð 	
ð 	
ð 
Œ�1ŠˆÝŒØŒK˜1œ6Ò!ðð ð ð ð ñ	
ô 	
ð 	
ð <=¼6ÀAº:¸:�Q”W˜T˜c˜T”] Q¤W¨S°1©W¨Y¨YÔ%7Ñ7Ð7È2€Nà8>¼Àaº¸ˆŒ�T�c�TÔ˜Vœ\¨#°©'¨)¨)Ô4Ñ4Ð4ÈRð õ 
„LØˆˆ~Ð2Ñ3Ô3ð	
ð 	
ð 	
ð 	
ð 	
ð 	
ñô ð ð „{�aÒÐÝŒØ˜6Ÿ;š; sÑ+Ô+Ò+ðð ð ð ð ð ñ	
ô 	
ð 	
ð Œv˜Š{€HØ#Ð	*ˆ�Š�Q‰Œˆ¨€BØ"'¤*°¢/ /ˆE�OŠO˜AÑÔÐ°u€EØ
�C‰-˜5˜(Ñ
"€CØ#*Ð>•”�µ´€IØ
ˆ)�B˜˜VÑ
$Ô
$€CØð @Øˆà!)Ð?ˆs�{Š{˜1‰~Œ~ˆ~¨s¯~ª~Ñ/?Ô/?Ð?r+   c                 ó  — t          j        |                      d¦  «        | ¦  «        }t          j        t          j        | ¦  «         ¦  «        }| j        s| j        r|                      d¦  «        }n|}|t          j        |¦  «        z
  |fS )Nr*   r\  )rC   rä  rx  rk   rä   rû  Úis_xpurS  )r~   rŽ   rm   rá   s       r,   Úlog_sigmoid_forwardr½  ²  s~   € õ Œ-˜Ÿš rÑ*Ô*¨DÑ
1Ô
1€CÝŒ	•5”9˜T‘?”?Ð"Ñ#Ô#€AØ„|ð �t”{ð Ø—’ Ñ%Ô%ˆˆàˆØ•”˜Q‘”Ñ Ð'Ð'r+   ÚlowÚhighrš  c           	      ó®   — t          j        | j        |                      ¦   «         t	          |¦  «        t	          |¦  «        | j        | j        |¬¦  «        S )N)r�  r¾  r¿  rí   r›  rš  )ÚprimsÚ_uniform_helperr"  r�  r   rí   r›  )r6   r¾  r¿  rš  s       r,   ÚuniformrÃ  ¿  sM   € õ Ô Ø	ŒØ�xŠx‰zŒzÝ�c‰NŒNÝ�t‰_Œ_ØŒgØŒxØðñ ô ð r+   c                 óL   — |                       t          | |||¦  «        ¦  «        S r;   )r^  rÃ  )r~   r¾  r¿  rš  s       r,   Úuniform_rÅ  Ò  s"   € à�:Š:•g˜d C¨¨yÑ9Ô9Ñ:Ô:Ð:r+   c                 óp  — t          | ¦  «        dz
  }|�At          j        |d u d„ ¦  «         t          j        t          |¦  «        |k    d„ ¦  «         |S |�Èt          j        |d u d„ ¦  «         t          j        t          |¦  «        |k    d„ ¦  «         g }t          |¦  «        D ]u\  }}t	          |¦  «        |k    r/|                     | |dz            t	          |¦  «        z  ¦  «         ŒG|                     t          | |dz            |z  ¦  «        ¦  «         Œv|S t          j        dd„ ¦  «         d S )Nr#   c                  ó   — dS ©Nz9Must specify exactly one of output_size and scale_factorsr*   r*   r+   r,   r…   z.upsample_compute_output_size.<locals>.<lambda>Ý  ó   € ÐO€ r+   c                  ó   — dS ©NÚ r*   r*   r+   r,   r…   z.upsample_compute_output_size.<locals>.<lambda>ß  s   € ÀR€ r+   c                  ó   — dS rÈ  r*   r*   r+   r,   r…   z.upsample_compute_output_size.<locals>.<lambda>å  rÉ  r+   c                  ó   — dS rË  r*   r*   r+   r,   r…   z.upsample_compute_output_size.<locals>.<lambda>ç  s   € Àr€ r+   Fc                  ó   — dS rÈ  r*   r*   r+   r,   r…   z.upsample_compute_output_size.<locals>.<lambda>ð  s   € ÐR€ r+   )r�  rC   r†   rQ  r–  r®  r   )rB  r   Úscale_factorsÚspatial_dimensionsr¨  rÏ  s         r,   Úupsample_compute_output_sizerÒ  Ø  sg  € Ý˜Z™œ¨1Ñ,ÐØÐÝŒØ˜TÐ!ØOÐOñ	
ô 	
ð 	
õ 	Œ•S˜Ñ%Ô%Ð);Ò;¸Z¸ZÑHÔHÐHØÐØÐ åŒØ˜4ÐØOÐOñ	
ô 	
ð 	
õ 	Œ•S˜Ñ'Ô'Ð+=Ò=¸z¸zÑJÔJÐJØˆÝ˜mÑ,Ô,ð 	Cð 	C‰DˆAˆqÝ�1‰vŒv˜Š{ˆ{Ø×"Ò" :¨a°!©eÔ#4µs¸1±v´vÑ#=Ñ>Ô>Ð>Ð>à×"Ò"¥7¨:°a¸!±eÔ+<¸qÑ+@Ñ#AÔ#AÑBÔBÐBÐBØÐÝ	„LØÐRÐRñô ð ð ð r+   c                 ó   — | €d S | |         S r;   r*   )Úscalesr§  s     r,   Úget_scale_valuerÕ  ô  s   € Ø€~ØˆtØ�#Œ;Ðr+   rÐ  c                 ó˜   — t          |                      ¦   «         ||¦  «        }|r|nd gt          |¦  «        z  }t          | ||¦  «        S r;   ©rÒ  r9  r�  Ú_upsample_nearest©rÄ   r   rÐ  ÚosizerÔ  s        r,   Ú_upsample_nearest_vecrÛ  ú  sO   € õ )¨¯ª©¬°{ÀMÑRÔR€Eà&Ð?ˆˆ¨T¨FµS¸±Z´ZÑ,?ð õ ˜U E¨6Ñ2Ô2Ð2r+   c                 óœ   — t          |                      ¦   «         ||¦  «        }|r|nd gt          |¦  «        z  }t          | ||d¬¦  «        S ©NT©Úexactr×  rÙ  s        r,   Ú_upsample_nearest_exact_vecrà    sT   € õ )¨¯ª©¬°{ÀMÑRÔR€Eà&Ð?ˆˆ¨T¨FµS¸±Z´ZÑ,?ð õ ˜U E¨6¸Ð>Ñ>Ô>Ð>r+   c                 óò  — g }t          |¦  «        }|rdnd}t          |¦  «        D ]Ï}||         }| j        | |z            }	||         �||         dk    r|	|	||         z  z  n|	|z  }
t          j        |t          j        | j        ¬¦  «        }||z   |
z                       t          j        ¦  «        }t          |dz
  |z
  ¦  «        D ]}| 	                    d¦  «        }Œ| 
                    |¦  «         ŒÐ|S )Nr£   r—   r   rÀ  r"   rV   )r�  rW   r"  rC   rŸ  rð   r›  r=   rÁ  rX   r®  )rÄ   r   rÔ  rß  r¦  Únum_spatial_dimsr®  rì  rÚ  Úisizerq   Úoutput_indicesÚinput_indicesrY   s                 r,   Ú!_compute_upsample_nearest_indicesræ  $  s#  € ð €GÝ˜;Ñ'Ô'ÐØÐ"ˆSˆS˜s€FåÐ#Ñ$Ô$ð &ð &ˆð ˜A”ˆØ”Ð-Ð-°Ñ1Ô2ˆð
 �aŒyÐ$¨°¬°Qª¨ð �U˜V AœYÑ&Ñ'Ð'à˜‘ð 	õ œ eµ5´=ÈÌÐVÑVÔVˆØ(¨6Ñ1°UÑ:×>Ò>½u¼{ÑKÔKˆÝÐ'¨!Ñ+¨aÑ/Ñ0Ô0ð 	8ð 	8ˆAØ)×3Ò3°BÑ7Ô7ˆMˆMØ�Š�}Ñ%Ô%Ð%Ð%Ø€Nr+   )Úpreserve_memory_formatr!  rÔ  c                 ó&   — t          | ||g¦  «        S r;   ©rØ  ©rÄ   r   rÔ  s      r,   Úupsample_nearest1drë  J  s   € õ ˜U K°&°Ñ:Ô:Ð:r+   c                 ó*   — t          | ||gd¬¦  «        S rÝ  ré  rê  s      r,   Úupsample_nearest_exact1drí  V  s   € õ ˜U K°&°ÀÐFÑFÔFÐFr+   Úscales_hÚscales_wc                 ó(   — t          | |||g¦  «        S r;   ré  ©rÄ   r   rî  rï  s       r,   Úupsample_nearest2drò  d  s   € õ ˜U K°(¸HÐ1EÑFÔFÐFr+   c                 ó,   — t          | |||gd¬¦  «        S rÝ  ré  rñ  s       r,   Ú_upsample_nearest_exact2drô  q  s    € õ ˜U K°(¸HÐ1EÈTÐRÑRÔRÐRr+   Úscales_dc                 ó*   — t          | ||||g¦  «        S r;   ré  ©rÄ   r   rõ  rî  rï  s        r,   Úupsample_nearest3drø  €  s   € õ ˜U K°(¸HÀhÐ1OÑPÔPÐPr+   c                 ó.   — t          | ||||gd¬¦  «        S rÝ  ré  r÷  s        r,   Ú_upsample_nearest_exact3drú  Ž  s+   € õ Øˆ{˜X x°Ð:À$ðñ ô ð r+   rß  c                 óJ  — t          | |||¬¦  «        }d d g|z   }t                               | |¦  «        }|j        dv rdt	          j        | ¦  «        }| j        d         }|j        dk    r"| j        j        dk    r|dk     rt          j
        }|                     |¬¦  «        }|S )NrÞ  rK  r"   rO  Úcudarc  )ræ  r‡   Ú_unsafe_indexrˆ  rH   r   r"  r›  rç  rC   rg  rº  )	rÄ   r   rÔ  rß  Úspatial_indicesr¦  r#  rd  Ú
n_channelss	            r,   rØ  rØ     s·   € õ 8Øˆ{˜F¨%ðñ ô €Oð �Tˆl˜_Ñ,€GÝ×Ò  wÑ/Ô/€Fà„{�fÐÐåÔ3°EÑ:Ô:ˆð ”[ ”^ˆ
ØŒ;˜!ÒÐ ¤Ô 1°VÒ ;Ð ;À
ÈQÂÀÝ!Ô3ˆMà×"Ò"°Ð"Ñ?Ô?ˆØ€Mr+   c                 óò   ‡ ‡— |r|rdŠn|rdŠn|rdŠndŠt          ‰ ¦  «        ‰z  dk    r"t          dt          ‰ ¦  «        › d‰› �¦  «        ‚ˆˆ fd„t          dt          ‰ ¦  «        ‰¦  «        D ¦   «         S )	Nr  rO  rŒ   r#   r   zlen(params)=z  is not divisible by group_size=c                 óD   •— g | ]}t          ‰||‰z   …         ¦  «        ‘ŒS r*   rï  )r5   r¨  Ú
group_sizeÚparamss     €€r,   r8   z!gather_params.<locals>.<listcomp>É  s<   ø€ ð ð ð Ø./�ˆf�Q˜˜Z™Ð'Ô(Ñ)Ô)ðð ð r+   )r�  r7  rW   )r  Ú
has_biasesÚhas_projectionsr  s   `  @r,   Úgather_paramsr  »  sÀ   øø€ Øð �oð Øˆ
ˆ
Ø	ð Øˆ
ˆ
Ø	ð Øˆ
ˆ
àˆ
å
ˆ6�{„{�ZÑ 1Ò$Ð$ÝØT�3˜v™;œ;ÐTÐTÈ
ÐTÐTñ
ô 
ð 	
ðð ð ð ð Ý38¸½CÀ¹K¼KÈÑ3TÔ3Tðñ ô ð r+   c                 ó¢   — |r3| d|z           |d|z           }}| d|z  dz            |d|z  dz            }}n| |         ||         }}d\  }}||||fS )Nr#   r"   ©NNr*   )r  Úhiddensr¨  ÚbidirectionalÚ
cur_paramsÚ
cur_hiddenÚbidir_paramsÚbidir_hiddens           r,   Úparams_hiddensr  Î  sr   € Øð 0Ø!'¨¨A©¤°¸¸A¹´�Jˆ
Ø%+¨A°©E°A©IÔ%6¸ÀÀAÁÈÁ	Ô8J�lˆˆà!'¨¤¨G°A¬J�Jˆ
Ø%/Ñ"ˆ�là�z <°Ð=Ð=r+   c                 óÂ   — ||k    rt          d|› d|› d�¦  «        ‚|                     |                      d|||z
  ¦  «        ¦  «         |                      dd|¦  «        S )Núlast_batch_size (z) must be > batch_size (rJ  r   )r7  r®  r:  )r  Úlast_batch_sizeÚ
batch_sizer	  s       r,   Úupdate_hidden_for_packedr  Ù  sx   € Ø˜*Ò$Ð$ÝØV ÐVÐVÈÐVÐVÐVñ
ô 
ð 	
ð ‡N‚N�:×$Ò$ Q¨
°OÀjÑ4PÑQÔQÑRÔRÐRØ×Ò˜Q  :Ñ.Ô.Ð.r+   c           	      ó¦   — ||k    r| S ||k    rt          d|› d|› d�¦  «        ‚t          j        | |                     d|||z
  ¦  «        f¦  «        S )Nr  z) must be < batch_size (rJ  r   )r7  rC   Úconcatr:  )r  r  r  Ú
inp_hiddens       r,   Ú update_hidden_for_packed_reverser  â  s€   € ð ˜*Ò$Ð$ØÐØ˜*Ò$Ð$ÝØV ÐVÐVÈÐVÐVÐVñ
ô 
ð 	
õ Œ<àØ×Ò˜a °*¸Ñ2NÑOÔOð	
ñô ð r+   c           	      ó¼  — |d         }|d         }|r|d         nd }	|r|d         nd }
g }g }|r|d         n|d         }|                      dd|¦  «        }t          j        | t          |¦  «        ¦  «        }|r|d d d…         }|D ]d} | j        d         }||k    rn'|rt          ||||¦  «        }nt          ||||¦  «        } || |||	||
¦  «        }|}|                     |¦  «         Œe|r|                     ¦   «          n)|                     |¦  «         |                     ¦   «          t          j	        |d¦  «        }|st          j	        |d¦  «        n|}||fS )Nr   r"   r#   rŒ   rV   )
r:  rC   rÒ  r€  r"  r  r  r®  Úreverser;  )ÚinpÚhiddenr  r  Ú	hidden_fnÚbatch_sizesr  Ú	ih_weightÚ	hh_weightÚih_biasÚhh_biasÚstep_outputr	  r  r  Ú	split_inpr¨  rË   Ú
hidden_outs                      r,   Úone_layer_rnn_datar&  ó  s¯  € ð �q”	€IØ�q”	€IØ%Ð/ˆf�QŒiˆi¨4€GØ%Ð/ˆf�QŒiˆi¨4€Gà€KØ"$€Gà)0ÐD�k "”o�o°kÀ!´n€OØ—’˜q ! _Ñ5Ô5€JÝ”˜C¥ kÑ!2Ô!2Ñ3Ô3€IØð $Ø˜d˜d ˜d”Oˆ	Øð 'ð 'ˆØŒI�aŒLˆà˜aÒÐØàð 	Ý9Ø˜O¨Q°ñô ˆJˆJõ 2Ø˜O¨Q°ñô ˆJð �Y˜s J°	¸7ÀIÈwÑWÔWˆ
ØˆØ×Ò˜:Ñ&Ô&Ð&Ð&àð Ø×ÒÑÔÐÐà�Š�zÑ"Ô"Ð"Ø�ŠÑÔÐå
Œ)�K Ñ
#Ô
#€CØ.5ÐE•”˜7 AÑ&Ô&Ð&¸:€JØ�
ˆ?Ðr+   c                 ó   ‡ — ˆ fd„}|S )Nc                 óH   •—  ‰t          j        |||¦  «        | z   ¦  «        S r;   ©rÆ   Úlinear©r¨  r  r  r!  r   r"  Únonlinearitys         €r,   rN   zrnn_cell.<locals>.inner"  s&   ø€ Øˆ|�AœH Z°¸GÑDÔDÀqÑHÑIÔIÐIr+   r*   ©r,  rN   s   ` r,   Úrnn_cellr.  !  s(   ø€ ðJð Jð Jð Jð Jð €Lr+   c                 ó   ‡ — ˆ fd„}|S )Nc                 ót   •— t          j        | ||¦  «        }  ‰t          j        |||¦  «        | z   ¦  «        S r;   r)  r+  s         €r,   rN   zrnn_cell_data.<locals>.inner)  s9   ø€ ÝŒH�Q˜	 7Ñ+Ô+ˆØˆ|�AœH Z°¸GÑDÔDÀqÑHÑIÔIÐIr+   r*   r-  s   ` r,   Úrnn_cell_datar1  (  s(   ø€ ðJð Jð Jð Jð Jð €Lr+   c           	      ó¶  — |d         }|d         }|r|d         nd }|r|d         nd }	t          j        | ||¦  «        }
|r|
                     d¦  «        n|
}
|                     d¦  «        }g }|
D ]'} |||||||	¦  «        }|                     |¦  «         Œ(|r|                     ¦   «          t          j        |d¦  «        }||                     d¦  «        fS )Nr   r"   r#   rŒ   )	rÆ   r*  ÚfliprX   r®  r  rC   r;  r  )r  r  r  r  r  r  r  r   r!  r"  Úprecomputed_inputr  r#  r¨  rË   s                  r,   Úone_layer_rnnr5  0  s  € Ø�q”	€IØ�q”	€IØ%Ð/ˆf�QŒiˆi¨4€GØ%Ð/ˆf�QŒiˆi¨4€Gåœ  i°Ñ9Ô9ÐØ5<ÐSÐ)×.Ò.¨qÑ1Ô1Ð1ÐBSÐØ×!Ò! !Ñ$Ô$€JØ€KØð 'ð 'ˆØ�Y˜q *¨i¸À)ÈWÑUÔUˆ
Ø×Ò˜:Ñ&Ô&Ð&Ð&àð Ø×ÒÑÔÐå
Œ)�K Ñ
#Ô
#€Cà�
×"Ò" 1Ñ%Ô%Ð%Ð%r+   c                 óþ  — |d         }|d         }|r|d         }|d         }nLt          j        |                     ¦   «         ¦  «        }t          j        |                     ¦   «         ¦  «        }|d                              d¦  «        }	|d                              d¦  «        }
g }d}|	                     d¦  «        }d}d}d}d}|                      ¦   «         } |	                     ¦   «         }	|
                     ¦   «         }
t           j        j        j                             | |||||	|
|||||||||¦  «        }|d         |d         |d         }}}|| 	                    d¦  «        | 	                    d¦  «        ffS )Nr   r"   r#   rŒ   F)
rC   r  r9  rX   rº  rE  r‡   Úmkldnn_rnn_layerr“  r  )r  r  r  r  r  Úw0Úw1Úw2Úw3ÚhxÚcxr  ÚmodeÚhidden_sizeÚ
num_layersr
  rœ  rw  Úoutputsr]   ÚhyÚcys                         r,   Úmkldnn_one_layer_lstmrD  F  sq  € Ø	�Œ€BØ	�Œ€BØð $Ø�AŒYˆØ�AŒYˆˆåŒ[˜Ÿš™œÑ#Ô#ˆÝŒ[˜Ÿš™œÑ#Ô#ˆà	�Œ×	Ò	˜QÑ	Ô	€BØ	�Œ×	Ò	˜QÑ	Ô	€Bà€KØ€DØ—'’'˜!‘*”*€KØ€Jð €MØ€Kà€Eð �.Š.Ñ
Ô
€CØ	�Š‰Œ€BØ	�Š‰Œ€BÝŒiŒnÔ-×5Ò5ØØ
Ø
Ø
Ø
Ø
Ø
ØØØØØØØØØñ!ô €Gð$ ˜”
˜G AœJ¨°¬
ˆ2€r€AØˆr�zŠz˜!‰}Œ}˜bŸjšj¨™mœmÐ,Ð,Ð,r+   c
                 ó8  — |r|                       dd¦  «        n| } g }
t          |¦  «        D ]Ñ}t          ||||¦  «        \  }}}}|r||dz
  k     r|nd} |	| |||¦  «        \  }}|
                     |¦  «         |r( |	| |||d¬¦  «        \  }}|
                     |¦  «         |r-t	          j        ||g|                     ¦   «         dz
  ¦  «        } n|} |dk    r"|r ||dz
  k     rt	          j        | |d¬¦  «        } ŒÒ|r|                       dd¦  «        n| } | |
fS )Nr   r"   r—   T)r  )rw  )Ú	transposerW   r  r®  rC   r;  rR   rz  )rÄ   r  r  r  r@  rz  rw  r
  rœ  Úlayer_fnÚfinal_hiddensr¨  r  r  r  r  Úfwd_inpÚ
fwd_hiddenÚbwd_inpÚ
bwd_hiddens                       r,   Ú_rnn_helperrM  x  sz  € ð &1Ð;ˆE�OŠO˜A˜qÑ!Ô!Ð!°e€EØ€Må�:ÑÔð >ð >ˆÝ=KØ�F˜A˜}ñ>
ô >
Ñ:ˆ
�J ¨lð $ÐD¨
°Q¸±UÒ(:Ð(:�'�'ÀˆØ&˜h u¨j¸*ÀjÑQÔQÑˆ�Ø×Ò˜ZÑ(Ô(Ð(àð 	-Ø"* (Ø�| \°:Àtð#ñ #ô #ÑˆG�Zð × Ò  Ñ,Ô,Ð,àð 	Ý”I˜w¨Ð0°'·+²+±-´-À!Ñ2CÑDÔDˆEˆEàˆEà�aŠ<ˆ<˜Eˆ< a¨*°q©.Ò&8Ð&8Ý”M %¨¸Ð=Ñ=Ô=ˆEøà%0Ð;ˆE�OŠO˜A˜qÑ!Ô!Ð!°e€EØ�-ÐÐr+   c	                 ó  — |                      d¦  «        }	t          ||d¦  «        }t          | |	|||||||t          t          t          t          j        ¦  «        ¬¦  «        ¦
  «
        \  }
}|
t          j        |d¦  «        fS ©Nr   F©r  )	Úunbindr  rM  r   r5  r.  rC   r¯   Ústack©rÄ   r<  r  r  r@  rz  rw  r
  rœ  r  rË   rH  s               r,   Úrnn_tanh_inputrT  ¡  ó†   € ð �YŠY�q‰\Œ\€FÝ˜6 :¨uÑ5Ô5€FÝ$ØØØØØØØØØÝ•­µ%´*Ñ)=Ô)=Ð>Ñ>Ô>ñô Ñ€Cˆð •”˜M¨1Ñ-Ô-Ð-Ð-r+   c	                 ó  — |                      d¦  «        }	t          ||d¦  «        }t          | |	|||||||t          t          t          t          j        ¦  «        ¬¦  «        ¦
  «
        \  }
}|
t          j        |d¦  «        fS rO  )	rQ  r  rM  r   r5  r.  rC   rý  rR  rS  s               r,   Úrnn_relu_inputrW  À  rU  r+   c	                 ó
  — |                      d¦  «        }	t          ||d¦  «        }t          | |	||||||dt          t          |t          t          j        ¦  «        ¬¦  «        ¦
  «
        \  }
}|
t          j        |d¦  «        fS ©Nr   F©r  r  )	rQ  r  rM  r   r&  r1  rC   rý  rR  ©Údatar  r<  r  r  r@  rz  rw  r
  r  rË   rH  s               r,   Úrnn_relu_datar]  ß  ó‘   € ð �YŠY�q‰\Œ\€FÝ˜6 :¨uÑ5Ô5€FÝ$ØØØØØØØØØÝÝØ#Ý#¥E¤JÑ/Ô/ð	
ñ 	
ô 	
ñô Ñ€Cˆð  •”˜M¨1Ñ-Ô-Ð-Ð-r+   c	                 ó
  — |                      d¦  «        }	t          ||d¦  «        }t          | |	||||||dt          t          |t          t          j        ¦  «        ¬¦  «        ¦
  «
        \  }
}|
t          j        |d¦  «        fS rY  )	rQ  r  rM  r   r&  r1  rC   r¯   rR  r[  s               r,   Úrnn_tanh_datar`    r^  r+   c                 ó°  — t          j        |||¦  «        | z   }|                     d|¦  «        }|d                              ¦   «         }	|d                              ¦   «         }
|d                              ¦   «         }|d                              ¦   «         }|
|z  |	|z  z   }||                     ¦   «         z  }|€|nt          j        ||d ¦  «        }||fS )NrO  r   r"   r#   rŒ   ©rÆ   r*  ÚchunkrÈ   r¯   )r  r<  r=  r   r"  Ú	hr_weightÚ	chunk_dimÚgatesÚchunked_gatesÚin_gateÚforget_gateÚ	cell_gateÚout_gaterC  rB  s                  r,   Ú	lstm_cellrl  %  sÐ   € ÝŒH�R˜ GÑ,Ô,¨sÑ2€EØ—K’K  9Ñ-Ô-€MØ˜AÔ×&Ò&Ñ(Ô(€GØ Ô"×*Ò*Ñ,Ô,€KØ˜aÔ ×%Ò%Ñ'Ô'€IØ˜QÔ×'Ò'Ñ)Ô)€HØ	�rÑ	˜W yÑ0Ñ	1€BØ	�B—G’G‘I”IÑ	€BØÐ ˆˆ¥a¤h¨r°9¸dÑ&CÔ&C€Bàˆrˆ6€Mr+   c           
      ó¤  — |d         }|d         }|r|d         nd }|r|d         nd }t          |¦  «        dk    r|d         nt          |¦  «        dk    r|d         nd }	|d                              d¦  «        }
|d                              d¦  «        }t          j        | ||¦  «        }|r|                     d¦  «        n|}g }|D ]0} t          | |
||||	d¬¦  «        \  }
}|                     |
¦  «         Œ1|r|                     ¦   «          t          j	        |d¦  «        }||
 
                    d¦  «        | 
                    d¦  «        ffS )Nr   r"   r#   rŒ   r  rO  ©re  )r�  rX   rÆ   r*  r3  rl  r®  r  rC   r;  r  )r  r  r  r  r  r  r   r!  r"  rd  r<  r=  r4  r#  rË   s                  r,   Úone_layer_lstmro  3  so  € Ø�q”	€IØ�q”	€IØ%Ð/ˆf�QŒiˆi¨4€GØ%Ð/ˆf�QŒiˆi¨4€Gå˜‘[”[ AÒ%Ð%ˆˆqŒ	ˆ	½¸F¹¼ÀqÒ8HÐ8H¨6°!¬9¨9Èdð ð 
�Œ×	Ò	˜QÑ	Ô	€BØ	�Œ×	Ò	˜QÑ	Ô	€Båœ  i°Ñ9Ô9ÐØ5<ÐSÐ)×.Ò.¨qÑ1Ô1Ð1ÐBSÐØ€KØ ð ð ˆÝ˜3  B¨	°7¸IÐQRÐSÑSÔS‰ˆˆBØ×Ò˜2ÑÔÐÐàð Ø×ÒÑÔÐå
Œ)�K Ñ
#Ô
#€Cà�—’˜A‘” §
¢
¨1¡¤Ð.Ð.Ð.r+   c           
      ód  — |d         }|d         }|r|d         nd }|r|d         nd }	t          |¦  «        dk    r|d         nt          |¦  «        dk    r|d         nd }
g }g }|r|d         n|d         }t          j        | t          |¦  «        ¦  «        }|r|d d d…         }|d         }|d         }|                     dd|¦  «        |                     dd|¦  «        }}|D �]5} | j        d         }t          j        | ||¦  «        } ||k     ru|                     |                     d|||z
  ¦  «        |                     d|||z
  ¦  «        f¦  «         |                     dd|¦  «        |                     dd|¦  «        }}||k    r^t          j	        ||                     d|||z
  ¦  «        fd¦  «        }t          j	        ||                     d|||z
  ¦  «        fd¦  «        }t          | ||||	|
d¬¦  «        \  }}|}|                     |¦  «         �Œ7|r|                     ¦   «          ||f}na|                     ||f¦  «         |                     ¦   «          t          |Ž \  }}t          j        |d¦  «        t          j        |d¦  «        f}t          j        |d¦  «        }||fS )	Nr   r"   r#   rŒ   r  rO  rV   rn  )r�  rC   rÒ  r€  r:  r"  rÆ   r*  r®  r  rl  r  r  r;  )r  r  r  r  r  r  r  r   r!  r"  rd  r#  r	  r  r$  Úorig_hxÚorig_cxr<  r=  r¨  r%  Úhidden0Úhidden1rË   s                           r,   Úone_layer_lstm_dataru  N  sø  € Ø�q”	€IØ�q”	€IØ%Ð/ˆf�QŒiˆi¨4€GØ%Ð/ˆf�QŒiˆi¨4€Gå˜‘[”[ AÒ%Ð%ˆˆqŒ	ˆ	½¸F¹¼ÀqÒ8HÐ8H¨6°!¬9¨9Èdð ð €KØ€Gà)0ÐD�k "”o�o°kÀ!´n€OÝ”˜C¥ kÑ!2Ô!2Ñ3Ô3€IØð $Ø˜d˜d ˜d”Oˆ	à�QŒi€GØ�QŒi€Gà�Š�q˜!˜_Ñ-Ô-Ø�Š�q˜!˜_Ñ-Ô-ð 	€Bð
 ð ñ ˆØŒI�aŒLˆÝŒh�s˜I wÑ/Ô/ˆð ˆÒÐØ�NŠNà—I’I˜a  O°aÑ$7Ñ8Ô8Ø—I’I˜a  O°aÑ$7Ñ8Ô8ðñô ð ð —Y’Y˜q ! QÑ'Ô'¨¯ª°1°a¸Ñ);Ô);�ˆBð ˆÒÐÝ”Ø�W—^’^ A ¸¸OÑ8KÑLÔLÐMÈqñô ˆBõ ”Ø�W—^’^ A ¸¸OÑ8KÑLÔLÐMÈqñô ˆBõ ˜3  B¨	°7¸IÐQRÐSÑSÔS‰ˆˆBØˆØ×Ò˜2ÑÔÐÑàð BØ×ÒÑÔÐØ˜"�Xˆ
ˆ
à�Š˜˜B�xÑ Ô Ð Ø�ŠÑÔÐÝ ˜=Ñˆ�Ý”Y˜w¨Ñ*Ô*­E¬I°g¸qÑ,AÔ,AÐAˆ
å
Œ)�K Ñ
#Ô
#€CØ�
ˆ?Ðr+   c                 ó>   — d„ } || ||¦  «        rt           S t          S )a*  Check whether we could use decompose lstm with mkldnn_rnn_layer.
    All the below conditions need to be met:
        * ``torch._C._get_mkldnn_enabled()`` returns ``True``.
        * All the input args are on CPU.
        * The dtypes of args are either torch.float or torch.bfloat16.
        * Inference.
        * ``has_projections`` returns ``False``.

    Args:
        * input: the input sequence to LSTM
        * hx: a tuple of the input hidden state and cell state ``(h_0, c_0)`` to LSTM
        * params: the weight and bias tensors of LSTM
    c                 ó4  — t           j                             ¦   «         sdS | gt          |¦  «        z   t          t	          j        |¦  «        ¦  «        z   }d„ |D ¦   «         }t          |¦  «        dk    rdS |                     ¦   «         }|t          j        d¦  «        k    rdS d„ |D ¦   «         }|D ]}|t           j	        t           j
        fvr dS Œ | j        rdS |d                              d¦  «        |d                              d¦  «        k    }|rdS dS )	NFc                 ó   — h | ]	}|j         ’Œ
S r*   rš  ©r5   Úts     r,   ú	<setcomp>zEselect_one_layer_lstm_function.<locals>.use_mkldnn.<locals>.<setcomp>¢  s   € Ð-Ð-Ð- �1”8Ð-Ð-Ð-r+   r"   râ  c                 ó   — h | ]	}|j         ’Œ
S r*   rì   ry  s     r,   r{  zEselect_one_layer_lstm_function.<locals>.use_mkldnn.<locals>.<setcomp>ª  s   € Ð+Ð+Ð+˜a�!”'Ð+Ð+Ð+r+   r   r#   T)rC   r‚  Ú_get_mkldnn_enabledr€  r	   Úfrom_iterabler�  Úpopr›  r  Úbfloat16Úrequires_gradr9  )	rÄ   r<  r  r©  Údevicesr›  Údtypesrí   r  s	            r,   Ú
use_mkldnnz2select_one_layer_lstm_function.<locals>.use_mkldnn�  s#  € ÝŒx×+Ò+Ñ-Ô-ð 	Ø�5à�'�D ™HœHÑ$¥t­EÔ,?ÀÑ,GÔ,GÑ'HÔ'HÑHˆØ-Ð- WÐ-Ñ-Ô-ˆÝˆw‰<Œ<˜1ÒÐØ�5à—’‘”ˆØ•U”\ %Ñ(Ô(Ò(Ð(Ø�5à+Ð+ 7Ð+Ñ+Ô+ˆØð 	ð 	ˆEØ�Uœ[­%¬.Ð9Ð9Ð9Ø�u�uð :ð Ôð 	Ø�5à˜Qœ%Ÿ*š* Q™-œ-¨2¨a¬5¯:ª:°a©=¬=Ò8ˆØð 	Ø�5àˆtr+   )rD  ro  )rÄ   r<  r  r„  s       r,   Úselect_one_layer_lstm_functionr…  Ž  s5   € ðð ð ð: €z�%˜˜VÑ$Ô$ð Ý$Ð$åÐr+   c	                 ó8  — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚t          |||d                              d¦  «        |d                              d¦  «        k    ¦  «        }t	          t          |d         |d         ¦  «        ¦  «        }	t          | ||¦  «        }
t          | |	||||||||
¦
  «
        \  }}t	          t          |Ž ¦  «        }|t          j	        |d         d¦  «        t          j	        |d         d¦  «        fS )Nr#   ú$lstm expects two hidden states, got r   r"   )
r�  r7  r  r9  r€  r  r…  rM  rC   rR  )rÄ   r<  r  r  r@  rz  rw  r
  rœ  r  rG  rË   rH  s                r,   Ú	lstm_implrˆ  À  s  € õ ˆ2�w„w�!‚|€|ÝÐMÅCÈÁGÄGÐMÐMÑNÔNÐNÝ˜6 :¨r°!¬u¯zªz¸!©}¬}ÀÀ1ÄÇ
Â
È1ÁÄÒ/MÑNÔN€FÝ•#�b˜”e˜R œUÑ#Ô#Ñ$Ô$€FÝ-¨e°R¸Ñ@Ô@€HÝ$ØØØØØØØØØØñô Ñ€Cˆõ �˜mÐ,Ñ-Ô-€MØ•”˜M¨!Ô,¨aÑ0Ô0µ%´+¸mÈAÔ>NÐPQÑ2RÔ2RÐRÐRr+   c	                 ó>  — t          |¦  «        dk    rt          dt          |¦  «        › �¦  «        ‚t          |||d                              d¦  «        |d                              d¦  «        k    ¦  «        }t	          t          |d         |d         ¦  «        ¦  «        }	t          | |	||||||dt          t          |¬¦  «        ¦
  «
        \  }
}t	          t          |Ž ¦  «        }|
t          j
        |d         d¦  «        t          j
        |d         d¦  «        fS )Nr#   r‡  r   r"   F)r  )r�  r7  r  r9  r€  r  rM  r   ru  rC   rR  r[  s               r,   Úlstm_data_implrŠ  ã  s  € õ ˆ2�w„w�!‚|€|ÝÐMÅCÈÁGÄGÐMÐMÑNÔNÐNÝ˜6 :¨r°!¬u¯zªz¸!©}¬}ÀÀ1ÄÇ
Â
È1ÁÄÒ/MÑNÔN€FÝ•#�b˜”e˜R œUÑ#Ô#Ñ$Ô$€FÝ$ØØØØØØØØØÝÕ#°Ð=Ñ=Ô=ñô Ñ€Cˆõ �˜mÐ,Ñ-Ô-€MØ•”˜M¨!Ô,¨aÑ0Ô0µ%´+¸mÈAÔ>NÐPQÑ2RÔ2RÐRÐRr+   c                 óp  — |                       dd¦  «        }t          j        |||¦  «                              dd¦  «        }|d         |d         z                        ¦   «         }|d         |d         z                        ¦   «         }	|d         |d         |z  z                        ¦   «         }
||
z
  |	z  |
z   S )NrŒ   r"   r#   r   )rc  rÆ   r*  rÈ   r¯   ©r  r  r  r!  r   r"  Úchunked_igatesÚchunked_hgatesÚ
reset_gateÚ
input_gateÚnew_gates              r,   Úgru_cellr’    s°   € Ø—Y’Y˜q !‘_”_€NÝ”X˜j¨)°WÑ=Ô=×CÒCÀAÀqÑIÔI€NØ  Ô# n°QÔ&7Ñ7×@Ò@ÑBÔB€JØ  Ô# n°QÔ&7Ñ7×@Ò@ÑBÔB€JØ˜qÔ! ^°AÔ%6¸Ñ%CÑD×JÒJÑLÔL€HØ˜Ñ! ZÑ/°(Ñ:Ð:r+   c                 ó˜  — t          j        | ||¦  «                             dd¦  «        }t          j        |||¦  «                             dd¦  «        }|d         |d         z                        ¦   «         }|d         |d         z                        ¦   «         }	|d         |d         |z  z                        ¦   «         }
||
z
  |	z  |
z   S )NrŒ   r"   r   r#   rb  rŒ  s              r,   Úgru_cell_datar”    sÂ   € Ý”X˜c 9¨gÑ6Ô6×<Ò<¸QÀÑBÔB€NÝ”X˜j¨)°WÑ=Ô=×CÒCÀAÀqÑIÔI€NØ  Ô# n°QÔ&7Ñ7×@Ò@ÑBÔB€JØ  Ô# n°QÔ&7Ñ7×@Ò@ÑBÔB€JØ˜qÔ! ^°AÔ%6¸Ñ%CÑD×JÒJÑLÔL€HØ˜Ñ! ZÑ/°(Ñ:Ð:r+   c	                 óâ   — t          ||d¦  «        }t          | |                     d¦  «        ||||||dt          t          |t
          ¬¦  «        ¦
  «
        \  }	}
|	t          j        |
d¦  «        fS )NFr   rZ  )r  rM  rQ  r   r&  r”  rC   rR  )r\  r  r<  r  r  r@  rz  rw  r
  rË   rH  s              r,   Úgru_impl_datar–    sz   € õ ˜6 :¨uÑ5Ô5€FÝ$ØØ
�	Š	�!‰ŒØØØØØØØÝÕ"°Å}ÐUÑUÔUñô Ñ€Cˆð •”˜M¨1Ñ-Ô-Ð-Ð-r+   c	                 óà   — t          ||d¦  «        }t          | |                     d¦  «        |||||||t          t          t
          ¬¦  «        ¦
  «
        \  }	}
|	t          j        |
d¦  «        fS )NFr   rP  )r  rM  rQ  r   r5  r’  rC   rR  )rÄ   r<  r  r  r@  rz  rw  r
  rœ  rË   rH  s              r,   Úgru_implr˜  5  sw   € õ ˜6 :¨uÑ5Ô5€FÝ$ØØ
�	Š	�!‰ŒØØØØØØØÝ•­Ð2Ñ2Ô2ñô Ñ€Cˆð •”˜M¨1Ñ-Ô-Ð-Ð-r+   c                 óØ   — t          |                      ¦   «         ||¦  «        }t          |d¦  «        }t          |d¦  «        }t          j        j                             | ||||¦  «        S ©Nr   r"   )rÒ  r9  rÕ  rC   rE  r‡   Ú_upsample_bilinear2d_aa©rÄ   r   Úalign_cornersrÐ  rÚ  Úscale_hÚscale_ws          r,   Úupsample_bilinear2d_aa_vecr   S  sb   € õ )¨¯ª©¬°{ÀMÑRÔR€EÝ˜m¨QÑ/Ô/€GÝ˜m¨QÑ/Ô/€GÝŒ9Œ>×1Ò1Øˆu�m W¨gñô ð r+   c                 óØ   — t          |                      ¦   «         ||¦  «        }t          |d¦  «        }t          |d¦  «        }t          j        j                             | ||||¦  «        S rš  )rÒ  r9  rÕ  rC   rE  r‡   Ú_upsample_bicubic2d_aarœ  s          r,   Úupsample_bicubic2d_aa_vecr£  _  ób   € õ )¨¯ª©¬°{ÀMÑRÔR€EÝ˜m¨QÑ/Ô/€GÝ˜m¨QÑ/Ô/€GÝŒ9Œ>×0Ò0Øˆu�m W¨gñô ð r+   c                 óØ   — t          |                      ¦   «         ||¦  «        }t          |d¦  «        }t          |d¦  «        }t          j        j                             | ||||¦  «        S rš  )rÒ  r9  rÕ  rC   rE  r‡   Ú_upsample_lanczos2d_aarœ  s          r,   Úupsample_lanczos2d_aa_vecr§  k  r¤  r+   c                 óš   — t          |                      ¦   «         ||¦  «        }|r|nd gt          |¦  «        z  }t          | |||¦  «        S r;   )rÒ  r9  r�  Ú_upsample_linear)rÄ   r   r�  rÐ  rÚ  rÔ  s         r,   Ú_upsample_linear_vecrª  w  sL   € õ )¨¯ª©¬°{ÀMÑRÔR€EØ+ÐDˆ]ˆ]°$°½#¸e¹*¼*Ñ1D€FÝ˜E 5¨-¸Ñ@Ô@Ð@r+   r�  c                 ó(   — t          | |||g¦  «        S r;   ©r©  )rÄ   r   r�  rï  s       r,   Úupsample_linear1dr­  …  s   € õ ˜E ;°À¸zÑJÔJÐJr+   c                 ó*   — t          | ||||g¦  «        S r;   r¬  )rÄ   r   r�  rî  rï  s        r,   Úupsample_bilinear2dr¯  �  s   € õ ˜E ;°ÀÈ(Ð?SÑTÔTÐTr+   c                 ó,   — t          | |||||g¦  «        S r;   r¬  )rÄ   r   r�  rõ  rî  rï  s         r,   Úupsample_trilinear3dr±  Ÿ  s&   € õ Øˆ{˜M¨H°hÀÐ+Iñô ð r+   c                 óP   — |r|dk    r| dz
  |dz
  z  ndS |�|dk    rd|z  n| |z  S )Nr"   rj   r   r*   )rå  ræ  r�  rq   s       r,   Ú_compute_scaler³  °  sK   € Øð VØ5=À²\°\�˜#‘ (¨S¡.Ñ1Ð1ÀqÐHà#Ð/°E¸A²I°Iˆs�U‰{ˆ{À7ÈXÑCUÐUr+   c                 ó&   — |r| |z  S | |dz   z  dz
  S ©Nr£   r*   )rq   Ú	dst_indexr�  s      r,   Ú_compute_source_indexr·  ·  s)   € Øð /Ø�yÑ Ð à˜	 C™Ñ(¨3Ñ.Ð.r+   ÚweightsÚweights_precisionc                 óÒ   — t          d„ t          | |¦  «        D ¦   «         ¦  «        d|dz
  z  z   }||z	  }t          j        |dd¦  «                             t          j        ¦  «        S )Nc              3   óš   K  — | ]F\  }}|                      t          j        ¦  «        |                      t          j        ¦  «        z  V — ŒGd S r;   )r=   rC   rG  )r5   rÏ  rú  s      r,   rØ  z%_sum_tensors_uint8.<locals>.<genexpr>Á  sX   è è € ð ð Ù26°!°Qˆ�Š�UŒ[ÑÔ˜AŸDšD¥¤Ñ-Ô-Ñ-ðð ð ð ð ð r+   r"   r   éÿ   )Ú_sum_tensorsr  rC   r“   r=   rˆ  )r˜  r¸  r¹  r·  s       r,   Ú_sum_tensors_uint8r¾  ¾  s}   € õ ð ð Ý:=¸cÀ7Ñ:KÔ:Kðñ ô ñ ô à	
Ð  1Ñ$Ñ	%ñ'€Fð Ð(Ñ(€FÝŒ;�v˜q #Ñ&Ô&×)Ò)­%¬+Ñ6Ô6Ð6r+   c                 óÞ   — t          j        | ¦  «                             ¦   «         }d}t          j        ||j        ¬¦  «        }d|d|dz   z  z  z   }|dk    }||                     ¦   «         z
  S )Né   rš  r£   r"   i €  )rC   rR  r‘   rŸ  r›  rú   )r¸  Ú
max_weightÚmax_weight_precisionÚ
precisionsr'  r¨  s         r,   Ú_compute_weight_precisionrÄ  È  sp   € Ý”˜WÑ%Ô%×)Ò)Ñ+Ô+€JØÐÝ”Ð2¸:Ô;LÐMÑMÔM€JØ�:  z°A¡~Ñ!6Ñ7Ñ7€FØ�gÒ€DØ $§(¢(¡*¤*Ñ,Ð,r+   c           	      ó$  ‡ ‡‡‡‡‡‡‡‡— ‰ j         d         }‰ j         dd …         }t          |¦  «        Št          j        ‰ t          j        j        ¬¦  «        \  }Šˆˆˆ fd„Šˆˆfd„t          t          |||¦  «        ¦  «        D ¦   «         }t          t          |Ž ¦  «        \  }ŠŠg }	t          ddgg‰z  Ž D ]dŠd d gˆˆˆfd„t          ‰¦  «        D ¦   «         z   }
t                               ‰ |
¦  «        }t          |‰¦  «        }|	                     |¦  «         Œet          t          ‰¦  «        ¦  «        D ]h}||         ‰|         z
                       dd	¦  «                             ‰¦  «        Šˆfd
„t          |	d d d…         |	dd d…         ¦  «        D ¦   «         }	Œit          |	¦  «        dk    rt%          dt          |	¦  «        › �¦  «        ‚|	d         }t          j        ‰ ¦  «        }‰ j        j        dk    r|dk     rt,          j        }t1          |t,          j        ¦  «        s$t%          dt+          |¦  «        j        › �¦  «        ‚|                     |¬¦  «        }‰                      ¦   «         s|                     ¦   «         }|S )Nr"   r#   r…  c                 óŠ  •— t          | |‰	|¦  «        }t          j        |‰j        ¬¦  «                             ‰
¬¦  «        }t          ||‰	¦  «                             d¬¦  «        } |j        |j        d         gdg|z  ¢R Ž }|                     t          j	        ¦  «        }|dz                        | dz
  ¬¦  «        }|||fS )Nrš  rì   r—   r�   r   r"   r�   )
r³  rC   rŸ  r›  r=   r·  r“   r1  r"  rÁ  )Úinp_sizeræ  rÔ  ÚnsqueezeÚscale_factorr¨  Úx_f32r6   Úxp1r�  rí   rÄ   s            €€€r,   Ú
get_valuesz$_upsample_linear.<locals>.get_valuesâ  sÂ   ø€ å% h°¸-ÈÑPÔPˆõ ŒL˜¨%¬,Ð7Ñ7Ô7×:Ò:ÀÐ:ÑGÔGˆå% l°A°}ÑEÔE×KÒKÐPSÐKÑTÔTˆØ�”˜eœk¨!œnÐ@°¨s°hÑ/?Ð@Ð@Ð@ˆØ�HŠH•U”[Ñ!Ô!ˆØ�1‰u�mŠm ¨1¡ˆmÑ-Ô-ˆØ�a˜ˆ}Ðr+   c           	      óF   •— g | ]\  }\  }}} ‰|||‰d z
  |z
  ¦  «        ‘ŒS r.  r*   )r5   r¨  rÇ  ræ  rÔ  rÌ  Ún_dimss        €€r,   r8   z$_upsample_linear.<locals>.<listcomp>ï  sL   ø€ ð ð ð á+ˆAÑ+�˜( Fð 	ˆ
�8˜X v¨v¸©z¸A©~Ñ>Ô>ðð ð r+   r   c                 óH   •— g | ]}‰|         d k    r‰|         n‰|         ‘ŒS r\  r*   )r5   ÚkrW  Úxp1sÚxss     €€€r,   r8   z$_upsample_linear.<locals>.<listcomp>ù  s1   ø€ ÐUÐUÐUÀ! q¨¤t¨q¢y y˜b œe˜e°d¸1´gÐUÐUÐUr+   r—   rj   c                 óL   •— g | ] \  }}|t          j        ||z
  ‰¦  «        z   ‘Œ!S r*   )rC   rß   )r5   Úv1Úv2Úxscales      €r,   r8   z$_upsample_linear.<locals>.<listcomp>   sD   ø€ ð 
ð 
ð 
ñ ��Bð •”˜2 ™7 FÑ+Ô+Ñ+ð
ð 
ð 
r+   z+Expected vs to have exactly 1 element, got rü  é   z$Expected result to be a Tensor, got rc  )r"  r�  rH   rI   rˆ  ÚINT_TO_FLOATrQ  r  r€  r
   rW   r‡   rý  r   r®  rh  r“   r=   r7  r   r›  rç  rC   rg  r4   r   r$   rº  r~  Úround)rÄ   r   r�  rÔ  rÿ  Ú	inp_sizesrY   r'  Úxs_f32Úvsr§  Úvr¨  r#  rd  rW  rí   rÌ  rÎ  rÑ  rÒ  rÖ  s   ` `            @@@@@@@r,   r©  r©  Ñ  sÞ  øøøøøøøøø€ ð ”˜Q”€JØ”˜A˜B˜B”€IÝ�‰^Œ^€FåÔ'ØÝ!ÔAÔNðñ ô �H€A€uð
ð ð ð ð ð ð ðð ð ð ð å/8Ý�	˜;¨Ñ/Ô/ñ0
ô 0
ðñ ô €Fõ �C ˜LÑ)Ô)Ñ€FˆB�à	€BÝ˜˜1�v�h Ñ'Ð(ð ð ˆØ�TˆlÐUÐUÐUÐUÐUÐUÅuÈVÁ}Ä}ÐUÑUÔUÑUˆÝ×Ò˜u cÑ*Ô*ˆÝ# A uÑ-Ô-ˆØ
�	Š	�!‰Œˆˆå•e˜F‘m”mÑ$Ô$ð 
ð 
ˆØ˜”)˜b œeÑ#×*Ò*¨3°Ñ4Ô4×7Ò7¸Ñ>Ô>ˆð
ð 
ð 
ð 
õ ˜b   1 œg r¨!¨$¨Q¨$¤xÑ0Ô0ð
ñ 
ô 
ˆˆõ ˆ2�w„w�!‚|€|ÝÐTÍ3ÈrÉ7Ì7ÐTÐTÑUÔUÐUØ�ŒU€Fõ Ô/°Ñ6Ô6€Mð „|Ô˜FÒ"Ð" z°B¢ ÝÔ/ˆå�f�eœlÑ+Ô+ð 
ÝØJµ4¸±<´<Ô3HÐJÐJñ
ô 
ð 	
ð ×Ò¨]ÐÑ;Ô;€Fà×"Ò"Ñ$Ô$ð  Ø—’‘”ˆà€Mr+   rW  rX  c                 ó"   — | j         |j         k    S r;   rñ  )rW  rX  s     r,   Úis_same_sizerß    s   € àŒ7�a”gÒÐr+   c                 ó8   — t                                | |¦  «        S r;   )r‡   r£  )r6   r"  rJ   s      r,   Ú_reshape_aliasrá  $  s   € õ �9Š9�Q˜ÑÔÐr+   c                 ó8   — t                                | |¦  «        S r;   )r‡   rª  )r6   r¦  s     r,   rý  rý  *  s   € å�:Š:�a˜Ñ!Ô!Ð!r+   c                 ó<   — t                                | |||¦  «        S r;   )r‡   r“  )r6   r¦  r   r3  s       r,   r5  r5  /  s   € å�>Š>˜!˜W e¨ZÑ8Ô8Ð8r+   c                 óž  — |D ]7}|�3t          j        |j        t           j        t           j        fv d„ ¦  «         Œ8t          j        |j        t           j        k    d„ ¦  «         ddlm}  ||                      ¦   «         dk    ¦  «        r;t           j	         
                    | |¦  «        }|                      |j        |¦  «        S t          t          |¦  «        ¦  «        D ]<}||         }|�0|                     d|                      |¦  «        dz
  ¬¦  «        ||<   Œ=t"                               | |¦  «                             | |¦  «        S )Nc                  ó   — dS ©Nz3tensors used as indices must be long or int tensorsr*   r*   r+   r,   r…   z&_unsafe_masked_index.<locals>.<lambda>:  rÅ  r+   c                  ó   — dS ©Nz*tensors used as masks must be bool tensorsr*   r*   r+   r,   r…   z&_unsafe_masked_index.<locals>.<lambda>?  ó   € Ð<€ r+   r   r�  r"   r‘  )rC   r†   rí   r   r–  r¡  r~  r�  rã   r  Úmeta_index_Tensorrñ   r"  rW   r�  r“   r9  r‡   rý  rò  )r6   r¨  r¦  Úfillrª  r�  Úmeta_resultr¨  s           r,   r¤  r¤  4  sK  € àð ð ˆØÐÝŒLØ”¥¤
­E¬IÐ6Ð6ØMÐMñô ð øõ
 
„LØŒ
•e”jÒ Ø<Ð<ñô ð ð
 EÐDÐDÐDÐDÐDà€~�a—g’g‘i”i 1’nÑ%Ô%ð 3ÝÔ/×AÒAÀ!ÀWÑMÔMˆØ�zŠz˜+Ô+¨TÑ2Ô2Ð2å•3�w‘<”<Ñ Ô ð ?ð ?ˆØ˜”
ˆØÐØŸš¨°·²°q±	´	¸A±˜Ñ>Ô>ˆG�A‰Jøå×Ò˜a Ñ)Ô)×5Ò5°t°e¸TÑBÔBÐBr+   c                 ód  — |D ]7}|�3t          j        |j        t           j        t           j        fv d„ ¦  «         Œ8t          j        |j        t           j        k    d„ ¦  «         |                      ¦   «         dk    r|                      ¦   «         S t          t          |¦  «        ¦  «        D ]P}||         }|�D| 
                    |                      |¦  «         |                      |¦  «        dz
  ¬¦  «        ||<   ŒQ|                     | d¦  «        }t                               | ||d¬¦  «        S )Nc                  ó   — dS ræ  r*   r*   r+   r,   r…   z5_unsafe_masked_index_put_accumulate.<locals>.<lambda>V  rÅ  r+   c                  ó   — dS rè  r*   r*   r+   r,   r…   z5_unsafe_masked_index_put_accumulate.<locals>.<lambda>[  ré  r+   r   r"   r‘  Tr2  )rC   r†   rí   r   r–  r¡  rã   rž  rW   r�  r“   r9  rò  r‡   r5  )r6   r¨  r¦  r'  rª  r¨  Úmasked_values          r,   r¡  r¡  P  s$  € àð ð ˆØÐÝŒLØ”¥¤
­E¬IÐ6Ð6ØMÐMñô ð øõ
 
„LØŒ
•e”jÒ Ø<Ð<ñô ð ð
 	‡w‚w�y„y�A‚~€~Ø�wŠw‰yŒyÐå•3�w‘<”<Ñ Ô ð Hð HˆØ˜”
ˆØÐØŸš¨!¯&ª&°©)¬)¨¸¿ºÀ¹¼ÀQ¹˜ÑGÔGˆG�A‰Jøà×%Ò% t e¨QÑ/Ô/€LÝ×!Ò! ! W¨lÀtÐ!ÑLÔLÐLr+   c                 óö  — |                       ¦   «         }d}|dk     rd}|�9|dk    r,dg|z  }|j        d         ||<   |                     |¦  «        }n|}| |z  } t          j        ||k    |d¦  «        }	|	                     |¦  «        }
t          j        | ||
¦  «                             |¦  «         }t          j        ||k    |d¦  «        }|t          j	        j
        k    r |dk    r|                      dd¦  «        }||fS |�r|                     | j        ¦  «        }t          j        |||
¦  «                             |¦  «        }t          j        ||k    |d¦  «        }|                     ¦   «         }n+||k                         ¦   «                              | ¦  «        }|t          j        j
        k    r|                     ¦   «         }n,|t          j        j
        k    r|                     ¦   «         |z  }||fS )Nr"   r#   r   r*   r—   )rR   r"  r£  rC   rl   rX   Úgatherr  r!   r'   r   rñ   r�  rú   r=   r)   r(   )r~   r  rÒ   r÷   r*  rÎ  r2  r"  Úwr3  Úsafe_target_r#  r+  Úwsums                 r,   Ú_nll_loss_forwardrö  j  sè  € ð �XŠX‰ZŒZ€FØ€KØ�‚z€zØˆàÐØ�AŠ:ˆ:àðàñˆEð "(¤¨a¤ˆE�+ÑØ—’˜EÑ"Ô"ˆAˆAàˆAØ�a‰xˆÝ”+˜f¨Ò4°f¸aÑ@Ô@€KØ×(Ò(¨Ñ5Ô5€Lõ Œl˜4 ¨lÑ;Ô;×CÒCÀKÑPÔPÐP€FåŒ[˜ <Ò/°¸Ñ;Ô;€Fà•I”NÔ(Ò(Ð(¨V°aªZ¨ZØ—}’} R¨Ñ-Ô-ˆØ�|Ð#Ð#àÐà�HŠH�T”ZÑ Ô ˆÝŒ|˜A˜{¨LÑ9Ô9×AÒAÀ+ÑNÔNˆÝŒ{˜6 \Ò1°4¸Ñ;Ô;ˆØ—x’x‘z”zˆˆà ,Ò.×3Ò3Ñ5Ô5×8Ò8¸Ñ>Ô>ˆà•I”MÔ'Ò'Ð'Ø—’‘”ˆˆØ	•i”nÔ*Ò	*Ð	*Ø—’‘” Ñ,ˆà�<ÐÐr+   c                 óÌ  ‡ ‡— ‰                       ¦   «         dk    r‰                       ¦   «         dk    s%t          d‰                       ¦   «         › d�¦  «        ‚‰                      ¦   «         dk    r%t          d‰                      ¦   «         › d�¦  «        ‚‰                       ¦   «         dk    o‰                      ¦   «         dk    }|s3t          j        ‰ j        d         ‰j        d         k    ˆ ˆfd„¦  «         ‰ j        d         }|�J|                      ¦   «         dk    r|                     ¦   «         |k    st          d	|› d
|j        › �¦  «        ‚t          ‰ ‰|||¦  «        S )Nr   r#   rE  rF  r"   rG  c                  ó*   •— d‰ j         › d‰j         › d�S )NrH  rI  rJ  rñ  )r~   r  s   €€r,   r…   z"nll_loss_forward.<locals>.<lambda>´  s   ø€ ÐV°´ÐVÐVÀvÄ|ÐVÐVÐV€ r+   rV   z/weight tensor should be defined either for all z7 classes or no classes but got weight tensor of shape: )rR   r7  rC   r†   r"  rã   rö  )r~   r  rÒ   r÷   r*  rL  Ú	n_classess   ``     r,   Únll_loss_forwardrú     sn  øø€ ð �HŠH‰JŒJ˜ŠNˆN˜tŸxšx™zœz¨Qš˜ÝÐRÀTÇXÂXÁZÄZÐRÐRÐRÑSÔSÐSØ‡z‚z�|„|�aÒÐÝØ_ÐPV×PZÒPZÑP\ÔP\Ð_Ð_Ð_ñ
ô 
ð 	
ð —8’8‘:”: ’?Ð8 v§z¢z¡|¤|°qÒ'8€LØð 
ÝŒØŒJ�qŒM˜Vœ\¨!œ_Ò,ØVÐVÐVÐVÐVñ	
ô 	
ð 	
ð
 ”
˜2”€IàÐ 6§:¢:¡<¤<°1Ò#4Ð#4¸¿º¹¼È9Ò9TÐ9TÝð>¸ið >ð >Ø/5¬|ð>ð >ñ
ô 
ð 	
õ
 ˜T 6¨6°9¸lÑKÔKÐKr+   c                 ó(   — t          | ||||¦  «        S r;   )rö  )r~   r  rÒ   r÷   r*  s        r,   Únll_loss2d_forwardrü  Â  s   € õ ˜T 6¨6°9¸lÑKÔKÐKr+   ÚAc                 ó0   — |dz   | z  |dz   z
  | z  | z  dz   S )Nr#   rŒ   r"   r*   ©r6   rý  s     r,   Ú_upsample_cubic_convolution1r   Ð  s(   € Ø�‰U�a‰K˜1˜q™5Ñ! QÑ&¨Ñ*¨QÑ.Ð.r+   c                 ó<   — || z  d|z  z
  | z  d|z  z   | z  d|z  z
  S )Nr  é   rO  r*   rÿ  s     r,   Ú_upsample_cubic_convolution2r  Ô  s0   € Ø�‰U�Q˜‘U‰]˜aÑ ! a¡%Ñ'¨1Ñ,¨q°1©uÑ4Ð4r+   rz  c                 óð  — d}| j         t          j         d¦  «        k    r‘t          j        | d| z
  gd¬¦  «        }t          j        | dz   d| z
  gd¬¦  «        }t          ||¦  «        }t	          ||¦  «        }t          j        |d¬¦  «        \  }}t          j        |d¬¦  «        \  }}	|||	|fS t          | dz   |¦  «        t	          | |¦  «        t	          d| z
  |¦  «        t          d| z
  |¦  «        fS )Ng      è¿râ  rj   r   rƒ   rë   )r›  rC   rR  r  r   rQ  )
rz  rý  Útt1Útt2Úw03Úw12r8  r;  r9  r:  s
             r,   Ú _upsample_get_cubic_coefficientsr	  Ø  s  € Ø€Aà„x•5”< Ñ&Ô&Ò&Ð&ÝŒk˜1˜c A™g˜,¨AÐ.Ñ.Ô.ˆÝŒk˜1˜s™7 C¨!¡GÐ,°!Ð4Ñ4Ô4ˆÝ*¨3°Ñ2Ô2ˆÝ*¨3°Ñ2Ô2ˆÝ”˜c qÐ)Ñ)Ô)‰ˆˆBÝ”˜c qÐ)Ñ)Ô)‰ˆˆBØ�2�r˜2ˆ~Ðõ )¨¨S©°!Ñ4Ô4Ý(¨¨AÑ.Ô.Ý(¨¨q©°!Ñ4Ô4Ý(¨¨q©°!Ñ4Ô4ð	
ð 	
r+   ÚcoeffsÚtsc                 ón   — t          |¦  «        }t          d„ t          | |¦  «        D ¦   «         ¦  «        S )Nc              3   ó&   K  — | ]\  }}||z  V — Œd S r;   r*   ©r5   r  r  s      r,   rØ  z+_upsample_cubic_interp1d.<locals>.<genexpr>î  s*   è è € ÐEÐE¡H R¨˜˜R™ÐEÐEÐEÐEÐEÐEr+   )r	  r½  r  )r
  r  Úcoeffs2s      r,   Ú_upsample_cubic_interp1dr  ì  s6   € Ý.¨rÑ2Ô2€GÝÐEÐEµ°F¸GÑ0DÔ0DÐEÑEÔEÑEÔEÐEr+   c                 ó6   — t          t          j        | ¦  «        S r;   )r   rC   rF  )r  s    r,   r½  r½  ò  s   € Ý•%”)˜RÑ Ô Ð r+   Ú	num_stepsc                 óˆ   — | dk    rt          j        d||¬¦  «        S |s| dz
  | z  nd}t          j        | || ||¬¦  «        S )Nr"   r   rœ  )Ústepsr›  rí   )rC   r°  Úlinspace)r  r�  rí   r›  rW  s        r,   Ú_linspace_from_neg_oner  ö  sY   € ð �A‚~€~ÝŒ|˜A f°EÐ:Ñ:Ô:Ð:à-:ÐAˆ)�a‰-˜9Ñ	$Ð	$À€AÝŒ>˜1˜"˜a y¸ÀuÐMÑMÔMÐMr+   ÚthetaÚhró  c                 óè  — | j         }| j        }t          ||||¦  «                             d|d¦  «        }t          ||||¦  «                             |dd¦  «        }t	          j        d||¬¦  «        }t          j        j                             |ddd¬¦  «        }t          j        j                             |ddd¬¦  «        }t          j        j                             |d	dd¬¦  «        }||z   |z   S )
Nr"   )r"   r"   r"   rÀ  )r   r#   Úconstantr   ©rõ  r>  r   ©r"   r"   )r#   r   ©	rí   r›  r  r£  rC   r   rõ  rY  rõ  )	r  r  ró  r�  rí   r›  Úgrid_xÚgrid_yÚgrid_ones	            r,   Ú_make_base_grid_4dr!     së   € ØŒK€EØŒ\€Fõ $ A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÑRÔR€FÝ# A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÑRÔR€FÝŒz˜)¨5¸Ð@Ñ@Ô@€Hõ ŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒxÔ"×&Ò& x°VÀ*ÐTUÐ&ÑVÔV€HØ�F‰?˜XÑ%Ð%r+   rì  c                 ó’  — | j         }| j        }t          ||||¦  «                             dd|d¦  «        }t          ||||¦  «                             d|dd¦  «        }t          ||||¦  «                             |ddd¦  «        }	t	          j        d||¬¦  «        }
t          j        j                             |ddd¬¦  «        }t          j        j                             |ddd¬¦  «        }t          j        j                             |	d	dd¬¦  «        }	t          j        j                             |
d
dd¬¦  «        }
||z   |	z   |
z   S )Nr"   )r"   r"   r"   r"   rÀ  )r   rŒ   r  r   r  r&  r  )rŒ   r   r  )r  rì  r  ró  r�  rí   r›  r  r  Úgrid_zr   s              r,   Ú_make_base_grid_5dr$    s?  € ØŒK€EØŒ\€Få# A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÐSTÑUÔU€FÝ# A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÐSTÑUÔU€FÝ# A }°e¸VÑDÔD×IÒIÈ!ÈQÐPQÐSTÑUÔU€FÝŒz˜,¨e¸FÐCÑCÔC€Hõ ŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒXÔ ×$Ò$ V°¸jÐPQÐ$ÑRÔR€FÝŒxÔ"×&Ò& x°VÀ*ÐTUÐ&ÑVÔV€HØ�F‰?˜VÑ# hÑ.Ð.r+   c                 óð   — |\  }}}}t          | |||¬¦  «        }|                     ddd¦  «        | j                             d¦  «        z                       d¦  «        }|                     |||d¦  «        S )N©r�  rV   rŒ   r"   re  r#   )r!  r£  ri  rX   rú   )	r  r9  r�  rf  rY   r  ró  Ú	base_gridÚgrids	            r,   Ú_affine_grid_generator_4dr)  "  sw   € Ø�J€A€qˆ!ˆQÝ" 5¨!¨Q¸mÐLÑLÔL€Ið �NŠN˜2˜q !Ñ$Ô$ u¤x×'9Ò'9¸!Ñ'<Ô'<Ñ<×AÒAÀ"ÑEÔE€DØ�9Š9�Q˜˜1˜aÑ Ô Ð r+   c                 óö   — |\  }}}}}t          | ||||¬¦  «        }|                     ddd¦  «        | j                             d¦  «        z                       d¦  «        }	|	                     ||||d¦  «        S )Nr&  rV   rO  r"   re  rŒ   )r$  r£  ri  rX   rú   )
r  r9  r�  rf  rY   rì  r  ró  r'  r(  s
             r,   Ú_affine_grid_generator_5dr+  ,  s}   € Ø�M€A€qˆ!ˆQ�Ý" 5¨!¨Q°ÀÐOÑOÔO€Ið �NŠN˜2˜q !Ñ$Ô$ u¤x×'9Ò'9¸!Ñ'<Ô'<Ñ<×AÒAÀ"ÑEÔE€DØ�9Š9�Q˜˜1˜a Ñ#Ô#Ð#r+   c                 óº   — t          j        t          |¦  «        dv d„ ¦  «         t          |¦  «        dk    rt          | ||¬¦  «        S t	          | ||¬¦  «        S )NrK  c                  ó   — dS )NzCaffine_grid_generator needs 4d (spatial) or 5d (volumetric) inputs.r*   r*   r+   r,   r…   z'affine_grid_generator.<locals>.<lambda><  s   € ÐU€ r+   rO  r&  )rC   r†   r�  r)  r+  )r  r9  r�  s      r,   Úaffine_grid_generatorr.  6  sg   € õ 
„LÝˆD‰	Œ	�VÐØUÐUñô ð õ ˆ4�y„y�A‚~€~Ý(¨°ÀMÐRÑRÔRÐRå(¨°ÀMÐRÑRÔRÐRr+   r(  Úinterpolation_modeÚpadding_modeÚ_expand_gridc           	      óœ  ‡ ‡‡‡‡‡‡ ‡!‡"‡#‡$‡%‡&‡'‡(‡)‡*‡+‡,‡-‡.‡/‡0‡1‡2— t          j        ‰dv ˆfd„¦  «         t          j        ‰dv ˆfd„¦  «         dt          dt          dt          fˆfd„Š2dt          dt          d	t          dt          fd
„Š0dt          dt          dt          fˆˆˆ0fd„Š$dt          dt          dt          fˆ$ˆ2fd„}‰ j        \  Š!ŠŠ(Š)|j        \  }Š.Š/}|dk    rt          d|› �¦  «        ‚ddlm}	m}
 t          j	        t           j
        ¦  «        j        }‰ j        j        dv o |	 |
‰(|k    ‰)|k    ¦  «        ¦  «        }|rt           j
        nt           j        Š+‰r0|                     ‰!d‰.‰/|¦  «                             ‰!‰‰.‰/d¦  «        }dt          dt          dt          fˆ(ˆ)fd„Š*t          j        ‰!‰ j        ¬¦  «                             ‰!ddd¦  «        Š"t          j        ‰‰ j        ¬¦  «                             d‰dd¦  «        Š dt          dt          dt          dt$          fˆˆ!ˆˆ*ˆ+ˆ.ˆ/fd„Š#dt          dt          dt          fˆ ˆ"ˆ ˆ#fd„Š&|d         }|d         }‰dk    rª ||‰)¦  «        } ||‰(¦  «        }|                     ¦   «         |                     ¦   «         cŠ,Š-‰,dz   ‰-}}‰,‰-dz   }}||}}||z
  ||z
  z  }||z
  ||z
  z  }||z
  ||z
  z  }|‰,z
  |‰-z
  z  }t)          ˆ&fd„‰,‰-|f|||f|||f|||ffD ¦   «         ¦  «        S ‰dk    rM ||‰)¦  «        } ||‰(¦  «        }|                     ¦   «         }|                     ¦   «         } ‰&||d¦  «        S  ‰2|‰)¦  «        } ‰2|‰(¦  «        }|                     ¦   «         Š,|                     ¦   «         Š-|‰,z
  Š1|‰-z
  }‰s*‰1                     d¦  «        Š1|                     d¦  «        }dt          dt          dt          fˆ$ˆ&ˆ(ˆ)fd„Š'd t          dt          fˆ'ˆ,ˆ-ˆ1fd!„Š%t/          ˆ%fd"„t1          d#¦  «        D ¦   «         ¦  «        }t3          ||¦  «        S )$N)r   r"   r#   c                  ó   •— d‰ › �S )NzInvalid interpolation mode r*   )r/  s   €r,   r…   z"_grid_sampler_2d.<locals>.<lambda>U  s   ø€ ÐBÐ.@ÐBÐB€ r+   c                  ó   •— d‰ › �S )NzInvalid padding mode r*   )r0  s   €r,   r…   z"_grid_sampler_2d.<locals>.<lambda>X  s   ø€ Ð+QÀ<Ð+QÐ+Q€ r+   Úcoordsr9  rS   c                 óB   •— ‰r|dz  dz
  n|dz  }|dz  dz
  }| |z  |z   S rµ  r*   )r5  r9  rß   Úofsr�  s       €r,   Úunnormalizez%_grid_sampler_2d.<locals>.unnormalize[  s>   ø€ ð %2ÐCˆt�c‰z˜CÑÐ¸¸s¹
ˆØ�S‰j˜3ÑˆØ˜‰|˜cÑ!Ð!r+   Ú	twice_lowÚ
twice_highc                 ó^  — ||k    rt          j        | ¦  «        S |dz  }||z
  dz  }| |z
                       ¦   «         }t          j        ||¦  «        }||z                       ¦   «                              t           j        ¬¦  «        }t          j        |dz  dk    ||z   ||z   |z
  ¦  «        S )Nr#   rì   r"   r   )rC   r  rä   ÚfmodÚfloorr=   Úint8rl   )r5  r9  r:  Ú
coords_minÚcoords_spanÚcoords2ÚextraÚflipss           r,   Úreflect_coordinatesz-_grid_sampler_2d.<locals>.reflect_coordinatesf  s¸   € Ø˜
Ò"Ð"ÝÔ# FÑ+Ô+Ð+Ø ‘]ˆ
Ø! IÑ-°Ñ2ˆØ˜JÑ&×+Ò+Ñ-Ô-ˆÝ”
˜7 KÑ0Ô0ˆØ˜;Ñ&×-Ò-Ñ/Ô/×2Ò2½¼Ð2ÑDÔDˆÝŒ{Ø�A‰I˜ŠN˜E JÑ.°¸jÑ0HÈ5Ñ0Pñ
ô 
ð 	
r+   c                 óÖ   •— ‰dk    r| S ‰dk    rt          j        | d|dz
  ¦  «        S ‰r ‰| dd|dz
  z  ¦  «        }n ‰| dd|z  dz
  ¦  «        }t          j        |d|dz
  ¦  «        S )Nr   r"   r#   rV   r’   )r5  r9  Úcoords_reflectedr�  r0  rD  s      €€€r,   Úcompute_coordinatesz-_grid_sampler_2d.<locals>.compute_coordinatesr  s•   ø€ Ø˜1ÒÐØˆMØ˜QÒÐÝ”;˜v q¨$°©(Ñ3Ô3Ð3àð QØ#6Ð#6°v¸qÀ!ÀtÈaÁxÁ.Ñ#QÔ#QÐ Ð à#6Ð#6°v¸rÀ1ÀtÁ8ÈaÁ<Ñ#PÔ#PÐ Ý”;Ð/°°D¸1±HÑ=Ô=Ð=r+   c                 ó4   •—  ‰| |¦  «        } ‰||¦  «        S r;   r*   )r5  r9  Ú	coords_unrG  r8  s      €€r,   Úcompute_source_indexz._grid_sampler_2d.<locals>.compute_source_index~  s'   ø€ Ø�K ¨Ñ-Ô-ˆ	Ø"Ð" 9¨dÑ3Ô3Ð3r+   r#   z4grid last dimension must be 2 (for x,y coords), got r   )r�  Úsym_and)rü  Úxpur"   rÒ  Úysc                 óš   •— t          j        d| k    t          j        | ‰k     t          j        d|k    |‰k     ¦  «        ¦  «        ¦  «        S rv   ©rC   r¢  )rÒ  rM  ÚiHÚiWs     €€r,   Úin_bounds_condz(_grid_sampler_2d.<locals>.in_bounds_cond›  sH   ø€ ÝÔ Ø�ŠG•UÔ& r¨B¢wµÔ0AÀ!ÀrÂ'È2ÐPRÊ7Ñ0SÔ0SÑTÔTñ
ô 
ð 	
r+   rš  Úwsc                 óÀ   •‡‡—  ‰| |¦  «        Š‰r‰ndŠt          ˆˆˆˆ
ˆfd„|                      ‰	¬¦  «        |                     ‰	¬¦  «        |fD ¦   «         ¦  «        S )Nr"   c              3   óp   •K  — | ]0}t          j        ‰|d ¦  «                             ‰‰‰‰¦  «        V — Œ1dS rÖ  )rC   rl   r£  )r5   rz  r	  rú  rå  ÚoHÚoWs     €€€€€r,   rØ  z1_grid_sampler_2d.<locals>.clip.<locals>.<genexpr>ª  sY   øè è € ð 
ð 
àõ ŒK˜˜a Ñ#Ô#×(Ò(¨¨A¨r°2Ñ6Ô6ð
ð 
ð 
ð 
ð 
ð 
r+   rì   )rð  r=   )rÒ  rM  rS  rú  rå  r
  r	  r1  rR  Úindex_dtyperV  rW  s      @@€€€€€€€r,   Úclipz_grid_sampler_2d.<locals>.clip£  s•   øøø€ Øˆ~˜b "Ñ%Ô%ˆð
 Ð$ˆAˆA 1ˆÝð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
à—e’e +�eÑ.Ô.°·²¸K°Ñ0HÔ0HÈ"ÐMð
ñ 
ô 
ñ 
ô 
ð 	
r+   ÚixÚiyc                 óD   •—  ‰	| ||¦  «        \  }}}‰‰‰||f         |z  S r;   r*   )
rZ  r[  ró  Úidx_xÚidx_yÚw_ÚC_idxÚN_idxrW  rY  s
         €€€€r,   Úget_summandz%_grid_sampler_2d.<locals>.get_summand¯  s4   ø€ à˜4  B¨™?œ?Ñˆˆu�bØ�˜˜u eÐ+Ô,¨rÑ1Ð1r+   ).r   ).r"   c              3   ó:   •K  — | ]\  }}} ‰|||¦  «        V — Œd S r;   r*   )r5   rZ  r[  ró  rb  s       €r,   rØ  z#_grid_sampler_2d.<locals>.<genexpr>Å  sK   øè è € ð 
ð 
á��R˜ð ˆK˜˜B Ñ"Ô"ð
ð 
ð 
ð 
ð 
ð 
r+   c                 óN   •—  ‰| ‰¦  «        } ‰|‰¦  «        } ‰||d¦  «        S r_   r*   )rZ  r[  r6   r]   rG  rb  rP  rQ  s       €€€€r,   Úget_value_boundedz+_grid_sampler_2d.<locals>.get_value_boundedä  s;   ø€ Ø#Ð# B¨Ñ+Ô+ˆAØ#Ð# B¨Ñ+Ô+ˆAØ�;˜q ! QÑ'Ô'Ð'r+   r7  c                 ó¢   •— ‰| dz
  z   } ‰‰dz
  |¦  «         ‰‰|¦  «         ‰‰dz   |¦  «         ‰‰dz   |¦  «        f}t          |‰¦  «        S )Nr"   r#   )r  )r7  Úiy_ofsÚcsre  Úix_nwÚiy_nwÚtxs      €€€€r,   Ú	get_coeffz#_grid_sampler_2d.<locals>.get_coeffé  sv   ø€ Ø˜c A™gÑ&ˆFà!Ð! %¨!¡)¨VÑ4Ô4Ø!Ð! %¨Ñ0Ô0Ø!Ð! %¨!¡)¨VÑ4Ô4Ø!Ð! %¨!¡)¨VÑ4Ô4ð	ˆBõ ,¨B°Ñ3Ô3Ð3r+   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r;   r*   )r5   r7  rl  s     €r,   rØ  z#_grid_sampler_2d.<locals>.<genexpr>ó  s+   øè è € Ð:Ð:¨#�y�y ‘~”~Ð:Ð:Ð:Ð:Ð:Ð:r+   rO  )rC   r†   r   r–  r"  r7  r~  r�  rK  r  rG  r‘   r›  rç  rÁ  r£  r�  rŸ  r   r=  r½  rÙ  rX   rð  rW   r  )3rW  r(  r/  r0  r�  r1  rJ  rY   Útwor�  rK  Ú	int32_maxÚuse_32bit_indicesr6   r]   rZ  r[  Úix_neÚiy_neÚix_swÚiy_swÚix_seÚiy_seÚw_nwÚw_neÚw_swÚw_seÚ
ix_nearestÚ
iy_nearestÚtyr
  r
  r`  r	  ra  rY  rG  rl  rb  re  rP  rQ  rR  rX  ri  rj  rV  rW  rD  rk  r8  s3   ` ````                         @@@@@@@@@@@@@@@@@@@@r,   Ú_grid_sampler_2dr~  D  s&  øøøøøøøøøøøøøøøøøøøøøøøøø€ õ 
„LØ˜iÐ'ØBÐBÐBÐBñô ð õ 
„LØ˜	Ð!Ð#QÐ#QÐ#QÐ#Qñô ð ð"�Fð "­#ð "µ&ð "ð "ð "ð "ð "ð "ð

¥Fð 

µsð 

Íð 

ÕPVð 

ð 

ð 

ð 

ð
>¥Fð 
>µ#ð 
>½&ð 
>ð 
>ð 
>ð 
>ð 
>ð 
>ð 
>ð 
>ð4¥Vð 4µ3ð 4½6ð 4ð 4ð 4ð 4ð 4ð 4ð 4ð ”7�L€A€qˆ"ˆbØ”Z�N€A€rˆ2ˆsØ
ˆa‚x€xÝØHÀ3ÐHÐHñ
ô 
ð 	
ð NÐMÐMÐMÐMÐMÐMÐMå”�EœKÑ(Ô(Ô,€Ið œœ¨Ð8ð ¸^¸^Øˆ��i’  y¢Ñ1Ô1ñ>ô >Ðð "3ÐC•%”+�+½¼€Kàð Dð �yŠy˜˜A˜r 2 sÑ+Ô+×2Ò2°1°a¸¸RÀÑCÔCˆð
�6ð 
¥vð 
µ&ð 
ð 
ð 
ð 
ð 
ð 
ð 
õ
 ŒL˜ 1¤8Ð,Ñ,Ô,×1Ò1°!°Q¸¸1Ñ=Ô=€EÝŒL˜ 1¤8Ð,Ñ,Ô,×1Ò1°!°Q¸¸1Ñ=Ô=€Eð

•ð 

�Vð 

­ð 

Õ4Fð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð 

ð2�ð 2¥Fð 2µ&ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð 2ð
 	ˆVŒ€AØˆVŒ€Aà˜QÒÐØ!Ð! ! RÑ(Ô(ˆØ!Ð! ! RÑ(Ô(ˆà—x’x‘z”z 2§8¢8¡:¤:ˆˆˆuØ˜q‘y %ˆuˆØ˜e a™iˆuˆØ˜eˆuˆà˜‘
˜u r™zÑ*ˆØ�U‘
˜u r™zÑ*ˆØ˜‘
˜r E™zÑ*ˆØ�U‘
˜r E™zÑ*ˆåð 
ð 
ð 
ð 
ð ˜˜tÐ$Ø˜˜tÐ$Ø˜˜tÐ$Ø˜˜tÐ$ð	 ð
ñ 
ô 
ñ 
ô 
ð 	
ð 
˜qÒ	 Ð	 Ø!Ð! ! RÑ(Ô(ˆØ!Ð! ! RÑ(Ô(ˆà—X’X‘Z”Zˆ
Ø—X’X‘Z”Zˆ
àˆ{˜: z°1Ñ5Ô5Ð5àˆ[˜˜BÑÔˆØˆ[˜˜BÑÔˆà—’‘
”
ˆØ—’‘
”
ˆà�%‰ZˆØ�%‰Zˆàð 	!Ø—’˜a‘”ˆBØ—’˜a‘”ˆBð	(¥&ð 	(­fð 	(½ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð 	(ð
	4�3ð 	4¥6ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4ð 	4õ Ð:Ð:Ð:Ð:µ°q±´Ð:Ñ:Ô:Ñ:Ô:ˆÝ'¨°Ñ3Ô3Ð3r+   c                 ó*   — t          | ||||¬¦  «        S )N)r(  r/  r0  r�  )r~  )rW  r(  r/  r0  r�  s        r,   Úgrid_sampler_2dr€  ÷  s*   € õ Ø	ØØ-Ø!Ø#ðñ ô ð r+   c                 óL  ‡ ‡— t          j        ‰                      ¦   «         dk    o‰                     ¦   «         dk    ˆ ˆfd„¦  «         t          j        ‰                      d¦  «        ‰                     d¦  «        k    ˆ ˆfd„¦  «         ‰ ‰z                       d¬¦  «        S )Nr#   r"   c                  ó\   •— d‰                       ¦   «         › d‰                      ¦   «         › �S )Nzmatrix @ vector expected, got r  rƒ   ©r~   rÿ  s   €€r,   r…   zmv.<locals>.<lambda>  s(   ø€ ÐJ°·²±´ÐJÐJ¸s¿wºw¹y¼yÐJÐJ€ r+   r   c                  óŽ   •— d‰                       d¦  «        › d‰                       d¦  «        › d‰                      d¦  «        › d�S )Nzsize mismatch, got input (r   r6   r"   z), vec (rJ  rO  rƒ  s   €€r,   r…   zmv.<locals>.<lambda>  sG   ø€ Ð`¨T¯YªY°q©\¬\Ð`Ð`¸D¿IºIÀa¹L¼LÐ`Ð`ÐRU×RZÒRZÐ[\ÑR]ÔR]Ð`Ð`Ð`€ r+   rƒ   )rC   r†   rR   r9  rú   rƒ  s   ``r,   r  r  
  s§   øø€ õ 
„LØ�Š‰
Œ
�aŠÐ*˜CŸGšG™IœI¨šNØJÐJÐJÐJÐJñô ð õ 
„LØ�	Š	�!‰Œ˜Ÿš ™œÒ#Ø`Ð`Ð`Ð`Ð`ñô ð ð �3‰J×Ò ÐÑ"Ô"Ð"r+   c                 óú   — |�,|dz
  |z  dz   }d|z
  | z  |t          j        | ¦  «        z  z
  }nd|z
  | z  t          j        | ¦  «        z
  }|�||z  }|                     |j        ¦  «        }t	          ||¦  «        S r_   )rÆ   Ú
logsigmoidr=   rí   rû   )r~   r  rÒ   Ú
pos_weightr÷   Ú
log_weightrö   s          r,   Ú binary_cross_entropy_with_logitsr‰    s’   € ð
 ÐØ  1‘n¨Ñ.°Ñ2ˆ
Ø�F‘
˜dÑ" jµ1´<ÀÑ3EÔ3EÑ&EÑFˆˆà�F‘
˜dÑ"¥Q¤\°$Ñ%7Ô%7Ñ7ˆàÐØ�f‰}ˆð �7Š7�6”<Ñ Ô €DÝ  iÑ0Ô0Ð0r+   Útensor1Útensor2Úis_outc                 ó  ‡	— | j         |j         k    r| |fn|| f\  }}ddlmŠ	 |j         dk    r|j         dk    sdS |j        r|sdS | j         dk    rdS  ‰	t	          |¦  «        dk    ¦  «        rdS |j        }|                     ¦   «         }dg}t          |dd …         ¦  «        D ] }|                     ||d         z  ¦  «         Œ!t          ˆ	fd	„t          |t          t          |¦  «        ¦  «        |¦  «        D ¦   «         ¦  «        S )
Nr   r�  rŒ   r#   FTr"   rV   c              3   ó\   •K  — | ]&\  }}} ‰|d k    ¦  «        p ‰||k    ¦  «        V — Œ'dS rØ  r*   )r5   rº   r»   r9  r�  s       €r,   rØ  zshould_fold.<locals>.<genexpr>E  s^   øè è € ð ð áˆD�%˜ð 	ˆ�t˜q’yÑ!Ô!ÐB ^ ^°D¸E²MÑ%BÔ%Bðð ð ð ð ð r+   )rˆ  r~  r�  r�  Ú	sym_numelr"  r�  rh  r®  r  r  r€  )
rŠ  r‹  rŒ  Út1Út2Út1_shapeÚ	t1_strideÚexpected_strider9  r�  s
            @r,   Úshould_foldr•  -  sX  ø€ ð $+¤<°7´<Ò#?Ð#?ˆg�wÐÐÀgÈwÐEW�F€BˆàDÐDÐDÐDÐDÐDàŒG�qŠLˆL˜RœW¨š\˜\ØˆuØ	Ôð  ð ØˆtØ„|�qÒÐØˆuØ€~•i ‘m”m qÒ(Ñ)Ô)ð ØˆtàŒx€HØ—	’	‘”€Ið �c€OÝ˜ ! " "œÑ&Ô&ð ;ð ;ˆØ×Ò˜t o°bÔ&9Ñ9Ñ:Ô:Ð:Ð:Ýð ð ð ð å!$Ø•t�H _Ñ5Ô5Ñ6Ô6¸ñ"
ô "
ðñ ô ñ ô ð r+   )Úpass_is_out)rŒ  c                óÞ
  — ddl m}m} |                      ¦   «         }|                     ¦   «         }|dk    s|dk    rt	          d|› d|› �¦  «        ‚|dk    r|dk    rt          j        | |¦  «        S |dk    r|dk    rt          j        | |¦  «        S |dk    rA|dk    r;t          j        t          j	        t          j
        | d¦  «        |¦  «        d¦  «        S |dk    r|dk    rt          j	        | |¦  «        S t          | ||¦  «        �rN||k    }|r|j        n| }|s|n|dk    r|                      ¦   «         n| }	|j        }
t          |
d d…         ¦  «        }t!          t"          j        |¦  «        }|	                     ¦   «         dk    }|r |                     |	j        d         ¦  «         |                     ||
d         ¦  «        }|rUt
          j        j                             | 	                    |	¦  «        |¦  «        }|r|j                             ¦   «         n|S t
          j        j                             |                     |	¦  «        |¦  «        S |dk    �rô|dk    �rí|dk    r|                      d¦  «        nd}|                      d¦  «        }| j        d d…         }|dk    r|                     d¦  «        n|                     d¦  «        }|dk    r|                     d¦  «        nd}g }t5          |dz
  ¦  «        D ]*}|                     |                     |¦  «        ¦  «         Œ+|d	k    rŸ|d	k    r™ ||d         |d         k    ¦  «        r~ ||d         dk    ¦  «        r*| j        r#t9          |                      d¦  «        |¦  «        S  ||d         dk    ¦  «        r*|j        r#t9          | |                     d¦  «        ¦  «        S t          t          j        ||¦  «        ¦  «        }|||gz   }t=          |¦  «        }|                      |¦  «                             |||¦  «        }|dk    }|rC||gz   }|                     |¦  «                             ||¦  «         
                    d¦  «        }n1|||gz   }|                     |¦  «                             |||¦  «        }|}|dk    r|                     |¦  «         |dk    r|                     |¦  «         |r;|                      |¦  «                             d¦  «         !                    |¦  «        S |                      |¦  «         !                    |¦  «        S t          j"        d
d„ ¦  «         d S )Nr   )r�  Úguard_or_truez9matmul does not support 0-dimensional tensors, got dims: z and r"   r#   rV   re  rŒ   Fc                  ó   — dS )Nz/both arguments to matmul need to be at least 1Dr*   r*   r+   r,   r…   zmatmul.<locals>.<lambda>É  s   € Ð$U€ r+   )#r~  r�  r˜  rR   r7  rC   Údotr  r  rõ  rX   r•  ri  rz  r"  r€  r   rX  rß   r®  r1  rE  r‡   Ú_unsafe_viewrº  r9  rW   r�  rh  Úbroadcast_shapesr4  r�  Úbmmr£  r†   )rŠ  r‹  rŒ  r�  r˜  Údim_tensor1Údim_tensor2rF  r�  r‘  Úsizes_1rH  Úfolded_dim1Út2_is_matrixÚ	t1_foldedr·  rf  Úm1Úbatch_tensor1Úm2r]  Úbatch_tensor2r¨  Úexpand_batch_portionÚtensor1_expand_sizeÚexpand_batch_productÚtensor1_expandedÚ
vector_rhsÚtensor2_expand_sizeÚtensor2_expandeds                                 r,   rh  rh  M  sÈ  € ð TÐSÐSÐSÐSÐSÐSÐSà—+’+‘-”-€KØ—+’+‘-”-€KØ�aÒÐ˜;¨!Ò+Ð+ÝØgÈÐgÐgÐZeÐgÐgñ
ô 
ð 	
ð �aÒÐ˜K¨1Ò,Ð,ÝŒy˜ 'Ñ*Ô*Ð*Ø	˜Ò	Ð	˜k¨QÒ.Ð.ÝŒx˜ Ñ)Ô)Ð)Ø	˜Ò	Ð	˜k¨QÒ.Ð.ÝŒ}�UœX¥e¤o°g¸qÑ&AÔ&AÀ7ÑKÔKÈQÑOÔOÐOØ	˜Ò	Ð	˜k¨QÒ.Ð.ÝŒx˜ Ñ)Ô)Ð)Ý	�W˜g vÑ	.Ô	.ñ hWð   +Ò-ˆ	Ø$Ð1ˆWŒZˆZ¨'ˆà$ÐXˆGˆG¸+ÈÒ:JÐ:J¨7¯9ª9©;¬;¨;ÐPWð 	ð ”(ˆÝ˜G C R CœLÑ)Ô)ˆÝ�Xœ\¨<Ñ8Ô8ˆð —v’v‘x”x 1’}ˆØð 	-Ø×Ò ¤¨¤Ñ,Ô,Ð,ð —J’J˜{¨G°B¬KÑ8Ô8ˆ	Øð 	Oõ ”Y”^×0Ò0°·²¸bÑ1AÔ1AÀ<ÑPÔPˆFØ-6ÐB�6”9×'Ò'Ñ)Ô)Ð)¸FÐBå”9”>×.Ò.¨y¯|ª|¸BÑ/?Ô/?ÀÑNÔNÐNà	˜Ò	Ñ	˜k¨QÒ.Ñ.ð !,¨a¢ ˆG�LŠL˜ÑÔÐ°QˆØ�\Š\˜"ÑÔˆØœ c r cÔ*ˆØ!,¨q¢ ˆW�\Š\˜"ÑÔÐ°g·l²lÀ2Ñ6FÔ6FˆØ +¨a¢ ˆG�LŠL˜ÑÔÐ°Qˆà#%ˆå�{ Q‘Ñ'Ô'ð 	2ð 	2ˆAØ× Ò  §¢¨a¡¤Ñ1Ô1Ð1Ð1ð
 ˜1ÒÐØ˜qÒ Ð Ø�˜m¨AÔ.°-ÀÔ2BÒBÑCÔCð !ð ˆ~˜m¨AÔ.°!Ò3Ñ4Ô4ð ;¸Ô9Nð ;Ý˜gŸošo¨aÑ0Ô0°'Ñ:Ô:Ð:Øˆ~˜m¨AÔ.°!Ò3Ñ4Ô4ð ;¸Ô9Nð ;Ý˜g w§¢°qÑ'9Ô'9Ñ:Ô:Ð:õ  $ÝÔ" =°-Ñ@Ô@ñ 
ô  
Ðð 3°a¸°WÑ<Ðå#Ð$8Ñ9Ô9Ðð #Ÿ>š>Ð*=Ñ>Ô>×FÒFØ  ! Rñ
ô 
Ðð ! AÒ%ˆ
Øð 	Ø"6¸"¸Ñ"=Ðà—’Ð2Ñ3Ô3ß’Ð-¨rÑ2Ô2ß’˜1‘”ð Ðð #7¸"¸a¸Ñ"@ÐØ&Ÿ~š~Ð.AÑBÔB×JÒJØ$ b¨!ñ ô  Ðð ,ˆØ˜Š?ˆ?Ø×Ò Ñ"Ô"Ð"à˜Š?ˆ?Ø×Ò Ñ"Ô"Ð"àð 	MØ#×'Ò'Ð(8Ñ9Ô9×AÒAÀ"ÑEÔE×JÒJÈ<ÑXÔXÐXà#×'Ò'Ð(8Ñ9Ô9×>Ò>¸|ÑLÔLÐLåŒ�UÐUÐUÑVÔVÐVÐVÐVr+   rž  rŸ  c                 óÚ  ‡ ‡‡‡‡‡‡‡‡— ‰ j         \  }}ŠŠt          ‰|d         ||¦  «        }t          ‰|d         ||¦  «        }t          j        ‰ t          j        j        ¬¦  «        \  }}t          j        |d         ‰ j        ¬¦  «         	                    |¬¦  «        }	t          j        |d         ‰ j        ¬¦  «         	                    |¬¦  «        }
t          ||
|¦  «        }t          ||	|¦  «        }|                     d¦  «        }|                     ¦   «         }|                     ¦   «         }||z
                       dd¦  «        }||z
                       dd¦  «        }| 	                    t          j        ¦  «        }| 	                    t          j        ¦  «        }|dz
  ||dz   |d	z   f}|dz
  ||dz   |d	z   fŠt          |¦  «        Št          |¦  «        }d
\  ŠŠ‰ j        t          j        k    r:t%          ‰¦  «        Št%          |¦  «        Šˆfd„‰D ¦   «         Šˆfd„|D ¦   «         }ˆˆˆ fd„Šˆ ˆˆˆˆfd„Št'          ˆfd„|D ¦   «         ¦  «        }‰ j        t          j        k    r#‰€t)          d¦  «        ‚t+          ||‰¦  «        }n't-          d„ t/          ||¦  «        D ¦   «         ¦  «        }t          j        ‰ ¦  «        }|                     |¬¦  «        }|S )Nr   r"   r…  rš  rì   rV   r—   rj   r#   r  c                 óŠ   •— g | ]?}|d ‰z  z  t          j        |¦  «        dz  z                        t           j        ¦  «        ‘Œ@S ©r"   r£   ©rC   rç   r=   Úint16)r5   ró  Úweights_precision_xs     €r,   r8   z.upsample_bicubic2d_default.<locals>.<listcomp>   óV   ø€ ð 
ð 
ð 
àð �!Ð*Ñ*Ñ+­e¬j¸©m¬m¸cÑ.AÑA×EÒEÅeÄkÑRÔRð
ð 
ð 
r+   c                 óŠ   •— g | ]?}|d ‰z  z  t          j        |¦  «        dz  z                        t           j        ¦  «        ‘Œ@S r±  r²  )r5   ró  Úweights_precision_ys     €r,   r8   z.upsample_bicubic2d_default.<locals>.<listcomp>  rµ  r+   c                 óª   •— t          j        | d‰dz
  ¦  «        }t          j        |d‰dz
  ¦  «        }t                               ‰d d ||g¦  «        }|S rš  )rC   r“   r‡   rý  )rM  rÒ  Úy_idxÚx_idxrÝ  Úin_hÚin_wrÄ   s        €€€r,   Úload_boundedz0upsample_bicubic2d_default.<locals>.load_bounded	  sT   ø€ Ý”˜B  4¨!¡8Ñ,Ô,ˆÝ”˜B  4¨!¡8Ñ,Ô,ˆÝ×Ò˜u t¨T°5¸%Ð&@ÑAÔAˆØˆr+   c                 óú   •‡ — t          ˆˆ fd„‰D ¦   «         ¦  «        }‰j        t          j        k    r"‰€t	          d¦  «        ‚t          |‰‰¦  «        S t          d„ t          |‰¦  «        D ¦   «         ¦  «        S )Nc              3   ó0   •K  — | ]} ‰‰|¦  «        V — Œd S r;   r*   )r5   Úx_ofsr½  r]   s     €€r,   rØ  zCupsample_bicubic2d_default.<locals>.get_x_interp.<locals>.<genexpr>  s/   øè è € ÐBÐB°�l�l 1 eÑ,Ô,ÐBÐBÐBÐBÐBÐBr+   z4weights_precision_x must not be None for uint8 inputc              3   ó&   K  — | ]\  }}||z  V — Œd S r;   r*   r  s      r,   rØ  zCupsample_bicubic2d_default.<locals>.get_x_interp.<locals>.<genexpr>  s*   è è € ÐJÐJ©¨¨R˜B ™GÐJÐJÐJÐJÐJÐJr+   )rð  rí   rC   rˆ  r7  r¾  r½  r  )r]   Úsrc_xrÄ   Úixs_ofsr½  r´  Ú	weights_xs   ` €€€€€r,   Úget_x_interpz0upsample_bicubic2d_default.<locals>.get_x_interp  s�   øø€ ÝÐBÐBÐBÐBÐB¸'ÐBÑBÔBÑBÔBˆØŒ;�%œ+Ò%Ð%Ø"Ð*Ý$ØJñô ð õ & e¨YÐ8KÑLÔLÐLÝÐJÐJµC¸¸yÑ4IÔ4IÐJÑJÔJÑJÔJÐJr+   c              3   ó.   •K  — | ]} ‰|¦  «        V — Œd S r;   r*   )r5   Úy_ofsrÅ  s     €r,   rØ  z-upsample_bicubic2d_default.<locals>.<genexpr>  s-   øè è € Ð;Ð;¨%�,�,˜uÑ%Ô%Ð;Ð;Ð;Ð;Ð;Ð;r+   z4weights_precision_y must not be None for uint8 inputc              3   ó&   K  — | ]\  }}||z  V — Œd S r;   r*   r  s      r,   rØ  z-upsample_bicubic2d_default.<locals>.<genexpr>  s*   è è € ÐLÐL©(¨2¨r˜b 2™gÐLÐLÐLÐLÐLÐLr+   rc  )r"  r³  rH   rI   rˆ  rØ  rC   rŸ  r›  r=   r·  rX   r=  r“   rÁ  r	  rí   rˆ  rÄ  rð  r7  r¾  r½  r  r   rº  )rÄ   r   r�  rž  rŸ  rY   Úh_scale_factorÚw_scale_factorrí   r¨  r  Úx_floatÚy_floatr6   r]   ÚyscalerÖ  Úiys_ofsÚ	weights_yÚsrc_yr#  rd  rÅ  r»  r¼  rÃ  r½  r´  r·  rÄ  s   `                     @@@@@@@@r,   Úupsample_bicubic2d_defaultrÑ  Ì  sQ  øøøøøøøøø€ ð ”{Ñ€A€qˆ$�õ $ D¨+°a¬.¸-ÈÑQÔQ€NÝ# D¨+°a¬.¸-ÈÑQÔQ€NåÔ'Ø¥5Ô#HÔ#Uðñ ô �H€A€uõ 	Œ�[ ”^¨E¬LÐ9Ñ9Ô9×<Ò<À5Ð<ÑIÔI€AÝŒ�[ ”^¨E¬LÐ9Ñ9Ô9×<Ò<À5Ð<ÑIÔI€Aå# N°A°}ÑEÔE€GÝ# N°A°}ÑEÔE€GØ×Ò Ñ#Ô#€Gà�Š‰Œ€AØ�Š‰Œ€Að ˜‰k× Ò   cÑ*Ô*€FØ˜‰k× Ò   cÑ*Ô*€FØ	�Š�UŒ[ÑÔ€AØ	�Š�UŒ[ÑÔ€Aà�1‰u�a˜˜Q™  A¡Ð&€GØ�1‰u�a˜˜Q™  A¡Ð&€Gå0°Ñ8Ô8€IÝ0°Ñ8Ô8€Ià/9Ñ,ÐÐ,Ø„{•e”kÒ!Ð!Ý7¸	ÑBÔBÐÝ7¸	ÑBÔBÐð
ð 
ð 
ð 
àð
ñ 
ô 
ˆ	ð
ð 
ð 
ð 
àð
ñ 
ô 
ˆ	ð
ð ð ð ð ð ð ðKð Kð Kð Kð Kð Kð Kð Kð Kõ Ð;Ð;Ð;Ð;°7Ð;Ñ;Ô;Ñ;Ô;€EØ„{•e”kÒ!Ð!ØÐ&Ý Ð!WÑXÔXÐXÝ# E¨9Ð6IÑJÔJˆˆåÐLÐLµc¸%ÀÑ6KÔ6KÐLÑLÔLÑLÔLˆõ Ô/°Ñ6Ô6€MØ×Ò¨]ÐÑ;Ô;€FØ€Mr+   c                 ó€  — t          j        t          |¦  «        t          |¦  «        z   dk    d„ ¦  «         |€j|€t          d¦  «        ‚t	          t
          t          t          f         t          d„ t          | j        dd …         |¦  «        D ¦   «         ¦  «        ¦  «        }|r|nd\  }}t          | ||||¦  «        S )Nr"   c                  ó   — dS )Nz:Must specify exactly one of output_size and scale_factors.r*   r*   r+   r,   r…   z(upsample_bicubic2d_vec.<locals>.<lambda>4  s   € ÐL€ r+   z7scale_factors must not be None when output_size is Nonec              3   óZ   K  — | ]&\  }}t          t          |¦  «        |z  ¦  «        V — Œ'd S r;   )r   r   )r5   ró  rq   s      r,   rØ  z)upsample_bicubic2d_vec.<locals>.<genexpr>=  sM   è è € ð ð á�A�uõ �	 !™œ uÑ,Ñ-Ô-ðð ð ð ð ð r+   r#   r  )
rC   r†   r¡  r7  r   rð  r–  r  r"  rÑ  )rW  r   r�  rÐ  rž  rŸ  s         r,   Úupsample_bicubic2d_vecrÕ  '  sâ   € õ 
„LÝˆ[ÑÔ�D Ñ/Ô/Ñ/°1Ò4ØLÐLñô ð ð ÐØÐ Ý ØIñô ð õ Ý•#•s�(ŒOÝð ð å # A¤G¨A¨B¨B¤K°Ñ ?Ô ?ðñ ô ñ ô ñ
ô 
ˆð )6ÐG�}�}¸<Ñ€GˆWÝ% a¨°mÀWÈgÑVÔVÐVr+   c                 ó0   ‡ — ˆ fd„}t          ‰ ||¦  «        S )Nc                 ó¨   •— t          j        |  ||z   ‰j        ¬¦  «        }|dz
  |dz
  |                     ¦   «         z
                       ¦   «         z
  S )Nrš  r"   )rC   rŸ  r›  rä   ©rº   Úmiddler»   Údim_idxrW  s       €r,   r§  z_reflection_pad.<locals>.idxL  sM   ø€ Ý”, ˜u f¨u¡n¸Q¼XÐFÑFÔFˆØ˜‰z˜V a™Z¨'¯+ª+©-¬-Ñ7×<Ò<Ñ>Ô>Ñ>Ð>r+   ©Ú_reflection_or_replication_pad©rW  rÎ  r§  s   `  r,   Ú_reflection_padrÞ  F  s9   ø€ ð?ð ?ð ?ð ?ð ?õ *Ø	ØØñô ð r+   c                 ó0   ‡ — ˆ fd„}t          ‰ ||¦  «        S )Nc                 óv   •— t          j        |  ||z   ‰j        ¬¦  «        }t          j        |d|dz
  ¦  «        S )Nrš  r   r"   )rC   rŸ  r›  r“   rØ  s       €r,   r§  z_replication_pad.<locals>.idx]  s9   ø€ Ý”, ˜u f¨u¡n¸Q¼XÐFÑFÔFˆÝŒ{˜7 A v°¡zÑ2Ô2Ð2r+   rÛ  rÝ  s   `  r,   Ú_replication_padrá  W  s9   ø€ ð3ð 3ð 3ð 3ð 3õ *Ø	ØØñô ð r+   Úidx_fnc                 ó¶  ‡‡— t          ‰¦  «        dz  Št          j        |                      ¦   «         ‰dz   ‰dz   fv ˆfd„¦  «         | j        ‰ d …         }|                      ¦   «         ‰z
  }ˆˆfd„t          ‰¦  «        D ¦   «         }ˆˆfd„t          ‰¦  «        D ¦   «         }| }t          ‰¦  «        D ]Z}d g|                     ¦   «         z  }	 |||         ||         ||         ¦  «        |	||z   <   t                               ||	¦  «        }Œ[| j        j	        dv rt          j
        }
nt          j        | ¦  «        }
|                     |
¬¦  «        }|S )Nr#   r"   c                  ó(   •— d‰ › d‰ dz   › d‰ dz   › d�S )NÚreflection_padzd requires r"   r
  r#   zD inputr*   rƒ   s   €r,   r…   z0_reflection_or_replication_pad.<locals>.<lambda>p  s+   ø€ ÐO ÐOÐO°°q±ÐOÐO¸sÀQ¹wÐOÐOÐO€ r+   c                 ó2   •— g | ]}‰d ‰dz
  |z
  z           ‘ŒS r  r*   ©r5   r¨  rR   rÎ  s     €€r,   r8   z2_reflection_or_replication_pad.<locals>.<listcomp>u  ó+   ø€ ÐCÐCÐC°1�G˜A  q¡¨1¡Ñ-Ô.ÐCÐCÐCr+   c                 ó8   •— g | ]}‰d ‰dz
  |z
  z  dz            ‘ŒS r  r*   rç  s     €€r,   r8   z2_reflection_or_replication_pad.<locals>.<listcomp>v  ó0   ø€ ÐHÐHÐH¸�W˜Q #¨¡'¨A¡+Ñ.°Ñ2Ô3ÐHÐHÐHr+   )rü  ÚmpsrL  rc  )r�  rC   r†   rR   r"  rW   r‡   rý  r›  rç  rg  rH   r   rº  )rW  rÎ  râ  Ú	inp_shapeÚnc_dimÚpadding_leftÚpadding_rightr#  r¨  r§  rd  rR   s    `         @r,   rÜ  rÜ  h  so  øø€ õ
 ˆg‰,Œ,˜!Ñ
€CÝ	„LØ	�Š‰Œ�C˜!‘G˜S 1™WÐ%Ð%ØOÐOÐOÐOñô ð ð ”˜˜˜˜”€IØ�UŠU‰WŒW�s‰]€FàCÐCÐCÐCÐC½¸c¹
¼
ÐCÑCÔC€LØHÐHÐHÐHÐH½UÀ3¹Z¼ZÐHÑHÔH€Mà€FÝ�3‰ZŒZð 1ð 1ˆØ˜ &§*¢*¡,¤,Ñ.ˆØ ˜& ¨a¤°)¸A´,ÀÈaÔ@PÑQÔQˆˆA�‰J‰Ý×#Ò# F¨CÑ0Ô0ˆˆð 	„x„}Ð.Ð.Ð.ÝÔ/ˆˆåÔ3°AÑ6Ô6ˆØ×Ò¨]ÐÑ;Ô;€FØ€Mr+   c                 ó¶  ‡ ‡‡‡‡‡‡‡‡‡‡— t          ‰¦  «        dz  Šd„ |j        ‰ d …         D ¦   «         Šˆˆfd„t          ‰¦  «        D ¦   «         Šˆˆfd„t          ‰¦  «        D ¦   «         Šg }t          |j        ¦  «        D ]^}dg|j        z  }d||<   |                     t          j        |j        |         |j        ¬¦  «                             |¦  «        ¦  «         Œ_|d ‰ …         Š|‰ d …         Šd„ Šˆˆfd	„t          ‰¦  «        D ¦   «         Šˆˆfd
„t          ‰¦  «        D ¦   «         }ˆˆˆfd„t          ‰¦  «        D ¦   «         }ˆˆˆˆfd„t          ‰¦  «        D ¦   «         Št          j
        t          j        ˆˆfd„t          ‰¦  «        D ¦   «         ¦  «        }t                               ‰ |‰‰z   d¦  «        }	ˆˆˆ ˆfd„}
t          j        d„ t          ‰¦  «        D ¦   «         Ž D ]á}|t!          dg‰z  ¦  «        k    rŒg }g }t          ‰¦  «        D ]¦}||         dk    r‰|         }‰|         }n]||         dk    r||         }‰|         d‰|         f}n7||         dk    r+||         }‰|         ‰|         ‰|         z
  ‰|         dz
  f}|                     |¦  «         |                     |¦  «         Œ§ |
|	||¦  «        }	Œâ|	S )Nr#   c                 ó   — g | ]}|d z
  ‘ŒS r.  r*   )r5   r  s     r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>—  s   € Ð
)Ð
)Ð
)�Qˆ1ˆq‰5Ð
)Ð
)Ð
)r+   c                 ó2   •— g | ]}‰d ‰dz
  |z
  z           ‘ŒS r  r*   rç  s     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>™  rè  r+   c                 ó8   •— g | ]}‰d ‰dz
  |z
  z  dz            ‘ŒS r  r*   rç  s     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>š  rê  r+   r"   rV   rš  c                 óH   — | \  }}}t          j        ||k    ||k    ¦  «        S r;   rO  )Úindex_ranger¨  ÚlbÚubs       r,   Úindex_range_conditionz7_reflection_pad_backward.<locals>.index_range_condition¥  s(   € Ø‰	ˆˆ2ˆrÝÔ   b¢¨!¨rª'Ñ2Ô2Ð2r+   c                 ó2   •— g | ]}‰|         ‰|         z   ‘ŒS r*   r*   ©r5   r¨  rî  Úxyzs     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>³  s&   ø€ Ð;Ð;Ð;¨1ˆc�!Œf�| A”Ñ&Ð;Ð;Ð;r+   c                 ó2   •— g | ]}‰|         ‰|         z
  ‘ŒS r*   r*   rú  s     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>´  s&   ø€ ÐAÐAÐA°�L ”O c¨!¤fÑ,ÐAÐAÐAr+   c                 óJ   •— g | ]}d ‰|         z  ‰|         z   ‰|         z
  ‘Œ S r0  r*   )r5   r¨  Údhwrî  rû  s     €€€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>µ  s3   ø€ ÐOÐOÐO¸q�Q˜˜Qœ‘Z ,¨q¤/Ñ1°C¸´FÑ:ÐOÐOÐOr+   c                 óV   •— g | ]%}‰|         d ‰|         ‰|         z   ‰|         z   f‘Œ&S r\  r*   )r5   r¨  Úcenterrþ  rî  rï  s     €€€€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>¹  sH   ø€ ð ð ð ØHIˆ�Œ�A�s˜1”v ¨Q¤Ñ/°-ÀÔ2BÑBÐCðð ð r+   c                 ó2   •— g | ]} ‰‰|         ¦  «        ‘ŒS r*   r*   )r5   r¨  rø  Úrange_cs     €€r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>½  s)   ø€ ÐQÐQÐQÀÐ0Ð0°¸´Ñ<Ô<ÐQÐQÐQr+   r—   c                 ó:  •— t          ‰¦  «        D ];}||         d         ||         d         k     }t          |t          ¦  «        r|r| c S Œ<t          j        t
          j        ˆ
fd„|D ¦   «         ¦  «        }t
                               ‰	|‰|z   d¦  «        }| |z   S )Nr#   r"   c                 ó&   •— g | ]} ‰|¦  «        ‘ŒS r*   r*   )r5   rõ  rø  s     €r,   r8   z@_reflection_pad_backward.<locals>.accumulate.<locals>.<listcomp>Ë  s%   ø€ ÐPÐPÐP°KÐ"Ð" ;Ñ/Ô/ÐPÐPÐPr+   r—   )rW   r4   r¡  rO   r   r‡   r¢  r¤  )r¬   rË   Úindex_rangesr¨  Úupper_less_than_lowerrå  ÚgrX  rR   ro   rø  s          €€€€r,   r3  z,_reflection_pad_backward.<locals>.accumulateÁ  s³   ø€ õ �s‘”ð 	ð 	ˆAØ$0°¤O°AÔ$6¸Àa¼ÈÔ9KÒ$KÐ!ÝÐ/µÑ6Ô6ð Ð;Pð Ø���øåÔÝÔØPÐPÐPÐPÀ<ÐPÑPÔPñ
ô 
ˆõ ×%Ò% k°4¸¸S¹À#ÑFÔFˆØ�a‰xˆr+   c                 ó   — g | ]}g d ¢‘ŒS ))rV   r   r"   r*   r/  s     r,   r8   z,_reflection_pad_backward.<locals>.<listcomp>Ð  s   € Ð#CÐ#CÐ#C°1 J J JÐ#CÐ#CÐ#Cr+   r   )r�  r"  rW   rˆ  r®  rC   rŸ  r›  r£  rO   r   r‡   r¢  r¤  Ú	itertoolsr
   rð  )ro   r6   rÎ  r¦  r¨  rc  Úleft_reflectÚright_reflectrå  r¬   r3  ÚareaÚoutsr  rË   rõ  rX  r   rþ  rR   rø  rî  rï  r  rû  s   ` `             @@@@@@@@@r,   Ú_reflection_pad_backwardr  �  s}  øøøøøøøøøøø€ õ
 ˆg‰,Œ,˜!Ñ
€Cà
)Ð
)˜!œ' 3 $ % %œ.Ð
)Ñ
)Ô
)€CàCÐCÐCÐCÐC½¸c¹
¼
ÐCÑCÔC€LØHÐHÐHÐHÐH½UÀ3¹Z¼ZÐHÑHÔH€Mà€GÝ�1”6‰]Œ]ð Sð SˆØ�S˜1œ6‘\ˆ
Øˆ
�1‰Ø�Š•u”| A¤G¨A¤J°q´xÐ@Ñ@Ô@×EÒEÀjÑQÔQÑRÔRÐRÐRà��#��Œ€AØ
�3�$�%�%Œ.€Cð3ð 3ð 3ð <Ð;Ð;Ð;Ð;µ°c±
´
Ð;Ñ;Ô;€FØAÐAÐAÐAÐAµe¸C±j´jÐAÑAÔA€LØOÐOÐOÐOÐOÐOÅEÈ#ÁJÄJÐOÑOÔO€Mðð ð ð ð ð ð ÝMRÐSVÉZÌZðñ ô €Gõ ÔÝÔÐQÐQÐQÐQÐQÅeÈCÁjÄjÐQÑQÔQñô €Dõ ×$Ò$ [°$¸¸F¹
ÀCÑHÔH€Dðð ð ð ð ð ð ð õ Ô!Ð#CÐ#C½¸c¹
¼
Ð#CÑ#CÔ#CÐDð 4ð 4ˆØ•5˜!˜˜s™Ñ#Ô#Ò#Ð#ààˆØˆå�s‘”ð 	-ð 	-ˆAØ�AŒw˜!Š|ˆ|Ø˜Q”i�Ø% aœj��Ø�a”˜B’�Ø" 1”o�Ø" 1œv q¨,°q¬/Ð:��Ø�a”˜A’�Ø# AÔ&�Ø" 1œv s¨1¤v°¸aÔ0@Ñ'@À#ÀaÄ&È1Á*ÐM�à�KŠK˜ÑÔÐØ×Ò Ñ,Ô,Ð,Ð,àˆz˜$  lÑ3Ô3ˆˆà€Kr+   rŽ   r‘   r  c                óf   — t          j        | ||¬¦  «        }t          j        | ||¬¦  «        }||fS )Nr  )rC   Úaminr‘  )r~   rR   r  r  r‘  s        r,   Úaminmaxr  ë  s:   € õ Œ:�d ¨WÐ5Ñ5Ô5€DåŒ:�d ¨WÐ5Ñ5Ô5€DØ�ˆ:Ðr+   rì   c                óŠ   — t                                t          j        t          j        | ¦  «        d| ¦  «        |||¬¦  «        S )Nr   rì   )r‡   rú   rC   rl   Úisnan)r~   rR   r  rí   s       r,   Únansumr  õ  s7   € õ �8Š8•E”K¥¤¨DÑ 1Ô 1°1°dÑ;Ô;¸SÀ'ÐQVˆ8ÑWÔWÐWr+   ©rí   r�  r›  rœ  r�  c          	      óN   — t           j                             d| d||||¬¦  «        S )Nr   r"   r  ©r‡   rŸ  Ú
start_step)ru  rí   r�  r›  rœ  s        r,   Úarange_defaultr  û  s2   € õ Œ;×!Ò!Ø	ˆ3�˜ v°fÈð "ñ ô ð r+   c          	      óN   — t           j                             | |d||||¬¦  «        S )Nr"   r  r  )rt  ru  rí   r�  r›  rœ  s         r,   Úarange_startr  
  s2   € õ Œ;×!Ò!Øˆs�A˜U¨6¸&ÈZð "ñ ô ð r+   c                  ó   — ddl m}  || i |¤ŽS )Nr   )Úout_dtype_dense)Ú!torch._higher_order_ops.out_dtyper  )rJ   rK   r  s      r,   Úout_dtype_decompr    s)   € àAÐAÐAÐAÐAÐAàˆ?˜DÐ+ FÐ+Ð+Ð+r+   Úmarginc                 óN  ‡ ‡‡‡	‡
— t          j        ‰ ¦  «        Š t          j        ‰¦  «        Š‰ j        d         Š
‰ j        d         Š	t          j        |dk    p|dk    d„ ¦  «         t          j        ‰ j        dk    o‰	dk    ˆ fd„¦  «         t          j        ‰j        dk    o‰                     ¦   «         ‰
k    ˆ
ˆfd„¦  «         ‰�Nt          j        ‰¦  «        Št          j        ‰j        dk    o‰                     ¦   «         ‰	k    ˆ	ˆfd„¦  «         ‰                     d¦  «        Št          j        ‰ d‰¬¦  «        }||z
  ‰ z   }| 	                    d¦  «        }|dk    r|n||z  }‰�|‰‰         z  }t          j
        ‰	‰ j        ¬	¦  «        }t          j        |‰k    |d¦  «        }|t          j        j        k    r|                     ¦   «         S |t          j        j        k    r"|                     ¦   «         |j        d         z  S |                     d¬
¦  «        S )Nr   r"   r#   c                  ó   — dS )Nz only p == 1 and p == 2 supportedr*   r*   r+   r,   r…   z#multi_margin_loss.<locals>.<lambda>/  s   € Ð+M€ r+   c                  ó   •— d‰ j         › �S ©NzMExpected non-empty vector or matrix with optional 0-dim batch size, but got: rñ  ro  s   €r,   r…   z#multi_margin_loss.<locals>.<lambda>2  s   ø€ ÐmÐ`eÔ`kÐmÐm€ r+   c                  ó   •— d‰ › d‰j         › �S )Nz#inconsistent target size, expected r)  rñ  )Únframer  s   €€r,   r…   z#multi_margin_loss.<locals>.<lambda>6  s   ø€ ÐU°fÐUÐUÀvÄ|ÐUÐU€ r+   c                  ó   •— d‰ › d‰j         › �S )Nz#inconsistent weight size, expected r)  rñ  )rR   rÒ   s   €€r,   r…   z#multi_margin_loss.<locals>.<lambda><  s   ø€ ÐV¸#ÐVÐVÈÌÐVÐV€ r+   rš  rš  rƒ   )rC   Ú
atleast_2dÚ
atleast_1dr"  r†   rˆ  rã   rX   rò  rj  rŸ  r›  rl   r!   r(   r   rù   r)   rú   )rÄ   r  r]  r   rÒ   r÷   Úurm   r§  rR   r&  s   ``  `    @@r,   Úmulti_margin_lossr+     s"  øøøøø€ õ Ô˜UÑ#Ô#€EÝÔ˜fÑ%Ô%€FØŒ[˜Œ^€FØ
Œ+�aŒ.€CÝ	„L��a’Ð!˜1 š6Ð#MÐ#MÑNÔNÐNÝ	„LØŒ
�aŠÐ$˜C 1šHØmÐmÐmÐmñô ð õ 
„LØŒ�qÒÐ5˜VŸ\š\™^œ^¨vÒ5ØUÐUÐUÐUÐUñô ð ð ÐÝÔ! &Ñ)Ô)ˆÝŒØŒK˜1ÒÐ6 §¢¡¤°3Ò!6ØVÐVÐVÐVÐVñ	
ô 	
ð 	
ð ×Ò˜aÑ Ô €FÝŒ�U ¨Ð0Ñ0Ô0€AØ�‰
�UÑ€AØ	�Š�A‰Œ€AØ�!ŠVˆVˆˆ˜˜Q™€AØÐØ��v”ÑˆÝ
Œ,�s 5¤<Ð
0Ñ
0Ô
0€CÝŒ�C˜6’M 1 aÑ(Ô(€AØ•I”NÔ(Ò(Ð(Ø�vŠv‰xŒxˆØ	•i”mÔ)Ò	)Ð	)Ø�uŠu‰wŒw˜œ œÑ#Ð#à�vŠv˜!ˆv‰}Œ}Ðr+   Ú	is_targetc                 óÐ  ‡‡— | j         Š|j         Št          j        | ¦  «        } t          j        |¦  «        }| j         d         }t          j        t	          ‰¦  «        dk    o|dk    ˆfd„¦  «         t          j        t	          ‰¦  «        dk    o‰‰k    ˆˆfd„¦  «         t          j        ||j        ¬¦  «        }|dk    }t          j        t          j        |||¦  «        dd¬	¦  «        }||k     }t          j        ||d¦  «        }t          j	        | d|¬
¦  «        }	t          j        ||d¦  «        }
t          j
        ||
                     d¬¦  «        k    d¬¦  «        }d|	j                             d¬¦  «        z
  | z   }|                     d¦  «        }||z  }t          j        |d|¦  «        }|t          j        j        k    r)|                     d¬¦  «                             ¦   «         }n@|t          j        j        k    r|                     ¦   «         }n|                     d¬¦  «        }|                     | j        ¦  «                             ‰¦  «        }||fS )Nr"   r#   r   c                  ó   •— d‰ › �S r$  r*   )Úorig_input_shapes   €r,   r…   z0multilabel_margin_loss_forward.<locals>.<lambda>^  s   ø€ ÐrÐ`pÐrÐr€ r+   c                  ó   •— d‰› d‰ › �S )Nzinconsistent target size: z for input of size: r*   )r/  Úorig_target_shapes   €€r,   r…   z0multilabel_margin_loss_forward.<locals>.<lambda>b  s   ø€ ÐfÐ->ÐfÐfÐTdÐfÐf€ r+   rš  rV   Tr  rš  rƒ   rj   )r   rV   )r"  rC   r(  r†   r�  rŸ  r›  r  rl   rò  rW  rX   ÚTrj  r!   r(   r   rú   rù   r)   r=   rí   r1  )rÄ   r  r÷   rR   r§  Úis_endÚend_idxÚtarget_maskÚtidx0r*  Útidx1r,  rm   r/  r1  s                @@r,   Úmultilabel_margin_loss_forwardr8  O  sG  øø€ ð ”{ÐØœÐÝÔ˜UÑ#Ô#€EÝÔ˜fÑ%Ô%€FØ
Œ+�aŒ.€CÝ	„LÝÐÑÔ Ò"Ð/ s¨a¢xØrÐrÐrÐrñô ð õ 
„LÝÐÑÔ !Ò#ÐMÐ(9Ð=MÒ(MØfÐfÐfÐfÐfñô ð õ
 Œ,�s 6¤=Ð
1Ñ
1Ô
1€CØ�rŠ\€FÝŒj�œ V¨S°#Ñ6Ô6¸BÈÐMÑMÔM€Gà˜’-€KåŒK˜ V¨QÑ/Ô/€EÝŒ�U ¨%Ð0Ñ0Ô0€AåŒK˜ V¨RÑ0Ô0€EÝ”	˜# §¢°R Ñ!8Ô!8Ò8¸aÐ@Ñ@Ô@€IàˆaŒc�mŠm ˆmÑ#Ô#Ñ# eÑ+€AØ	�Š�A‰Œ€AØ	ˆC‰€AåŒ�I˜q !Ñ$Ô$€Aà•I”NÔ(Ò(Ð(Ø�EŠE�gˆEÑÔ×#Ò#Ñ%Ô%ˆˆØ	•i”mÔ)Ò	)Ð	)Ø�EŠE‰GŒGˆˆà�EŠE�gˆEÑÔˆà—’˜Uœ[Ñ)Ô)×1Ò1Ð2CÑDÔD€IØˆiˆ<Ðr+   )Ú	attn_maskrq   ÚqueryÚkeyÚ	dropout_pÚ	is_causalr9  c                ó8  ‡ ‡‡‡— t          j        t          j        ‰ ¦  «        ˆ fd„¦  «         t          j        ‰                      ¦   «         dk    o/‰                     ¦   «         dk    o‰                     ¦   «         dk    ˆˆ ˆfd„¦  «         t          j        ‰dk    ˆfd„¦  «         t          j        ‰ j        d         ‰j        d         k    o‰j        d         ‰j        d         k    d„ ¦  «         t
          j                             ‰ ‰‰|‰|d |‰                      d¦  «        ‰                     d¦  «        k    ¬	¦	  «	        \  }}| 	                    d
ddd¦  «         
                    t           j        ¬¦  «         	                    dd
dd¦  «        }||fS )Nc                  ó   •— d‰ j         › �S )Nz-query must be FP32, FP64, BF16, FP16 but got rì   )r:  s   €r,   r…   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>›  s   ø€ ÐMÀÄÐMÐM€ r+   rO  c                  ó†   •— d‰                      ¦   «         › d‰                       ¦   «         › d‰                      ¦   «         › �S )Nz,q, k, v must be a 4 dimensional tensor, got r  rƒ   )r;  r:  r   s   €€€r,   r…   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>Ÿ  s=   ø€ Ðh¸u¿yºy¹{¼{ÐhÐhÈcÏgÊgÉiÌiÐhÐhÐ[`×[dÒ[dÑ[fÔ[fÐhÐh€ r+   r—   c                  ó   •— d‰ › �S )Nz&dropout probability must be zero, got r*   )r<  s   €r,   r…   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>¢  s   ø€ Ð"VÈ9Ð"VÐ"V€ r+   rŒ   c                  ó   — dS )Nz&q, k, v should have the same head sizer*   r*   r+   r,   r…   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>¦  s   € Ð8€ r+   r"   )r9  r<  r=  Údropout_maskrq   Ú
enable_gqar#   r   rc  )rC   r†   r~  rR   r"  r‡   Ú"_scaled_dot_product_attention_mathr“  r9  r  rº  rg  )	r:  r;  r   r<  r=  r9  rq   r·  Úattns	   ````     r,   Ú*scaled_dot_product_flash_attention_for_cpurG  Ž  s§  øøøø€ õ 
„LÝÔ Ñ&Ô&ØMÐMÐMÐMñô ð õ 
„LØ�	Š	‰Œ�qÒÐ@˜SŸWšW™YœY¨!š^Ð@°·	²	±´¸qÒ0@ØhÐhÐhÐhÐhÐhñô ð õ 
„LØ�SÒÐVÐVÐVÐVñô ð õ 
„LØŒ�AŒ˜%œ+ aœ.Ò(ÐK¨S¬Y°q¬\¸U¼[È¼^Ò-KØ8Ð8ñô ð õ
 Ô:×BÒBØØØØØØØØØ—:’:˜a‘=”= C§H¢H¨Q¡K¤KÒ/ð Cñ 
ô 
�L€FˆDðF 	�Š�q˜!˜Q Ñ"Ô"ß	Š¥%Ô"9ˆÑ	:Ô	:ß	Š��A�q˜!Ñ	Ô	ð ð
 �4ˆ<Ðr+   c                 ó<   ‡— t          | ¦  «        ˆfd„¦   «         }|S )Nc                  óJ   •—  ‰| i |¤Ž}| d                               |¦  «        S rv   )r^  )rJ   rK   rË   Úoutplace_ops      €r,   Ú
inplace_opz$register_inplace.<locals>.inplace_opÔ  s-   ø€ àˆk˜4Ð* 6Ð*Ð*ˆØ�AŒw�}Š}˜SÑ!Ô!Ð!r+   r   )Úaten_oprJ  rK  s    ` r,   Úregister_inplacerM  Ó  s7   ø€ Ý˜GÑ$Ô$ð"ð "ð "ð "ñ %Ô$ð"ð Ðr+   c                 óf  — |                       ¦   «         s2|                      ¦   «         st          |¦  «        }t          |¦  «        }t          j        ||¦  «        }t          |t          j        ¦  «        r|dk    r||z  }|dk    r|S t          |t          j        ¦  «        r|dk    r| |z  } | |z   S )Nr"   r   )r~  rô  r–  rC   r�  r4   ÚnumbersÚNumber)r~   Úbatch1Úbatch2rf   rp   r#  s         r,   ÚbaddbmmrS  Ü  s²   € ð ×!Ò!Ñ#Ô#ð ¨D¯OªOÑ,=Ô,=ð Ý�4‰yŒyˆÝ�E‘
”
ˆÝŒY�v˜vÑ&Ô&€FÝ�e�Wœ^Ñ,Ô,ð  °¸²
°
Ø˜%‘ˆØˆq‚y€yØˆÝ�d�GœNÑ+Ô+ð ¨t°qªy¨yØ�d‰{ˆØ�&‰=Ðr+   c                 ó0   — t          j        | |d¬¦  «        S )Nr=  rÛ  rÝ  )r~   ré   s     r,   Úfloor_dividerU  í  s   € õ Œ9�T˜5°Ð8Ñ8Ô8Ð8r+   c                 óL   — t          j        t          j        | j        d¦  «        S r_   )rO   r   rX  rß   r"  )rz  s    r,   r�  r�  ó  s   € åÔ�HœL¨!¬'°1Ñ5Ô5Ð5r+   ©rí   rË   c                ó�   — |€"t           j                             | g |¬¦  «        S t           j                             | g ||¬¦  «        S )Nrì   rW  )r‡   rú   Údim_IntListÚIntList_out)r~   rí   rË   s      r,   Úsum_defaultr[  ø  sE   € ð €{ÝŒx×#Ò# D¨"°EÐ#Ñ:Ô:Ð:åŒx×#Ò# D¨"°E¸sÐ#ÑCÔCÐCr+   c           	      ó  — t          | t          j        ¦  «        s| S |€Lt          j                             | t          t          |                      ¦   «         ¦  «        ¦  «        ¦  «        S t          j                             | |g¦  «        S r;   )	r4   rC   r   r‡   r  Údimsr€  rW   rR   )r~   rR   s     r,   Úsqueeze_defaultr^    sl   € õ �d�EœLÑ)Ô)ð Øˆà
€{ÝŒ|× Ò  ¥t­E°$·(²(±*´*Ñ,=Ô,=Ñ'>Ô'>Ñ?Ô?Ð?åŒ|× Ò  ¨ uÑ-Ô-Ð-r+   c                 ó4  ‡— t          ˆfd„t          t          | j        ¦  «        ¦  «        D ¦   «         ¦  «        }|j        t
          j        k    rt
          j        nd }|                      d|d|¬¦  «        }| || 	                    |j        ¦  «        z  z  |fS )Nc              3   ó(   •K  — | ]}|‰k    ¯|V — Œd S r;   r*   )r5   r¨  rR   s     €r,   rØ  z)_weight_norm_interface.<locals>.<genexpr>  s'   øè è € Ð@Ð@˜1°q¸C²x°x�Q°x°x°x°xÐ@Ð@r+   r#   T)r  rí   )
rð  rW   r�  r"  rí   rC   r€  r  r  r=   )rÝ  r  rR   Úkeep_dimÚ
norm_dtyper  s     `   r,   Ú_weight_norm_interfacerc    sŒ   ø€ õ Ð@Ð@Ð@Ð@¥¥c¨!¬'¡l¤lÑ 3Ô 3Ð@Ñ@Ô@Ñ@Ô@€Hà !¤­5¬>Ò 9Ð 9•”�¸t€JØ�6Š6�!�X t°:ˆ6Ñ>Ô>€DØ��D—G’G˜AœGÑ$Ô$Ñ$Ñ% tÐ+Ð+r+   ©Úassume_uniqueÚinvertc                óÖ  — t          | t          j        ¦  «        st          j        | |j        ¬¦  «        } t          |t          j        ¦  «        s,|rt          j        | |¦  «        S t          j        | |¦  «        S ddlm}  || 	                    ¦   «         dt          |  	                    ¦   «         d¦  «        z  k     ¦  «        rt          | ||¬¦  «        S t          | |||¬¦  «        S )Nrš  r   r�  g      $@g�Âõ(\�Â?©rf  rd  )r4   rC   r   r™  r›  Úner  r~  r�  rã   rò   Úisin_defaultÚisin_sorting)ÚelementsÚtest_elementsre  rf  r�  s        r,   Úisinrn    sô   € õ �h¥¤Ñ-Ô-ð NÝÔ& x¸Ô8LÐMÑMÔMˆÝ�m¥U¤\Ñ2Ô2ð 5Øð 	5Ý”8˜H mÑ4Ô4Ð4å”8˜H mÑ4Ô4Ð4àDÐDÐDÐDÐDÐDà€~�m×)Ò)Ñ+Ô+¨dµS¸¿ºÑ9IÔ9IÈ5Ñ5QÔ5QÑ.QÒQÑRÔRð 
Ý˜H m¸FÐCÑCÔCÐCåØ�m°=Èð
ñ 
ô 
ð 	
r+   )rš  c                ó*  — |€9t          j        |                      ¦   «         t           j        | j        ¬¦  «        }n9t          j        |                      ¦   «         |t           j        | j        ¬¦  «        }|| k                          | j        ¦  «        }|S )NrÀ  )rš  rí   r›  )rC   Úrandr9  rð   r›  r=   rí   )r~   rš  Úraw_pr]  s       r,   Ú	bernoullirr  1  s|   € ð ÐÝ”
˜4Ÿ9š9™;œ;­e¬mÀDÄKÐPÑPÔPˆˆå”
Ø�IŠI‰KŒKØÝ”-Ø”;ð	
ñ 
ô 
ˆð 
�Š×Ò˜$œ*Ñ%Ô%€AØ€Hr+   rh  c                ó€  — |                       ¦   «         dk    r t          j        | t          j        ¬¦  «        S |j        dk    r| |k    }|r| n|S | j        d|j        z  z   }|                      |¦  «        }t          t          d|j         dz
  d¦  «        ¦  «        }||k     	                    |¬¦  «        }|r| n|S )Nr   rì   r.  rV   r"   rƒ   )
rã   rC   Ú
empty_liker¡  rˆ  r"  r£  rð  rW   rW  )rl  rm  rf  r�  Úexpanded_elem_shaper6   rR   s          r,   rj  rj  D  sÏ   € Ø‡~‚~ÑÔ˜1ÒÐÝÔ µ´
Ð;Ñ;Ô;Ð;ØÔ˜QÒÐØ˜-Ò'ˆØÐ&�ˆtˆt 3Ð&Ø"œ.¨4°-Ô2DÑ+DÑDÐØ�ŠÐ)Ñ*Ô*€AÝ
•�b˜=Ô-Ð-°Ñ1°2Ñ6Ô6Ñ
7Ô
7€CØ�Ò×
"Ò
" sÐ
"Ñ
+Ô
+€CØÐ"ˆCˆ4ˆ4˜sÐ"r+   c                ó&  — |                       ¦   «         }|                      ¦   «         }|rÒt          j        ||g¦  «        }t          j        |d¬¦  «        \  }}|dd …         |d d…         k    }	t          j        |	ddgd¦  «        }	|r|	                     ¦   «         }	t          j        |	¦  «        }
|
                     d||	¦  «        }
|
d|                      ¦   «         …          	                    | j
        ¦  «        S t          j        |¦  «        \  }}t          j        ||¦  «        }t          j        ||                     ¦   «         k     |d¦  «        }||         |k    }|r|                     ¦   «         n|}| 	                    | j
        ¦  «        S )NT)Ústabler"   rV   r   F)rI  rC   r;  Úsortr¬  Úlogical_notrt  r¯  rã   r1  r"  Úsearchsortedrl   )rl  rm  re  rf  Úelements_flatÚtest_elements_flatÚall_elementsÚsorted_elementsÚsorted_orderÚduplicate_maskr¨  Úsorted_test_elementsrY   r§  Útest_idxÚcmps                   r,   rk  rk  Q  sƒ  € Ø×$Ò$Ñ&Ô&€MØ&×.Ò.Ñ0Ô0ÐØð +õ ”y -Ð1CÐ!DÑEÔEˆÝ(-¬
°<ÈÐ(MÑ(MÔ(MÑ%ˆ˜à(¨¨¨Ô,°ÀÀÀÔ0DÒDˆÝÔ.¨~ÀÀ1¸vÀuÑMÔMˆàð 	:Ø+×7Ò7Ñ9Ô9ˆNåÔ Ñ/Ô/ˆØ�Š˜q ,°Ñ?Ô?ˆà�A˜ŸšÑ(Ô(Ð(Ô)×1Ò1°(´.ÑAÔAÐAå"'¤*Ð-?Ñ"@Ô"@ÑÐ˜aÝÔ Ð!5°}ÑEÔEˆÝ”;˜sÐ%9×%?Ò%?Ñ%AÔ%AÒAÀ3ÈÑJÔJˆØ" 8Ô,°Ò=ˆØ#)Ð2ˆc�oŠoÑÔÐ¨sˆØ�{Š{˜8œ>Ñ*Ô*Ð*r+   c                 ó<   — |                       d¦  «        }||         S rU   )r1  )r~   rª  Ú	flatteneds      r,   Útaker†  n  s    € ð —’˜RÑ Ô €IØ�UÔÐr+   c                 ó    — |€t           j        }|t           j        k    rt          |¦  «        }t                               | |j        |¬¦  «        S r?  )rC   rg  Úpreserve_formatr   r‡   Úresizer"  )r~   ré   rd  s      r,   Ú	resize_asrŠ  u  sE   € àÐÝÔ/ˆØ�Ô-Ò-Ð-Ý-¨eÑ4Ô4ˆÝ�;Š;�t˜Uœ[¸ˆ;ÑFÔFÐFr+   c                 óª  — t          j        ¦   «         rt          S | j        rt          S | j        j        dk    rt          S |                     d¦  «        }|                     d¦  «        }	|                      d¦  «        }
|                      d¦  «        }|                     ¦   «         dk    }|s?|                     d¦  «        }|                      d¦  «        } |                     d¦  «        }|                     d¦  «        }|                     d¦  «        }| j	        t           j
        t           j        fv }|rt           j        n| j	        }t          j        ||z  ||	z  || j        ¬¦  «        }|                      ||z  |
|z  ¦  «        }|                     ||z  |
|z  ¦  «        }|r|                     t           j        ¦  «        }|                     d||¦  «        }|                     ||||	¦  «        }|r|                     | j	        ¦  «        }t#          j        |¦  «        }|                     |¬¦  «        }|s|                     d¦  «        }|S )	uæ  
    Decomposition of max_pool2d_with_indices_backward using scatter_add.

    This replaces the native implementation with a high-level decomposition
    that uses scatter_add for gradient accumulation. The scatter-based approach
    provides automatic optimization opportunities for Inductor and handles all
    pooling configurations without requiring specialized fallback paths.

    Algorithm:
        For each output gradient position, use the corresponding index from the
        forward pass to scatter the gradient to the input position. When multiple
        output positions select the same input position as max, scatter_add
        automatically accumulates their gradients.

    Complexity: O(B * C * H_out * W_out)
        Independent of kernel size, unlike traditional O(B * C * H_in * W_in * KÂ²)
        approaches that iterate over input positions and kernel windows.

    Known Limitations:
        - FP16/BF16: Uses FP32 accumulation internally to preserve precision when
          many gradients accumulate to the same position (overlapping pooling windows).
          This adds slight overhead but ensures numerical stability.
        - Deterministic mode: Falls back to native implementation to ensure
          consistent results across runs

    Args:
        grad_output: Gradient w.r.t. pooling output [B, C, H_out, W_out]
        self: Original input tensor (for shape) [B, C, H_in, W_in]
        kernel_size: Pooling kernel size
        stride: Pooling stride
        padding: Pooling padding
        dilation: Pooling dilation
        ceil_mode: Whether to use ceil for output size calculation
        indices: Indices from forward pass (per-channel linear positions)

    Returns:
        Gradient w.r.t. input [B, C, H_in, W_in]
    rë  re  rV   rO  r   r"   rÀ  rc  )rC   Ú$are_deterministic_algorithms_enabledrC  r¼  r›  rç  r9  rR   rX   rí   rþ   r€  rð   r  r1  r=   Úscatter_addrH   r   rº  r  )ro   r~   rÌ  r�  rÎ  rÍ  r  r¦  Ú	in_heightÚin_widthÚ
out_heightÚ	out_widthr  r  ÚchannelsÚuse_fp32_accumÚaccum_dtypeÚgrad_input_flatÚgrad_output_flatr\  r[   rd  s                         r,   Ú max_pool2d_with_indices_backwardr—  ~  s\  € õd Ô1Ñ3Ô3ð ÝÐàÔð ÝÐð ÔÔ %Ò'Ð'ÝÐð —	’	˜"‘”€IØ�yŠy˜‰}Œ}€HØ×!Ò! "Ñ%Ô%€JØ× Ò  Ñ$Ô$€Ið —’‘”˜q’€JØð 'Ø�~Š~˜aÑ Ô ˆØ!×+Ò+¨AÑ.Ô.ˆØ×#Ò# AÑ&Ô&ˆà—’˜1‘”€JØ�yŠy˜‰|Œ|€Hð
 !Ô&­5¬=½%¼.Ð*IÐI€NØ#1ÐH•%”-�-°{Ô7H€Kõ ”kØ�XÑØ�HÑØØÔ!ð	ñ ô €Oð #×*Ò*Ø�XÑ˜z¨IÑ5ñô Ðð —?’? :°Ñ#8¸*ÀyÑ:PÑQÔQ€Lð ð >Ø+×.Ò.­u¬}Ñ=Ô=Ðð &×1Ò1°!°\ÐCSÑTÔT€Oð !×(Ò(¨°X¸yÈ(ÑSÔS€Jð ð 6Ø—]’] ;Ô#4Ñ5Ô5ˆ
õ Ô/°Ñ5Ô5€MØ×&Ò&°]Ð&ÑCÔC€Jð ð +Ø×'Ò'¨Ñ*Ô*ˆ
àÐr+   Úwindow_lengthc                óL   — t           j                             | d||||¬¦  «        S )aÃ  hann_window(window_length, *, dtype=None, layout=None, device=None, pin_memory=False) -> Tensor

    Returns a Hann window of size :attr:`window_length` with ``periodic=True``.

    Equivalent to :func:`torch.hann_window` with ``periodic=True``.

    Args:
        window_length (int): the size of returned window.

    Keyword args:
        dtype (:class:`torch.dtype`, optional): desired dtype. Default: global default.
        layout (:class:`torch.layout`, optional): desired layout. Default: ``torch.strided``.
        device (:class:`torch.device`, optional): desired device. Default: current device.
        pin_memory (bool, optional): if ``True``, pins the returned tensor. Default: ``False``.
    Tr  )r‡   Úhann_windowÚperiodic)r˜  rí   r�  r›  rœ  s        r,   rš  rš  ø  s6   € õ2 Ô×$Ò$ØØØØØØð %ñ ô ð r+   r›  c                óà  — |�|nt          j        ¦   «         }| dk    rt          j        d||||¬¦  «        S | dk    rt          j        d||||¬¦  «        S t	          j        |¦  «        }|r| dz   n| }t          j        |||||¬¦  «        }|dt           j        z  |dz
  z  z  }t          j        |¦  «        }|dz  d	z   }|r| 	                    dd| ¦  «        n|}	|	 
                    |¦  «        S )
a@  hann_window(window_length, periodic=True, *, dtype=None, layout=None, device=None, pin_memory=False) -> Tensor

    Returns a Hann window of size :attr:`window_length`.

    .. math::
        w[n] = 0.5 - 0.5 \cos\!\left(\frac{2\pi n}{N-1}\right)

    where :math:`N` is ``window_length + 1`` when ``periodic=True`` (for spectral analysis),
    or ``window_length`` when ``periodic=False`` (symmetric window).

    Low-precision dtypes (``bfloat16``, ``float16``) are computed in ``float32`` then cast.

    Args:
        window_length (int): the size of returned window.
        periodic (bool, optional): if ``True``, returns a periodic window for use with STFT.
            Default: ``True``.

    Keyword args:
        dtype (:class:`torch.dtype`, optional): desired dtype. Default: global default.
        layout (:class:`torch.layout`, optional): desired layout. Default: ``torch.strided``.
        device (:class:`torch.device`, optional): desired device. Default: current device.
        pin_memory (bool, optional): if ``True``, pins the returned tensor. Default: ``False``.
    Nr   r\  r  r"   r.  rë   r°   r£   )rC   Úget_default_dtyper‡  r   rH   r/  rŸ  ÚpiÚcosr:  r=   )
r˜  r›  rí   r�  r›  rœ  Úcompute_dtyperf  rz  Úwindows
             r,   Úhann_window_periodicr¢    s-  € ðD Ð&ˆEˆE­EÔ,CÑ,EÔ,E€EØ˜ÒÐÝŒ{Ø˜ f°VÈ
ð
ñ 
ô 
ð 	
ð ˜ÒÐÝŒzØ˜ f°VÈ
ð
ñ 
ô 
ð 	
õ Ô/°Ñ6Ô6€MØ%Ð8ˆ˜ÑÐ¨=€AÝŒØ	ØØØØð	ñ 	ô 	€Að 	
ˆS•5”8‰^˜q 1™uÑ%Ñ&€AÝŒ	�!‰Œ€AØ	ˆD‰�3‰€AØ.6Ð=ˆQ�XŠX�a˜˜MÑ*Ô*Ð*¸A€FØ�9Š9�UÑÔÐr+   Únum_classesc                 óü  — |dk    r6t          |                      ¦   «                              ¦   «         ¦  «        dz   }t          j                             t          j        | dk    ¦  «        d¦  «         t          j                             t          j        | |k     ¦  «        d¦  «         |                      d¦  «        t          j	        || j
        | j        ¬¦  «        k                         t          j        ¦  «        S )NrV   r"   r   z+one_hot: Class values must be non-negative.z7one_hot: Class values must be smaller than num_classes.rÀ  )r–  r‘   ræ  r‡   Ú_assert_asyncÚmsgrC   r  rX   rŸ  rí   r›  r=   rÁ  )r~   r£  s     r,   Úone_hotr§  r  sÓ   € à�bÒÐÝ˜$Ÿ(š(™*œ*Ÿ/š/Ñ+Ô+Ñ,Ô,¨qÑ0ˆåÔ×ÒÝŒ	�$˜!’)ÑÔØ5ñô ð õ 	Ô×ÒÝŒ	�$˜Ò$Ñ%Ô%ØAñô ð ð
 	�Š�rÑÔÝŒ<˜¨4¬:¸d¼kÐJÑJÔJò	Kç‚b�Œ�o„oðr+   )FF)r«   r;   r0  )r   NNr"   )rV   FFrÖ  r\  r  )r"   r"   F)Fr—   r»   )r—   rj   N)r   r"   N)Fr  )NNN)r   r   FT)r   r   Frm  )r—   Fr  )rV   (›  rO   r	  rO  rX  r‚  Úcollections.abcr   r   Ú
contextlibr   Úenumr   r   r   r	   r
   Útypingr   r   rC   Útorch._meta_registrationsÚtorch._primsr£  rÁ  Útorch._prims_commonÚ_prims_commonrH   Útorch.nn.functionalrõ  rY  rÆ   r   r   r   Útorch._decompr   r  r   r   r   r   r   r   Útorch._prims_common.wrappersr   r   r   r   Útorch.utilsr   rF   Útorch.utils._pytreer   r‚  ÚDispatchKeyr   r€  ÚstrÚ__annotations__Ú_opsrE  r‡   r!   rˆ  r¡  rQ   r‰  Úcompute_only_pw_cast_for_opmathÚpw_cast_for_opmathÚ"pw_cast_for_opmath_non_tensor_argsrØ  Úpw_cast_for_int_to_realr–  rZ   rc   re   rn   r  rz   rë  rG  r€   r‰   r•   rš   rž   r    r¤   r¦   rª   rÃ   rÌ   rÏ   rÑ   rÔ   rØ   rð  rà   rè   rõ   rû   rí   r  r  r(   r   r  Ú_safe_softmaxr  r  r  r“  r[   r$  r'  rË   r)  r5  rC  rM  rP  rU  rX  rZ  r\  r_  rr  rz  ÚslicerŽ  r—  ry  r­  r³  r¶  r¼  r¾  rË  r  r=  rA  rp  rv  rz  Úpy_implÚCompositeImplicitAutogradÚAutogradry  r�  rŠ  r—  r�  r¦  r4  r´  r·  r»  rÈ  rÊ  rÓ  rÖ  rØ  rÒ  rè  rà  rð  rö  Ú	dtype_outrø  rþ  r  r  r!  r$  r'  r?  rA  rQ  rU  rj  rp  rt  Úunsafe_chunkrw  rs  rr  Úno_statsr{  r  r‹  r‘  r•  r—  Ú_fused_dropoutr›  r©  r›  rd  rÞ  ÚliftÚ
lift_freshr¬  r±  r´  r·  r¶  rÊ  rÏ  rÒ  Ú_adaptive_avg_pool2dr  r0  r5  r8  rI  rP  r]  rk  rw  r~  rj  r|  r§  r­  r¯  r«  r½  rÃ  Ú	GeneratorrÅ  rÒ  rÕ  rë  rÿ  rò  rø  rÛ  Ú_upsample_nearest_exact1drô  rú  rà  ræ  rí  rØ  r  r  r  r  r&  r.  r1  r5  rD  rM  Úrnn_tanhrÄ   rT  Úrnn_relurW  r\  r]  r`  rl  ro  ru  r…  Úlstmrˆ  rŠ  r’  r”  Úgrur–  r˜  r›  r   r¢  r£  r¦  r§  r¯  r±  r­  rª  r³  r·  r¾  rÄ  r©  rß  rá  r›  rý  r5  r¤  r¡  rö  rú  rü  r   r  r	  r  r½  r  r!  r$  r)  r+  r.  r~  r€  r  r‰  r•  rh  Úupsample_bicubic2drÑ  rÕ  Úreflection_pad1dÚreflection_pad2dÚreflection_pad3drÞ  Úreplication_pad1dÚreplication_pad2dÚreplication_pad3drá  rÜ  Úreflection_pad1d_backwardÚreflection_pad2d_backwardÚreflection_pad3d_backwardr  r  r  rŸ  r   r�  r  rt  r  r  r+  r8  Ú+_scaled_dot_product_flash_attention_for_cpurG  rM  rS  rU  r�  rú   r[  r  rR   r^  rc  rn  rr  rj  rk  r†  rŠ  r—  rš  r›  Úperiodic_outr¢  Úaddbmm_ÚaddbmmÚaddmm_Úaddmv_Úbaddbmm_Úfill_Úgelu_rü  Ú
hardswish_Ú	hardtanh_ÚhardtanhÚhardsigmoid_Ú__iand__Ú__and__Ú__ilshift__Ú
__lshift__r’  r“  Úindex_reduce_Úindex_reduceÚ__ior__Ú__or__Ú__irshift__Ú
__rshift__Ú__ixor__Ú__xor__Úldexp_Úleaky_relu_Ú
leaky_reluÚlogit_ÚlogitÚrelu_rý  Úrenorm_ÚrenormÚround_rÙ  Úscatter_r0  Úscatter_add_r�  Úscatter_reduce_Úscatter_reduceÚsilu_r§  r*   r+   r,   ú<module>r      s&g  ðð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø .Ð .Ð .Ð .Ð .Ð .Ð .Ð .Ø "Ð "Ð "Ð "Ð "Ð "Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø Ð Ð Ð Ð Ð Ð Ð à €€€Ø  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (ð ŒhÔ"€ð €ˆˆcŒÐ Ð Ñ à„z„~Ô€ðð ð ð ð �ñ ô ð ð  %Ø$)ñ	'ð 'Øð'àÔ9ð'ð ð'ð "ð	'ð 'ð 'ð 'ðT #* 'ØØÔ8Ô@Øð#ñ #ô #Ð ð
 �WØ˜uÔDÔLðñ ô Ð ð &- WØØÔ8Ô@Ø ð&ñ &ô &Ð "ð
 "˜'Ø˜uÔDÔQðñ ô Ð ð˜ð  cð ¨fð ð ð ð ð Ð˜Ô*Ñ+Ô+Ø€ˆ\ÑÔØð2˜Fð 2 vð 2ð 2ð 2ñ Ôñ Ôñ ,Ô+ð2ð Ð˜Ô-Ñ.Ô.Ø€ˆ\ÑÔØð4˜vð 4¨&ð 4ð 4ð 4ñ Ôñ Ôñ /Ô.ð4ð Ð˜Ô.Ñ/Ô/Ø€ˆ\ÑÔØðS ð S¨6ð S¸ð SÈ5ð Sð Sð Sñ Ôñ Ôñ 0Ô/ðSð
 Ð˜Ô)Ñ*Ô*Ø€ˆ\ÑÔØð
Øð
àð
ð ð
ð ð	
ð
 ð
ð ð
ð 
ð 
ñ Ôñ Ôñ +Ô*ð
ð2 Ð˜œÔ)Ð*Ñ+Ô+ð(ð (ñ ,Ô+ð(ð Ð˜œÔ)Ð*Ñ+Ô+ð"˜Vð "ð "ð "ñ ,Ô+ð"ð Ð˜Ô(Ñ)Ô)Ø€�„Øð@�fð @ ð @ð @ð @ñ Ôñ „ñ *Ô)ð@ð Ð˜Ô1Ñ2Ô2Ø€ˆ\ÑÔØð fð °Fð ð ð ñ Ôñ Ôñ 3Ô2ðð Ð˜Ô.Ñ/Ô/Ø€ˆ\ÑÔØðPØðPØ%ðPØ05ðPØ@EðPð Pð Pñ Ôñ Ôñ 0Ô/ðPð Ð˜œÑ'Ô'Ø€�„ØðG�Fð G˜vð Gð Gð Gñ Ôñ „ñ (Ô'ðGð Ð˜Ô/Ñ0Ô0Ø€�„Øð Fð °&ð ¸Vð ð ð ñ Ôñ „ñ 1Ô0ðð Ð˜Ô/Ñ0Ô0Ø€ˆ\ÑÔð: Fð :°&ð :ÀUð :ð :ð :ñ Ôñ 1Ô0ð:ð Ð˜Ô0Ñ1Ô1Ø€ˆ\ÑÔØðLØðLØ%ðLØ7<ðLØNRðLð Lð Lñ Ôñ Ôñ 2Ô1ðLð Ð˜Ô*Ñ+Ô+Ø€ˆ\ÑÔØñ)ð )˜ð ) fð )¸3ð )ð )ð )ñ Ôñ Ôñ ,Ô+ð)ð< Ð˜Ô*Ñ+Ô+Øð5˜vð 5¨fð 5ð 5ð 5ñ Ôñ ,Ô+ð5ð Ð˜œ	Ñ"Ô"Ø€�„Øð&ˆvð &˜&ð &ð &ð &ñ Ôñ „ñ #Ô"ð&ð Ð˜Ô*Ñ+Ô+Ø€ˆ\ÑÔØð>˜vð >¨Vð >¸ð >ð >ð >ñ Ôñ Ôñ ,Ô+ð>ð
 Ð˜Ô*Ñ+Ô+ð6˜ð 6¨ð 6°6ð 6ð 6ð 6ñ ,Ô+ð6ð Ð˜Ô3Ñ4Ô4ð%Øð%à
ð%ð ð%ð ˆ6�6ˆ>Ôð	%ð %ð %ñ 5Ô4ð%ð Ð˜Ô6Ñ7Ô7Ø€�„Øð
Øð
à
ð
ð ð
ð ð	
ð
 ð
ð ð
ð ð
ð ð
ð 
ð 
ñ Ôñ „ñ 8Ô7ð
ð$ Ð˜Ô1Ñ2Ô2Ø€ˆ\ÑÔØð< fð <°Fð <ÀFð <Èvð <ð <ð <ñ Ôñ Ôñ 3Ô2ð<ð Ð˜œ
Ñ#Ô#Ø€�„ð/�ð /˜vð /¨&ð /ð /ð /ñ „ñ $Ô#ð/ð˜vð °#ð ð ð ð ð˜œð ð ð ð ð Ð˜œÑ&Ô&Ø€�„Øà3<´>Ô3Gð1ð 1Ø
ð1Ø ð1Ø-0ð1àð1ð 1ð 1ñ Ôñ „ñ 'Ô&ð1ð Ð˜Ô.Ñ/Ô/Ø€ˆ\ÑÔØð1Øð1Ø &ð1Ø06ð1ØCFð1ð 1ð 1ñ Ôñ Ôñ 0Ô/ð1ð Ð˜Ô*Ñ+Ô+ñ0ð 0ð 0ñ ,Ô+ð0ð Ð˜Ô+Ñ,Ô,Ø€�„Øð ”^Ô)Øð		1ð 	1Ø
ð	1àð	1ð ð	1ð ð		1ð 	1ð 	1ñ Ôñ „ñ -Ô,ð	1ð Ð˜Ô4Ô<Ñ=Ô=ØðØðØ%ðØ/5ðØBEðØMRðð ð ñ Ôñ >Ô=ðð Ð˜Ô4Ô?Ñ@Ô@Øð
RØð
Rà
ð
Rð ð
Rð ð	
Rð
 ð
Rð ð
Rð 
Rð 
Rñ Ôñ AÔ@ð
Rð Ð˜Ô0Ô8Ñ9Ô9Øð	Øð	Ø%ð	Ø/5ð	ØBEð	ØNSð	ð 	ð 	ñ Ôñ :Ô9ð	ð Ð˜Ô0Ô4Ñ5Ô5Øð
RØð
Rà
ð
Rð ð
Rð ð	
Rð
 ð
Rð ð
Rð 
Rð 
Rñ Ôñ 6Ô5ð
Rð#$Øð#$à
ð#$ð ð#$ð �T‰Mð	#$ð
 ð#$ð ð#$ð ð#$ð ð#$ð #$ð #$ð #$ðL Ð˜Ô)Ñ*Ô*Ø€ˆ\ÑÔØðN˜fð N¨Fð N¸ð NÀð Nð Nð Nñ Ôñ Ôñ +Ô*ðNð( Ð˜Ô.Ñ/Ô/Ø€ˆ\ÑÔð.Øð.à
ð.ð ð.ð �T‰Mð	.ð
 ð.ð ð.ð ð.ð ð.ð .ð .ñ Ôñ 0Ô/ð.ðb Ð˜Ô0Ñ1Ô1Ø€ˆ\ÑÔð$Øð$à
ð$ð ð$ð �T‰Mð	$ð
 ð$ð ð$ð ð$ð ð$ð $ð $ñ Ôñ 2Ô1ð$ðN Ð˜Ô1Ñ2Ô2Ø€�„Øð !Ø”^Ô)ð	1ð 1Ø
ð1àð1ð �T‰Mð1ð ð	1ð
 ð1ð 1ð 1ñ Ôñ „ñ 3Ô2ð1ð& Ð˜Ô:Ñ;Ô;Ø€ˆ\ÑÔØð
 !Ø”^Ô)ðð Øðà
ðð ðð �T‰Mð	ð
 ðð ðð ð ñ Ôñ Ôñ <Ô;ðð  Ð˜Ô-Ñ.Ô.Ø€�„Øð ”^Ô)ð1ð 1Øð1àð1ð ð1ð ð	1ð 1ð 1ñ Ôñ „ñ /Ô.ð1ð Ð˜Ô6Ñ7Ô7Ø€ˆ\ÑÔØð
 ”^Ô)ð		ð 	Øð	à
ð	ð ð	ð ð		ð
 ð	ð 	ð 	ñ Ôñ Ôñ 8Ô7ð	ð Ð˜œ	Ñ"Ô"Ø€�„ñ)ð )�ð )˜vð )¨%ð )ð )ð )ñ „ñ #Ô"ð)ð Ð˜Ô,Ñ-Ô-Ø€�„ð&˜ð & Fð &¨vð &ð &ð &ñ „ñ .Ô-ð&ð Ð˜Ô+Ñ,Ô,Ø€�„ð	OØð	Oà�c”ð	Oð 
ð	Oð ð		Oð
 
ð	Oð ð	Oð 	Oð 	Oñ „ñ -Ô,ð	Oð Ð˜œ
Ô)Ñ*Ô*ð ØØØñ3?ð 3?à
ð3?ð 
ð3?ð �‰:ð	3?ð
 
ˆt‰ð3?ð ð3?ð 3?ð 3?ñ +Ô*ð3?ðlØðØðØ # d¡
ðØ14°t±ðà
ˆ3�ˆ8„_ðð ð ð ð. Ð˜Ô*Ñ+Ô+Ø€�„ð ØØØñ$Uð $UØð$Uà	ð$Uð 
ð$Uð �‰:ð	$Uð
 
ˆt‰ð$Uð ð$Uð $Uð $Uñ „ñ ,Ô+ð$UðN Ð˜Ô,Ñ-Ô-Ø€�„ðE ð E°d¸3´ið EÀcð EÐRUð Eð Eð Eñ „ñ .Ô-ðEð
 Ð˜Ô.Ñ/Ô/Ø€�„ðOØðOØ&*¨3¤iðOØ9<ðOØDGðOØORðOð Oð Oñ „ñ 0Ô/ðOðØðØ%+ðØ:?¼+ðð ð ð ð Ð˜Ô3Ñ4Ô4Ø€ˆ\ÑÔØ ðXØðXØ!'ðXØ.1ðXØ@EÄðXð Xð Xñ !Ô ñ Ôñ 5Ô4ðXð Ð˜Ô7Ñ8Ô8Ø€�„Ø ðKØðKØ!'ðKØ.1ðKØ@EÄðKð Kð Kñ !Ô ñ „ñ 9Ô8ðKð*ð *ð *ð& Ð˜œÑ$Ô$Ø€�„ðMØðMà�c”ðMð �3ŒiðMð �#ŒYð	Mð
 �ŒIðMð ðMð Mð Mñ „ñ %Ô$ðMð` Ð˜œÑ$Ô$Ø€�„Øð]Øð]à�c”ð]ð �c”ð]ð �3Œið	]ð
 �#ŒYð]ð �ŒIð]ð ð]ð ]ð ]ñ Ôñ „ñ %Ô$ð]ð@ Ð˜Ô4Ñ5Ô5Ø€�„ð
¨ð 
°vð 
Àeð 
ð 
ð 
ñ „ñ 6Ô5ð
ð Ð˜Ô,Ñ-Ô-Ø€�„ðc#Ø
ðc#Ø" 3œiðc#Ø47ðc#Ø?Bðc#ØJMðc#àðc#ð c#ð c#ñ „ñ .Ô-ðc#ðL Ð˜Ô+Ô3Ñ4Ô4Øà;?ñ
ð 
Øð
Ø%ð
Ø,1°D©Lð
àð
ð 
ð 
ñ Ôñ 5Ô4ð
ð& Ð˜œÑ%Ô%Ø„Ô×Ò˜kÔCÑDÔDØ„Ô×Ò˜kÔ2Ñ3Ô3ð�6ð ˜eð ¨D°4©Kð ð ð ñ 4Ô3ñ EÔDñ &Ô%ðð Ð˜Ô+Ñ,Ô,Ø€ˆV�VÑÔðA˜&ð A Uð A°4¸$±;ð Að Að Añ Ôñ -Ô,ðAð Ð˜œÑ&Ô&Ø€�„ð�ð ˜Sð °ð ð ð ñ „ñ 'Ô&ðð*, 6ð ,°ð ,¸ð ,ð ,ð ,ð ,ð( Ð˜Ô)Ñ*Ô*Ø€˜ÐÑÔð�Fð  ð °Tð ð ð ñ Ôñ +Ô*ðð, Ð˜œÑ'Ô'Ø€�„ð Ø$Øñð Øðàðð ðð ð	ð
 ðð ðð ð ñ „ñ (Ô'ðð( Ð˜Ô5Ñ6Ô6Ø€�„ðØðàðð ðð ð	ð
 ðð ð ñ „ñ 7Ô6ððBˆD�ŒIð ð ð ð ðØ�&Œ\ðà	ðð ðð 
ˆ&„\ð	ð ð ð ð*˜T &œ\ð ð ð ð ð
 t¨F¤|ð 
¸#ð 
ð 
ð 
ð 
ð"Ø�&Œ\ð"à	ð"ð ð"ð "ð "ð "ðJ Ð˜œÔ0°$´/Ô2EÐFÑGÔGð
 ñ	ð Ø�&Œ\ðà	ðð ðð 
�$‰ð	ð
 ðð ð ñ HÔGðð  ÐØ	ÔÔ'¨Ô)CÔ)GÐHñô ð Ø#ñ	ð Ø
ðà�c”ðð 
ðð 
ˆfŒ˜Ñ	ð	ð
 
ˆ&„\�DÑðð ð ñô ðð  Ð˜Ô)Ô0Ñ1Ô1ñ5ð 5˜ð 5¨Cð 5°cð 5À%ÈÐPSÈÔBTð 5ð 5ð 5ñ 2Ô1ð5ð Ð˜Ô4Ô<Ñ=Ô=à67ñBð BØðBØ $ S¤	ðBØ03ðBà
ˆ6�3ˆ;ÔðBð Bð Bñ >Ô=ðBð Ð˜œ
Ô)Ñ*Ô*ñ/ð /�ð / Cð /¨cð /¸%ÀÈÀÔ:Lð /ð /ð /ñ +Ô*ð/ð2 ÔÔ-×5Ò5ØÔ)ñô ð ñ//ð //Ø
ð//à &ð//ð 
ð//ð ˆ6�3ˆ;Ôð	//ð //ð //ñô ð//ðf Ð˜œÔ+¨T¬Z¬^Ð<Ñ=Ô=Ø€˜ÐÑÔØñð �ð ˜fð ¨Fð ¸#ð È#ð ð ð ñ Ôñ Ôñ >Ô=ðð" Ð˜œÔ)¨4¬:Ô+?Ð@ÑAÔAØ€˜ÐÑÔð Øñ+ð +Ø
ð+à
ð+ð ð+ð Œ{ð	+ð
 ð+ð ð+ð +ð +ñ Ôñ BÔAð+ð Ð˜Ô.Ñ/Ô/Ø€�„Øð
 ØØñð Ø
ðà
ðð ðð ð	ð
 ðð ðð ð ñ Ôñ „ñ 0Ô/ðð" ñ	ð 	�fð 	 Fð 	°ð 	¸sð 	Èsð 	ð 	ð 	ñ Ôð	ð Ð˜œ
Ñ#Ô#Ø€˜ÐÑÔñ5ð 5�ð 5˜fð 5¨6ð 5¸ð 5Èð 5ð 5ð 5ñ Ôñ $Ô#ð5ð Ð˜Ô7Ô?Ñ@Ô@ØðS&ØðS&àðS&ð ðS&ð ð	S&ð
 �D‰=ðS&ð ðS&ð ðS&ð 
ðS&ð ðS&ð �d”ðS&ð ˆ6�D‰=˜& 4™-¨°$©Ð6Ô7ðS&ð S&ð S&ñ Ôñ AÔ@ðS&ðn Ð˜Ô7Ô;Ñ<Ô<ðØðàðð ðð ð	ð
 �D‰=ðð ðð ðð 
ðð ðð �d”ðð Œ,ðð Œ,ðð Œ,ðð ˆ6�D‰=˜& 4™-¨°$©Ð6Ô7ðð ð ñ =Ô<ðð8�6˜D‘=ð ¨F°T©Mð ð ð ð ð Ð˜Ô7Ô?Ñ@Ô@ðQØðQàðQð ˜3”iðQð ð	Qð
 ðQð �T‰MðQð �4‰-ðQð �d”ðQð ˆ6�D‰=˜& 4™-¨°$©Ð6Ô7ðQð Qð Qñ AÔ@ðQðj Ð˜Ô7Ô;Ñ<Ô<ðØðàðð ˜3”iðð ð	ð
 ðð �T‰Mðð �4‰-ðð �d”ðð Œ,ðð Œ,ðð Œ,ðð ˆ6�D‰=˜& 4™-¨°$©Ð6Ô7ðð ð ñ =Ô<ðð4 Ð˜Ô,Ô4Ñ5Ô5ð3Øð3à˜3”ið3ð �T‰Mð3ð 
�‰ð	3ð
 ˆ6�6ˆ>Ôð3ð 3ð 3ñ 6Ô5ð3ðl Ð˜Ô5Ô=Ñ>Ô>ðHØðHàðHð ˜3”iðHð ð	Hð
 �T‰MðHð �d”ðHð ˆ6�D‰=˜& 4™-Ð'Ô(ðHð Hð Hñ ?Ô>ðHðVRØðRà�T‰MðRð �4‰-ðRð ˜4‘-ð	Rð
 ˜$‘ðRð ðRð ðRð 
ðRð ðRð ˆ6�6˜6 6¨D¡=°&¸4±-Ð?Ô@ðRð Rð Rð Rðj Ð˜Ô.Ñ/Ô/Ø€ˆU�K Ñ/Ô/ð(Øð(à�T‰Mð(ð �4‰-ð(ð ˜4‘-ð	(ð
 ˜$‘ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ô"ð(ð (ð (ñ 0Ô/ñ 0Ô/ð(ð4 ÔÔ×'Ò'¨Ô(<Ñ=Ô=ØÔÔ×'Ò'¨Ô(MÑNÔNð 
Øð 
à�T‰Mð 
ð �4‰-ð 
ð ˜4‘-ð	 
ð
 ˜$‘ð 
ð ð 
ð ð 
ð 
ð 
ð ˆ6�6˜6Ð!Ô"ð 
ð  
ð  
ñ OÔNñ >Ô=ð 
ðF ÔÔ×"Ò" ;Ô#HÑIÔIñGð G°4¸´<ð Gð Gð Gñ JÔIðGð Ð˜ÔAÔIÑJÔJðØðà�T‰Mðð �4‰-ðð ð	ð
 ðð ðð 
ðð ˆ6�6˜6Ð!Ô"ðð ð ñ KÔJðð* Ð˜Ô5Ô=Ñ>Ô>ð(Øð(à�T‰Mð(ð �4‰-ð(ð ð	(ð
 ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ô"ð(ð (ð (ñ ?Ô>ð(ð  Ð˜Ô5Ô>Ñ?Ô?ð(Øð(à�T‰Mð(ð �4‰-ð(ð ð	(ð
 ð(ð 
ð(ð ˆ6�6˜6Ð!Ô"ð(ð (ð (ñ @Ô?ð(ð Ð˜Ô@ÔHÑIÔIðKØðKà�T‰MðKð �4‰-ðKð ð	Kð
 ðKð ðKð ðKð 
ðKð ˆ6�6˜6 6¨6Ð1Ô2ðKð Kð Kñ JÔIðKð4Øðà�T‰Mðð �4‰-ðð ð	ð
 ðð 
ðð ðð ðð ð ð ð: Ð˜Ô4Ô<Ñ=Ô=ð1Øð1à�T‰Mð1ð �4‰-ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ô*ð1ð 1ð 1ñ >Ô=ð1ð4 Ð˜Ô?ÔGÑHÔHðCØðCà�T‰MðCð �4‰-ðCð ð	Cð
 ðCð ðCð 
ðCð ˆ6�6˜6 6¨6°6Ð9Ô:ðCð Cð Cñ IÔHðCð8 Ð˜Ô2Ô:Ñ;Ô;ð1Øð1à�T‰Mð1ð �4‰-ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ô*ð1ð 1ð 1ñ <Ô;ð1ð4 Ð˜Ô+Ñ,Ô,Ø€ˆV�VÑÔñ(ð (ð (ñ Ôñ -Ô,ð(ð Ð˜œÑ&Ô&Ø€�„ð !%ØØ"&ØØØ04ðAð Að AØ�
ÑðAð Œ;˜ÑðAð
 ŒL˜4ÑðAð ðAð ðAð Ô&¨Ñ-ðAð Að Añ „ñ 'Ô&ðAðN Ð˜œ d¤i°´ÐAÑBÔBØ€�„ðð ñ „ñ CÔBðð ÔÔ×&Ò& {Ô';Ñ<Ô<ØÐ˜Ô-Ñ.Ô.Ø€ˆV�V˜V VÑ,Ô,ðØðàðð �4‰-ðð ˜4‘-ð	ð
 ˜$‘ðð ðð !&ðð ðð ð ñ -Ô,ñ /Ô.ñ =Ô<ðð>ð ð ð Ð˜Ô0Ô8Ñ9Ô9ðØðàðð �T‰Mðð ˜4‘-ð	ð
 ˜$‘ðð ˜‰}ðð ˜$‘ðð ðð 
ðð �d”ðð ðð ˆ6�6˜D‘= &¨4¡-Ð/Ô0ðð ð ñ :Ô9ðð6 Ð˜Ô7Ô?Ñ@Ô@ðiØðiàðið �T‰Mðið ˜4‘-ð	ið
 ˜$‘ðið ˜‰}ðið ˜$‘ðið ðið 
ðið �d”ðið ˆ6�6˜D‘= &¨4¡-Ð/Ô0ðið ið iñ AÔ@ðiðZ Ð˜Ô7Ô;Ñ<Ô<ð"Øð"àð"ð �T‰Mð"ð ˜4‘-ð	"ð
 ˜$‘ð"ð ˜‰}ð"ð ˜$‘ð"ð ð"ð 
ð"ð �d”ð"ð Œ,ð"ð Œ,ð"ð Œ,ð"ð ˆ6�6˜D‘= &¨4¡-Ð/Ô0ð"ð "ð "ñ =Ô<ð"ðJ Ð˜Ô7Ñ8Ô8Ø€ˆV�V˜VÑ$Ô$ðØðàðð ðð ˜4‘-ð	ð
 ˜$‘ðð ˜‰}ðð �t‰mðð ðð ð ñ %Ô$ñ 9Ô8ðð0 Ð˜Ô6Ñ7Ô7Ø€ˆV�V˜VÑ$Ô$ðØðàðð ðð ˜4‘-ð	ð
 ˜$‘ðð ˜‰}ðð �t‰mðð ðð ðð ð ñ %Ô$ñ 8Ô7ðð2 Ð˜Ô1Ñ2Ô2Ø€�„Øðd'˜vð d'°E¸#¸s¸(´Oð d'ð d'ð d'ñ Ôñ „ñ 3Ô2ðd'ðNC Ø
ðC à�c”ðC ð �ŒIðC ð �#ŒYð	C ð
 �3ŒiñC ð ñC ð ðC ð ˆ6�6ˆ>ÔðC ñ C ð C ð C ðL Ð˜Ô4Ñ5Ô5Ø€ˆU�IÑÔð Ø˜Ø˜#Øð
ð 
Ø
ð
à�c”ð
ð �ŒIð
ð �#ŒYð	
ð
 �3Œiñ
ð ð
ð ˆ6�6ˆ>Ôð
ñ 
ð 
ñ Ôñ 6Ô5ð
ð Ð˜Ô4Ñ5Ô5Ø€ˆU�IÑÔð Ø˜Ø˜#Øð
ð 
Ø
ð
à�c”ð
ð �ŒIð
ð �#ŒYð	
ð
 �3Œiñ
ð ð
ð ˆ6�6ˆ>Ôð
ñ 
ð 
ñ Ôñ 6Ô5ð
ð Ð˜Ô0Ñ1Ô1Ø€ˆU�IÑÔð,Øð,à�s˜C�x”ð,ð ˆ6�6ˆ>Ôð,ñ ,ð ,ñ Ôñ 2Ô1ð,ð^ Ð˜Ô0Ñ1Ô1Ø€ˆU�IÑÔð3Øð3à�s˜C �}Ô%ð3ð ˆ6�6ˆ>Ôð3ñ 3ð 3ñ Ôñ 2Ô1ð3ðl Ø
ð Ø)ð Ø8<¸S¼	ð ØHKð ñ  ð  ð  ðF Ð˜Ô)Ñ*Ô*Ø€�„ð*8Ø
ð*8àð*8ð �c”ð*8ñ *8ð *8ñ „ñ +Ô*ð*8ðZ Ð˜Ô)Ñ*Ô*Ø€�„ð49Øð49àð49ð �c”ð49ð �ŒIð	49ð
 �#ŒYð49ñ 49ð 49ñ „ñ +Ô*ð49ðn Ð˜œÑ(Ô(ð ñHð Hð HØðHà	ðHð ñHð ð	Hð ðHñ Hð Hñ )Ô(ðHð Ð˜œÑ'Ô'Ø€�„ð ñIð Ið IØðIà	ðIð ñIð ð	Ið ðIñ Ið Iñ „ñ (Ô'ðIð$ ñ-@ð -@ð -@Øð-@à	ð-@ð ñ-@ð ñ	-@ð ð-@ð ð-@ñ -@ð -@ð -@ð` Ð˜Ô)Ô1Ñ2Ô2ØÔÔ×"Ò" ;Ô#HÑIÔIñ ñ  ð  ñ JÔIñ 3Ô2ð ðF Ð˜Ô(Ñ)Ô)ð<�:ð < Cð <°
ñ <ÀJð <ñ <ð <ñ *Ô)ð<ð Ð˜œÑ(Ô(Ø€�„ð=�*ð = 3ð =¨zñ =À:ð =ñ =ð =ñ „ñ )Ô(ð=ðC@ØðC@ØðC@Ø$.ñC@Ø8BñC@ØPTðC@ñ C@ð C@ð C@ðN Ð˜Ô0Ñ1Ô1Ø€ˆX�xÑ Ô Øð(˜fð (¨¨v°v¨~Ô)>ð (ñ (ð (ñ Ôñ !Ô ñ 2Ô1ð(ð Ð˜œÑ%Ô%Ø€�„ð "Ø"Ø(,ñ	ð Øñà	�‰�eÑ	ñð �‰*�uÑ
ñð Œ Ñ%ð	ñ ð ñ „ñ &Ô%ðð" Ð˜œÑ&Ô&ñ;ñ ;ð ;ñ 'Ô&ð;ñ
ð ð ñ8ð ð ð Ð˜Ô/Ô3Ñ4Ô4ØÐ˜Ô/Ô3Ñ4Ô4ØÐ˜Ô/Ô3Ñ4Ô4ØÔÔ×$Ò$ [Ô%JÑKÔKØÔÔ×$Ò$ [Ô%9Ñ:Ô:ØÔÔ×$Ò$ [Ô%JÑKÔKØÔÔ×$Ò$ [Ô%9Ñ:Ô:ØÔÔ×$Ò$ [Ô%JÑKÔKØÔÔ×$Ò$ [Ô%9Ñ:Ô:ð	3Øð	3à�c”˜TÑ!ñ	3ð ˜”; Ñ%ð	3ð ð		3ñ 	3ð 	3ñ ;Ô:ñ LÔKñ ;Ô:ñ LÔKñ ;Ô:ñ LÔKñ 5Ô4ñ 5Ô4ñ 5Ô4ð	3ð Ð˜Ô6Ô:Ñ;Ô;ØÐ˜Ô6Ô:Ñ;Ô;ØÐ˜Ô6Ô:Ñ;Ô;ØÔÔ#×+Ò+¨KÔ,QÑRÔRØÔÔ#×+Ò+¨KÔ,@ÑAÔAØÔÔ#×+Ò+¨KÔ,QÑRÔRØÔÔ#×+Ò+¨KÔ,@ÑAÔAØÔÔ#×+Ò+¨KÔ,QÑRÔRØÔÔ#×+Ò+¨KÔ,@ÑAÔAð	?Øð	?à�c”˜TÑ!ñ	?ð ˜”; Ñ%ð	?ð ð		?ñ 	?ð 	?ñ BÔAñ SÔRñ BÔAñ SÔRñ BÔAñ SÔRñ <Ô;ñ <Ô;ñ <Ô;ð	?ñ#ñ #ð #ð #ðL Ð˜Ô0Ô8¸$Ô:QÔ:UÐVÑWÔWØÔÔ ×(Ò(¨Ô)NÑOÔOØÔÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€ D°dÑ;Ñ;Ô;ð  ñ;ð ;Øð;à�c”ñ;ð �D‰Lð;ð ð	;ñ ;ð ;ñ <Ô;ñ ?Ô>ñ PÔOñ XÔWð;ð ÐØ	Ô#Ô+¨TÔ-KÔ-OÐPñô ð ÔÔ'×/Ò/°Ô0UÑVÔVØÔÔ'×/Ò/°Ô0DÑEÔEØ€ D°dÑ;Ñ;Ô;ð  ñGð GØðGà�c”ñGð �D‰LðGð ð	Gñ Gð Gñ <Ô;ñ FÔEñ WÔVñô ðGð Ð˜Ô0Ô8¸$Ô:QÔ:UÐVÑWÔWØÔÔ ×(Ò(¨Ô)NÑOÔOØÔÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€ D°dÑ;Ñ;Ô;ð "Ø!ñ	Gð GØðGà�c”ñGð �d‰lñGð �d‰lð	Gð
 ðGñ Gð Gñ <Ô;ñ ?Ô>ñ PÔOñ XÔWðGð ÐØ	Ô#Ô+¨TÔ-KÔ-OÐPñô ð ÔÔ'×/Ò/°Ô0UÑVÔVØÔÔ'×/Ò/°Ô0DÑEÔEØ€ D°dÑ;Ñ;Ô;ð "Ø!ñ	Sð SØðSà�c”ñSð �d‰lñSð �d‰lð	Sð
 ðSñ Sð Sñ <Ô;ñ FÔEñ WÔVñô ðSð Ð˜Ô0Ô8¸$Ô:QÔ:UÐVÑWÔWØÔÔ ×(Ò(¨Ô)NÑOÔOØÔÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€ D°dÑ;Ñ;Ô;ð "Ø!Ø!ñQð QØðQà�c”ñQð �d‰lñQð �d‰lñ	Qð
 �d‰lðQð ðQñ Qð Qñ <Ô;ñ ?Ô>ñ PÔOñ XÔWðQð ÐØ	Ô#Ô+¨TÔ-KÔ-OÐPñô ð ÔÔ'×/Ò/°Ô0UÑVÔVØÔÔ'×/Ò/°Ô0DÑEÔEØ€ D°dÑ;Ñ;Ô;ð "Ø!Ø!ñ	ð 	Øð	à�c”ñ	ð �d‰lñ	ð �d‰lñ		ð
 �d‰lð	ð ð	ñ 	ð 	ñ <Ô;ñ FÔEñ WÔVñô ð	ð ð
 ñ	ð Øðà�c”ñð �˜‘Ôñð ð	ð
 ðñ ð ñ Ôðñ4ð ð ñ&>ð >ð >ñ/ð /ð /ñð ð ð$ FKñ+ñ +ð +ð +ñ\ð ð ñð ð ñ&ñ &ð &ð &ñ,/-ñ /-ð /-ð /-ñd& ð & ð & ðR Ð˜œÔ+Ñ,Ô,Ø„Ô×Ò˜[ÔBÑCÔCØ„Ô×Ò˜[Ô1Ñ2Ô2ñ.ð .ñ 3Ô2ñ DÔCñ -Ô,ñ.ð8 Ð˜�Ô+Ñ,Ô,Ø…Ô×Ò˜[ÔBÑCÔCØ…Ô×Ò˜[Ô1Ñ2Ô2ñ.ð .ñ 3Ô2ñ DÔCñ -Ô,ñ.ð8 Ð˜�Õ*Ñ+Ô+Ø…Õ×Ò˜KÔAÑBÔBØ…Õ×Ò˜KÔ0Ñ1Ô1ñ.ð .ñ 2Ô1ñ CÔBñ ,Ô+ñ.ð@ Ð˜œÕ*Ñ+Ô+Ø„Õ×Ò˜KÔAÑBÔBØ„Õ×Ò˜KÔ0Ñ1Ô1ñ.ð .ñ 2Ô1ñ CÔBñ ,Ô+ñ.ñ@ð ñ ñ/ñ /ð /ñ /ñ6=ñ =ð =ñ =ñ@/ð /ñ /ðd Ð˜�	œÑ(Ô(Ø…„×Ò˜Ô>Ñ?Ô?Ø…„×Ò˜Ô-Ñ.Ô.ñSð Sñ /Ô.ñ @Ô?ñ )Ô(ñSð@ Ð˜�	�Ñ'Ô'Ø……×Ò˜Ô=Ñ>Ô>Ø……×Ò˜Ô,Ñ-Ô-ñSð Sñ .Ô-ñ ?Ô>ñ (Ô'ñSñ>;ð ;ñ ;ñ;ð ;ñ ;ð Ð˜��Ñ&Ô&Ø……×Ò�{Ô<Ñ=Ô=Ø……×Ò�{Ô+Ñ,Ô,ñ.ð .ñ -Ô,ñ >Ô=ñ 'Ô&ñ.ð6 Ð˜�œÑ'Ô'Ø…„×Ò˜Ô=Ñ>Ô>Ø…„×Ò˜Ô,Ñ-Ô-ñ.ð .ñ .Ô-ñ ?Ô>ñ (Ô'ñ.ð6 Ð˜Õ4Ô8Ñ9Ô9ØÕÔ!×)Ò)¨+Ô*OÑPÔPØÕÔ!×)Ò)¨+Ô*>Ñ?Ô?ñð ñ @Ô?ñ QÔPñ :Ô9ñð Ð˜Õ3Ô7Ñ8Ô8ØÕÔ ×(Ò(¨Ô)NÑOÔOØÕÔ ×(Ò(¨Ô)=Ñ>Ô>ñð ñ ?Ô>ñ PÔOñ 9Ô8ñð Ð˜Õ3Ô7Ñ8Ô8ØÕÔ ×(Ò(¨Ô)NÑOÔOØÕÔ ×(Ò(¨Ô)=Ñ>Ô>ñð ñ ?Ô>ñ PÔOñ 9Ô8ñð Ð˜Õ0Ô4Ñ5Ô5ØÐ˜Õ1Ô5Ñ6Ô6ØÕÔ×#Ò# KÔ$IÑJÔJØÕÔ×#Ò# KÔ$8Ñ9Ô9ØÕÔ×%Ò% kÔ&KÑLÔLØÕÔ×%Ò% kÔ&:Ñ;Ô;ØÕÔ×&Ò& {Ô'LÑMÔMØÕÔ×&Ò& {Ô';Ñ<Ô<ñAð Añ =Ô<ñ NÔMñ <Ô;ñ MÔLñ :Ô9ñ KÔJñ 7Ô6ñ 6Ô5ñAð Ð˜Õ/Ô7¸Õ9OÔ9SÐTÑUÔUØ€�„ð
 "ñ	Kð KØðKà�c”ñKð ñKð �d‰lð	Kð
 ðKñ Kð Kñ „ñ VÔUñKð ÐØ	ÕÔ% tÕ'?Ô'CÐDñô ð ÕÔ!×)Ò)¨+Ô*>Ñ?Ô?Ø€�„ð
 "Ø!ñUð UØðUà�c”ñUð ñUð �d‰lñ	Uð
 �d‰lðUð ðUñ Uð Uñ „ñ @Ô?ñô ñ
Uð ÐØ	ÕÔ&¨Õ(AÔ(EÐFñô ð €�„ð
 "Ø!Ø!ñ
ð 
Øð
à�c”ñ
ð ñ
ð �d‰lñ	
ð
 �d‰lñ
ð �d‰lð
ð ð
ñ 
ð 
ñ „ñô ñ
ñVñ Vð Vñ Vñ/ð /ñ /ð7Ø	�&Ô	ñ7Ø$,¨VÔ$4ñ7ØIOð7àð7ñ 7ð 7ñ 7ñ-Ð'9ð -¸fð -ñ -ð -ñ -ð ðIØðIà�c”ñIð ñIð �˜‘Ôð	Ið
 ðIñ Ið Iñ ÔñIðZ Ð˜Õ)Ô1Ñ2Ô2ñ�Fñ ˜vð ¨$ð ñ ð ñ 3Ô2ñð Ð˜Õ,¨dÕ.?Ð@ÑAÔAØ€�„ñð ñ „ñ BÔAñð Ð˜Õ+Ð,Ñ-Ô-ñ"ð "ñ .Ô-ñ"ð Ð˜Õ/Ð0Ñ1Ô1ñ9ñ 9ð 9ñ 2Ô1ñ9ð Ð˜Õ2Ð3Ñ4Ô4ñCð Cñ 5Ô4ñCð6 Ð˜ÕAÐBÑCÔCñMð Mñ DÔCñMð23 Ø
ð3 àð3 ð �T‰Mð3 ð ð	3 ð
 ð3 ð ˆ6�6ˆ>Ôð3 ñ 3 ð 3 ñ 3 ðl Ð˜Õ-Ñ.Ô.Ø€ˆX�~Ñ&Ô&ðLØ
ðLàðLð �T‰MðLð ð	Lð
 ðLð ˆ6�6ˆ>ÔðLñ Lð Lñ 'Ô&ñ /Ô.ñLð@ Ð˜Õ/Ñ0Ô0Ø€ˆX�~Ñ&Ô&ðLØ
ðLàðLð �T‰MðLð ð	Lð
 ðLð ˆ6�6ˆ>ÔðLñ Lð Lñ 'Ô&ñ 1Ô0ñLð/ Fñ /¨uð /¸ð /ñ /ð /ñ /ð5 Fñ 5¨uð 5¸ð 5ñ 5ð 5ñ 5ñ
¨ð 
Ð3Eð 
ñ 
ð 
ñ 
ñ(FÐ%7ñ F¸Vð FÈð Fñ Fð Fñ Fñ!�X˜fÔ%ð !¨&ð !ñ !ð !ñ !ñNØñNØ#'ðNØ05´ðNØEJÄ\ðNñ Nð Nñ Nñ&˜fñ &¨ñ &°ñ &ÀTð &ñ &ð &ñ &ñ"/˜fñ /¨ñ /°ñ /¸ñ /ÈTð /ñ /ð /ñ /ñ"! Vð !°4¸´9ñ !ÈTð !ñ !ð !ñ !ñ$ Vð $°4¸´9ñ $ÈTð $ñ $ð $ñ $ð Ð˜Õ2Ñ3Ô3Ø€�„ØñS ð S¨t°C¬yñ SÈð Sñ Sð Sñ Ôñ „ñ 4Ô3ñSð  ØØØñp4ñ p4Øñp4à
ñp4ð ñp4ð ñ	p4ð
 ñp4ð ðp4ð ðp4ñ p4ð p4ñ p4ðf Ð˜Õ,Ñ-Ô-Ø€�„Øð  ØØññ Øñà
ñð ñð ñ	ð
 ðð ðñ ð ñ Ôñ „ñ .Ô-ñð  Ð˜�Ñ Ô Ø€˜ÐÑÔØñ	#ð 	#ñ Ôñ Ôñ !Ô ñ	#ð Ð˜Õ=Ñ>Ô>Ø€�„à¨$¸)¼.Ô:Nð1ñ 1ð 1ñ „ñ ?Ô>ñ1ñ$˜œñ °´ñ Àdð Ètð ñ ð ñ ð@ …Ô×Ò˜[ÔBÑCÔCØ…„×Ò˜Ô>Ñ?Ô?Ø€˜ÑÑÔØ',ñ yWð yWñ yWð yWñ Ôñ @Ô?ñ DÔCñyWðx Ð˜Õ0Ô8¸$Õ:QÔ:UÐVÑWÔWØÕÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€�„Øð
 !Ø ñTð TØðTà�s˜C�x”ñTð ñTð �T‰\ñ	Tð
 �T‰\ðTð ðTñ Tð Tñ Ôñ „ñ ?Ô>ñ XÔWñTðn Ð˜Õ/Ô3Ñ4Ô4ØÕÔ×$Ò$ [Ô%JÑKÔKØÕÔ×$Ò$ [Ô%9Ñ:Ô:Ø€�„Øð
 15ñ	Wñ WØðWà�s˜C�x” 4Ñ'ñWð ñWð ˜ ˜Ô&¨Ñ-ð	Wð
 ðWñ Wð Wñ Ôñ „ñ ;Ô:ñ LÔKñ 5Ô4ñ
Wð4 Ð˜Õ-Ñ.Ô.ØÐ˜Õ-Ñ.Ô.ØÐ˜Õ-Ñ.Ô.ØØ€�„ñ	�vð 	¨¨c°3¨h¬ð 	¸Fð 	ñ 	ð 	ñ „ñ Ôñ /Ô.ñ /Ô.ñ /Ô.ñ
	ð Ð˜Õ.Ñ/Ô/ØÐ˜Õ.Ñ/Ô/ØÐ˜Õ.Ñ/Ô/ØØ€�„ñ	˜ð 	¨¨s°C¨x¬ð 	¸Vð 	ñ 	ð 	ñ „ñ Ôñ 0Ô/ñ 0Ô/ñ 0Ô/ñ
	ñ%Øð%à�3˜�8Œ_ñ%ð �c˜3 �_ fÐ,Ô-ð%ð ð	%ñ %ð %ñ %ðP Ð˜Õ6Ñ7Ô7ØÐ˜Õ6Ñ7Ô7ØÐ˜Õ6Ñ7Ô7Ø€ˆ\ÑÔñTð Tñ Ôñ 8Ô7ñ 8Ô7ñ 8Ô7ñTðn Ð˜�Ñ%Ô%Ø€‰U‘EÑÔØ uñ ð ñ ð ñ Ôñ &Ô%ñð Ð˜�Ñ$Ô$Ø€�„ñX°4ñ Xð Xñ Xð Xñ „ñ %Ô$ñXð Ð˜�Ô,¨d­k¬oÐ>Ñ?Ô?Ø€�„ð !%Ø �=Ø"&Øñ
ð 
ð 
Ø	ð
ð Œ;˜Ññ
ð �Lð	
ð
 ŒL˜4Ñð
ð ð
ñ 
ð 
ñ „ñ @Ô?ñ
ð Ð˜�Õ*Ð+Ñ,Ô,ð
 !%Ø �=Ø"&Øñð ð Øðà	ðð Œ;˜Ññ	ð
 �Lðð ŒL˜4Ñðð ðñ ð ñ -Ô,ñð Ð˜	Ñ"Ô"ñ,ð ,ñ #Ô"ñ,ð Ð˜Õ.Ñ/Ô/ØÕÔ×'Ò'¨Ô(<Ñ=Ô=Ø€�„ð ØØ Ø”^Ô)ð)ð )Øð)àð)ð ñ)ð ð	)ð
 �T‰Mð)ð ð)ð ð)ñ )ð )ñ „ñ >Ô=ñ 0Ô/ñ)ðX Ð˜Õ;Ñ<Ô<ØÕ$Ô,×4Ò4°[Ô5IÑJÔJØ€ˆX‘{Ñ#Ô#ð-Øð-àð-ð ð-ð ˆ6�6ˆ>Ôð	-ñ -ð -ñ $Ô#ñ KÔJñ =Ô<ñ-ðx Ð˜ÕHÔPÑQÔQð
 ØñAð  $ØñAð Añ AØñAà	ðAð ñAð ñ	Að
 ñAð ˜‰}ðAð �4‰<ðAð ˆ6�6ˆ>ÔðAñ Að Añ RÔQñAñHð ñ ð Ð˜�˜Ñ'Ô'Ø€˜ÐÑÔØññ ð ñ Ôñ Ôñ (Ô'ñð Ð˜Õ)Ñ*Ô*Ø€�„ñ9ð 9ñ „ñ +Ô*ñ9ð Ð˜�Ñ'Ô'ñ6ð 6ñ (Ô'ñ6ð Ð˜�Ô)¨4­8¬<Ð8Ñ9Ô9ð !%Øñ		Dð 	Dð 	DØ
ð	Dð Œ;˜Ñð	Dð 
�$‰ð		Dð
 ð	Dñ 	Dð 	Dñ :Ô9ñ	Dð Ð˜�Ô-¨t­|Õ/?Ð@ÑAÔAñ.ð .˜&ð . s¨T¡zð .ñ .ð .ñ BÔAñ.ð Ð˜œ	œÕ=Ñ>Ô>ñ,ñ ,ð ,ñ ?Ô>ñ,ð Ð˜�	Ñ"Ô"Ø€�„Ø38Àñ 
ð 
ñ 
ð 
ñ „ñ #Ô"ñ
ð( Ð˜�Ô.Ñ/Ô/ð )-ñð ð Ø
Œ,ñð Œ Ñ%ðð „\ð	ñ ð ñ 0Ô/ñð$ 5:ñ 
#ð 
#ñ 
#ð 
#ñ 
#ð <AÈñ +ð +ñ +ð +ñ +ð: Ð˜�	Ñ"Ô"Ø€�„ñð ñ „ñ #Ô"ñð
 Ð˜�Ñ'Ô'ñGñ Gð Gñ (Ô'ñGð Ð˜Õ=Ñ>Ô>ðvØðvà
ñvð ðvð ðvñ vð vñ ?Ô>ñvðr Ð˜Õ)Ô1°4Õ3CÔ3GÐHÑIÔIØ€�„ð !%Ø"&Ø"&Ø"ñð ñ Øðð Œ;˜Ññð �L˜4Ñð	ð
 ŒL˜4Ñðð �t‘ðð ðñ ð ñ „ñ JÔIñðB Ð˜Õ)Õ2°DÕ4DÕ4QÐRÑSÔSØ€�„ð ñ6ð !%Ø"&Ø"&Ø"ñ6ð 6ñ 6Øñ6àð6ð Œ;˜Ññ	6ð
 �L˜4Ñð6ð ŒL˜4Ñð6ð �t‘ð6ð ð6ñ 6ð 6ñ „ñ TÔSñ6ðr Ñ �•˜t�{Ñ +Ô +Ð +Ø Ñ �•˜dœjÑ )Ô )Ð )Ø Ñ �•˜dœjÑ )Ô )Ð )Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �•˜TœYÑ 'Ô 'Ð 'Ø Ñ �•˜T�YÑ 'Ô 'Ð 'Ø Ñ �• $¤.Ñ 1Ô 1Ð 1Ø Ñ �• ¥Ñ /Ô /Ð /Ø Ñ �Õ" DÔ$4Ñ 5Ô 5Ð 5Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �• $¥.Ñ 1Ô 1Ð 1Ø Ñ �Õ# TÕ%6Ñ 7Ô 7Ð 7Ø Ñ �•˜t�{Ñ +Ô +Ð +Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �•˜dœjÑ )Ô )Ð )Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �•˜d�jÑ )Ô )Ð )Ø Ñ �•˜T�YÑ 'Ô 'Ð 'Ø Ñ �•˜t�{Ñ +Ô +Ð +Ø Ñ �•˜d�jÑ )Ô )Ð )Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �Õ" DÕ$4Ñ 5Ô 5Ð 5Ø Ñ �Õ% tÕ':Ñ ;Ô ;Ð ;Ø Ñ �•˜TœYÑ 'Ô 'Ð 'ð …Ô×Ò˜kÔCÑDÔDñð �&ñ  sð °Fð ñ ð ñ EÔDñð ð r+   