§
    ž²Åj«Ä ã            !       óìq  — 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 d dl mZmZ d dlm	Z	m
Z
 d dlmZmZmZmZmZmZmZmZ 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/m0Z0 d dl1m2Z3 d dl4m5Z5 ej6        j7        Z7g Z8ee9         e:d<   ej;        j<        j=        Z= G d„ de¦  «        Z>	 �d¡dedej?        de@fd„ZA eeAej?        jB        d¬¦  «        ZC eeAej?        jB        ¬¦  «        ZD eeAej?        jE        ¬¦  «        ZFde"deGde"fd„ZH e$e=jI        ¦  «         e0d¦  «        eDde"de"fd„¦   «         ¦   «         ¦   «         ZI e$e=jJ        ¦  «         e0d¦  «        eDde"de"fd „¦   «         ¦   «         ¦   «         ZJ e$e=jK        ¦  «         e0d¦  «        eDde"de"d!eLd"eLfd#„¦   «         ¦   «         ¦   «         ZK e$e=jM        ¦  «         e0d¦  «        eDd$e"d%eLd&eLd'eLd(e@d)e"fd*„¦   «         ¦   «         ¦   «         ZM e$e=jN        jO        g¦  «        d+„ ¦   «         ZP e$e=jN        j"        g¦  «        d,e"fd-„¦   «         ZQ e$e=jR        ¦  «         e0¦   «         eDd.e"de"fd/„¦   «         ¦   «         ¦   «         ZR e$e=jS        ¦  «         e0d¦  «        eDd$e"d.e"fd0„¦   «         ¦   «         ¦   «         ZS e$e=jT        ¦  «         e0d¦  «        d$e"d.e"d1eLd2eLfd3„¦   «         ¦   «         ZT e$e=jU        ¦  «         e0¦   «         eDd.e"de"fd4„¦   «         ¦   «         ¦   «         ZU e$e=jV        ¦  «         e0¦   «         eDd$e"d.e"de"fd5„¦   «         ¦   «         ¦   «         ZV e$e=jW        ¦  «         e0d¦  «        d$e"d.e"d"eLfd6„¦   «         ¦   «         ZW e$e=jX        ¦  «         e0d¦  «        eDd$e"d.e"d7eLd8e@fd9„¦   «         ¦   «         ¦   «         ZX e$e=jY        ¦  «         e0d¦  «        eD�d¢d;e"d.e"d<e9fd=„¦   «         ¦   «         ¦   «         ZY e$e=jZ        ¦  «        eDd$e"d>e"fd?„¦   «         ¦   «         ZZ e$e=j[        ¦  «         e0¦   «         eDd.e"de"fd@„¦   «         ¦   «         ¦   «         Z[ e$e=j\        ¦  «         e0d¦  «        eDd$e"d.e"de"fdA„¦   «         ¦   «         ¦   «         Z\ e$e=j]        ¦  «        d.e"dBe"de"fdC„¦   «         Z] e$e=j^        ¦  «        d$e"d.e"dBe"dee"e"f         fdD„¦   «         Z^ e$e=j_        ¦  «         e0¦   «         eDd$e"d.e"dEe"dFeLdGeLdHe@d8e@de"fdI„¦   «         ¦   «         ¦   «         Z_ e$e=j`        ¦  «         e0d¦  «        eDd$e"d.e"dJe"de"fdK„¦   «         ¦   «         ¦   «         Z`dLe"dMeGfdN„ZadOejb        fdP„Zc e$e=jd        ¦  «         e0¦   «         eDe>je        jf        fd.e"dQe"dMeGde"fdR„¦   «         ¦   «         ¦   «         Zd e$e=jg        ¦  «         e0d¦  «        eDd$e"d>e"dQe"dMeGfdS„¦   «         ¦   «         ¦   «         Zg e$e=jh        ¦  «        �d£dT„¦   «         Zi e$e=jj        ¦  «         e0¦   «         eDe>je        jf        dUfd.e"dQe"dMeGd!eLfdV„¦   «         ¦   «         ¦   «         Zj e$e=jk        jl        ¦  «        eDd$e"d.e"dQe"dMeGd!eLf
dW„¦   «         ¦   «         Zk e$e=jk        jm        ¦  «        eDd$e"d.e"dQe"dMeGd!eLde"fdX„¦   «         ¦   «         Zn e$e=jo        jl        ¦  «        eDd$e"d.e"dQe"dMeGdYeLf
dZ„¦   «         ¦   «         Zo e$e=jo        jp        ¦  «        eDd$e"d.e"dQe"dMeGdYeLde"fd[„¦   «         ¦   «         Zqd$e"d.e"dQe"dBee"         dMeGd\eGd]e"de"fd^„Zr e$e=js        ¦  «         e0d¦  «        eDd$e"d.e"deGde"fd_„¦   «         ¦   «         ¦   «         Zs e$e=jt        ¦  «         e0d¦  «        d$e"d.e"dQe"dBee"         dMeGd\eGd]e"de"fd`„¦   «         ¦   «         Zt e$e=ju        ¦  «         e0d¦  «        d$e"d.e"dQe"dBee"         dMeGd\eGd]e"de"fda„¦   «         ¦   «         Zu e$e=jv        ¦  «         e0¦   «         eDde>je        jf        fd.e"dQe"dBee"         dMeGde"f
db„¦   «         ¦   «         ¦   «         Zv e$e=jw        ¦  «         e0d¦  «        eDde>je        jf        fd$e"d.e"dQe"dBee"         dMeGde"fdc„¦   «         ¦   «         ¦   «         Zw e$e=jx        ¦  «         e0¦   «         eDe>je        jf        fd>e"dQe"dMeGde"fdd„¦   «         ¦   «         ¦   «         Zx e$e=jy        ¦  «         e0d¦  «        eDe>je        jf        fd$e"d.e"dQe"dMeGde"f
de„¦   «         ¦   «         ¦   «         Zy e$e=jz        ¦  «         e0¦   «         �d¤d>e"dge"dheLfdi„¦   «         ¦   «         Zz e$e=j{        ¦  «         e0¦   «         dje"dke"de"fdl„¦   «         ¦   «         Z{ e$e=j|        ¦  «         e0¦   «         d$e"dmeeG         deGdneGdoeGdpeGfdq„¦   «         ¦   «         Z| e$e=j}        j"        ¦  «        	 	 	 	 �d¥d.e"deGdneeG         doeeG         dpeGf
ds„¦   «         Z~de"deGdneeG         doeeG         deeGeGf         f
dt„Z e$e=j€        ¦  «         e0¦   «         	 	 	 	 �d¥d>e"due"deGdneeG         doeeG         dpeGfdv„¦   «         ¦   «         Z€ e$e=j�        ¦  «         e0¦   «         d$e"dmeeG         deGdweGfdx„¦   «         ¦   «         Z� e$e=j‚        ¦  «         e0¦   «         d$e"dmeeG         dyeGdzeGd{eGf
d|„¦   «         ¦   «         Z‚d$e"de"d}ejb        fd~„Zƒ e$e=j„        ¦  «         e0d¦  «        eCd$e"de"deGd}ejb        fd€„¦   «         ¦   «         ¦   «         Z„ e$e=j…        ¦  «         e0¦   «         eCd$e"de"deGd}ejb        fd�„¦   «         ¦   «         ¦   «         Z…d‚„ Z† e$e=j‡        ¦  «         e0¦   «         d>e"dƒeeG         d„eeG         d…eeG         d†eeG         de"fd‡„¦   «         ¦   «         Z‡ e$e=jˆ        ¦  «         e0¦   «         eDd>e"dˆeeG         dƒeeG         d„eeG         d…eeG         d†eeG         de"fd‰„¦   «         ¦   «         ¦   «         Zˆ e$e=j‰        ¦  «         e0¦   «         d$e"dŠe"d&eLfd‹„¦   «         ¦   «         Z‰ e$e=jŠ        ¦  «         e0¦   «         d;e"dŒeeG         d�eGdŽeGdpeGde"fd�„¦   «         ¦   «         ZŠ e$e=j‹        jl        ¦  «        eD	 �d£d$e"d.e"d�eeL         de"fd‘„¦   «         ¦   «         Z‹ e$e=jŒ        ¦  «        e=jŒ        jl         �                    e7jŽ        ¦  «        e=jŒ        jl         �                    e7j�        ¦  «        d>e"dheLd’ee@         fd“„¦   «         ¦   «         ¦   «         ZŒ e$e=j�        ¦  «         e0d”d•¦  «        d>e"dheLd’ee@         fd–„¦   «         ¦   «         Z� e$e=j‘        ¦  «         e0¦   «         de"deGd—e@fd˜„¦   «         ¦   «         Z‘ e$e=j’        ¦  «         e0d¬™¦  «        de"deGd—e@fdš„¦   «         ¦   «         Z’ e$e=j“        ¦  «         e0¦   «         	 	 	 �d¦dBe"dœe"d�eGdže@dŸe@de"fd „¦   «         ¦   «         Z“ e$e=j”        ¦  «         e0¦   «         d$e"dœe"d¡eGd�eGdže@f
d¢„¦   «         ¦   «         Z”deeG         fd£„Z•d¤ee"         deGd¥eGdee"         fd¦„Z–d¤ee"         fd§„Z—d¤ee"         deGfd¨„Z˜d¤ee"         deGd¥eGfd©„Z™ e$e=jš        jl        e=jš        jp        g¦  «        	 �d£d¤ee"         deGd¥eGdªee"         de"f
d«„¦   «         Zš e$e=j›        jl        e=j›        jp        g¦  «        	 	 �d§d.e"d¬eeG         deGdªeee"                  deee"                  f
d­„¦   «         Z› e$e=jœ        j"        ¦  «        �d¨d>e"d®eGdeGdee"d¯f         fd°„¦   «         Zœ e$e=j�        jl        ¦  «        	 �d¨d>e"d¬eeG         deGdee"d¯f         fd±„¦   «         Z� e$e=jž        j"        ¦  «        �d¨d.e"d®eGdeGdee"d¯f         fd²„¦   «         Zže=jŸ        j          �                    e7jŽ        ¦  «        	 �d¨d.e"d³e"deGdee"d¯f         fd´„¦   «         Z¡ e$e=j¢        ¦  «         e0d¬™¦  «        eD�d©d.e"dµe"d¶e"d!eGd%eGf
d·„¦   «         ¦   «         ¦   «         Z¢ e$e=j£        ¦  «         e0¦   «         eD	 	 	 �dªd.e"dµe"d¶e"d!eGd%eGd¸e@fd¹„¦   «         ¦   «         ¦   «         Z£ e$e=j¤        ¦  «         e0¦   «         eD�d©d.e"dµe"dºe"d!eGd%eGf
d»„¦   «         ¦   «         ¦   «         Z¤ e$e=j¥        jl        ¦  «        eDd$e"d>e"d¼e"d½e"d¾ee"         d¿eGdÀeGdÁeGdÂeGdÃee@         deee"         ee"         ee"         f         fdÄ„¦   «         ¦   «         Z¥ e$e=j¥        jp        ¦  «        d$e"d>e"d¼e"d½e"d¾ee"         d¿eGdÀeGdÁeGdÂeGdÃee@         d”ej"        d•ej"        dÅej"        deee"         ee"         ee"         f         fdÆ„¦   «         Z¦dee"         dee"         fdÇ„Z§ e$e=j¨        jl        ¦  «        dÈe"d>e"dÉeeG         d¼e"d½e"dBee"         dÊee"         dÃee@         deee"         ee"         ee"         f         fdË„¦   «         Z¨ e$e=j¨        jp        ¦  «        dÈe"d>e"dÉeeG         d¼e"d½e"dBee"         dÊee"         dÃee@         d”ej"        d•ej"        dÅej"        deee"         ee"         ee"         f         fdÌ„¦   «         Z©d>e"dBee"         dÊee"         dÍee"         dÎee"         dHe@dÏeLd�eLdÐe@dee"e"e"ee"         ee"         f         fdÑ„Zª e$e=j«        ¦  «         e0dªdÒdÓ¦  «        d>e"dBee"         dÊee"         dÍee"         dÎee"         dHe@dÏeLd�eLdee"e"e"f         fdÔ„¦   «         ¦   «         Z«e=j«        jl         �                    e7j�        ¦  «        e=j«        jl         �                    e7jŽ        ¦  «        d>e"dBee"         dÊee"         dÍee"         dÎee"         dHe@dÏeLd�eLdee"e"e"f         fdÕ„¦   «         ¦   «         Z¬e=j­        jl         �                    e7jŽ        ¦  «        �d¨dee"         fdÖ„¦   «         Z® e$e=j¯        jl        ¦  «        d>e"dBee"         dÊee"         dÍe"dÎe"dÏeLd�eLdee"e"e"f         fd×„¦   «         Z¯ e$e=j°        jl        ¦  «        d>e"dBee"         dÊee"         dÍe"dÎe"dHe@dÏeLd�eLdee"e"e"f         fdØ„¦   «         Z° e$e=j°        j±        ¦  «        d>e"dBee"         dÊee"         dHe@dÏeLd�eLdee"e"e"f         fdÙ„¦   «         Z² e$e=j³        jl        ¦  «        d>e"dBee"         dÊee"         dÍe"dÎe"dHe@dÏeLd�eLdee"e"e"e"e"f         fdÚ„¦   «         Z³d>e"dBee"         dÊee"         dÍe"dÎe"d�eLdHe@de"fdÛ„Z´ e$e=jµ        jl        ¦  «        d>e"dBee"         dÊee"         dÍe"dÎe"dÏeLd�eLdee"e"e"e"f         fdÜ„¦   «         Zµ e$e=j¶        jl        ¦  «        d>e"dBee"         dÊee"         dÍe"dÎe"dÏeLd�eLdee"e"e"e"e"e"f         fdÝ„¦   «         Z¶ e$e=j·        jl        ¦  «        d>e"dBee"         dÊee"         dÍe"dÎe"dÏeLd�eLdee"e"e"e"f         fdÞ„¦   «         Z· e$e=j¸        ¦  «         e0d”d•¦  «        eD�d£dß„¦   «         ¦   «         ¦   «         Z¹ e$e=jº        ¦  «         e0¦   «         dddddddàœdee"e(f         dOeejb                 dáeej»                 dâe@dãe@däeej¼                 fdå„¦   «         ¦   «         Zº e$e=j½        e=j¾        e=j¿        g¦  «         e0¦   «         dæ„ ¦   «         ¦   «         ZÀe=jÁ        jl         �                    e7j�        ¦  «         e$e=jÁ        ¦  «         e0d”d•dÅdç¦  «        d>e"dBe"dÊee"         dÍee"         dÎee"         dHe@dèeLdéeLfdê„¦   «         ¦   «         ¦   «         ZÁdë„ ZÂ e$e=jÃ        jl        ¦  «        dÈe"d>e"dBee"         dÍee"         dÎee"         dÒee"         dÓee"         d’e@d�eLdÃee@         dìe"dee"ee"         ee"         f         fdí„¦   «         ZÃ e$e=jÄ        jl        ¦  «        dÈe"d>e"dBee"         dÍee"         dÎee"         dÒee"         dÓee"         d’e@d�eLdÃee@         dee"ee"         ee"         f         fdî„¦   «         ZÄ e$e=jÄ        jp        ¦  «        dÈe"d>e"dBee"         dÍee"         dÎee"         dÒee"         dÓee"         d’e@d�eLdÃee@         d”ej"        d•ej"        dÅej"        dee"ee"         ee"         f         fdï„¦   «         ZÅ e$e=jÆ        ¦  «         e0d”d•dÅ¦  «        d>e"d$e"dBe"dÍee"         dÎee"         dÒee"         dðee"         déeLfdñ„¦   «         ¦   «         ZÆ e$e=jÇ        ¦  «         e0d”d•dÅ¦  «        d>e"d$e"dBe"dÍee"         dÎee"         dÒee"         dðee"         déeLdòe"fdó„¦   «         ¦   «         ZÇ e$e=jÈ        ¦  «         e0¦   «         eDd>e"dˆeeGeGf         fdô„¦   «         ¦   «         ¦   «         ZÉd.e*dœe*dˆeeG         deGfdõ„ZÊ e$e=jË        ¦  «         e0¦   «         d.e*dœe*dˆeeG         fdö„¦   «         ¦   «         ZË e$e=jÌ        ¦  «         e0¦   «         d>e*dœe*dˆeeG         d†eeG         d…eeG         f
d÷„¦   «         ¦   «         ZÌ e$e=jÍ        ¦  «        drdøœde*deGdwe*dùe*d%e(f
dú„¦   «         ZÍ e$e=jÎ        ¦  «         e0¦   «         drdøœde*deGdwe*dùe*d%e(f
dû„¦   «         ¦   «         ZÎdrdøœde*deGdwe*dùe*düe@d%e(fdý„ZÏ e$e=jÐ        jl        ¦  «        e=jÐ        jl         �                    e7jŽ        ¦  «        �d«dÿ„¦   «         ¦   «         ZÐ e$e=jÑ        ¦  «        de*deGdwe*dùe*f�d „¦   «         ZÑ e$e=jÒ        ¦  «         e0¦   «         de*deGdwe*dùe*f�d„¦   «         ¦   «         ZÒde*deGdwe*dùe*düe@f
�d„ZÓ e$e=jÔ        ¦  «         e0ddJ¦  «        eDd.e"dee"e"f         f�d„¦   «         ¦   «         ¦   «         ZÔ e$e=jÕ        ¦  «         e0¦   «         	 	 	 �d¬de"�dee@eGeLf         �dee@eGeLf         �deejÖ                 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Û         �                    e7jŽ        ¦  «        e=jÚ        jÛ         �                    e7j�        ¦  «        e=jÜ        jÛ         �                    e7jŽ        ¦  «        e=jÜ        jÛ         �                    e7j�        ¦  «        e=jÝ        jÛ         �                    e7jŽ        ¦  «        e=jÝ        jÛ         �                    e7j�        ¦  «        d>e"dˆeeeG                  �deeeL                  de"f�d„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ZÞ e$e=jß        jÛ        ¦  «         e$e=jà        jÛ        ¦  «         e$e=já        jÛ        ¦  «        e=jß        jÛ         �                    e7jŽ        ¦  «        e=jß        jÛ         �                    e7j�        ¦  «        e=jà        jÛ         �                    e7jŽ        ¦  «        e=jà        jÛ         �                    e7j�        ¦  «        e=já        jÛ         �                    e7jŽ        ¦  «        e=já        jÛ         �                    e7j�        ¦  «        d>e"dˆeeeG                  �deeeL                  de"f�d„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         Zâ�d¡�d„Zã e$e=jÚ        jl        e=jÚ        jp        g¦  «        e=jÚ        jl         �                    e7jŽ        ¦  «        e=jÚ        jl         �                    e7j�        ¦  «         e0dd�¬¦  «        	 �d£d>e"dˆeeG         �deeL         de"f�d„¦   «         ¦   «         ¦   «         ¦   «         ZÚ e$e=jß        jl        e=jß        jp        g¦  «        e=jß        jl         �                    e7jŽ        ¦  «        e=jß        jl         �                    e7j�        ¦  «         e0dd�¬¦  «        	 �d£d>e"dˆeeG         �deeL         de"f�d„¦   «         ¦   «         ¦   «         ¦   «         Zä e$e=jÜ        jl        e=jÜ        jp        g¦  «        e=jÜ        jl         �                    e7jŽ        ¦  «        e=jÜ        jl         �                    e7j�        ¦  «         e0dd�¬¦  «        	 	 �d®d>e"dˆeeG         �deeL         �deeL         de"f
�d„¦   «         ¦   «         ¦   «         ¦   «         ZÜ e$e=jà        jl        e=jà        jp        g¦  «        e=jà        jl         �                    e7jŽ        ¦  «        e=jà        jl         �                    e7j�        ¦  «         e0dd�¬¦  «        	 	 �d®d>e"dˆeeG         �deeL         �deeL         de"f
�d„¦   «         ¦   «         ¦   «         ¦   «         Zà e$e=jÝ        jl        e=jÝ        jp        g¦  «        e=jÝ        jl         �                    e7jŽ        ¦  «        e=jÝ        jl         �                    e7j�        ¦  «         e0dd�¬¦  «        	 	 	 �d¯d>e"dˆeeG         �deeL         �deeL         �deeL         de"f�d„¦   «         ¦   «         ¦   «         ¦   «         ZÝ e$e=já        jl        e=já        jp        g¦  «        e=já        jl         �                    e7jŽ        ¦  «        e=já        jl         �                    e7j�        ¦  «         e0dd�¬¦  «        	 	 	 �d¯d>e"dˆeeG         �deeL         �deeL         �deeL         de"f�d„¦   «         ¦   «         ¦   «         ¦   «         ZáeD	 �d¡d>e"dˆeeG         �deeeL                  �de@de"f
�d„¦   «         Zå�d„ Zæ�d„ Zç�d„ Zè�d„ Zé	 �d¡�d „Zê�d!„ Zë�d"„ Zì�d¡�d#„Zí�d¡�d$„Zî�d%„ Zï e$e=jð        jñ        ¦  «        e=jð        jñ         �                    e7jŽ        ¦  «        e=jð        jñ         �                    e7j�        ¦  «        �d&„ ¦   «         ¦   «         ¦   «         Zò e$e=jó        jñ        ¦  «        e=jó        jñ         �                    e7jŽ        ¦  «        e=jó        jñ         �                    e7j�        ¦  «        �d'„ ¦   «         ¦   «         ¦   «         Zô e$e=jó        jõ        ¦  «        e=jó        jõ         �                    e7jŽ        ¦  «        e=jó        jõ         �                    e7j�        ¦  «        �d(„ ¦   «         ¦   «         ¦   «         Zö e$e=jð        jõ        ¦  «        e=jð        jõ         �                    e7jŽ        ¦  «        e=jð        jõ         �                    e7j�        ¦  «        �d)„ ¦   «         ¦   «         ¦   «         Z÷�d*„ Zø�d¡�d+„Zù�d¡�d,„Zú�d-„ Zû e$e=jü        jñ        ¦  «        e=jü        jñ         �                    e7jŽ        ¦  «        e=jü        jñ         �                    e7j�        ¦  «        �d.„ ¦   «         ¦   «         ¦   «         Zý e$e=jü        jõ        ¦  «        e=jü        jõ         �                    e7jŽ        ¦  «        e=jü        jõ         �                    e7j�        ¦  «        �d/„ ¦   «         ¦   «         ¦   «         Zþ�d0„ Zÿ�d1„ �Z  e$e=�j        jõ        ¦  «        e=�j        jõ         �                    e7jŽ        ¦  «        e=�j        jõ         �                    e7j�        ¦  «        �d2„ ¦   «         ¦   «         ¦   «         �Z e$e=�j        jñ        ¦  «        e=�j        jñ         �                    e7jŽ        ¦  «        e=�j        jñ         �                    e7j�        ¦  «        �d3„ ¦   «         ¦   «         ¦   «         �Z e$e=�j        jÛ        ¦  «        e=�j        jÛ         �                    e7jŽ        ¦  «        e=�j        jÛ         �                    e7j�        ¦  «        �d4„ ¦   «         ¦   «         ¦   «         �Z e$e=�j        jÛ        ¦  «        e=�j        jÛ         �                    e7jŽ        ¦  «        e=�j        jÛ         �                    e7j�        ¦  «        �d5„ ¦   «         ¦   «         ¦   «         �Z e$e=�j        jÛ        ¦  «         e$e=�j	        jÛ        ¦  «        e=�j
        jÛ         �                    e7jŽ        ¦  «        e=�j
        jÛ         �                    e7j�        ¦  «        e=�j        jÛ         �                    e7jŽ        ¦  «        e=�j        jÛ         �                    e7j�        ¦  «        e=�j	        jÛ         �                    e7jŽ        ¦  «        e=�j	        jÛ         �                    e7j�        ¦  «        �d6„ ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z e$e=�j
        jl        e=�j
        jp        g¦  «         e0¦   «         	 �d£d>e"dˆeeG         �d7e@�deeL         de"f
�d8„¦   «         ¦   «         �Z
 e$e=�j        jl        e=�j        jp        g¦  «        e=�j        jl         �                    e7j�        ¦  «         e0¦   «         	 	 �d®d>e"dˆeeG         �d7e@�deeL         �deeL         de"f�d9„¦   «         ¦   «         ¦   «         �Z e$e=�j	        jl        e=�j	        jp        g¦  «         e0¦   «         	 	 	 �d¯d>e"dˆeeG         �d7e@�deeL         �deeL         �deeL         de"f�d:„¦   «         ¦   «         �Z	�d£�d;„�Z�d<„ �Zduee"         �d=ee"         �d>e"de"f�d?„�Z�d=e+de"f�d@„�ZeDd>e"dˆeeG         �d7e@�deeeL                  de"f
�dA„¦   «         �Z e$e=�j        jl        ¦  «        �dBe"�dCe"de@f�dD„¦   «         �Z e$e=�j        e=�j        g¦  «         e0¦   «         �dE„ ¦   «         ¦   «         �Z e$e=�j        g¦  «        �dF„ ¦   «         �Z e$e=�j        g¦  «        �d¡�dG„¦   «         �Z e$e=�j        g¦  «        �dH„ ¦   «         �Z e$e=�j        g¦  «        �dI„ ¦   «         �Zd.e"dQe"dBee"         dMeGd\eGdee"e"f         f�dJ„�Z e$e=�j        ¦  «         e0dd]¦  «        d.e"dQe"dBee"         dMeGd\eGdee"e"f         f�dK„¦   «         ¦   «         �Z e$e=�j        ¦  «         e0dd]¦  «        d.e"dQe"dBee"         dMeGd\eGdee"e"f         f�dL„¦   «         ¦   «         �Zde"�dMeLde"f�dN„�Zde"�dMeLde"f�dO„�Z�dPe"de+f�dQ„�Z�dRe+�dSe"de"f�dT„�Z�dSee"         de"f�dU„�Z�dVeG�d7e@dOejb        dáej»        f�dW„�Z �dXe"�dYeG�dZeG�d7e@f�d[„�Z!�dXe"�d\eG�dYeG�dZeG�d7e@f
�d]„�Z"�dXe"dŽeeG         �d7e@f�d^„�Z#�dXe"dŽeeG         �d7e@f�d_„�Z$ e$e=�j%        ¦  «         e0¦   «         eD�dXe"dŽeeG         �d7e@f�d`„¦   «         ¦   «         ¦   «         �Z%	 	 	 	 �d°�dBe"�dae"�dbeG�dceG�d7e@�dde@de"f�de„�Z& e$e=�j'        ¦  «         e0¦   «         eD	 	 	 �d±�dBe"�dae"�dbeG�dceG�d7e@de"f�df„¦   «         ¦   «         ¦   «         �Z' e$e=�j(        ¦  «         e0¦   «         eD�dg„ ¦   «         ¦   «         ¦   «         �Z( e$e=�j)        ¦  «         e0¦   «         dde>je        jf        f�dh„¦   «         ¦   «         �Z)�diej"        �djej"        �dke@de@f�dl„�Z*e=�j+        jl         �                    e7jŽ        ¦  «        e=�j+        jp         �                    e7jŽ        ¦  «         e0d�¬m¦  «        d�dnœ�do„¦   «         ¦   «         ¦   «         �Z+ e$e=�j,        jl        e=�j,        jp        g¦  «        e=�j,        jl         �                    e7j�        ¦  «         e0¦   «         eD	 	 �d®d>e"dˆeeGeGf         �d7e@�dpeeL         �dqeeL         de"f�dr„¦   «         ¦   «         ¦   «         ¦   «         �Z- e$e=�j,        jÛ        ¦  «        e=�j,        jÛ         �                    e7jŽ        ¦  «        e=�j,        jÛ         �                    e7j�        ¦  «         e0¦   «         eD	 �d£�dBe"dˆeeeGeGf                  �d7e@�deeeLeLf                  de"f
�ds„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z. e$e=�j/        ¦  «         e$e=�j0        ¦  «         e$e=�j1        ¦  «        eD e0¦   «         �dBe"d…eeGd¯f         de"f�dt„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z2 e$e=�j3        ¦  «         e$e=�j4        ¦  «         e$e=�j5        ¦  «        eD e0¦   «         �dBe"d…eeGd¯f         de"f�du„¦   «         ¦   «         ¦   «         ¦   «         ¦   «         �Z6�dBe"d…eeGd¯f         �dveeGeGeGge"f         de"f�dw„�Z7 e$e=�j8        ¦  «         e$e=�j9        ¦  «         e$e=�j:        ¦  «         e0d¦  «        �dx„ ¦   «         ¦   «         ¦   «         ¦   «         �Z; e$e=�j<        ¦  «         e0�dy�dz¦  «        dd�d{œ�d|„¦   «         ¦   «         �Z< e$e=�j=        ¦  «         e0¦   «         �d²d�d}œ�d~„¦   «         ¦   «         �Z= e$e=�j>        jl        e=�j>        jp        g¦  «         e0¦   «         de�j?        dd�dœdoe(dOeejb                 �d€e�j@        dáeej»                 dâe@f
�d�„¦   «         ¦   «         �ZA e$e=�j>        �jB        g¦  «        de�j?        dd�dœdne(doe(dOeejb                 �d€e�j@        dáeej»                 dâe@f�d‚„¦   «         �ZC e$e&¦  «        �dƒ„ ¦   «         �ZD e$e=�jE        ¦  «        e=�jE        jl         �                    e7j�        ¦  «         e0¦   «         drdrde>je        jf        fd>e"dQe"dhe(�d„e(dBee"         dMeGde"f�d…„¦   «         ¦   «         ¦   «         �ZE e$e=�jF        ¦  «        e=�jF        jl         �                    e7j�        ¦  «         e0d�d†¦  «        d>e"dQe"dMeGdee"e"f         f�d‡„¦   «         ¦   «         ¦   «         �ZF e$e=�jG        jl        ¦  «        	 	 �d³dd�dˆœ�d‰e"�dŠe"d,e"�d‹eL�dŒe@�d�ee"         d&eeL         dee"e"f         f�dŽ„¦   «         �ZH�d�„ �ZI e$e=�jJ        g¦  «         e0¦   «         eD�d©�d�„¦   «         ¦   «         ¦   «         �ZJ e$e=�jK        ¦  «         e0¦   «         �d‘„ ¦   «         ¦   «         �ZK e$e=�jL        ¦  «        �d’„ ¦   «         �ZL e$e=�jM        jl        e=�jM        jp        g¦  «        dd�d“œd.e"dOeejb                 dªee"         de"f�d”„¦   «         �ZN e$e=�jO        jl        e=�jO        �jP        g¦  «        �d£d.e"deeG         f�d•„¦   «         �ZQ e$ej<        j=        �jR        ¦  «        �d¨�d–„¦   «         �ZR e$e=�jS        ¦  «         e0¦   «         dd�d—œ�d˜„¦   «         ¦   «         �ZS e$e=�jT        jl        ¦  «        d�d™œd.ej"        �deejÖ                 dej"        f�dš„¦   «         �ZT e$e=�jT        �jU        ¦  «        d�d™œ�deejÖ                 f�d›„¦   «         �ZVd�dœœ�d�„�ZWdd�d—œ�dž„�ZX e$e=�jY        ¦  «         e0¦   «         �dŸ„ ¦   «         ¦   «         �ZY e$e=�jZ        ¦  «        �d£�d „¦   «         �ZZ �eIe=�j[        e=�j\        ¦  «          �eIe=�j]        e=j¢        ¦  «          �eIe=�j^        e=j¤        ¦  «          �eIe=�j_        e=�jJ        ¦  «          �eIe=�j`        e=jN        ¦  «          �eIe=�ja        e=�jb        ¦  «          �eIe=�jc        e=jU        ¦  «          �eIe=�jd        e=�je        ¦  «          �eIe=�jf        e=jR        ¦  «          �eIe=�jg        e=�jh        ¦  «          �eIe=�ji        e=�jj        ¦  «          �eIe=�jk        e=�jl        ¦  «          �eIe=�jm        e=�jn        ¦  «          �eIe=�jo        e=�jp        ¦  «          �eIe=�jq        e=�jr        ¦  «          �eIe=�js        e=�jt        ¦  «          �eIe=�ju        e=�jv        ¦  «          �eIe=�jw        e=�jx        ¦  «          �eIe=�jy        e=�jz        ¦  «          �eIe=�j{        e=�j|        ¦  «          �eIe=�j}        e=�j~        ¦  «          �eIe=�j        e=�j€        ¦  «          �eIe=�j�        e=�j‚        ¦  «          �eIe=�jƒ        e=�j„        ¦  «          �eIe=�j…        e=j[        ¦  «         dS (´  é    N)ÚEnum)ÚpartialÚreduce)ÚchainÚproduct)ÚAnyÚCallableÚcastÚIterableÚListÚOptionalÚTupleÚUnion)Ú	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© ó    úMC:\Projects\Historical\venv\Lib\site-packages\torch/_decomp/decompositions.pyr#   r#   /   s   € € € € € Ø€DØ€DØ
€C€C€Cr-   r#   FÚfÚtype_promotionÚcompute_dtype_onlyc                 óN   ‡ ‡‡— t          j        ‰ ¦  «        ˆˆ ˆfd„¦   «         }|S )Nc                  óê   •‡‡— d„ t          j        | i |¤ŽD ¦   «         }t          j        |d‰
iŽ\  ŠŠˆfd„}ˆfd„} ‰	t	          || ¦  «        i t	          ||¦  «        ¤Ž}‰r|S t	          ||¦  «        S )Nc                 ó<   — g | ]}t          |t          ¦  «        ¯|‘ŒS r,   )Ú
isinstancer   ©Ú.0Úxs     r.   ú
<listcomp>z-type_casts.<locals>.inner.<locals>.<listcomp>?   s8   € ð 
ð 
ð 
ØÅ*ÈQÕPVÑBWÔBWð
Øð
ð 
ð 
r-   Útype_promotion_kindc                 ó\   •— t          | t          ¦  «        r|                      ‰¦  «        S | S ©N©r5   r   Úto)r8   Úcomputation_dtypes    €r.   Úincrease_precz0type_casts.<locals>.inner.<locals>.increase_precG   s-   ø€ Ý˜!�VÑ$Ô$ð Ø—t’tÐ-Ñ.Ô.Ð.à�r-   c                 ó\   •— t          | t          ¦  «        r|                      ‰¦  «        S | S r<   r=   )r8   Úresult_dtypes    €r.   Údecrease_precz0type_casts.<locals>.inner.<locals>.decrease_precM   s,   ø€ Ý˜!�VÑ$Ô$ð Ø—t’t˜LÑ)Ô)Ð)à�r-   )ÚpytreeÚarg_tree_leavesÚutilsÚelementwise_dtypesr    )ÚargsÚkwargsÚ	flat_argsr@   rC   Úrr?   rB   r1   r/   r0   s         @@€€€r.   Úinnerztype_casts.<locals>.inner=   sÑ   øøø€ ð
ð 
ÝÔ-¨tÐ>°vÐ>Ð>ð
ñ 
ô 
ˆ	õ +0Ô*BØð+
Ø,:ð+
ð +
Ñ'Ð˜<ð
	ð 	ð 	ð 	ð 	ð	ð 	ð 	ð 	ð 	ð ˆA�x˜ tÑ,Ô,ÐPµ¸ÈÑ0OÔ0OÐPÐPˆØð 	.ØˆHå˜M¨1Ñ-Ô-Ð-r-   )Ú	functoolsÚwraps)r/   r0   r1   rL   s   ``` r.   Ú
type_castsrO   8   sF   øøø€ õ
 „_�QÑÔð.ð .ð .ð .ð .ð .ñ Ôð.ð6 €Lr-   T)r0   r1   )r0   r8   ÚdimÚreturnc                 ó~   — t          ||                      ¦   «         z
  ¦  «        D ]}|                      d¦  «        } Œ| S ©Néÿÿÿÿ)ÚrangerP   Ú	unsqueeze)r8   rP   Ú_s      r.   Ú_unsqueeze_to_dimrX   j   s;   € Ý�3˜Ÿš™œ‘=Ñ!Ô!ð ð ˆØ�KŠK˜‰OŒOˆˆØ€Hr-   Ú
grad_inputÚout_gradÚyc                 ó<   — | d||z  z
                        ¦   «         z  S ©Nr$   ©Úconj_physical©rZ   r[   s     r.   Útanh_backwardra   p   s#   € ð �q˜1˜q™5‘y×/Ò/Ñ1Ô1Ñ1Ð1r-   c                 ó<   — | |d|z
  z                        ¦   «         z  S r]   r^   r`   s     r.   Úsigmoid_backwardrc   w   s#   € ð �q˜A ™E‘{×1Ò1Ñ3Ô3Ñ3Ð3r-   ÚbetaÚ	thresholdc                 ó|   — ||z                        ¦   «         }t          j        ||z  |k    | | |z  |dz   z  ¦  «        S ©Nç      ð?)ÚexpÚtorchÚwhere)rZ   r8   rd   re   Úzs        r.   Úsoftplus_backwardrm   ~   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   )rj   rk   ri   )	rn   ro   rp   rq   rr   rs   ÚnegcoefÚposcoefÚ
negiptcoefs	            r.   Úelu_backwardry   †   sœ   € ð �e‰m€GØ€GØ€JØð 
ÝŒ{Ø˜aÒØ˜*Ñ$¨¸Ñ(@ÑAØ˜'Ñ!ñ
ô 
ð 	
õ Œ{Ø˜aÒØ˜*Ñ$ wÑ.µ´¸>ÈJÑ;VÑ1WÔ1WÑWØ˜'Ñ!ñ
ô 
ð 	
r-   c                 ó,   — t          j        | |¦  «        S r<   )rj   Ú	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©rP   )r~   s   €r.   ú<lambda>zfill_tensor.<locals>.<lambda>«   s    ø€ ÐkÐSX×S\ÒS\ÑS^ÔS^ÐkÐkÐk€ r-   )rj   Ú_checkrP   Ú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©rj   Ú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Å?ç        ©rj   rk   ©rn   r}   s     r.   Úhardsigmoid_backwardr˜   ·   s3   € õ Œ;Ø	�Š˜ šÑ$Ø�yÑ!Øñô ð r-   Úmin_valÚmax_valc                 óD   — t          j        ||k    ||k    z  d| ¦  «        S )Nr•   r–   )rn   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   € õ Œ;ØˆrŠ	ØÝŒ�D˜A’I˜{¨t°a©x¸3Ñ.>Ñ?ÀÑMÔMñô ð r-   c                 ó6   — t          j        ||k    d| ¦  «        S ru   r–   )rn   r}   re   s      r.   Úthreshold_backwardr¤   Ü   s   € õ Œ;�t˜yÒ(¨!¨[Ñ9Ô9Ð9r-   Únegative_slopeÚself_is_resultc                 ó<   — t          j        |dk    | | |z  ¦  «        S ru   r–   )rn   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Š   g      à¿)rj   r­   Úerfri   )rª   r}   r«   ÚM_SQRT2Ú	M_SQRT1_2Ú
M_2_SQRTPIÚkBetaÚkKappaÚx_sqÚx_cuberL   Ú
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]   )rj   r­   ÚFÚsoftplusÚsigmoid)rn   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<   )rj   rÅ   r’   s    r.   ÚsilurË     s   € ð •%”- Ñ%Ô%Ñ%Ð%r-   c                 óZ   — ddt          j        | ¦  «        z   z  }| |z  d|d|z
  z  z   z  S r]   )rj   ri   )rn   r}   rÅ   s      r.   Úsilu_backwardrÍ     s=   € ð �1•u”y $ Ñ'Ô'Ñ'Ñ(€GØ˜Ñ  A¨°°G±Ñ(<Ñ$<Ñ=Ð=r-   Úweightc                 ó<   — t          j        | dk    | || z  ¦  «        S ru   r–   )r}   rÎ   s     r.   Ú_prelu_kernelrÐ   $  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–   )rn   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                 óŒ   — |r||z
  dk    r|                       |¦  «        S ||z   dz  }t                               | |||¦  «        S )Ng�íµ ÷Æ°>r%   )Úmulr…   r¨   )rn   r}   rÕ   rÖ   r×   rØ   r¦   r¥   s           r.   Úrrelu_with_noise_backwardrÛ   4  s[   € ð ð 
�E˜E‘M DÒ(Ð(Ø�Š˜uÑ%Ô%Ð%à %™-¨1Ñ,ˆÝ×'Ò'Ø˜˜~¨~ñ
ô 
ð 	
r-   Úbufferc                 óÖ   — |dk     }t          j        |dd¦  «        }t          j        |dd¦  «        }t          j        t          j        |¦  «         ¦  «        }| |||d|z   z  z  z
  z  S )Nr   r$   rT   )rj   rk   ri   Úabs)rn   r}   rÜ   Úin_negativeÚ	max_derivÚsignrl   s          r.   Úlog_sigmoid_backwardrâ   I  sj   € ð ˜’(€KÝ”˜K¨¨AÑ.Ô.€IÝŒ;�{ A rÑ*Ô*€DÝŒ	•5”9˜T‘?”?Ð"Ñ#Ô#€AØ˜) d¨a°1°q±5©kÑ&:Ñ:Ñ;Ð;r-   ÚlossÚ	reductionc                 óª   — |t           j        j        k    rt          j        | ¦  «        S |t           j        j        k    rt          j        | ¦  «        S | S r<   )r#   r*   r~   rj   Úmeanr+   Úsum)rã   rä   s     r.   Úapply_loss_reductionrè   V  sE   € Ø•I”NÔ(Ò(Ð(ÝŒz˜$ÑÔÐØ	•i”mÔ)Ò	)Ð	)ÝŒy˜‰ŒÐàˆr-   Údtypec                 ó®   — | t           j        k    rt           j        S | t           j        k    rt           j        S | t           j        k    rt           j        S d S r<   )rj   Ú	complex32Úfloat16Ú	complex64Úfloat32Ú
complex128Úfloat64©ré   s    r.   Úto_real_dtyperò   _  sJ   € Ø•”ÒÐÝŒ}ÐØ	•%”/Ò	!Ð	!ÝŒ}ÐØ	•%Ô"Ò	"Ð	"ÝŒ}Ðð 
#Ð	"r-   Útargetc                 ó2   — | |z
  dz  }t          ||¦  «        S )Nr%   )rè   )r}   ró   rä   rã   s       r.   Úmse_lossrõ   n  s"   € ð �6‰M˜aÑ€DÝ  iÑ0Ô0Ð0r-   c                 ót   — |t           j        j        k    rd|                     ¦   «         z  nd}|||z
  z  | z  S )Nç       @)r#   r*   r~   Únumel)rn   rÁ   ró   rä   Únorms        r.   Úmse_loss_backwardrú   x  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)rP   ré   z-infT©rP   Úkeepdim)rj   ÚsoftmaxÚeqÚfloatÚallÚ
zeros_likerk   )r}   rP   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-   rh   c                 ó¢   — | |z
                        ¦   «         }t          j        ||k     d|dz  z  |z  |d|z  z
  ¦  «        }t          ||¦  «        S )Nr¡   r%   )rÞ   rj   rk   rè   )r}   ró   rä   rd   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 rg   )r#   r*   r~   rø   rj   rÞ   rk   rá   )	rn   r}   ró   rä   rd   rù   r8   Ú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   )rn   r}   ró   rä   rd   rY   Ú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 rg   )r#   r*   r~   rø   rj   rk   )rn   r}   ró   rä   r  rù   r8   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   )rn   r}   ró   rä   r  rY   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  } |                     |¦  «        }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,   ©r7   rW   s     r.   r9   z&_nll_loss_backward.<locals>.<listcomp>ì  s   € Ð2Ð2Ð2˜1�QÐ2Ð2Ð2r-   )rP   r#   r*   r~   rV   rj   rk   r  ÚscatterrU   r  Úreshape)rn   r}   ró   rÎ   rä   r  r  Úchannel_dimÚsafe_targetrY   Ú	new_shapes              r.   Ú_nll_loss_backwardr&  Ö  sG  € ð —x’x‘z”z A’~�~�!�!¨1€KØ•I”NÔ(Ò(Ð(Ø! LÑ0ˆà×Ò˜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    s
J d¦   «         ‚t          j        |                      ¦   «         |¦  «        }|                     |¦  «        }|dz  dk    sJ 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 rh   r‚   )rP   rF   Úcanonicalize_dimÚsizeÚnarrowrj   rÅ   Úcat)
rn   r}   rP   Úwrap_dimÚnInÚ	inputSizeÚ	firstHalfÚ
secondHalfÚgradInputFirstHalfÚgradInputSecondHalfs
             r.   Úglu_backwardr3  ö  s   € ð �8Š8‰:Œ:˜Š>ˆ>ˆ>ÐG‰>Œ>ˆ>ÝÔ% d§h¢h¡j¤j°#Ñ6Ô6€HØ
�)Š)�HÑ
Ô
€Càˆa‰�1ŠˆˆØP¸ÐPÐPÈ3ÐPÐPñ 	Œˆà�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           	      ó6  — d|                      ¦   «         cxk    rdk    sn J d¦   «         ‚|                      ¦   «         dk    s
J d¦   «         ‚|                      ¦   «         dk    o|                      ¦   «         dk    }|s7|j        d         |j        d         k    sJ d|j        › d|j        › d�¦   «         ‚|                     ¦   «         dk    s)J d	|j        › d
|                     ¦   «         › d�f¦   «         ‚|�-|                     ¦   «         |j        d         k    s
J d¦   «         ‚|t          j        j        k    rˆ|                      ¦   «         dk    rp|                       ¦   «         dk    r| j        d         |j        d         k    s;J d|j        d         › d|                       ¦   «         › d| j        d         › �¦   «         ‚nB|                       ¦   «         dk    r|                      ¦   «         dk    sJ d| j        › �¦   «         ‚t          | ||||||¦  «        S )Nr   r%   úinput tensor should be 1D or 2Dr$   ú;0D or 1D target tensor expected, multi-target not supportedúsize mismatch (got input: ú
, target: ú)ú:expected total_weight to be a single element tensor, got: z (z
 elements)rT   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: )rP   r  rø   r#   r)   r~   r&  )rn   r}   ró   rÎ   rä   r  r  Úno_batch_dims           r.   Únll_loss_backwardr<    sg  € ð �—’‘
”
ÐÐÒÐ˜aÒÐÐÐÐÐ!BÑÔÐà�
Š
‰Œ˜ÒÐÐØDñ 	ÔÐð —8’8‘:”: ’?Ð8 v§z¢z¡|¤|°qÒ'8€LØð JØŒ
�1Œ˜œ aœÒ(Ð(Ð(ØI D¤JÐIÐI¸&¼,ÐIÐIÐIñ 	)Ô(ðð ×ÒÑÔ 1Ò$Ð$Ð$ØDØÔÐAÐA ×!3Ò!3Ñ!5Ô!5ÐAÐAÐAð'Ñ$Ô$Ð$ð 	ˆ˜&Ÿ,š,™.œ.¨D¬J°r¬NÒ:Ð:Ð:ØEñ ;Ô:Ð:ð •I”NÔ(Ò(Ð(¨T¯XªX©Z¬Z¸1ª_¨_Ø�ŠÑ Ô  AÒ%Ð%¨+Ô*;¸AÔ*>À$Ä*ÈQÄ-Ò*OÐ*OÐ*Oð_ÀdÄjÐQRÄmð _ð _Ø)ŸošoÑ/Ô/ð_ð _ØHSÔHYÐZ[ÔH\ð_ð _ñ +PÔ*OÐOÐ*Oð �OŠOÑÔ Ò"Ð" {×'8Ò'8Ñ':Ô':¸aÒ'?Ð'?Ð'?ØXÀ[ÔEVÐXÐXñ (@Ô'?Ð?õ Ø�T˜6 6¨9°lÀLñô ð r-   c           	      ód  — |                      ¦   «         dk    sJ d|                      ¦   «         › �¦   «         ‚|                      ¦   «         dk    sJ d|                      ¦   «         › �¦   «         ‚|j        d         |j        d         k    r8|j        d         |j        d         k    r|j        d         |j        d         k    sJ d|j        › d	|j        › �¦   «         ‚|                     ¦   «         dk    s(J 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$   r7  r8  r:  z ( z, elements))rP   r  rø   r&  )rn   r}   ró   rÎ   rä   r  r  s          r.   Únll_loss2d_backwardr?  7  sd  € ð 	�Š‰
Œ
�aŠˆˆØiÐ]a×]eÒ]eÑ]gÔ]gÐiÐiñ 	Œˆð 	�
Š
‰Œ˜ÒÐÐØmÐ_e×_iÒ_iÑ_kÔ_kÐmÐmñ 	ÔÐð 	Œ
�1Œ˜œ aœÒ(Ð(ØŒJ�qŒM˜Vœ\¨!œ_Ò,Ð,ØŒJ�qŒM˜Vœ\¨!œ_Ò,Ð,Ð,ØH D¤JÐHÐH¸&¼,ÐHÐHñ -Ô,ð	-ð
 ×ÒÑÔ 1Ò$Ð$Ð$ð	IØÔ"ð	Ið 	IØ'3×'9Ò'9Ñ';Ô';ð	Ið 	Ið 	Iñ %Ô$Ð$õ
 Ø�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œÿÿÿ)rj   ÚmaximumÚlog1pÚnew_fullÚlogrè   )r}   ró   rÎ   rä   rã   s        r.   Úbinary_cross_entropyrE  Z  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‹   )rj   r‘   r#   r*   r~   rø   )rn   r}   ró   rÎ   rä   ÚEPSILONr  s          r.   Úbinary_cross_entropy_backwardrH  p  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<   )rj   rB  ri   rè   )rÁ   ró   rä   rã   s       r.   Úsoft_margin_lossrJ  ƒ  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]   )rj   rÅ   r#   r*   r~   rø   )rn   r}   ró   rä   rY   s        r.   Úsoft_margin_loss_backwardrL  �  sN   € ð ˜+Ñ%­¬°vÀ±}Ñ)EÔ)EÈÑ)IÑJ€JØ•I”NÔ(Ò(Ð(Ø $§*¢*¡,¤,Ñ.ˆ
ØÐr-   r%   ÚotherÚpc                 ó@   — t                                | |z
  |¬¦  «        S )N)rN  )r…   rù   )rÁ   rM  rN  s      r.   ÚdistrP  ž  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%   rT   T©Úmemory_formatéþÿÿÿr   )Úpowrç   rj   Ú	ones_likeÚcontiguous_formatr+  rÚ   ÚmatmulÚmTÚ	clamp_minÚsqrt)	rQ  rR  Úx1_normÚx1_padÚx2_normÚx2_padÚx1_Úx2_r  s	            r.   Ú_euclidean_distrd  ¤  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_zerosrj   Úslice_scatter)rn   re  rP   rf  rg  rh  rY   s          r.   Úslice_backwardrl  ±  s2   € ð ×&Ò& {Ñ3Ô3€JÝÔ˜z¨;¸¸UÀCÈÑNÔNÐNr-   r$   c                 óÂ  — ddl m}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||         }
 |||
k     ¦  «        r|
}n6 ||t          j        k    ¦  «        s ||||         k    ¦  «        r||         }|                      ¦   «         |
|	|         z  z   }||
z
  }||z   dz
  |z  ||<   |	|xx         |z  cc<   | j        rt          d¦  «        ‚|                      ||	|¦  «        S )Nr   )Úguard_size_obliviousÚ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_shapesrn  ro  rP   ÚRuntimeErrorrF   r(  Úlistr)  ÚstrideÚsysÚmaxsizeÚstorage_offsetÚis_quantizedÚNotImplementedErrorÚ
as_strided)r}   rP   rf  rg  rh  rn  ro  ÚndimÚsizesÚstridesÚ	start_valÚend_valrv  Úlens                 r.   Úslice_forwardr€  ¿  sI  € ðð ð ð ð ð ð ð ð
 �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àÐ˜I¨šMÑ*Ô*ð  Ø�U˜3”ZÑˆ	àÐ˜G ašKÑ(Ô(ð Ø�5˜”:ÑˆàÐ˜I¨šMÑ*Ô*ð Øˆ	ˆ	Ø	Ð	˜i¨%°¬*Ò4Ñ	5Ô	5ð Ø˜#”Jˆ	àÐ˜G iÒ/Ñ0Ô0ð ØˆˆØ	Ð	˜w­#¬+Ò5Ñ	6Ô	6ð Ð:NÐ:NØ�%˜”*Òñ;ô ;ð ð ˜”*ˆà×(Ò(Ñ*Ô*¨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.
    rQ   c                 ó^   •— | €|S | dk     r| ‰z   } t          t          | |¦  «        |¦  «        S ru   ©rŒ   r�   )ÚvalrÖ   r×   ÚdefaultÚdim_sizes       €r.   Ú
clamp_wrapz(_normalize_start_end.<locals>.clamp_wrap  s7   ø€ Øˆ;ØˆNØ�Š7ˆ7Ø˜‘.ˆCÝ•3�s˜E‘?”? EÑ*Ô*Ð*r-   r   )r  Úint)r8   rP   rf  rg  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é   rT   )rF   r(  rz  r  r‰  rr  ÚexpandÚclonerP   rj   Úaranger�  ÚonesÚboolÚlogical_andÚviewr…   rk   Ú_unsafe_masked_index)rÁ   rŠ  rP   rf  rg  rh  r†  Úsrc_sizeÚindicesÚidxÚmaskÚ
mask_shapes               r.   rk  rk    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‰{Œ{Ðàˆf�u—y’y‘{”{Ñ"€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<   )rj  rj   Úselect_scatter)rn   re  rP   rœ  rY   s        r.   Úselect_backwardrŸ  9  s.   € ð ×&Ò& {Ñ3Ô3€JÝÔ 
¨K¸¸eÑDÔDÐDr-   ÚoffsetÚdim1Údim2c                 ó\   — |                       |¦  «        }t          j        || |||¦  «        S r<   )rj  rj   Údiagonal_scatter)rn   re  r   r¡  r¢  rY   s         r.   Údiagonal_backwardr¥  @  s0   € ð
 ×&Ò& {Ñ3Ô3€JÝÔ! *¨k¸6À4ÈÑNÔNÐNr-   Úinput_dtypec                 óF   — | j         |k    r|                     |¦  «        }|S r<   )ré   r>   )rn   rY   r¦  s      r.   Ú_cast_grad_to_input_dtyper¨  I  s)   € ð Ô˜KÒ'Ð'Ø—]’] ;Ñ/Ô/ˆ
ØÐr-   Úoutputc                 óŒ   — | |z  }||t          j        ||d¬¦  «        z  z
  }t          | ||¦  «                             ¦   «         S ©NTrü   )rj   rç   r¨  Ú
contiguous)rn   r©  rP   r¦  Únew_grad_outputrY   s         r.   Ú_softmax_backward_datar®  Q  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«  )rj   ri   rç   r¨  )rn   r©  rP   r¦  rY   s        r.   Ú_log_softmax_backward_datar°  c  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   rT   )r   rj   r‘  Úint64rV   )
Ú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½  o  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Úpaddingrs  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        |d„ ¦  «         d S )Nc              3   ó"   K  — | ]
}|d k    V — ŒdS ©r   Nr,   ©r7   rN  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<{param_name} should be greater {'than' zero, but got {param}r,   r,   r-   r.   rƒ   z0im2col.<locals>.check_positive.<locals>.<lambda>“  s   € ÐX€ r-   ©r  rj   r„   ©ÚparamÚ
param_nameÚstrictÚconds       r.   Úcheck_positivezim2col.<locals>.check_positive�  sf   € Ø,2ÐR�sÐ(Ð( %Ð(Ñ(Ô(Ñ(Ô(Ð(½Ð;RÐ;RÈEÐ;RÑ;RÔ;RÑ8RÔ8RˆÝŒØÐXÐXñ	
ô 	
ð 	
ð 	
ð 	
r-   r¾  r¿  rÀ  F©rÓ  rs  ©rŠ   r>  c              3   ó"   K  — | ]
}|d k    V — ŒdS rÈ  r,   ©r7   Ú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,   ©r7   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-   rV  c              3   ó"   K  — | ]
}|d k    V — ŒdS rÈ  r,   )r7   Ú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 spacial size rV  ú, 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  rs  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-   r>  r   rT   r$   rŠ   é   ©T)rj   r„   r  r  r  rÞ  ÚziprV   r½  r�  rÃ   rã  Úpermuter)  r"  Úsqueeze)rÁ   r¾  r¿  rÀ  rs  rÕ  rz  Úbatched_inputÚ	batch_dimr#  Ú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        |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 )Nz9{param_name} should be greater than zero, but got {param}r,   r,   r-   r.   rƒ   z0col2im.<locals>.check_positive.<locals>.<lambda>è  s   € ÐU€ r-   rÏ  rÐ  s       r.   rÕ  zcol2im.<locals>.check_positiveå  sf   € Ø,2ÐR�sÐ(Ð( %Ð(Ñ(Ô(Ñ(Ô(Ð(½Ð;RÐ;RÈEÐ;RÑ;RÔ;RÑ8RÔ8RˆÝŒØÐUÐUñ	
ô 	
ð 	
ð 	
ð 	
r-   r¾  r¿  rÀ  FrÖ  rs  rî  )r%   rŠ   c              3   ó"   K  — | ]
}|d k    V — ŒdS rÈ  r,   rÙ  s     r.   rÊ  zcol2im.<locals>.<genexpr>ô  rÛ  r-   rV  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] = rV  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.   r9   zcol2im.<locals>.<listcomp>ÿ  sV   € ð ð ð á"ˆC��c˜3 ð 	
ˆS�1�s‘7‰]˜S C¨!¡G™_Ñ,¨qÑ0°RÑ7Ñ7ðð ð r-   rT   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 rT   ú.r,   ©ÚLr¿  r¾  rî  rÀ  r  rs  s   €€€€€€€r.   rƒ   zcol2im.<locals>.<lambda>  ó|   ø€ ð 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Š   r>  rï  c                 ó$   — g | ]\  }}|d |z  z   ‘ŒS ©r%   r,   )r7   ÚorN  s      r.   r9   zcol2im.<locals>.<listcomp>*  s$   € ÐJÐJÐJ©¨¨1˜!˜a !™e™)ÐJÐJÐJr-   ©Ú
accumulaterð  )rj   r„   r  r  r  rñ  rV   r"  rò  r½  r�  rX   rj  Úprodr…   Ú_unsafe_index_putrÃ   rã  ró  )rÁ   rî  r¾  r¿  rÀ  rs  rÕ  rz  Ú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 ©NrT  )Útype_asr�  rF   r   )rn   rš  rp   rK   s       r.   Únative_dropout_backwardr/  7  sJ   € ð 
˜Ÿš [Ñ1Ô1°EÑ9Ñ	:×AÒAÝÔ1°+Ñ>Ô>ð 	Bñ 	ô 	€Að €Hr-   Ú
input_sizeÚ	dimensionr)  c                 ó<  — t          |¦  «        dk    rt          j        | d¦  «        S t          j        t          |¦  «        |¦  «        }t          j        ||         | j        t          j        ¬¦  «        }|                     d||¦  «         	                    ¦   «         }|  
                    d|dz   ¦  «         	                    ||dz   ¦  «        } |                      |¦  «        }d|z  |fz   }t                               ||| d¬¦  «                             ¦   «         S )Nr   rŽ  rT   r$   r<   Tr   )r  rj   Úsqueeze_copyrF   r(  r‘  r�  Úint32ÚunfoldÚflattenÚmovedimrj  r…   r#  r¬  )	rª   r0  r1  r)  rh  rP   r™  rY   rœ  s	            r.   Úunfold_backwardr8  F  sö   € õ
 ˆ:�„˜!ÒÐÝÔ! $¨Ñ*Ô*Ð*Ý
Ô
 ¥ Z¡¤°)Ñ
<Ô
<€CÝ
Œ,�z #”¨t¬{Å%Ä+Ð
NÑ
NÔ
N€CØ
�*Š*�Q˜˜dÑ
#Ô
#×
+Ò
+Ñ
-Ô
-€CØ�<Š<˜˜C !™GÑ$Ô$×,Ò,¨S°#¸±'Ñ:Ô:€Dð —’ 
Ñ+Ô+€JØ�c‰M˜S˜FÑ"€EÝ×!Ò! *¨e°TÀdÐ!ÑKÔK×VÒVÑXÔXÐXr-   Ú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 )Nrh   r•   r,   Únan)rj   rk   r”  rC  r   )rn   r}   r9  ÚloÚhis        r.   Úlogit_backwardr>  Y  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 ru   )r…   Únative_dropoutr�  )rÁ   rN  r?  s      r.   ÚdropoutrB  n  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 Longrh   )	rj   r  r“  ré   Úis_floating_pointrq  Ú	rand_liker   rX  )rÁ   rN  r?  Ú	bool_maskÚress        r.   rA  rA  x  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    sJ ‚t	          j        | t          j        j        ¬¦  «        \  }}|                      |¦  «        } |  	                    ¦   «         dk    rt          j
        | ¦  «        }n.t          j        | |d¬¦  «        }t          j
        | |z
  ¦  «        }|t          j        ||d¬¦  «        z  }|s|                     |¦  «        }|S ©N©r:   r   T)rý   )r¬  ré   rj   ÚhalfrF   rG   ÚELEMENTWISE_TYPE_PROMOTION_KINDÚDEFAULTr>   rø   ri   Úamaxrç   )r8   rP   rJ  r?   rB   ÚunnormalizedÚx_maxr  s           r.   Ú_softmaxrT  ‰  sì   € ð
 	
�Š‰Œ€AØð %ØŒw�%œ*Ò$Ð$Ð$Ð$Ý&+Ô&>Ø	�uÔDÔLð'ñ 'ô 'Ñ#Ð�|ð 	
�ŠÐÑÔ€AØ‡w‚w�y„y�A‚~€~Ý”y ‘|”|ˆˆå”
˜1˜c¨4Ð0Ñ0Ô0ˆÝ”y  U¡Ñ+Ô+ˆØ�EœI l°CÀÐFÑFÔFÑF€FØð )Ø—’˜<Ñ(Ô(ˆØ€Mr-   )r  c                 óö  — |                       ¦   «         } |r| j        t          j        k    sJ ‚t	          j        | t          j        j        ¬¦  «        \  }}|                      |¦  «        } |  	                    ¦   «         dk    r| }nt          j
        | |d¬¦  «        }| |z
  }t          j        t          j        t          j        |¦  «        |d¬¦  «        ¦  «        }||z
  }|s|                     |¦  «        }|S rL  )r¬  ré   rj   rN  rF   rG   rO  rP  r>   rø   rQ  rD  rç   ri   )	r8   rP   rJ  r?   rB   ÚshiftedrS  Úshifted_logsumexpr  s	            r.   Ú_log_softmaxrX     sõ   € ð
 	
�Š‰Œ€AØð %ØŒw�%œ*Ò$Ð$Ð$Ð$Ý&+Ô&>Ø	�uÔDÔLð'ñ 'ô 'Ñ#Ð�|ð 	
�ŠÐÑÔ€AØ‡w‚w�y„y�A‚~€~Øˆˆå”
˜1˜c¨4Ð0Ñ0Ô0ˆØ�e‘)ˆÝœ	¥%¤)­E¬I°gÑ,>Ô,>ÀÈTÐ"RÑ"RÔ"RÑSÔSÐØÐ(Ñ(€FØð )Ø—’˜<Ñ(Ô(ˆØ€Mr-   rT   r˜  Úpadding_idxÚscale_grad_by_freqÚsparsec                 óÜ   — |                       ¦   «         dk    s
J d¦   «         ‚|j        dk    r8|                      d|¦  «        }|j        dk    r|                     d¦  «        }|S | |         S )Nr%   z'weight' must be 2-Dr$   r   )rP   rz  Úindex_selectró  )rÎ   r˜  rY  rZ  r[  rÈ   s         r.   Ú	embeddingr^  ¸  ss   € ð �:Š:‰<Œ<˜1ÒÐÐÐ4ÑÔÐà„|�qÒÐà×!Ò! ! WÑ-Ô-ˆØŒ<˜1ÒÐØ—+’+˜a‘.”.ˆCØˆ
à�gŒÐr-   Únum_weightsc                 óž  — t          j        | t           j        j        ¬¦  «        \  }}|                      |¦  «        } t          |t          j        ¦  «        }|ri|                     |f¦  «        }t          j	        |¦  «        }t                               ||g|d¬¦  «        }||         }	| |	                     d¦  «        z  } t          ||k    | j        ¦  «        }
|                      |
d¦  «        }|                      |f| j        |j        d …         z   ¦  «        }t                               ||g|d¬¦  «                             |¦  «        S )NrM  Tr   rT   r   )rF   rG   rO  rP  r>   r   rj   Úlongrj  rX  r…   r#  rV   rX   rz  Úmasked_fillr  )rn   r˜  r_  rY  rZ  r?   rB   Úcountsr’  Úgrad_weights_scalerš  rª   Úgrad_weights                r.   Úembedding_dense_backwardrf  Í  sN  € õ ',Ô&>Ø­Ô)NÔ)Vð'ñ 'ô 'Ñ#Ð�|ð —.’.Ð!2Ñ3Ô3€KÝ% g­u¬zÑ:Ô:€GØð EØ×"Ò" K >Ñ2Ô2ˆÝŒ˜wÑ'Ô'ˆÝ×'Ò'¨°°	¸4ÈDÐ'ÑQÔQˆØ# Gœ_ÐØ!Ð$6×$@Ò$@ÀÑ$DÔ$DÑDˆå˜W¨Ò3°[Ô5EÑFÔF€DØ×"Ò" 4¨Ñ+Ô+€DØ×'Ò'Ø	ˆ˜Ô*¨7¬<¨>¨>Ô:Ñ:ñô €Kõ ×!Ò! +°¨y¸$È4Ð!ÑPÔP×SÒSØñô ð r-   c                 ó   — d}| D ]}||z  }Œ|S r]   r,   )r8   rK   Úis      r.   r"  r"  ì  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%   rT   )r)  rz  r…   Úconstant_pad_ndrj   ÚSizeÚappendr•  )	ri  rP   rj  Úpadded_tensorsÚtensorÚtensor_sizeÚpad_along_dimrã  Ú	view_sizes	            r.   Ú
_pad_chunkrt  ó  sí   € ð
 €NØð 6ð 6ˆØ—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Ÿkšk¨)Ñ4Ô4Ñ5Ô5Ð5Ð5ØÐr-   c                 óF   — | d         j         }| D ]}|j         |k    r dS ŒdS )Nr   FT©rz  )ri  rz  rp  s      r.   Úhave_same_ndimsrw    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-   )r)  rj   r„   )ri  rP   Úleading_dim_sizesrp  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>3  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>8  ó   € ÐM€ r-   )rj   r„   r  ré   r�  rø   rw  rF   r(  rP   rz  r{  )ri  rP   rj  Úexpected_dtypeÚexpected_devicerp  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ˆ  rt  rj   r+  )ri  rP   rj  rÈ   ro  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 )rT  )r�  rj   rY  )r7   Úss     r.   r9   z)split_with_sizes_copy.<locals>.<listcomp>Z  s)   € ÐOÐOÐOÀ1�—’¥eÔ&=�Ñ>Ô>ÐOÐOÐOr-   Tr  )r…   Úsplit_with_sizesrñ  r   r  r   )r}   r‹  rP   rÈ   Úsplitsr©  Úsplits          r.   Úsplit_with_sizes_copyr’  O  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“  rP   s      r.   Úunsafe_splitr•  b  s   € åŒ:×Ò˜U J°Ñ4Ô4Ð4r-   c                 óD   — t           j                             | ||¦  «        S r<   )r…   r�  r…  )rÁ   r‹  rP   s      r.   Úunsafe_split_with_sizesr—  g  s   € õ Ô ×(Ò(¨°¸SÑAÔAÐAr-   c                 ó  ‡— | j         }||         }‰dk    r|dk    sJ ‚|                      ¦   «         fS |‰z   dz
  ‰z  }ddlm}  ||¦  «        }ˆfd„t	          |¦  «        D ¦   «         }‰‰|z  |z
  z
  |d<   t          j        | ||¦  «        S )Nr   r$   )Ú	guard_intc                 ó   •— g | ]}‰‘ŒS r,   r,   )r7   rh  r“  s     €r.   r9   zsplit.<locals>.<listcomp>{  s   ø€ Ð5Ð5Ð5 !�:Ð5Ð5Ð5r-   rT   )r  Údetachrp  r™  rU   rj   r‘  )r}   r“  rP   re  r†  Úchunksr™  r‹  s    `      r.   r‘  r‘  n  s¾   ø€ à”*€KØ˜3Ô€HØ�Q‚€Ø˜1Š}ˆ}ˆ}ˆ}Ø—’‘”ÐÐØ˜Ñ# 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    sJ ‚|j        t          j        k    sJ ‚|                     ¦   «         Št          j        ‰dk    p‰dk    ˆfd„¦  «         ‰dk    rA|                     ¦   «         }t          |t          ¦  «        sJ ‚|  
                    ||¦  «        S d„ |D ¦   «         }|  
                    ||¦  «        S )NÚcpur$   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-   c                 ó6   — g | ]}|                      ¦   «         ‘ŒS r,   )Úitem)r7   rh  s     r.   r9   zCtensor_split_tensor_indices_or_sections_py_impl.<locals>.<listcomp>•  s    € Ð@Ð@Ð@ �1—6’6‘8”8Ð@Ð@Ð@r-   )r�  Útyperé   rj   r³  rP   r„   r£  r5   r   Útensor_split)r}   r�  rP   Úsectionsr˜  r¡  s        @r.   Ú/tensor_split_tensor_indices_or_sections_py_implr§  €  só   ø€ ð &Ô,Ô1°UÒ:Ð:Ð:Ð:Ø%Ô+­u¬{Ò:Ð:Ð:Ð:Ø*×.Ò.Ñ0Ô0€IÝ	„LØ�QŠÐ(˜) qš.ð	Mð 	Mð 	Mð 	Mñô ð ð
 �A‚~€~Ø-×2Ò2Ñ4Ô4ˆÝ˜(¥GÑ,Ô,Ð,Ð,Ð,Ø× Ò  ¨3Ñ/Ô/Ð/à@Ð@Ð%?Ð@Ñ@Ô@ˆð × Ò  ¨#Ñ.Ô.Ð.r-   Úmat1Úmat2c                 óÞ   — |                       ¦   «         s2|                      ¦   «         st          |¦  «        }t          |¦  «        }|t          j        ||¦  «        z  }|dk    r|S ||| z  z   S ru   )rF  Ú
is_complexrˆ  rj   Úmm)r}   r¨  r©  rd   ro   rÈ   s         r.   Úaddmmr­  £  st   € ð ×!Ò!Ñ#Ô#ð ¨D¯OªOÑ,=Ô,=ð Ý�4‰yŒyˆÝ�E‘
”
ˆØ
•%”(˜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©  rd   ro   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 ||| z  z   S ru   )rF  r«  rˆ  rj   Úmv)r}   r¨  r´  rd   ro   rÈ   s         r.   Úaddmvr·  Ë  sr   € ð ×!Ò!Ñ#Ô#ð ¨D¯OªOÑ,=Ô,=ð Ý�4‰yŒyˆÝ�E‘
”
ˆØ
•%”(˜4 Ñ%Ô%Ñ
%€CØˆq‚y€yØˆ
Ø�˜‘ÑÐr-   ræ   ÚrstdÚgammaÚNÚCÚHxWÚgroupÚoutput_maskc
           	      ó2	  ‡‡‡‡‡‡— 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„¦  «         t          ‰‰¦  «        \  }
}t          j        |d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 (ú, 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 rT   )rø   )r»  r¹  s   €€r.   rƒ   z,native_group_norm_backward.<locals>.<lambda>õ  s*   ø€ Ði¨ÐiÐiÈeÐN_¸U¿[º[¹]¼]¸]ÐegÐiÐi€ r-   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‚   rh   rT   r$   rŒ  r>  )rF   Úcheck_same_deviceÚcheck_same_shaperj   r„   rø   r  ÚdivmodrÚ   r•  rç   rV   r"  r’  r�  rX   r>   ré   )rn   rÁ   ræ   r¸  r¹  rº  r»  r¼  r½  r¾  ÚcpgÚ_remÚ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ñô ð õ
 �q˜%Ñ Ô �I€CˆÝ	„LØ�Š	Ø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Õ  Ú	enumerater   r  r   )rn   rÁ   ræ   r¸  r¹  rº  r»  r¼  r½  r¾  rC  rD  rÖ  r  rY   rh  rK   s                    r.   Únative_group_norm_backward_outrÙ  1  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>   )r8   ré   s     r.   Ú_maybe_castrÜ  N  s   € Ø€}Ø�tŠt�E‰{Œ{ÐØ€Hr-   Úgrad_outÚnormalized_shapeÚbiasc                 óú  ‡"— |j         }|                     ¦   «         }	t          j        |j        ¦  «        Š"ˆ"fd„| |||fD ¦   «         \  }
}}}|
€J ‚|	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          ||                     ¦   «         ¦  «        }||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        ¦  «        t#          |!|j        ¦  «        fS )Nc              3   ón   •K  — | ]/}|�'|                      ‰¦  «                             ¦   «         n|V — Œ0d S r<   )r>   r¬  ©r7   r8   r?   s     €r.   rÊ  z-native_layer_norm_backward.<locals>.<genexpr>c  sY   øè è € ð 9ð 9àð 12°ˆ�ŠÐÑÔ×*Ò*Ñ,Ô,Ð,À1ð9ð 9ð 9ð 9ð 9ð 9r-   r   ©rn  r$   r%   TF)r  rP   rF   Úget_computation_dtyperé   r  rU   rn  r"  rp  rn  rj  rX   rj   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_indicesrh  rº  ÚMrn  Úx_hatÚ
grad_x_hatÚaÚbrÒ  rÓ  rÔ  rL   rÍ  Úd_weightrÏ  r?   s#                                     @r.   Únative_layer_norm_backwardrö  U  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ØJÐJÐJÐJÐJÐJàÐ˜A šFÑ#Ô#ð 
Ð';Ð';¸AÀºFÑ'CÔ'Cð 
à,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˜eœkÑ*Ô*Ý�F˜EœKÑ(Ô(ðð r-   c          
      óÐ   — t          | |||||||¦  «        }||	|
f}t          |¦  «        D ]:\  }}|�3t          ||         |j        ¦  «         t	          |||         d¬¦  «         Œ;|S r  )rö  rØ  r   r  r   )rÝ  rÁ   rÞ  ræ   r¸  rÎ   rß  r¾  rC  rD  rÖ  r  rY   rh  rK   s                  r.   Únative_layer_norm_backward_outrø  ¦  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-   Ú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å|�|€J ‚|                     |
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)rP   Ú
correctionrý   r$   )ré   r†   rŸ  ©r   )rr  rU   rP   rF   rä  ré   r>   rj   Úvar_meanÚrsqrtró  Úcopy_rø   r  r]  r�  r¤  rj  rX   r6  )rÁ   rÎ   rß  rù  rú  rØ   rû  r9  rü  Ú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_helperr  Á  sP  € ð �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øàÐ'¨KÐ,CÐ,CÐCØ#—’Ð->À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-   r  Úsave_invstdc                 óF   — t          | |||||||d¦	  «	        \  }}	}
}}||	|
fS ©NF©r  ©rÁ   rÎ   rß  rù  rú  rØ   rû  r9  r©  r  r	  rW   s               r.   Únative_batch_normr    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_legitrq  Ú$_native_batch_norm_legit_no_training)rÁ   rÎ   rß  rù  rú  rØ   rû  r9  s           r.   Únative_batch_norm_decompositionr  /  sÏ   € ð Ð Ð 3Ý×,Ò,Ø�6˜4 ¨8°Sñ
ô 
ð 	
ð ÐÝð<ñ
ô 
ð 	
ð ÐÝð<ñ
ô 
ð 	
ð ð 
å×,Ò,Ø�6˜4 ¨{¸HÀhÐPSñ
ô 
ð 	
õ ×8Ò8Ø�6˜4 ¨{¸HÀcñ
ô 
ð 	
r-   c                 óF  ‡— |                       |¦  «        }||z   dz
  |z  Š‰dk    rP|dk    rJˆfd„|D ¦   «         }‰‰|z  |z
  z
  ||dz
  <   t          j        j        j                             | ||¦  «        S t          j        j        j                             | ‰|¦  «        S )Nr$   r   c                 ó   •— g | ]}‰‘ŒS r,   r,   )r7   rW   r“  s     €r.   r9   z(unsafe_chunk_py_impl.<locals>.<listcomp>Z  s   ø€ Ð2Ð2Ð2 a�zÐ2Ð2Ð2r-   )r)  rj   Úopsr…   r—  r…  r•  r   )rp  rœ  rP   r†  r‹  r“  s        @r.   Úunsafe_chunk_py_implr  T  s®   ø€ à�{Š{˜3ÑÔ€HØ˜VÑ# aÑ'¨FÑ2€Jà�Q‚€˜8 qš=˜=Ø2Ð2Ð2Ð2¨6Ð2Ñ2Ô2ˆØ",°
¸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 r  )r…   r  r…  )rÁ   rÎ   rß  rù  rú  rû  r9  s          r.   r  r  `  s7   € õ Ô(×0Ò0ØØØØØØØØñ	ô 	ð 	r-   c                 óF   — t          | |||||||d¦	  «	        \  }}	}
}}||	|
fS r  r  r  s               r.   r  r  v  sB   € õ *BØˆv�t˜\¨;¸À(ÈCÐQVñ*ô *Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r-   c                 óF   — t          | ||d d |||d¦	  «	        \  }}}}	}	|||fS r  r  )
rÁ   rÎ   rß  rØ   rû  r9  r©  r  r	  rW   s
             r.   Ú!_native_batch_norm_legit_no_statsr   ‡  sA   € õ *BØˆv�t˜T 4¨°8¸SÀ%ñ*ô *Ñ&€FˆI�y ! Qð �9˜iÐ'Ð'r-   c                 óz   — t          | |||||||d¦	  «	        \  }}	}
}}|€
J d¦   «         ‚|€
J d¦   «         ‚||	|
||fS )NTú#new_running_mean should not be Noneú"new_running_var should not be Noner  )rÁ   rÎ   rß  rù  rú  rØ   rû  r9  r©  r  r	  r  r  s                r.   Ú#_native_batch_norm_legit_functionalr$  –  sw   € õ" 	!Øˆv�t˜\¨;¸À(ÈCÐQUñ	ô 	ñØØØØØð Ð'Ð'Ð)NÑ'Ô'Ð'ØÐ&Ð&Ð(LÑ&Ô&Ð&Ø�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�  )
rj   Ú_CÚ_select_batch_norm_backendÚ_BatchNormBackendÚCudnnÚ(_get_cudnn_batch_norm_reserve_space_sizeÚemptyÚuint8r&  r�  )	rÁ   rÎ   rß  rù  rú  r9  rØ   ÚbackendÚreserve_sizes	            r.   Ú_get_batch_norm_reserve_tensorr0  ¯  s„   € õ  Œh×1Ò1Øˆv�t˜\¨;¸¸cñô €Gð €LØ•%”(Ô,Ô2Ò2Ð2Ý”x×HÒHÈÐPXÑYÔYˆÝŒ;Ø�EœK°´ÀUÄ\ðñ ô ð r-   c                 ót   — t          | ||||d||d¦	  «	        \  }}}	}
}
t          | |||||d¬¦  «        }|||	|fS )NTF©rØ   ©r  r0  ©rÁ   rÎ   rß  rù  rú  rû  r9  r©  r  r	  rW   Úreserves               r.   Ú_batch_norm_with_updater6  Ê  sp   € õ *BØØØØØØØØØñ
*ô 
*Ñ&€FˆI�y ! Qõ -Øˆv�t˜\¨;¸Àdðñ ô €Gð �9˜i¨Ð0Ð0r-   c                 ó¨   — t          | ||||d||d¦	  «	        \  }}}	}
}t          | |||||d¬¦  «        }|
€
J d¦   «         ‚|€
J d¦   «         ‚|||	||
|fS )NTr2  r"  r#  r3  )rÁ   rÎ   rß  rù  rú  rû  r9  r©  r  r	  Únew_rmÚnew_rvr5  s                r.   Ú"_batch_norm_with_update_functionalr:  å  sœ   € õ  	!Øˆv�t˜\¨;¸¸hÈÈTñ	ô 	ñØØØØØõ -Øˆv�t˜\¨;¸Àdðñ ô €Gð ÐÐÐDÑÔÐØÐÐÐCÑÔÐØ�I˜y¨'°6¸6ÐBÐBr-   c                 ót   — t          | ||||d||d¦	  «	        \  }}}	}
}
t          | |||||d¬¦  «        }|||	|fS )NFr2  r3  r4  s               r.   Ú_batch_norm_no_updater<     sp   € õ *BØØØØØØØØØñ
*ô 
*Ñ&€FˆI�y ! Qõ -Øˆv�t˜\¨;¸Àeðñ ô €Gð �9˜i¨Ð0Ð0r-   c                 óº   — |�J ‚t          j        | ¦  «        |k                          t           j        ¬¦  «        }|                     | ¦  «        | z  d|z  z  }||fS )Nrñ   rh   )rj   rG  r>   r-  r.  )rÁ   rN  Ú	generatorrš  rI  s        r.   Ú_fused_dropout_decompositionr?    s`   € ð ÐÐÐÝŒO˜EÑ"Ô" QÒ&×*Ò*µ´Ð*Ñ=Ô=€DØ
�,Š,�uÑ
Ô
 Ñ
%¨¨q©Ñ
1€CØ�ˆ;Ðr-   )ré   r&  r�  Ú
pin_memoryÚnon_blockingrU  r�  r@  rA  rU  c                óÈ  — |r|t           j        k    s
J d¦   «         ‚|r
J d¦   «         ‚t          | t           j        t          t
          t          t          f¦  «        sJ ‚|€4|€2|€0t          | t           j        ¦  «        r|                      ¦   «         S | S d}t          | t           j        ¦  «        r| }nt          j	        | ¦  «        }|�[||j
        k    rP|�-|j        dk    r"t           j                             ||¦  «        }d}t           j                             |||¦  «        }|�$|s"t           j                             ||¦  «        }d}|�t          j        ||¬¦  «        S |S )NÚTODOFrŸ  TrT  )rj   Ústridedr5   r   rˆ  r   r“  Úcomplexr�  Úscalar_tensorr�  r¤  Ú_primsÚconvert_element_typeÚ
device_put)	r8   ré   r&  r�  r@  rA  rU  Údtype_convertedÚx_tensors	            r.   Ú_to_copyrL  %  s_  € ð Ð8˜¥5¤=Ò0Ð0Ð0°&Ñ0Ô0Ð0ØÐ!Ð!˜6Ñ!Ô!ˆ>Ý�a�%œ,­­UµD½'ÐBÑCÔCÐCÐCÐCØ€~˜%˜-¨MÐ,AÝ�a�œÑ&Ô&ð 	Ø—7’7‘9”9ÐàˆHØ€Oå�!•U”\Ñ"Ô"ð *ØˆˆåÔ& qÑ)Ô)ˆàÐ˜f¨¬Ò7Ð7àÐ ¤°Ò!5Ð!5Ý”|×8Ò8¸À5ÑIÔIˆHØ"ˆOÝ”<×*Ò*¨8°V¸\ÑJÔJˆàÐ ÐÝ”<×4Ò4°X¸uÑEÔEˆØˆàÐ ÝŒ{˜8°=ÐAÑAÔAÐAØ€Or-   c                 ó6   — t                                | ¦  «        S r<   )r…   Úalias)r8   s    r.   Únop_decompositionrO  S  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…   r  rj  rj   r-  )rÁ   rÎ   rß  rù  rú  rØ   rQ  rR  ró  rô  rè  s              r.   Úcudnn_batch_normrT  [  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]   )rØ  rz  r  rV   )r8   Úbroadcast_maskrë  rš  s       r.   Ú_broadcast_batch_norm_backwardrW  }  sW   € Ý Ñ/Ô/ð "ð "‰
ˆˆdØ�1Š9ˆ9˜d Q¤Všm˜m°´¸´ÀÒ0EÐ0EØ—’˜DÑ!Ô!ˆAøØ€Hr-   r5  c                 ó2   — t          | |||||||||	¦
  «
        S r<   )Únative_batch_norm_backward)rÝ  rÁ   rÎ   rù  rú  r  r  r?  r9  r¾  r5  s              r.   Úbatch_norm_backwardrZ  „  s4   € õ &ØØØØØØØØØØñô ð r-   c
                 ó>  ‡&— |j         }
|�|j         }n|
}t          j        |j         ¦  «        Š&ˆ&fd„| ||||||fD ¦   «         \  }}}}}}}|j        }|                     ¦   «         }|dk    s
J d¦   «         ‚d}t          t          |¦  «        ¦  «        ||         z  }|}|}|r|�|€J ‚n|�|€J ‚|}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>»  sM   øè è € ð 	ð 	àð $% =ˆ�ŠÐÑÔÐ°að	ð 	ð 	ð 	ð 	ð 	r-   r%   z$rank of the input must be at least 2r$   rh   )ré   rF   rä  r  rP   r"  rr  rj   r  rU   rn  rW  rç   rÚ   r>   rÜ  )'rÝ  rÁ   rÎ   rù  rú  r  r  r?  r9  r¾  r¦  Úweight_dtyperç  rè  ré  Úrunning_mean_castÚrunning_var_castÚsave_mean_castÚsave_invstd_castrå  Ú
input_rankrë  Únum_featuresræ   r  rV  Úreduction_axesrh  rù   Úgrad_output_sumÚdot_pÚ	grad_meanÚ
proj_scaleÚ
grad_scaleÚprojrY   re  Ú	grad_biasr?   s'                                         @r.   rY  rY     sØ  ø€ ð ”+€KØÐØ”|ˆˆà"ˆÝÔ3°E´KÑ@Ô@Ðð	ð 	ð 	ð 	ð ØØØØØØð
ð	ñ 	ô 	ñØØØØØØØð ”+€KØ—’‘”€JØ˜Š?ˆ?ˆ?ÐB‰?Œ?ˆ?à€DÝ�˜[Ñ)Ô)Ñ*Ô*¨[¸Ô->Ñ>€LØ€DØ€FØð 5ØÐ FÐ$6Ð$6Ð6Ð$6ð !Ð,Ð1AÐ1MÐ1MÐMØ ˆÝ”Ð-°Ñ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Ý/µ´	¸%À$¹,ÈÐQWÉÑ0XÔ0XÐZhÑiÔi€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  )rY  rØ  r   r  r   )rÝ  rÁ   rÎ   rù  rú  r  r  r?  r9  r¾  rC  rD  rÖ  r  rY   rh  rK   s                    r.   Únative_batch_norm_backward_outrm  	  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…   rY  )rÁ   rn   rÎ   rù  rú  r  rn  rR  s           r.   Úmiopen_batch_norm_backwardrr  ,	  s@   € õ ×*Ò*ØØØØØØØØØØÐÐñô ð r-   ÚreserveSpacec	                 óL   — t                                || |||||d|g d¢¦
  «
        S rp  rq  )	rÁ   rn   rÎ   rù  rú  r  rn  rR  rs  s	            r.   Úcudnn_batch_norm_backwardru  F	  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,   rv  s   €r.   rƒ   z%adaptive_avg_pool2d.<locals>.<lambda>k	  s   ø€ ÐRÈDÐRÐR€ r-   rV  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>p	  s&   ø€ ð IÝ9>¸u¹¼ðIð Ið I€ r-   rT   c              3   ó&   K  — | ]\  }}||z  V — Œd S r<   r,   )r7   rh  r  s      r.   rÊ  z&adaptive_avg_pool2d.<locals>.<genexpr>v	  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,   )r7   rh  r  rŽ  s       r.   rÊ  z&adaptive_avg_pool2d.<locals>.<genexpr>w	  sE   è è € ð 
ð 
Ù '  1 aˆA��Q‘˜!‘‰Oð
ð 
ð 
ð 
ð 
ð 
r-   c                 ó6   — t          j        | |z  |d¬¦  «        S )NÚtrunc©Úrounding_mode©rj   Údiv©ró  rô  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   rT   r²  )rj   r‘  r³  rV   rF  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-   .r>  )r    rT   r‚   c                 óø   — t          |t          ¦  «        r| |fS |dk     sJ ‚||                     d¦  «        k    }|dk    rt          |d¦  «        }t	          j        | |d¦  «        } t          || ¦  «        }| |fS )Nr   rT   rV  r>  r•   )r5   r   rV   rX   rj   rb  )Úvalsr’  r�  rŽ  rP   rš  s         r.   Ú
maybe_maskz'adaptive_avg_pool2d.<locals>.maybe_maskª	  sŒ   € Ý�f�gÑ&Ô&ð 	 Ø˜�<Ðð ˜’7�7�7�7à × 0Ò 0°Ñ 4Ô 4Ò4ˆDØ�bŠyˆyÝ(¨¨qÑ1Ô1�ÝÔ$ T¨4°Ñ5Ô5ˆDå& v°¨tÑ4Ô4ˆFØ˜�<Ðr-   )rŽ  rP   r    )r�  r  r  rj   r„   rÞ  rñ  Únnrü  Ú
avg_pool2drX   ræ   r   rU   )rÁ   rî  rÚ  rs  Úkernelr“  ÚidxhÚlength_hÚrange_max_hÚ
adaptive_hÚidxwÚlength_wÚrange_max_wÚ
adaptive_wr•  r–  Úretrh  Újr�  r…  rz  r  rƒ  s                      @@@@@r.   Úadaptive_avg_pool2dr¤  a	  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-   c                 óÌ  — t          j        d|› d�¦  «         t          t          j        | j        d | …         ¦  «        }t          t          j        |¦  «        }dg| j        z  }| j        d | …         |d | …<   |t                               || j	        ¬¦  «         
                    |¦  «        |z  z                        d¦  «        }|                      t          | j        d | …         ¦  «        t          |¦  «        z   ¦  «        }t                               |                     d¦  «        |g|                      d¦  «        d¬¦  «         
                    |j        ¦  «        S )NÚmax_unpoolingÚd_forward_outr$   rŒ  rT   Fr   )rF   Úalert_not_deterministicr   ÚoperatorrÚ   r  rz  r…   r‘  r�  r•  r"  rj  rr  r#  )	r}   r˜  rî  rP   ÚncÚhwÚindices_nc_shapeÚindices_flatr©  s	            r.   Ú_max_unpoolndr®  Ê	  s>  € õ 
Ô!Ð"D°#Ð"DÐ"DÐ"DÑEÔEÐEÝ	•”˜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ð ð �^Š^�D ¤¨E¨c¨T¨EÔ!2Ñ3Ô3µd¸;Ñ6GÔ6GÑGÑHÔH€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.rv  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 ú with dimension ú being empty.rß  )rh  r}   s   €€r.   rƒ   zmax_unpool2d.<locals>.<lambda>
  s4   ø€ ðHàœ:ðHð Hà78ðHð Hð Hð r-   )
rj   r„   ré   r³  r  rz  r  rU   r)  r®  )r}   r˜  rî  rh  s   ```@r.   Úmax_unpool2dr½  â	  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-   ©r>  rï  c                  ó   •— d‰ j         › d�S )NzLInput to max_unpooling3d should be a 4d or 5d Tensor, but got a tensor with r·  rv  ©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 r²  r³  r´  s   €r.   rƒ   zmax_unpool3d.<locals>.<lambda>#
  rµ  r-   c                  ó*   •— dt          ‰ ¦  «        › d�S )NzRThere should be exactly three elements (depth, height, width) in stride, but got: r²  r³  ©rs  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: r²  r³  )rÀ  s   €r.   rƒ   zmax_unpool3d.<locals>.<lambda>.
  s   ø€ Ð~ÕfiÐjqÑfrÔfrÐ~Ð~Ð~€ r-   c                  ó(   •— d‰j         › d‰ j         › �S r¹  rß  )r˜  rÁ   s   €€r.   rƒ   zmax_unpool3d.<locals>.<lambda>2
  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»  r¼  rß  )rh  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,   rÅ  s   €r.   rƒ   zmax_unpool3d.<locals>.<lambda>D
  s   ø€ ÐPÈÐPÐP€ r-   )
rj   r„   ré   r³  rz  r  r  rU   r)  r®  )rÁ   r˜  rî  rs  rÀ  rh  s   `````@r.   Úmax_unpool3drÊ  
  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-   )ro   rp  c                ó,   — t          | |||d|¬¦  «        S )NT©Úinplacero   ©Ú
_index_add©r8   rP   rœ  rp  ro   s        r.   Ú
index_add_rÑ  J
  s   € õ �a˜˜e V°TÀÐGÑGÔGÐGr-   c                ó,   — t          | |||d|¬¦  «        S )NFrÌ  rÎ  rÐ  s        r.   Ú	index_addrÓ  V
  s   € õ �a˜˜e V°UÀ%ÐHÑHÔHÐHr-   rÍ  c                ó"  ‡‡‡‡‡‡— t          j        | j        ‰¦  «        Š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    rbt          j        | j        ¦  «        Št          j        ‰t          k    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 )	Nr$   c                  ó   •— d‰ j         › d�S ©Nz(Index should have dimension 1 or 0 (got r9  rv  ©rœ  s   €r.   rƒ   z_index_add.<locals>.<lambda>o
  ó   ø€ Ð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,   )rP   Ú
index_sizerq  s   €€€r.   rƒ   z_index_add.<locals>.<lambda>u
  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¤  )ro   Úpython_types   €€r.   rƒ   z_index_add.<locals>.<lambda>|
  s"   ø€ Ðh­d°5©k¬kÐhÐhÐZeÐhÐhÐh€ r-   r<   Tr   )rF   Úcanonicalize_dimsrz  rj   r„   r)  Údtype_to_typeré   r“  Úis_weakly_lesser_typer¤  rV   r…   Ú
index_put_Ú	index_putró  r¬  )r8   rP   rœ  rp  rÍ  ro   Úzero_dimrQ  r™  râ  rÈ   rÚ  rÝ  rq  s    ``  `     @@@r.   rÏ  rÏ  c
  s±  øøøøøø€ õ Ô
! !¤&¨#Ñ
.Ô
.€CÝ	„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•   c           
      óˆ  — t          j        t          | ¦  «        dk    d„ ¦  «         t          | ¦  «        }| d                              ¦   «         }|dd …         }t	          d„ | D ¦   «         ¦  «        }|r||f}n||f}||z   }| d                              ||¦  «        }dt          |¦  «        z  }	t          |¦  «        D ]€}
| |
         }t                               ||	d||                     d¦  «        z
  fz   |¦  «        }|rt           	                    ||d|
¬¦  «        }Œbt           	                    ||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$   c              3   ó@   K  — | ]}|                      d ¦  «        V — ŒdS rÈ  ©r)  r6   s     r.   rÊ  zpad_sequence.<locals>.<genexpr>’
  s,   è è € Ð/Ð/ �!—&’&˜‘)”)Ð/Ð/Ð/Ð/Ð/Ð/r-   )r   r   ©rP   rœ  )
rj   r„   r  r)  r�   rC  rU   r…   rl  rž  )Ú	sequencesÚbatch_firstÚpadding_valueÚsequences_sizeÚmax_sizeÚtrailing_dimsÚmax_lenÚout_dimsrÈ   Údim_paddingsrh  ÚcurrseqÚrows                r.   Úpad_sequencerô  ‹
  sd  € õ 
„L•�Y‘” !Ò#Ð%RÐ%RÑSÔSÐSÝ˜‘^”^€NØ˜Œ|× Ò Ñ"Ô"€HØ˜Q˜R˜R”L€MÝÐ/Ð/ YÐ/Ñ/Ô/Ñ/Ô/€GØð -Ø" GÐ,ˆˆà˜^Ð,ˆØ˜-Ñ'€HØ
�AŒ,×
Ò
 ¨-Ñ
8Ô
8€CØ�C Ñ.Ô.Ñ.€LÝ�>Ñ"Ô"ð @ð @ˆØ˜A”,ˆÝ×"Ò"Ø�\ Q¨°'·,²,¸q±/´/Ñ(AÐ$BÑBÀMñ
ô 
ˆð ð 	@Ý×%Ò% c¨3°A¸QÐ%Ñ?Ô?ˆCˆCå×%Ò% c¨3°A¸QÐ%Ñ?Ô?ˆCˆCØ€Jr-   c                 ó*   — t          | |||d¬¦  «        S )NT©rÍ  ©Ú_index_copy©r8   rP   rœ  rp  s       r.   Úindex_copy_rú  ¦
  s   € å�q˜#˜u f°dÐ;Ñ;Ô;Ð;r-   c                 ó*   — t          | |||d¬¦  «        S )NFrö  r÷  rù  s       r.   Ú
index_copyrü  «
  s   € õ �q˜#˜u f°eÐ<Ñ<Ô<Ð<r-   c                óÄ  ‡— t          j        | j        |¦  «        }t          j        ‰j        d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$   c                  ó   •— d‰ j         › d�S rÖ  rv  r×  s   €r.   rƒ   z_index_copy.<locals>.<lambda>·
  rØ  r-   r   r<   )rF   rÞ  rz  rj   r„   rV   r…   rá  râ  ró  r¬  )
r8   rP   rœ  rp  rÍ  rã  rQ  r™  râ  rÈ   s
     `       r.   rø  rø  ±
  sí   ø€ õ Ô
! !¤&¨#Ñ
.Ô
.€CÝ	„LØŒ
�aŠØHÐHÐHÐHñô ð ð
 Œ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ÿ  )rj   r‡  rj  ri   rÞ   r°  Úis_xpurB  )r}   rŒ   rl   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>  )ÚprimsÚ_uniform_helperr  r   ré   r�  )r8   r  r  r>  s       r.   Úuniformr  Ô
  sB   € õ Ô Ø	ŒÝ�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  rj   r„   rØ  rˆ  rn  r   )r0  rî  Úscale_factorsÚspatial_dimensionsrh  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  r)  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            }	||         �|	|	||         z  z  n|	|z  }
t          j        |t          j        | j        ¬¦  «        }||z   |
z                       t          j        ¦  «        }t          |dz
  |z
  ¦  «        D ]}| 	                    d¦  «        }Œ| 
                    |¦  «         ŒÄ|S )Nr¡   r•   r²  r$   rT   )r  rU   r  rj   r‘  rî   r�  r>   r³  rV   rn  )rÁ   rî  r  r#  r˜  Únum_spatial_dimsr   rÚ  r  Úisizerp   Úoutput_indicesÚinput_indicesrW   s                 r.   Ú!_compute_upsample_nearest_indicesr*  8  s  € ð €GÝ˜;Ñ'Ô'ÐØÐ"ˆSˆS˜s€FåÐ#Ñ$Ô$ð &ð &ˆð ˜A”ˆØ”Ð-Ð-°Ñ1Ô2ˆØ/5°a¬yÐ/D�˜ ¨¤Ñ*Ñ+Ð+È%ÐRWÉ-ˆåœ 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/  X  s   € õ ˜U K°&°Ñ:Ô:Ð:r-   c                 ó*   — t          | ||gd¬¦  «        S r!  r-  r.  s      r.   Úupsample_nearest_exact1dr1  d  s   € õ ˜U K°&°ÀÐFÑFÔFÐFr-   Úscales_hÚscales_wc                 ó(   — t          | |||g¦  «        S r<   r-  ©rÁ   rî  r2  r3  s       r.   Úupsample_nearest2dr6  r  s   € õ ˜U K°(¸HÐ1EÑFÔFÐFr-   c                 ó,   — t          | |||gd¬¦  «        S r!  r-  r5  s       r.   Ú_upsample_nearest_exact2dr8    s    € õ ˜U K°(¸HÐ1EÈTÐRÑRÔRÐRr-   Úscales_dc                 ó*   — t          | ||||g¦  «        S r<   r-  ©rÁ   rî  r9  r2  r3  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                 ó8  — t          | |||¬¦  «        }d d g|z   }t                               | |¦  «        }|j        dk    rYt	          j        | ¦  «        }| j        d         }| j        j        dk    r|dk     rt          j
        }|                     |¬¦  «        }|S )Nr"  r>  r$   ÚcudarT  )r*  r…   Ú_unsafe_indexrz  rF   r   r  r�  r¤  rj   rY  r¬  )	rÁ   rî  r  r#  Úspatial_indicesr˜  r  rU  Ú
n_channelss	            r.   r  r  ®  s«   € õ 8Øˆ{˜F¨%ðñ ô €Oð �Tˆl˜_Ñ,€GÝ×Ò  wÑ/Ô/€Fà„{�aÒÐåÔ3°EÑ:Ô:ˆð ”[ ”^ˆ
ØŒ<Ô Ò&Ð&¨:¸ª>¨>Ý!Ô3ˆMà×"Ò"°Ð"Ñ?Ô?ˆØ€Mr-   c                 óÜ   ‡ ‡— |r|rdŠn|rdŠn|rdŠndŠt          ‰ ¦  «        ‰z  dk    sJ t          ‰ ¦  «        ¦   «         ‚ˆˆ fd„t          dt          ‰ ¦  «        ‰¦  «        D ¦   «         S )Nrï  r>  rŠ   r%   r   c                 óD   •— g | ]}t          ‰||‰z   …         ¦  «        ‘ŒS r,   rÝ  )r7   rh  Ú
group_sizeÚparamss     €€r.   r9   z!gather_params.<locals>.<listcomp>Ô  s<   ø€ ð ð ð Ø./�ˆf�Q˜˜Z™Ð'Ô(Ñ)Ô)ðð ð r-   )r  rU   )rG  Ú
has_biasesÚhas_projectionsrF  s   `  @r.   Úgather_paramsrJ  É  s©   øø€ Øð �oð Øˆ
ˆ
Ø	ð Øˆ
ˆ
Ø	ð Øˆ
ˆ
àˆ
åˆv‰;Œ;˜Ñ# qÒ(Ð(Ð(­#¨f©+¬+Ñ(Ô(Ð(ðð ð ð ð Ý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,   )rG  Úhiddensrh  ÚbidirectionalÚ
cur_paramsÚ
cur_hiddenÚbidir_paramsÚbidir_hiddens           r.   Úparams_hiddensrS  Ù  sr   € Øð 0Ø!'¨¨A©¤°¸¸A¹´�Jˆ
Ø%+¨A°©E°A©IÔ%6¸ÀÀAÁÈÁ	Ô8J�lˆˆà!'¨¤¨G°A¬J�Jˆ
Ø%/Ñ"ˆ�là�z <°Ð=Ð=r-   c                 óš   — ||k    sJ ‚|                      |                      d|||z
  ¦  «        ¦  «         |                      dd|¦  «        S ru   )rn  r*  )rP  Úlast_batch_sizeÚ
batch_sizerM  s       r.   Úupdate_hidden_for_packedrW  ä  sT   € Ø˜ZÒ'Ð'Ð'Ð'Ø‡N‚N�:×$Ò$ Q¨
°OÀjÑ4PÑQÔQÑRÔRÐRØ×Ò˜Q  :Ñ.Ô.Ð.r-   c           	      ó~   — ||k    r| S ||k     sJ ‚t          j        | |                     d|||z
  ¦  «        f¦  «        S ru   )rj   Úconcatr*  )rP  rU  rV  Ú
inp_hiddens       r.   Ú update_hidden_for_packed_reverser[  ê  s\   € ð ˜*Ò$Ð$ØÐØ˜ZÒ'Ð'Ð'Ð'ÝŒ<àØ×Ò˜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Š   rT   )
r*  rj   r‘  rr  r  r[  rW  rn  Úreverser+  )ÚinpÚhiddenrG  rH  Ú	hidden_fnÚbatch_sizesr]  Ú	ih_weightÚ	hh_weightÚih_biasÚhh_biasÚstep_outputrM  rU  rP  Ú	split_inprh  rÈ   Ú
hidden_outs                      r.   Úone_layer_rnn_datari  ø  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©rh  rP  rb  rd  rc  re  Únonlinearitys         €r.   rL   zrnn_cell.<locals>.inner'  s&   ø€ Øˆ|�AœH Z°¸GÑDÔDÀqÑHÑIÔIÐIr-   r,   ©ro  rL   s   ` r.   Úrnn_cellrq  &  s(   ø€ ðJð Jð Jð Jð Jð €Lr-   c                 ó   ‡ — ˆ fd„}|S )Nc                 ót   •— t          j        | ||¦  «        }  ‰t          j        |||¦  «        | z   ¦  «        S r<   rl  rn  s         €r.   rL   zrnn_cell_data.<locals>.inner.  s9   ø€ ÝŒH�Q˜	 7Ñ+Ô+ˆØˆ|�AœH Z°¸GÑDÔDÀqÑHÑIÔIÐIr-   r,   rp  s   ` r.   Úrnn_cell_datart  -  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Ã   rm  ÚfliprV   rn  r]  rj   r+  ró  )r^  r_  rG  rH  r`  r]  rb  rc  rd  re  Úprecomputed_inputrP  rf  rh  rÈ   s                  r.   Úone_layer_rnnrx  5  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)
rj   r  r)  rV   r¬  r  r…   Úmkldnn_rnn_layerr…  ró  )r^  r_  rG  rH  r]  Úw0Úw1Úw2Úw3ÚhxÚcxra  ÚmodeÚhidden_sizeÚ
num_layersrN  rê  r?  Úoutputsr[   ÚhyÚcys                         r.   Úmkldnn_one_layer_lstmr‡  K  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]  )r?  )Ú	transposerU   rS  rn  rj   r+  rP   rB  )rÁ   r_  rG  rH  rƒ  rB  r?  rN  rê  Úlayer_fnÚfinal_hiddensrh  rO  rP  rQ  rR  Úfwd_inpÚ
fwd_hiddenÚbwd_inpÚ
bwd_hiddens                       r.   Ú_rnn_helperr�  }  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`  )	ÚunbindrJ  r�  r   rx  rq  rj   r­   Ústack©rÁ   r  rG  rH  rƒ  rB  r?  rN  rê  r_  rÈ   r‹  s               r.   Úrnn_tanh_inputr—  ¦  ó†   € ð �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 r’  )	r”  rJ  r�  r   rx  rq  rj   r²  r•  r–  s               r.   Úrnn_relu_inputrš  Å  r˜  r-   c	                 ó
  — |                      d¦  «        }	t          ||d¦  «        }t          | |	||||||dt          t          |t          t          j        ¦  «        ¬¦  «        ¦
  «
        \  }
}|
t          j        |d¦  «        fS ©Nr   F©ra  r`  )	r”  rJ  r�  r   ri  rt  rj   r²  r•  ©Údatara  r  rG  rH  rƒ  rB  r?  rN  r_  rÈ   r‹  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 rœ  )	r”  rJ  r�  r   ri  rt  rj   r­   r•  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 )Nr>  r   r$   r%   rŠ   ©rÃ   rm  ÚchunkrÅ   r­   )r^  r  r€  rc  re  Ú	hr_weightÚ	chunk_dimÚgatesÚchunked_gatesÚin_gateÚforget_gateÚ	cell_gateÚout_gater†  r…  s                  r.   Ú	lstm_cellr¯  *  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ï  r>  ©r¨  )r  rV   rÃ   rm  rv  r¯  rn  r]  rj   r+  ró  )r^  r_  rG  rH  r]  rb  rc  rd  re  r§  r  r€  rw  rf  rÈ   s                  r.   Úone_layer_lstmr²  8  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ï  r>  rT   r±  )r  rj   r‘  rr  r*  r  rÃ   rm  rn  rY  r¯  r]  rñ  r+  )r^  r_  rG  rH  ra  r]  rb  rc  rd  re  r§  rf  rM  rU  rg  Úorig_hxÚorig_cxr  r€  rh  rh  Úhidden0Úhidden1rÈ   s                           r.   Úone_layer_lstm_datar¸  S  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Ø�^Š^˜A˜q /Ñ2Ô2°G·N²NØ	ˆ1ˆoñ5ô 5ˆ€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Œ  ©r7   Ú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ñ   r¼  s     r.   r¾  zEselect_one_layer_lstm_function.<locals>.use_mkldnn.<locals>.<setcomp>®  s   € Ð+Ð+Ð+˜a�!”'Ð+Ð+Ð+r-   r   r%   T)rj   r'  Ú_get_mkldnn_enabledrr  r   Úfrom_iterabler  Úpopr�  r   Úbfloat16Úrequires_gradr)  )	rÁ   r  rG  ri  Údevicesr�  Údtypesré   rI  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-   )r‡  r²  )rÁ   r  rG  rÇ  s       r.   Úselect_one_layer_lstm_functionrÈ  ’  s5   € ðð ð ð: €z�%˜˜VÑ$Ô$ð Ý$Ð$åÐr-   c	                 ó  — t          |¦  «        dk    s
J d¦   «         ‚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 statesr   r$   )	r  rJ  r)  rr  rñ  rÈ  r�  rj   r•  )rÁ   r  rG  rH  rƒ  rB  r?  rN  rê  r_  rŠ  rÈ   r‹  s                r.   Ú	lstm_implrË  Ä  sö   € õ ˆr‰7Œ7�aŠ<ˆ<ˆ<Ð9‰<Œ<ˆ<Ý˜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    s
J d¦   «         ‚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)ra  )
r  rJ  r)  rr  rñ  r�  r   r¸  rj   r•  rž  s               r.   Úlstm_data_implrÍ  æ  só   € õ ˆr‰7Œ7�aŠ<ˆ<ˆ<Ð9‰<Œ<ˆ<Ý˜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   )r¦  rÃ   rm  rÅ   r­   ©r^  rP  rb  rd  rc  re  Ú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%   r¥  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   r�  )rJ  r�  r”  r   ri  r×  rj   r•  )rŸ  ra  r  rG  rH  rƒ  rB  r?  rN  rÈ   r‹  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   r“  )rJ  r�  r”  r   rx  rÕ  rj   r•  )rÁ   r  rG  rH  rƒ  rB  r?  rN  rê  rÈ   r‹  s              r.   Úgru_implrÛ  7  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  r)  r  rj   r  r…   Ú_upsample_bilinear2d_aa©rÁ   rî  Úalign_cornersr  r  Úscale_hÚscale_ws          r.   Úupsample_bilinear2d_aa_vecrã  U  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  r)  r  rj   r  r…   Ú_upsample_bicubic2d_aarß  s          r.   Úupsample_bicubic2d_aa_vecræ  a  sb   € õ )¨¯ª©¬°{ÀMÑRÔR€EÝ˜m¨QÑ/Ô/€GÝ˜m¨QÑ/Ô/€GÝŒ9Œ>×0Ò0Øˆu�m W¨gñô ð r-   c                 óš   — t          |                      ¦   «         ||¦  «        }|r|nd gt          |¦  «        z  }t          | |||¦  «        S r<   )r  r)  r  Ú_upsample_linear)rÁ   rî  rà  r  r  r  s         r.   Ú_upsample_linear_vecré  m  sL   € õ )¨¯ª©¬°{ÀMÑRÔR€EØ+ÐDˆ]ˆ]°$°½#¸e¹*¼*Ñ1D€FÝ˜E 5¨-¸Ñ@Ô@Ð@r-   rà  c                 ó(   — t          | |||g¦  «        S r<   ©rè  )rÁ   rî  rà  r3  s       r.   Úupsample_linear1drì  {  s   € õ ˜E ;°À¸zÑJÔJÐJr-   c                 ó*   — t          | ||||g¦  «        S r<   rë  )rÁ   rî  rà  r2  r3  s        r.   Úupsample_bilinear2drî  †  s   € õ ˜E ;°ÀÈ(Ð?SÑTÔTÐTr-   c                 ó,   — t          | |||||g¦  «        S r<   rë  )rÁ   rî  rà  r9  r2  r3  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$   rh   r   r,   )rˆ  r‰  rà  rp   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,   )rp   Ú	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>   rj   r4  )r7   rŽ  rè  s      r.   rÊ  z%_sum_tensors_uint8.<locals>.<genexpr>·  sX   è è € ð ð Ù26°!°Qˆ�Š�UŒ[ÑÔ˜AŸDšD¥¤Ñ-Ô-Ñ-ðð ð ð ð ð r-   r$   r   éÿ   )Ú_sum_tensorsrñ  rj   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 €  )rj   r•  r�   r‘  r�  rç   )r÷  Ú
max_weightÚmax_weight_precisionÚ
precisionsÚvaluesrš  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 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    sJ ‚|
d         }t          j        ‰ ¦  «        }‰ j        j        dk    r|dk     rt*          j        }t/          |t*          j        ¦  «        sJ ‚|                     |¬¦  «        }‰                      ¦   «         s|                     ¦   «         }|S )Nr%   rM  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ò  rj   r‘  r�  r>   rö  r‘   r"  r  r³  )Úinp_sizer‰  r  ÚnsqueezeÚscale_factorrh  Úx_f32r8   Ú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,   )r7   rh  r  r‰  r  r  Ún_dimss        €€r.   r9   z$_upsample_linear.<locals>.<listcomp>å  sL   ø€ ð ð ð á+ˆAÑ+�˜( Fð 	ˆ
�8˜X v¨v¸©z¸A©~Ñ>Ô>ðð ð r-   r   r$   c                 óH   •— g | ]}‰|         d k    r‰|         n‰|         ‘ŒS rÿ  r,   )r7   Úkró  Úxp1sÚxss     €€€r.   r9   z$_upsample_linear.<locals>.<listcomp>ï  s1   ø€ ÐUÐUÐUÀ! q¨¤t¨q¢y y˜b œe˜e°d¸1´gÐUÐUÐUr-   r•   rh   c                 óL   •— g | ] \  }}|t          j        ||z
  ‰¦  «        z   ‘Œ!S r,   )rj   rÚ   )r7   Úv1Úv2Úxscales      €r.   r9   z$_upsample_linear.<locals>.<listcomp>ö  sD   ø€ ð 
ð 
ð 
ñ ��Bð •”˜2 ™7 FÑ+Ô+Ñ+ð
ð 
ð 
r-   r@  é   rT  )r  r  rF   rG   rO  ÚINT_TO_FLOATrØ  rñ  rr  r   rU   r…   rA  r   rn  Úreversedr‘   r>   r   r�  r¤  rj   rY  r5   r   r¬  rF  Úround)rÁ   rî  rà  r  Ún_batchrC  Ú	inp_sizesrW   r  Úxs_f32Úvsr™  Úvrh  r  rU  ró  ré   r  r  r  r  r  s   ` `             @@@@@@@r.   rè  rè  Ç  sª  øøøøøøøøø€ ð  œ+ b q bœ/Ñ€GˆZØ”˜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ð
ñ 
ô 
ˆˆõ ˆr‰7Œ7�aŠ<ˆ<ˆ<ˆ<Ø�ŒU€Fõ Ô/°Ñ6Ô6€Mð „|Ô˜FÒ"Ð" z°B¢ ÝÔ/ˆå�f�eœlÑ+Ô+Ð+Ð+Ð+à×Ò¨]ÐÑ;Ô;€Fà×"Ò"Ñ$Ô$ð  Ø—’‘”ˆà€Mr-   ró  rô  c                 ó"   — | j         |j         k    S r<   rß  )ró  rô  s     r.   Úis_same_sizer!    s   € àŒ7�a”gÒÐr-   c                 ó8   — t                                | |¦  «        S r<   )r…   r•  )r8   r  rH   s      r.   Ú_reshape_aliasr#    s   € õ �9Š9�Q˜ÑÔÐr-   c                 ó8   — t                                | |¦  «        S r<   )r…   rœ  )r8   r˜  s     r.   rA  rA    s   € å�:Š:�a˜Ñ!Ô!Ð!r-   c                 ó<   — t                                | |||¦  «        S r<   )r…   râ  )r8   r˜  r~   r!  s       r.   r#  r#  !  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>1  ó   € Ð<€ r-   r   rã  r$   rƒ  )rj   r„   ré   ra  rˆ  r“  rp  rn  rø   Ú_meta_registrationsÚmeta_index_TensorrC  r  rU   r  r‘   r)  r…   rA  rb  )r8   rš  r˜  Úfillrœ  rn  Úmeta_resultrh  s           r.   r–  r–  &  sL  € àð ð ˆØÐÝŒLØ”¥¤
­E¬IÐ6Ð6ØMÐMñô ð øõ
 
„LØŒ
•e”jÒ Ø<Ð<ñô ð ð
 KÐJÐJÐJÐJÐJàÐ˜AŸGšG™IœI¨š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>H  r…  r-   c                  ó   — dS r*  r,   r,   r-   r.   rƒ   z5_unsafe_masked_index_put_accumulate.<locals>.<lambda>M  r+  r-   r   r$   rƒ  Tr   )rj   r„   ré   ra  rˆ  r“  rø   r�  rU   r  r‘   r)  rb  r…   r#  )r8   rš  r˜  r  rœ  rh  Úmasked_values          r.   Ú#_unsafe_masked_index_put_accumulater4  B  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•   )rP   r  r•  rj   rk   rV   Úgatherró  r#   r)   r~   rC  r�  rç   r>   r+   r*   )r}   ró   rÎ   rä   r  r  r#  r  Úwr$  Úsafe_target_r  r  Úwsums                 r.   Ú_nll_loss_forwardr:  \  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                 óZ  — |                       ¦   «         dk    r|                       ¦   «         dk    s
J d¦   «         ‚|                      ¦   «         dk    s
J d¦   «         ‚|                       ¦   «         dk    o|                      ¦   «         dk    }|s7| j        d         |j        d         k    sJ d| j        › d|j        › d�¦   «         ‚| j        d	         }|�E|                      ¦   «         dk    r|                     ¦   «         |k    sJ d
|› d|j        › �¦   «         ‚t          | ||||¦  «        S )Nr   r%   r5  r$   r6  r7  r8  r9  rT   z/weight tensor should be defined either for all z7 classes or no classes but got weight tensor of shape: )rP   r  rø   r:  )r}   ró   rÎ   rä   r  r;  Ú	n_classess          r.   Únll_loss_forwardr=  ‘  sQ  € ð �8Š8‰:Œ:˜Š>ˆ>˜dŸhšh™jœj¨Ašo˜o˜oÐ/P™oœoÐ-à�
Š
‰Œ˜ÒÐÐØDñ 	ÔÐð —8’8‘:”: ’?Ð8 v§z¢z¡|¤|°qÒ'8€LØð JØŒ
�1Œ˜œ aœÒ(Ð(Ð(ØI D¤JÐIÐI¸&¼,ÐIÐIÐIñ 	)Ô(ðð ”
˜2”€Iàˆ>Ø�
Š
‰Œ˜ÒÐ˜fŸlšl™nœn°	Ò9Ð9Ð9ð J¸ð  Jð  Jð  |Bô  |Hð  Jð  Jñ :Ô9ðõ ˜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,   ©r8   r@  s     r.   Ú_upsample_cubic_convolution1rC  »  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ï  é   r>  r,   rB  s     r.   Ú_upsample_cubic_convolution2rF  ¿  s0   € Ø�‰U�Q˜‘U‰]˜aÑ ! a¡%Ñ'¨1Ñ,¨q°1©uÑ4Ð4r-   r½  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Ÿ  rh   r   r‚   r÷   )r�  rj   r•  rF  rC  r”  )
r½  r@  Útt1Útt2Úw03Úw12r{  r~  r|  r}  s
             r.   Ú _upsample_get_cubic_coefficientsrL  Ã  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,   ©r7   rÒ  rÓ  s      r.   rÊ  z+_upsample_cubic_interp1d.<locals>.<genexpr>Ù  s*   è è € ÐEÐE¡H R¨˜˜R™ÐEÐEÐEÐEÐEÐEr-   )rL  rü  rñ  )rM  rN  Úcoeffs2s      r.   Ú_upsample_cubic_interp1drS  ×  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   rj   Úadd)rN  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é   )rj   rp  Úlinspace)rV  rà  ré   r�  ró  s        r.   Ú_linspace_from_neg_onerZ  á  sY   € ð �A‚~€~ÝŒ|˜A f°EÐ:Ñ:Ô:Ð:à-:ÐAˆ)�a‰-˜9Ñ	$Ð	$À€AÝŒ>˜1˜"˜a y¸ÀuÐMÑMÔMÐMr-   ÚthetaÚhr7  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�  rZ  r•  rj   r’  r—  rü  rã  )	r[  r\  r7  rà  ré   r�  Úgrid_xÚgrid_yÚgrid_ones	            r.   Ú_make_base_grid_4dre  ë  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   ra  )r[  rÚ  r\  r7  rà  ré   r�  rb  rc  Úgrid_zrd  s              r.   Ú_make_base_grid_5dri  ü  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à  rT   rŠ   r$   rV  r%   )re  r•  r[  rV   rç   )	r[  r)  rà  r
  rW   r\  r7  Ú	base_gridÚgrids	            r.   Ú_affine_grid_generator_4drn    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 )Nrk  rT   r>  r$   rV  rŠ   )ri  r•  r[  rV   rç   )
r[  r)  rà  r
  rW   rÚ  r\  r7  rl  rm  s
             r.   Ú_affine_grid_generator_5drp    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 )NrÀ  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-   r>  rk  )rj   r„   r  rn  rp  )r[  r)  rà  s      r.   Úaffine_grid_generatorrs  !  sg   € õ 
„LÝˆD‰	Œ	�VÐØUÐUñô ð õ ˆ4�y„y�A‚~€~Ý(¨°ÀMÐRÑRÔRÐRå(¨°ÀMÐRÑRÔRÐRr-   rm  Úinterpolation_modeÚpadding_modeÚ_expand_gridc           	      ó˜  ‡ ‡‡‡‡‡‡‡‡‡‡ ‡!‡"‡#‡$‡%‡&‡'‡(‡)‡*‡+‡,‡-— t          j        ‰dv ˆfd„¦  «         t          j        ‰dv ˆfd„¦  «         dt          dt          dt          fˆfd„Š-dt          dt          d	t          dt          fd
„Š+dt          dt          dt          fˆˆˆ+fd„Š dt          dt          dt          fˆ ˆ-fd„}‰ j        \  ŠŠŠ$Š%|j        \  }Š)Š*}|dk    s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  ‰-|	‰%¦  «        } ‰-|
‰$¦  «        }| 
                    ¦   «         Š'| 
                    ¦   «         Š(|‰'z
  Š,|‰(z
  }‰s*‰,                     d¦  «        Š,|                     d¦  «        }dt          dt          dt          fˆ ˆ"ˆ$ˆ%fd„Š#dt          dt          fˆ#ˆ'ˆ(ˆ,fd„Š!t          ˆ!fd„t          d ¦  «        D ¦   «         ¦  «        }t!          ||¦  «        S )!N)r   r$   r%   c                  ó   •— d‰ › �S )NzInvalid interpolation mode r,   )rt  s   €r.   rƒ   z"_grid_sampler_2d.<locals>.<lambda>@  s   ø€ ÐBÐ.@ÐBÐB€ r-   c                  ó   •— d‰ › �S )NzInvalid padding mode r,   )ru  s   €r.   rƒ   z"_grid_sampler_2d.<locals>.<lambda>C  s   ø€ Ð+QÀ<Ð+QÐ+Q€ r-   Úcoordsr)  rQ   c                 óB   •— ‰r|dz  dz
  n|dz  }|dz  dz
  }| |z  |z   S rô  r,   )rz  r)  rÚ   Úofsrà  s       €r.   Úunnormalizez%_grid_sampler_2d.<locals>.unnormalizeF  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   )rj   r  rÞ   ÚfmodÚfloorr>   Úint8rk   )rz  r~  r  Ú
coords_minÚcoords_spanÚcoords2ÚextraÚflipss           r.   Úreflect_coordinatesz-_grid_sampler_2d.<locals>.reflect_coordinatesQ  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%   rT   r�   )rz  r)  Úcoords_reflectedrà  ru  r‰  s      €€€r.   Úcompute_coordinatesz-_grid_sampler_2d.<locals>.compute_coordinates]  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,   )rz  r)  Ú	coords_unrŒ  r}  s      €€r.   Úcompute_source_indexz._grid_sampler_2d.<locals>.compute_source_indexi  s'   ø€ Ø�K ¨Ñ-Ô-ˆ	Ø"Ð" 9¨dÑ3Ô3Ð3r-   r%   r$   r  Úysc                 óš   •— t          j        d| k    t          j        | ‰k     t          j        d|k    |‰k     ¦  «        ¦  «        ¦  «        S ru   ©rj   r”  )r  r�  ÚiHÚiWs     €€r.   Úin_bounds_condz(_grid_sampler_2d.<locals>.in_bounds_condy  sH   ø€ ÝÔ Ø�ŠG•UÔ& r¨B¢wµÔ0AÀ!ÀrÂ'È2ÐPRÊ7Ñ0SÔ0SÑTÔTñ
ô 
ð 	
r-   rŒ  Úwsc                 óè   •‡‡—  ‰| |¦  «        Š‰r‰ndŠt          ˆˆˆˆ	ˆ
fd„|                      t          j        ¬¦  «        |                     t          j        ¬¦  «        |fD ¦   «         ¦  «        S )Nr$   c              3   óp   •K  — | ]0}t          j        ‰|d ¦  «                             ‰‰‰‰¦  «        V — Œ1dS rÈ  )rj   rk   r•  )r7   r½  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>   rj   r³  )r  r�  r–  rè  rÔ  r»  rº  rv  r•  r™  rš  s      @@€€€€€€r.   Úclipz_grid_sampler_2d.<locals>.clip�  s™   øøø€ Øˆ~˜b "Ñ%Ô%ˆð
 Ð$ˆAˆA 1ˆÝð 
ð 
ð 
ð 
ð 
ð 
ð 
ð 
à—e’e¥%¤+�eÑ.Ô.°·²½E¼K°Ñ0HÔ0HÈ"ÐMð
ñ 
ô 
ñ 
ô 
ð 	
r-   ÚixÚiyc                 óD   •—  ‰	| ||¦  «        \  }}}‰‰‰||f         |z  S r<   r,   )
rœ  r�  r7  Úidx_xÚidx_yÚw_ÚC_idxÚN_idxró  r›  s
         €€€€r.   Úget_summandz%_grid_sampler_2d.<locals>.get_summand�  s4   ø€ à˜4  B¨™?œ?Ñˆˆu�bØ�˜˜u eÐ+Ô,¨rÑ1Ð1r-   ).r   ).r$   r   c              3   ó:   •K  — | ]\  }}} ‰|||¦  «        V — Œd S r<   r,   )r7   rœ  r�  r7  r¤  s       €r.   rÊ  z#_grid_sampler_2d.<locals>.<genexpr>£  sK   øè è € ð 
ð 
á��R˜ð ˆK˜˜B Ñ"Ô"ð
ð 
ð 
ð 
ð 
ð 
r-   c                 óN   •—  ‰| ‰¦  «        } ‰|‰¦  «        } ‰||d¦  «        S r]   r,   )rœ  r�  r8   r[   rŒ  r¤  r“  r”  s       €€€€r.   Úget_value_boundedz+_grid_sampler_2d.<locals>.get_value_boundedÂ  s;   ø€ Ø#Ð# B¨Ñ+Ô+ˆAØ#Ð# B¨Ñ+Ô+ˆAØ�;˜q ! QÑ'Ô'Ð'r-   r|  c                 ó¢   •— ‰| dz
  z   } ‰‰dz
  |¦  «         ‰‰|¦  «         ‰‰dz   |¦  «         ‰‰dz   |¦  «        f}t          |‰¦  «        S )Nr$   r%   )rS  )r|  Úiy_ofsÚcsr§  Ú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,   )r7   r|  r®  s     €r.   rÊ  z#_grid_sampler_2d.<locals>.<genexpr>Ñ  s+   øè è € Ð:Ð:¨#�y�y ‘~”~Ð:Ð:Ð:Ð:Ð:Ð:r-   r>  )rj   r„   r   rˆ  r  r•  r�  r‘  r�  r   r‚  rü  r  rV   rÞ  rU   rS  ).ró  rm  rt  ru  rà  rv  r�  rW   Útwor8   r[   rœ  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ÚtyrM  r»  r¢  rº  r£  r›  rŒ  r®  r¤  r§  r“  r”  r•  r«  r¬  r™  rš  r‰  r­  r}  s.   ` ````                     @@@@@@@@@@@@@@@@@@@r.   Ú_grid_sampler_2dr¾  /  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Ø�!Š8ˆ8ˆ8ˆ8àð 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)rm  rt  ru  rà  )r¾  )ró  rm  rt  ru  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   r8   r$   z), vec (r9  rç  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‚   )rj   r„   rP   r)  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  }t          ||¦  «        S r]   )rÃ   Ú
logsigmoidrè   )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‰}ˆå  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  ‰	|                     ¦   «         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$   rT   c              3   óJ   •K  — | ]\  }}} ‰|d k    ¦  «        p||k    V — ŒdS r{  r,   )r7   r·   r¸   r)  rn  s       €r.   rÊ  zshould_fold.<locals>.<genexpr>!  sU   øè è € ð ð áˆD�%˜ð 	Ð˜T QšYÑ'Ô'Ð8¨4°5ª=ðð ð ð ð ð r-   )rz  rp  rn  rÄ  rø   r  rs  r  rn  r  rñ  rr  )
rÊ  rË  rÌ  Út1Út2Út1_shapeÚ	t1_strideÚexpected_strider)  rn  s
            @r.   Úshould_foldrÔ    sZ  ø€ ð $+¤<°7´<Ò#?Ð#?ˆg�wÐÐÀgÈwÐEW�F€BˆàJÐJÐJÐJÐJÐJàŒG�qŠLˆL˜RœW¨š\˜\ØˆuØ	Ôð  ð ØˆtØ„|�qÒÐØˆuØÐ˜BŸHšH™JœJ¨!šOÑ,Ô,ð ØˆtàŒx€HØ—	’	‘”€Ið
 �c€OÝ˜ ! " "œÑ&Ô&ð ;ð ;ˆØ×Ò˜t o°bÔ&9Ñ9Ñ:Ô:Ð:Ð:Ýð ð ð ð å!$Ø•t�H _Ñ5Ô5Ñ6Ô6¸ñ"
ô "
ðñ ô ñ ô ð r-   )Úpass_is_out)rÌ  c                ór
  — |                       ¦   «         }|                      ¦   «         }|dk    r|dk    sJ ‚|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 }t-          |dz
  ¦  «        D ]*}|                     |                     |¦  «        ¦  «         Œ+|dk    r„|dk    r~|d         |d         k    rl|d         dk    r*| j        r#t1          |                      d¦  «        |¦  «        S |d         dk    r*|j        r#t1          | |                     d¦  «        ¦  «        S t          t          j        ||¦  «        ¦  «        }|||gz   }t5          |¦  «        }|                      |¦  «                             |||¦  «        }|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$   r%   rT   rV  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-   )rP   rj   Údotr¶  ró  r¬  rV   rÔ  r[  r½  r  rr  r   r©  rÚ   rn  r"  r  r…   Ú_unsafe_viewr¬  r)  rU   rÄ  rZ  Úbroadcast_shapesr"  r�  Úbmmr•  r„   )rÊ  rË  rÌ  Údim_tensor1Údim_tensor2r‰  rÏ  rÐ  Úsizes_1Úoutput_shapeÚfolded_dim1Út2_is_matrixÚ	t1_foldedr©  r
  Úm1Úbatch_tensor1Úm2rN  Úbatch_tensor2rh  Úexpand_batch_portionÚtensor1_expand_sizeÚexpand_batch_productÚtensor1_expandedÚ
vector_rhsÚtensor2_expand_sizeÚtensor2_expandeds                               r.   rZ  rZ  )  sc  € ð —+’+‘-”-€KØ—+’+‘-”-€KØ˜!ÒÐ ¨qÒ 0Ð 0Ð 0Ð0Ø�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Ò Ð Ø˜aÔ  M°!Ô$4Ò4Ð4à˜QÔ 1Ò$Ð$¨Ô)>Ð$Ý˜gŸošo¨aÑ0Ô0°'Ñ:Ô:Ð:Ø˜QÔ 1Ò$Ð$¨Ô)>Ð$Ý˜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‰€J ‚t)          ||‰¦  «        }n't+          d„ t-          ||¦  «        D ¦   «         ¦  «        }t          j        ‰ ¦  «        }|                     |¬¦  «        }|S )Nr   r$   rM  rŒ  rñ   rT   r•   rh   r%   rL  c                 óŠ   •— g | ]?}|d ‰z  z  t          j        |¦  «        dz  z                        t           j        ¦  «        ‘Œ@S ©r$   r¡   ©rj   rá   r>   Úint16)r7   r7  Úweights_precision_xs     €r.   r9   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ñ  )r7   r7  Úweights_precision_ys     €r.   r9   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Ý  )rj   r‘   r…   rA  )r�  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‰€J ‚t	          |‰‰¦  «        S t          d„ t          |‰¦  «        D ¦   «         ¦  «        S )Nc              3   ó0   •K  — | ]} ‰‰|¦  «        V — Œd S r<   r,   )r7   Ú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-   c              3   ó&   K  — | ]\  }}||z  V — Œd S r<   r,   rQ  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é   rj   r-  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ˆØŒ;�%œ+Ò%Ð%Ø&Ð2Ð2Ð2Ý% 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,   )r7   Úy_ofsr  s     €r.   rÊ  z-upsample_bicubic2d_default.<locals>.<genexpr>í  s-   øè è € Ð;Ð;¨%�,�,˜uÑ%Ô%Ð;Ð;Ð;Ð;Ð;Ð;r-   c              3   ó&   K  — | ]\  }}||z  V — Œd S r<   r,   rQ  s      r.   rÊ  z-upsample_bicubic2d_default.<locals>.<genexpr>ò  s*   è è € ÐLÐL©(¨2¨r˜b 2™gÐLÐLÐLÐLÐLÐLr-   rT  )r  rò  rF   rG   rO  r  rj   r‘  r�  r>   rö  rV   r‚  r‘   r³  rL  ré   r-  r  rÞ  rý  rü  rñ  r   r¬  )rÁ   rî  rà  rá  râ  rW   Úh_scale_factorÚw_scale_factorré   rh  r£  Úx_floatÚy_floatr8   r[   Úyscaler  Úiys_ofsÚ	weights_yÚsrc_yr  rU  r  rú  rû  r  rü  ró  rö  r  s   `                     @@@@@@@@r.   Úupsample_bicubic2d_defaultr  £  sH  øøøøøøøøø€ ð ”{Ñ€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Ò!Ð!Ø"Ð.Ð.Ð.Ý# E¨9Ð6IÑJÔJˆˆåÐLÐLµc¸%ÀÑ6KÔ6KÐLÑLÔLÑLÔLˆõ Ô/°Ñ6Ô6€MØ×Ò¨]ÐÑ;Ô;€FØ€Mr-   c                 óf  — t          j        t          |¦  «        t          |¦  «        z   dk    d„ ¦  «         |€]|€J ‚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>  s   € ÐL€ r-   c              3   óZ   K  — | ]&\  }}t          t          |¦  «        |z  ¦  «        V — Œ'd S r<   )r   r   )r7   r7  rp   s      r.   rÊ  z)upsample_bicubic2d_vec.<locals>.<genexpr>  sM   è è € ð ð á�A�uõ �	 !™œ uÑ,Ñ-Ô-ðð ð ð ð ð r-   r%   rL  )
rj   r„   r“  r
   r   rˆ  rÞ  rñ  r  r  )ró  rî  rà  r  rá  râ  s         r.   Úupsample_bicubic2d_vecr  ú  sÑ   € õ 
„LÝˆ[ÑÔ�D Ñ/Ô/Ñ/°1Ò4ØLÐLñô ð ð ÐØÐ(Ð(Ð(ÝÝ•#•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$   )rj   r‘  r�  rÞ   ©r·   Úmiddler¸   Údim_idxró  s       €r.   r™  z_reflection_pad.<locals>.idx  sM   ø€ Ý”, ˜u f¨u¡n¸Q¼XÐFÑFÔFˆØ˜‰z˜V a™Z¨'¯+ª+©-¬-Ñ7×<Ò<Ñ>Ô>Ñ>Ð>r-   ©Ú_reflection_or_replication_pad©ró  rÀ  r™  s   `  r.   Ú_reflection_padr    s9   ø€ ð?ð ?ð ?ð ?ð ?õ *Ø	ØØñô ð r-   c                 ó0   ‡ — ˆ fd„}t          ‰ ||¦  «        S )Nc                 óv   •— t          j        |  ||z   ‰j        ¬¦  «        }t          j        |d|dz
  ¦  «        S )NrŒ  r   r$   )rj   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   '  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                               ||	¦  «        }Œ[t          j	        |¦  «        }
| 
                    |
¬¦  «        }|S )Nr%   r$   c                  ó(   •— d‰ › d‰ dz   › d‰ dz   › d�S )NÚreflection_padzd requires r$   zD or r%   zD inputr,   r‚   s   €r.   rƒ   z0_reflection_or_replication_pad.<locals>.<lambda>@  s+   ø€ ÐO ÐOÐO°°q±ÐOÐO¸sÀQ¹wÐOÐOÐO€ r-   c                 ó2   •— g | ]}‰d ‰dz
  |z
  z           ‘ŒS rg  r,   ©r7   rh  rP   rÀ  s     €€r.   r9   z2_reflection_or_replication_pad.<locals>.<listcomp>E  ó+   ø€ ÐCÐCÐC°1�G˜A  q¡¨1¡Ñ-Ô.ÐCÐCÐCr-   c                 ó8   •— g | ]}‰d ‰dz
  |z
  z  dz            ‘ŒS rg  r,   r&  s     €€r.   r9   z2_reflection_or_replication_pad.<locals>.<listcomp>F  ó0   ø€ ÐHÐHÐH¸�W˜Q #¨¡'¨A¡+Ñ.°Ñ2Ô3ÐHÐHÐHr-   rT  )r  rj   r„   rP   r  rU   r…   rA  rF   r   r¬  )ró  rÀ  r!  Ú	inp_shapeÚnc_dimÚpadding_leftÚpadding_rightr  rh  r™  rU  rP   s    `         @r.   r  r  8  sU  øø€ õ
 ˆ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ˆˆõ Ô/°Ñ7Ô7€MØ×Ò¨]ÐÑ;Ô;€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,   )r7   r\  s     r.   r9   z,_reflection_pad_backward.<locals>.<listcomp>[  s   € Ð
)Ð
)Ð
)�Qˆ1ˆq‰5Ð
)Ð
)Ð
)r-   c                 ó2   •— g | ]}‰d ‰dz
  |z
  z           ‘ŒS rg  r,   r&  s     €€r.   r9   z,_reflection_pad_backward.<locals>.<listcomp>]  r'  r-   c                 ó8   •— g | ]}‰d ‰dz
  |z
  z  dz            ‘ŒS rg  r,   r&  s     €€r.   r9   z,_reflection_pad_backward.<locals>.<listcomp>^  r)  r-   r$   rT   rŒ  c                 óH   — | \  }}}t          j        ||k    ||k    ¦  «        S r<   r’  )Úindex_rangerh  ÚlbÚubs       r.   Úindex_range_conditionz7_reflection_pad_backward.<locals>.index_range_conditioni  s(   € Ø‰	ˆˆ2ˆrÝÔ   b¢¨!¨rª'Ñ2Ô2Ð2r-   c                 ó2   •— g | ]}‰|         ‰|         z   ‘ŒS r,   r,   ©r7   rh  r,  Úxyzs     €€r.   r9   z,_reflection_pad_backward.<locals>.<listcomp>w  s&   ø€ Ð;Ð;Ð;¨1ˆc�!Œf�| A”Ñ&Ð;Ð;Ð;r-   c                 ó2   •— g | ]}‰|         ‰|         z
  ‘ŒS r,   r,   r8  s     €€r.   r9   z,_reflection_pad_backward.<locals>.<listcomp>x  s&   ø€ ÐAÐAÐA°�L ”O c¨!¤fÑ,ÐAÐAÐAr-   c                 óJ   •— g | ]}d ‰|         z  ‰|         z   ‰|         z
  ‘Œ S r  r,   )r7   rh  Údhwr,  r9  s     €€€r.   r9   z,_reflection_pad_backward.<locals>.<listcomp>y  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,   )r7   rh  Úcenterr<  r,  r-  s     €€€€r.   r9   z,_reflection_pad_backward.<locals>.<listcomp>}  sH   ø€ ð ð ð ØHIˆ�Œ�A�s˜1”v ¨Q¤Ñ/°-ÀÔ2BÑBÐCðð ð r-   c                 ó2   •— g | ]} ‰‰|         ¦  «        ‘ŒS r,   r,   )r7   rh  r6  Úrange_cs     €€r.   r9   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,   )r7   r3  r6  s     €r.   r9   z@_reflection_pad_backward.<locals>.accumulate.<locals>.<listcomp>�  s%   ø€ ÐPÐPÐP°KÐ"Ð" ;Ñ/Ô/ÐPÐPÐPr-   r•   )rU   r5   r“  rM   r   r…   r”  r–  )rª   rÈ   Úindex_rangesrh  Úupper_less_than_lowerrÔ  Úgrô  rP   rn   r6  s          €€€€r.   r!  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 ))rT   r   r$   r,   r   s     r.   r9   z,_reflection_pad_backward.<locals>.<listcomp>”  s   € Ð#CÐ#CÐ#C°1 J J JÐ#CÐ#CÐ#Cr-   r   )r  r  rU   rz  rn  rj   r‘  r�  r•  rM   r   r…   r”  r–  Ú	itertoolsr   rÞ  )rn   r8   rÀ  r˜  rh  Ú
view_shapeÚleft_reflectÚright_reflectrÔ  rª   r!  ÚareaÚoutsrC  rÈ   r3  rô  r>  r<  rP   r6  r,  r-  r@  r9  s   ` `             @@@@@@@@@r.   Ú_reflection_pad_backwardrM  T  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ü   )rj   ÚaminrQ  )r}   rP   rý   rO  rQ  s        r.   ÚaminmaxrP  ¯  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ç   rj   rk   Úisnan)r}   rP   rý   ré   s       r.   ÚnansumrS  ·  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$   rT  ©r…   r‘  Ú
start_step)rg  ré   r&  r�  r@  s        r.   Úarange_defaultrX  ½  s2   € õ Œ;×!Ò!Ø	ˆ3�˜ v°fÈð "ñ ô ð r-   c          	      óN   — t           j                             | |d||||¬¦  «        S )Nr$   rT  rV  )rf  rg  ré   r&  r�  r@  s         r.   Úarange_startrZ  Ì  s2   € õ Œ;×!Ò!Øˆs�A˜U¨6¸&ÈZð "ñ ô ð r-   c                  ó   — ddl m}  || i |¤ŽS )Nr   )Úout_dtype_dense)Ú!torch._higher_order_ops.out_dtyper\  )rH   rI   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ß  rÂ  s   €r.   rƒ   z#multi_margin_loss.<locals>.<lambda>ô  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>ø  s   ø€ ÐU°fÐUÐUÀvÄ|ÐUÐU€ r-   c                  ó   •— d‰ › d‰j         › �S )Nz#inconsistent weight size, expected r  rß  )rP   rÎ   s   €€r.   rƒ   z#multi_margin_loss.<locals>.<lambda>þ  s   ø€ ÐV¸#ÐVÐVÈÌÐVÐV€ r-   rè  rŒ  r‚   )rj   Ú
atleast_2dÚ
atleast_1dr  r„   rz  rø   rV   r6  r\  r‘  r�  rk   r#   r*   r~   ræ   r+   rç   )rÁ   ró   rN  r_  rÎ   rä   Úurl   r™  rP   re  s   ``  `    @@r.   Úmulti_margin_lossrj  â  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 rc  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,   )rn  Úorig_target_shapes   €€r.   rƒ   z0multilabel_margin_loss_forward.<locals>.<lambda>$  s   ø€ ÐfÐ->ÐfÐfÐTdÐfÐf€ r-   rŒ  rT   Trü   rè  r‚   rh   )r   rT   )r  rj   rg  r„   r  r‘  r�  rO  rk   r6  ÚanyrV   ÚTr\  r#   r*   r~   rç   ræ   r+   r>   ré   r"  )rÁ   ró   rä   rP   r™  Úis_endÚend_idxÚtarget_maskÚtidx0ri  Útidx1rk  rl   rn  rp  s                @@r.   Úmultilabel_margin_loss_forwardrx    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_maskrp   ÚqueryÚkeyÚ	dropout_pÚ	is_causalry  c          
      óð  ‡ ‡‡‡— ‰ j         }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
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ñ   )rz  s   €r.   rƒ   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>^  s   ø€ ÐMÀÄÐMÐM€ r-   r>  c                  ó†   •— d‰                      ¦   «         › d‰                       ¦   «         › d‰                      ¦   «         › �S )Nz,q, k, v must be a 4 dimensional tensor, got rÃ  r‚   )r{  rz  r~   s   €€€r.   rƒ   z<scaled_dot_product_flash_attention_for_cpu.<locals>.<lambda>b  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>e  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>i  s   € Ð8€ r-   )ry  r|  r}  Údropout_maskrp   r%   r   r$   rT  )ré   rj   r„   rF  rP   r  r…   Ú"_scaled_dot_product_attention_mathr…  rò  r¬  rY  )
rz  r{  r~   r|  r}  ry  rp   ré   r©  Úattns
   ````      r.   Ú*scaled_dot_product_flash_attention_for_cpur†  P  s’  øøøø€ ð ŒK€EÝ	„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ØØØØØØØØð Cñ 	ô 	�L€FˆDðD 	�Š�q˜!˜Q Ñ"Ô"ß	Š¥%Ô"9ˆÑ	:Ô	:ß	Š��A�q˜!Ñ	Ô	ð ð
 �4ˆ<Ðr-   c                 ó<   ‡— t          | ¦  «        ˆfd„¦   «         }|S )Nc                  óJ   •—  ‰| i |¤Ž}| d                               |¦  «        S ru   )r  )rH   rI   rÈ   Úoutplace_ops      €r.   Ú
inplace_opz$register_inplace.<locals>.inplace_op–  s-   ø€ àˆk˜4Ð* 6Ð*Ð*ˆØ�AŒw�}Š}˜SÑ!Ô!Ð!r-   r   )Úaten_opr‰  rŠ  s    ` r.   Úregister_inplacerŒ  •  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   )rF  r«  rˆ  rj   rÛ  r5   ÚnumbersÚNumber)r}   Úbatch1Úbatch2rd   ro   r  s         r.   Úbaddbmmr’  ž  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}   rM  s     r.   Úfloor_divider”  ¯  s   € õ Œ9�T˜5°Ð8Ñ8Ô8Ð8r-   c                 óL   — t          j        t          j        | j        d¦  «        S r]   )rM   r   r©  rÚ   r  )r½  s    r.   Ú	sym_numelr–  µ  s   € åÔ�HœL¨!¬'°1Ñ5Ô5Ð5r-   ©ré   rÈ   c                ó�   — |€"t           j                             | g |¬¦  «        S t           j                             | g ||¬¦  «        S )Nrñ   r—  )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<   )	r5   rj   r   r…   ró  Údimsrr  rU   rP   )r}   rP   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,   )r7   rh  rP   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Þ  rU   r  r  ré   rj   rÃ  r   rù   r>   )r  rE  rP   Úkeep_dimÚ
norm_dtyperù   s     `   r.   Ú_weight_norm_interfacer£  Ó  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t          j        || j        ¬¦  «        }|                     ¦   «         dt          |                      ¦   «         d¦  «        z  k     rt          | ||¬¦  «        S t          | |||¬¦  «        S )NrŒ  g      $@g�Âõ(\�Â?©r¦  r¤  )	r5   rj   r   rp  r�  rø   rW  Úisin_defaultÚisin_sorting)ÚelementsÚtest_elementsr¥  r¦  s       r.   Úisinr­  Ý  sÀ   € õ �h¥¤Ñ-Ô-ð GÝ”< °Ô1EÐFÑFÔFˆÝ�m¥U¤\Ñ2Ô2ð LÝœ ]¸8¼?ÐKÑKÔKˆà×ÒÑÔ˜t¥c¨(¯.ª.Ñ*:Ô*:¸EÑ&BÔ&BÑBÒBÐBÝ˜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�  ©rj   Úrandr)  rî   r�  r>   ré   )r}   r>  Úraw_prN  s       r.   Ú	bernoullir³  î  s|   € ð ÐÝ”
˜4Ÿ9š9™;œ;­e¬mÀDÄKÐPÑPÔPˆˆå”
Ø�IŠI‰KŒKØÝ”-Ø”;ð	
ñ 
ô 
ˆð 
�Š×Ò˜$œ*Ñ%Ô%€AØ€Hr-   c                ó   — |€9t          j        |                      ¦   «         t           j        | j        ¬¦  «        }n4t          j        |                      ¦   «         || j        | j        ¬¦  «        }||k                          | j        ¦  «        }|S r¯  r°  )r}   rN  r>  r²  s       r.   Úbernoulli_prµ    sx   € àÐÝ”
˜4Ÿ9š9™;œ;­e¬mÀDÄKÐPÑPÔPˆˆå”
Ø�IŠI‰KŒKØØ”,Ø”;ð	
ñ 
ô 
ˆð 
�Š�Š�t”zÑ"Ô"€AØ€Hr-   r¨  c                óB  — |                       ¦   «         dk    r t          j        | t          j        ¬¦  «        S  | j        g | j        ¢d|j        z  ¢R Ž }|s||k    }n||k    }t          t          d|j         dz
  d¦  «        ¦  «        }| 	                    |¬¦  «        S )Nr   rñ   r  rT   r$   r‚   )
rø   rj   Ú
empty_liker“  r•  r  rz  rÞ  rU   rq  )r«  r¬  r¦  r8   ÚcmprP   s         r.   r©  r©    s«   € Ø‡~‚~ÑÔ˜1ÒÐÝÔ µ´
Ð;Ñ;Ô;Ð;àˆŒÐD�x”~ÐD¨°Ô0BÑ)BÐDÐDÐD€AØð !Ø�=Ò ˆˆà�=Ò ˆÝ
•�b˜=Ô-Ð-°Ñ1°2Ñ6Ô6Ñ
7Ô
7€CØ�7Š7�sˆ7ÑÔÐ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|                      ¦   «         …         S t          j        |¦  «        \  }}t          j	        ||¦  «        }t          j
        ||                     ¦   «         k     |d¦  «        }||         |k    }|r|                     ¦   «         n|}|                     | j        ¦  «        S )NT)Ústabler$   rT   r   F)r6  rj   r+  Úsortrl  Úlogical_notr·  rü  rø   Úsearchsortedrk   r"  r  )r«  r¬  r¥  r¦  Úelements_flatÚtest_elements_flatÚall_elementsÚsorted_elementsÚsorted_orderÚduplicate_maskrš  Úsorted_test_elementsrW   r™  Útest_idxr¸  s                   r.   rª  rª    ss  € Ø×$Ò$Ñ&Ô&€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˜ŸšÑ(Ô(Ð(Ô)Ð)å"'¤*Ð-?Ñ"@Ô"@ÑÐ˜aÝÔ Ð!5°}ÑEÔEˆÝ”;˜sÐ%9×%?Ò%?Ñ%AÔ%AÒAÀ3ÈÑJÔJˆØ" 8Ô,°Ò=ˆØ#)Ð2ˆc�oŠoÑÔÐ¨sˆØ�{Š{˜8œ>Ñ*Ô*Ð*r-   c                 ó<   — |                       d¦  «        }||         S rS   )r"  )r}   rœ  Ú	flatteneds      r.   ÚtakerÈ  :  s    € ð —’˜RÑ Ô €IØ�UÔÐr-   c                 ó    — |€t           j        }|t           j        k    rt          |¦  «        }t                               | |j        |¬¦  «        S r-  )rj   rY  Úpreserve_formatr   r…   Úresizer  )r}   rM  rU  s      r.   Ú	resize_asrÌ  A  sE   € àÐÝÔ/ˆØ�Ô-Ò-Ð-Ý-¨eÑ4Ô4ˆÝ�;Š;�t˜Uœ[¸ˆ;ÑFÔFÐFr-   )F)r©   r<   r  )r   NNr$   )rT   FFrÈ  rÿ  r`  )r$   r$   F)Fr•   )r•   rh   N)r   r$   NrL  )NNN)r   r   FT)r   r   Fr  )r•   F(†  rM   rG  rŽ  r©  rt  Úenumr   r   r   r   r   Útypingr   r	   r
   r   r   r   r   r   rj   Útorch._meta_registrationsÚtorch._primsrG  r  Útorch._prims_commonÚ_prims_commonrF   Útorch.nn.functionalr—  rü  rÃ   r   r   r   Útorch._decompr   r]  r   r   r   r   r   r   Útorch._prims_common.wrappersr   r   r   r   Útorch.utilsr   rD   Útorch.utils._pytreer    r'  ÚDispatchKeyr!   ÚstrÚ__annotations__Ú_opsr  r…   r#   rO  r“  rO   rP  Úcompute_only_pw_cast_for_opmathÚpw_cast_for_opmathr  Úpw_cast_for_int_to_realrˆ  rX   ra   rc   rm   r   ry   r.  ÚScalarr   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…  rY   r  r  rÈ   r  r&  r3  r<  r?  rE  rH  rJ  rL  rP  rd  rl  Úslicer€  r‰  rk  rŸ  r¥  r¨  r®  r°  r½  r  r+  r/  r8  r>  rB  Úpy_implÚCompositeImplicitAutogradÚAutogradrA  rT  rX  r^  rf  r"  rt  rw  r{  rˆ  rŠ  r’  r•  r—  r‘  r¥  r�  r§  r­  r³  r·  rÕ  rÙ  rÜ  rö  rø  r  r  r  Úunsafe_chunkr  r  r  Úno_statsr   r$  r0  r6  r:  r<  Ú_fused_dropoutr?  rL  r�  rU  r›  ÚliftÚ
lift_freshrO  rT  rW  rZ  rY  rm  rr  ru  Ú_adaptive_avg_pool2dr¤  r®  r½  rÊ  rÑ  rÓ  rÏ  rô  rú  rü  rø  r  r  Ú	Generatorr	  r  r  r/  r´  r6  r<  r  Ú_upsample_nearest_exact1dr8  r>  r$  r*  r1  r  rJ  rS  rW  r[  ri  rq  rt  rx  r‡  r�  Úrnn_tanhrÁ   r—  Úrnn_relurš  rŸ  r   r£  r¯  r²  r¸  rÈ  ÚlstmrË  rÍ  rÕ  r×  ÚgrurÙ  rÛ  rÞ  rã  rå  ræ  rî  rð  rì  ré  rò  rö  rý  r  rè  r!  r#  rÙ  rA  r#  r–  r4  r:  r=  r?  rC  rF  rL  rS  rü  rZ  re  ri  rn  rp  rs  r¾  rÀ  r¶  rÉ  rÔ  rZ  Úupsample_bicubic2dr  r  Úreflection_pad1dÚreflection_pad2dÚreflection_pad3dr  Úreplication_pad1dÚreplication_pad2dÚreplication_pad3dr   r  Úreflection_pad1d_backwardÚreflection_pad2d_backwardÚreflection_pad3d_backwardrM  rP  rS  r‘  rD  r&  rX  rf  rZ  r^  rj  rx  Ú+_scaled_dot_product_flash_attention_for_cpur†  rŒ  r’  r”  r–  rç   r›  ró  rP   rž  r£  r­  r³  rN  rµ  r©  rª  rÈ  rÌ  Ú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__Úleaky_relu_Ú
leaky_reluÚlogit_ÚlogitÚrelu_r²  Úrenorm_ÚrenormÚround_r  Úscatter_r!  Úscatter_add_Úscatter_addÚscatter_reduce_Úscatter_reduceÚsilu_r,   r-   r.   ú<module>r!     sX_  ðð Ð Ð Ð Ð Ø Ð Ð Ð Ø €€€Ø €€€Ø 
€
€
€
Ø Ð Ð Ð Ð Ð Ø %Ð %Ð %Ð %Ð %Ð %Ð %Ð %Ø $Ð $Ð $Ð $Ð $Ð $Ð $Ð $Ø NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ NÐ Nà €€€Ø  Ð  Ð  Ð  Ø Ð Ð Ð Ð Ð Ø #Ð #Ð #Ð #Ð #Ð #Ø Ð Ð Ð Ð Ð Ð Ð Ð Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ð ,Ø 0Ð 0Ð 0Ð 0Ð 0Ð 0Ø 7Ð 7Ð 7Ð 7Ð 7Ð 7ðð ð ð ð ð ð ð ð ð ð ð ð ð ðð ð ð ð ð ð ð ð ð ð ð ð *Ð )Ð )Ð )Ð )Ð )Ø (Ð (Ð (Ð (Ð (Ð (ð ŒhÔ"€ð €ˆˆcŒÐ Ð Ñ à„z„~Ô€ðð ð ð ð �ñ ô ð ð  %ñ!ð !Øð!àÔ9ð!ð ð!ð !ð !ð !ðH #* 'ØØÔ8Ô@Øð#ñ #ô #Ð ð
 �WØ˜uÔDÔLðñ ô Ð ð "˜'Ø˜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ð °#ð ð ð ð ð˜œð ð ð ð ð Ð˜œÑ&Ô&Ø€�„Øà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ð$Øð$à
ð$ð ð$ð �VÔð	$ð
 ð$ð ð$ð ð$ð ð$ð $ð $ð $ð@ Ð˜Ô)Ñ*Ô*Ø€ˆ\ÑÔØðN˜fð N¨Fð N¸ð NÀð Nð Nð Nñ Ôñ Ôñ +Ô*ðNð$ Ð˜Ô.Ñ/Ô/Ø€ˆ\ÑÔð'Øð'à
ð'ð ð'ð �VÔð	'ð
 ð'ð ð'ð ð'ð ð'ð 'ð 'ñ Ôñ 0Ô/ð'ðT Ð˜Ô0Ñ1Ô1Ø€ˆ\ÑÔðØðà
ðð ðð �VÔð	ð
 ðð ðð ðð ðð ð ñ Ôñ 2Ô1ððB Ð˜Ô1Ñ2Ô2Ø€�„Øð  $Ø”^Ô)ð	1ð 1Ø
ð1àð1ð �VÔð1ð ð	1ð
 ð1ð 1ð 1ñ Ôñ „ñ 3Ô2ð1ð& Ð˜Ô:Ñ;Ô;Ø€ˆ\ÑÔØð
  $Ø”^Ô)ðð Øðà
ðð ðð �VÔð	ð
 ðð ðð ð ñ Ôñ Ôñ <Ô;ðð  Ð˜Ô-Ñ.Ô.Ø€�„Øð ”^Ô)ð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ð Ð˜œ
Ô)Ñ*Ô*ð ØØØñ6?ð 6?à
ð6?ð 
ð6?ð �CŒ=ð	6?ð
 
�#Œð6?ð ð6?ð 6?ð 6?ñ +Ô*ð6?ðrØðØðØ (¨¤ðØ4<¸S´Mðà
ˆ3�ˆ8„_ðð ð ð ð. Ð˜Ô*Ñ+Ô+Ø€�„ð ØØØñ$Uð $UØð$Uà	ð$Uð 
ð$Uð �CŒ=ð	$Uð
 
�#Œð$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ð
ð Ð˜Ô,Ñ-Ô-Ø€�„ðYØ
ðYØ" 3œiðYØ47ðYØ?BðYØJMðYàðYð Yð Yñ „ñ .Ô-ðYð" Ð˜Ô+Ô3Ñ4Ô4Øà>Bñ
ð 
Øð
Ø%ð
Ø,4°U¬Oð
àð
ð 
ð 
ñ Ôñ 5Ô4ð
ð& Ð˜œÑ%Ô%Ø„Ô×Ò˜kÔCÑDÔDØ„Ô×Ò˜kÔ2Ñ3Ô3ð�6ð ˜eð ¨H°T¬Nð ð ð ñ 4Ô3ñ EÔDñ &Ô%ðð Ð˜Ô+Ñ,Ô,Ø€ˆV�VÑÔðA˜&ð A Uð A°8¸D´>ð Að Að Añ Ôñ -Ô,ðAð Ð˜œÑ&Ô&Ø€�„ð�ð ˜Sð °ð ð ð ñ „ñ 'Ô&ðð* Ð˜Ô)Ñ*Ô*Ø€˜ÐÑÔð�Fð  ð °Tð ð ð ñ Ôñ +Ô*ðð, Ð˜œÑ'Ô'Ø€�„ð Ø$Øñð Øðàðð ðð ð	ð
 ðð ðð ð ñ „ñ (Ô'ðð& Ð˜Ô5Ñ6Ô6Ø€�„ðØðàðð ðð ð	ð
 ðð ð ñ „ñ 7Ô6ðð:ˆD�ŒIð ð ð ð ðØ�&Œ\ðà	ðð ðð 
ˆ&„\ð	ð ð ð ð*˜T &œ\ð ð ð ð ð
 t¨F¤|ð 
¸#ð 
ð 
ð 
ð 
ð"Ø�&Œ\ð"à	ð"ð ð"ð "ð "ð "ðJ Ð˜œÔ0°$´/Ô2EÐFÑGÔGð
 !ñ	ð Ø�&Œ\ðà	ðð ðð 
�&Ô	ð	ð
 ðð ð ñ HÔGðð  ÐØ	ÔÔ'¨Ô)CÔ)GÐHñô ð Ø"&ñ	ð Ø
ðà�c”ðð 
ðð 
�$�v”,Ô	ð	ð
 ˆd�6ŒlÔðð ð ñô ðð  Ð˜Ô)Ô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ð /ð /ð /ñ +Ô*ð/ð" ÔÔ-×5Ò5ØÔ)ñô ð ñ/ð /Ø
ð/à &ð/ð 
ð/ð ˆ6�3ˆ;Ôð	/ð /ð /ñô ð/ð@ Ð˜œ
Ñ#Ô#Ø€˜ÐÑÔØñð �ð ˜fð ¨Fð ¸#ð È#ð ð ð ñ Ôñ Ôñ $Ô#ðð" Ð˜Ô.Ñ/Ô/Ø€�„Øð
 ØØñð Ø
ðà
ðð ðð ð	ð
 ðð ðð ð ñ Ôñ „ñ 0Ô/ðð" Ð˜œ
Ñ#Ô#Ø€�„Øñð �ð ˜fð ¨6ð ¸ð Èð ð ð ñ Ôñ „ñ $Ô#ðð Ð˜Ô7Ô?Ñ@Ô@ØðS&ØðS&àðS&ð ðS&ð ð	S&ð
 �FÔðS&ð ðS&ð ðS&ð 
ðS&ð ðS&ð �d”ðS&ð ˆ8�FÔ˜X fÔ-¨x¸Ô/?Ð?Ô@ðS&ð S&ð S&ñ Ôñ AÔ@ðS&ðn Ð˜Ô7Ô;Ñ<Ô<ðØðàðð ðð ð	ð
 �FÔðð ðð ðð 
ðð ðð �d”ðð Œ,ðð Œ,ðð Œ,ðð ˆ8�FÔ˜X fÔ-¨x¸Ô/?Ð?Ô@ðð ð ñ =Ô<ðð8�8˜FÔ#ð ¨x¸Ô/?ð ð ð ð ð Ð˜Ô7Ô?Ñ@Ô@ðLØðLàðLð ˜3”iðLð ð	Lð
 ðLð �VÔðLð �6Ô
ðLð �d”ðLð ˆ8�FÔ˜X fÔ-¨x¸Ô/?Ð?Ô@ðLð Lð Lñ AÔ@ðLð` Ð˜Ô7Ô;Ñ<Ô<ðØðàðð ˜3”iðð ð	ð
 ðð �VÔðð �6Ô
ðð �d”ðð Œ,ðð Œ,ðð Œ,ðð ˆ8�FÔ˜X fÔ-¨x¸Ô/?Ð?Ô@ðð ð ñ =Ô<ðð4OØðOà�VÔðOð �6Ô
ðOð ˜6Ô"ð	Oð
 ˜&Ô!ðOð ðOð ðOð 
ðOð ðOð ˆ6�6˜6 8¨FÔ#3°X¸fÔ5EÐEÔFðOð Oð Oð Oðd Ð˜Ô.Ñ/Ô/Ø€ˆU�K Ñ/Ô/ð(Øð(à�VÔð(ð �6Ô
ð(ð ˜6Ô"ð	(ð
 ˜&Ô!ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ô"ð(ð (ð (ñ 0Ô/ñ 0Ô/ð(ð4 ÔÔ×'Ò'¨Ô(<Ñ=Ô=ØÔÔ×'Ò'¨Ô(MÑNÔNð 
Øð 
à�VÔð 
ð �6Ô
ð 
ð ˜6Ô"ð	 
ð
 ˜&Ô!ð 
ð ð 
ð ð 
ð 
ð 
ð ˆ6�6˜6Ð!Ô"ð 
ð  
ð  
ñ OÔNñ >Ô=ð 
ðF ÔÔ×"Ò" ;Ô#HÑIÔIñGð G°4¸´<ð Gð Gð Gñ JÔIðGð Ð˜ÔAÔIÑJÔJðØðà�VÔðð �6Ô
ðð ð	ð
 ðð ðð 
ðð ˆ6�6˜6Ð!Ô"ðð ð ñ KÔJðð* Ð˜Ô5Ô=Ñ>Ô>ð(Øð(à�VÔð(ð �6Ô
ð(ð ð	(ð
 ð(ð ð(ð ð(ð 
ð(ð ˆ6�6˜6Ð!Ô"ð(ð (ð (ñ ?Ô>ð(ð  Ð˜Ô5Ô>Ñ?Ô?ð(Øð(à�VÔð(ð �6Ô
ð(ð ð	(ð
 ð(ð 
ð(ð ˆ6�6˜6Ð!Ô"ð(ð (ð (ñ @Ô?ð(ð Ð˜Ô@ÔHÑIÔIðKØðKà�VÔðKð �6Ô
ðKð ð	Kð
 ðKð ðKð ðKð 
ðKð ˆ6�6˜6 6¨6Ð1Ô2ðKð Kð Kñ JÔIðKð0Øðà�VÔðð �6Ô
ðð ð	ð
 ðð 
ðð ðð ðð ð ð ð6 Ð˜Ô4Ô<Ñ=Ô=ð1Øð1à�VÔð1ð �6Ô
ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ô*ð1ð 1ð 1ñ >Ô=ð1ð4 Ð˜Ô?ÔGÑHÔHðCØðCà�VÔðCð �6Ô
ðCð ð	Cð
 ðCð ðCð 
ðCð ˆ6�6˜6 6¨6°6Ð9Ô:ðCð Cð Cñ IÔHðCð4 Ð˜Ô2Ô:Ñ;Ô;ð1Øð1à�VÔð1ð �6Ô
ð1ð ð	1ð
 ð1ð ð1ð 
ð1ð ˆ6�6˜6 6Ð)Ô*ð1ð 1ð 1ñ <Ô;ð1ð4 Ð˜Ô+Ñ,Ô,Ø€ˆV�VÑÔØñð ð ñ Ôñ Ôñ -Ô,ðð Ð˜œÑ&Ô&Ø€�„ð $(ØØ%)ØØØ37ð&ð &ð &ØˆV�ZÐÔ ð&ð �E”KÔ ð&ð
 �U”\Ô"ð&ð ð&ð ð&ð ˜EÔ/Ô0ð&ð &ð &ñ „ñ 'Ô&ð&ðX Ð˜œ d¤i°´ÐAÑBÔBØ€�„ðð ñ „ñ CÔBðð ÔÔ×&Ò& {Ô';Ñ<Ô<ØÐ˜Ô-Ñ.Ô.Ø€ˆV�V˜V VÑ,Ô,ðØðàðð �6Ô
ðð ˜6Ô"ð	ð
 ˜&Ô!ðð ðð !&ðð ðð ð ñ -Ô,ñ /Ô.ñ =Ô<ðð>ð ð ð Ð˜Ô0Ô8Ñ9Ô9ðØðàðð �VÔðð ˜6Ô"ð	ð
 ˜&Ô!ðð ˜Ôðð ˜&Ô!ðð ðð 
ðð �d”ðð ðð ˆ6�8˜FÔ# X¨fÔ%5Ð5Ô6ðð ð ñ :Ô9ðð6 Ð˜Ô7Ô?Ñ@Ô@ðaØðaàðað �VÔðað ˜6Ô"ð	að
 ˜&Ô!ðað ˜Ôðað ˜&Ô!ðað ðað 
ðað �d”ðað ˆ6�8˜FÔ# X¨fÔ%5Ð5Ô6ðað að añ AÔ@ðaðJ Ð˜Ô7Ô;Ñ<Ô<ð"Øð"àð"ð �VÔð"ð ˜6Ô"ð	"ð
 ˜&Ô!ð"ð ˜Ôð"ð ˜&Ô!ð"ð ð"ð 
ð"ð �d”ð"ð Œ,ð"ð Œ,ð"ð Œ,ð"ð ˆ6�8˜FÔ# X¨fÔ%5Ð5Ô6ð"ð "ð "ñ =Ô<ð"ðJ Ð˜Ô7Ñ8Ô8Ø€ˆV�V˜VÑ$Ô$ðØðàðð ðð ˜6Ô"ð	ð
 ˜&Ô!ðð ˜Ôðð �vÔðð ðð ð ñ %Ô$ñ 9Ô8ðð0 Ð˜Ô6Ñ7Ô7Ø€ˆV�V˜VÑ$Ô$ðØðàðð ðð ˜6Ô"ð	ð
 ˜&Ô!ðð ˜Ôðð �vÔðð ðð ðð ð ñ %Ô$ñ 8Ô7ðð2 Ð˜Ô1Ñ2Ô2Ø€�„Øðc'˜vð c'°E¸#¸s¸(´Oð c'ð c'ð c'ñ Ôñ „ñ 3Ô2ðc'ðLØ
ðØ)ðØ8<¸S¼	ðØHKðð ð ð ð0 Ð˜Ô)Ñ*Ô*Ø€�„ð*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ð$ ð%@ð %@ð %@Øð%@à	ð%@ð ð%@ð ð	%@ð ð%@ð ð%@ð %@ð %@ð %@ðP Ð˜Ô)Ô1Ñ2Ô2ØÔÔ×"Ò" ;Ô#HÑIÔIñð ð ñ JÔIñ 3Ô2ðð2 Ð˜Ô(Ñ)Ô)ð<�:ð < Cð <°
ð <ÀJð <ñ <ð <ñ *Ô)ð<ð Ð˜œÑ(Ô(Ø€�„ð=�*ð = 3ð =¨zð =À:ð =ñ =ð =ñ „ñ )Ô(ð=ð@Øð@Øð@Ø$.ð@Ø8Bð@ØPTð@ñ @ð @ð @ð, Ð˜Ô0Ñ1Ô1Ø€ˆX�xÑ Ô Øð(˜fð (¨¨v°v¨~Ô)>ð (ñ (ð (ñ Ôñ !Ô ñ 2Ô1ð(ð Ð˜œÑ%Ô%Ø€�„ð $'Ø$'Ø+/ñ	ð Øñà	ˆt�S˜%ÐÔ	 ñð ��c˜5Ð Ô
!ñð ˜œÔ(ð	ñ ð ñ „ñ &Ô%ðð  Ð˜œÑ&Ô&ñ;ñ ;ð ;ñ 'Ô&ð;ñ
ð ð ñ8ð ð ð Ð˜Ô/Ô3Ñ4Ô4ØÐ˜Ô/Ô3Ñ4Ô4ØÐ˜Ô/Ô3Ñ4Ô4ØÔÔ×$Ò$ [Ô%JÑKÔKØÔÔ×$Ò$ [Ô%9Ñ:Ô:ØÔÔ×$Ò$ [Ô%JÑKÔKØÔÔ×$Ò$ [Ô%9Ñ:Ô:ØÔÔ×$Ò$ [Ô%JÑKÔKØÔÔ×$Ò$ [Ô%9Ñ:Ô:ð	3Øð	3à˜$˜sœ)Ô$ñ	3ð ˜D œKÔ(ð	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ð	?Øð	?à˜$˜sœ)Ô$ñ	?ð ˜D œKÔ(ð	?ð ð		?ñ 	?ð 	?ñ BÔAñ SÔRñ BÔAñ SÔRñ BÔAñ SÔRñ <Ô;ñ <Ô;ñ <Ô;ð	?ññ ð ð ð@ Ð˜Ô0Ô8¸$Ô:QÔ:UÐVÑWÔWØÔÔ ×(Ò(¨Ô)NÑOÔOØÔÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€ D°dÑ;Ñ;Ô;ð #ñ;ð ;Øð;à�c”ñ;ð �UŒOð;ð ð	;ñ ;ð ;ñ <Ô;ñ ?Ô>ñ PÔOñ XÔWð;ð ÐØ	Ô#Ô+¨TÔ-KÔ-OÐPñô ð ÔÔ'×/Ò/°Ô0UÑVÔVØÔÔ'×/Ò/°Ô0DÑEÔEØ€ D°dÑ;Ñ;Ô;ð #ñGð GØðGà�c”ñGð �UŒOð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ð �uŒoñGð �uŒoð	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ð �uŒoñSð �uŒoð	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ð �uŒoñQð �uŒoñ	Qð
 �uŒoðQð ðQñ Qð Qñ <Ô;ñ ?Ô>ñ PÔOñ XÔWðQð ÐØ	Ô#Ô+¨TÔ-KÔ-OÐPñô ð ÔÔ'×/Ò/°Ô0UÑVÔVØÔÔ'×/Ò/°Ô0DÑEÔEØ€ D°dÑ;Ñ;Ô;ð !%Ø $Ø $ñ	ð 	Øð	à�c”ñ	ð �uŒoñ	ð �uŒoñ		ð
 �uŒoð	ð ð	ñ 	ð 	ñ <Ô;ñ 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ñð Ð˜Õ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ð �uŒoð	Kð
 ðKñ Kð Kñ „ñ VÔUñKð ÐØ	ÕÔ% tÕ'?Ô'CÐDñô ð ÕÔ!×)Ò)¨+Ô*>Ñ?Ô?Ø€�„ð
 !%Ø $ñUð UØðUà�c”ñUð ñUð �uŒoñ	Uð
 �uŒoðUð ðUñ Uð Uñ „ñ @Ô?ñô ñ
Uð ÐØ	ÕÔ&¨Õ(AÔ(EÐFñô ð €�„ð
 !%Ø $Ø $ñ
ð 
Øð
à�c”ñ
ð ñ
ð �uŒoñ	
ð
 �uŒoñ
ð �uŒoð
ð ð
ñ 
ð 
ñ „ñô ñ
ñVñ Vð Vñ Vñ/ð /ñ /ð7Ø	�&Ô	ñ7Ø$,¨VÔ$4ñ7ØIOð7àð7ñ 7ð 7ñ 7ñ-Ð'9ð -¸fð -ñ -ð -ñ -ð ðEØðEà�c”ñEð ñEð �˜%”Ô!ð	Eð
 ðEñ Eð Eñ ÔñEðR Ð˜Õ)Ô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ð22 Ø
ð2 àð2 ð �VÔð2 ð ð	2 ð
 ð2 ð ˆ6�6ˆ>Ôð2 ñ 2 ð 2 ñ 2 ðj Ð˜Õ-Ñ.Ô.Ø€ˆX�~Ñ&Ô&ðLØ
ðLàðLð �VÔðLð ð	Lð
 ðLð ˆ6�6ˆ>ÔðLñ Lð Lñ 'Ô&ñ /Ô.ñLð4 Ð˜Õ/Ñ0Ô0Ø€ˆX�~Ñ&Ô&ðLØ
ðLàðLð �VÔð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ð  ØØØñc4ñ c4Øñc4à
ñc4ð ñc4ð ñ	c4ð
 ñc4ð ðc4ð ðc4ñ c4ð c4ñ c4ðL Ð˜Õ,Ñ-Ô-Ø€�„Øð  ØØññ Øñà
ñð ñð ñ	ð
 ðð ðñ ð ñ Ôñ „ñ .Ô-ñð  Ð˜�Ñ Ô Ø€�„Øñ	#ð 	#ñ Ôñ „ñ !Ô ñ	#ð Ð˜Õ=Ñ>Ô>Ø€�„à¨$¸)¼.Ô:Nð1ñ 1ð 1ñ „ñ ?Ô>ñ1ñ˜œñ °´ñ Àdð Ètð ñ ð ñ ðB …Ô×Ò˜[ÔBÑCÔCØ…„×Ò˜Ô>Ñ?Ô?Ø€˜ÑÑÔØ',ñ tWð tWñ tWð tWñ Ôñ @Ô?ñ DÔCñtWðn Ð˜Õ0Ô8¸$Õ:QÔ:UÐVÑWÔWØÕÔ ×(Ò(¨Ô)=Ñ>Ô>Ø€�„Øð
  $Ø#ñPð PØðPà�s˜C�x”ñPð ñPð �eŒ_ñ	Pð
 �eŒ_ðPð ðPñ Pð Pñ Ôñ „ñ ?Ô>ñ XÔWñPðf Ð˜Õ/Ô3Ñ4Ô4ØÕÔ×$Ò$ [Ô%JÑKÔKØÕÔ×$Ò$ [Ô%9Ñ:Ô:Ø€�„Øð
 48ñ	Wñ WØðWà˜%  S œ/Ô*ñWð ñWð ˜E %¨ ,Ô/Ô0ð	Wð
 ðWñ Wð Wñ Ôñ „ñ ;Ô:ñ LÔKñ 5Ô4ñ
Wð. Ð˜Õ-Ñ.Ô.ØÐ˜Õ-Ñ.Ô.ØÐ˜Õ-Ñ.Ô.ØØ€�„ñ	�vð 	¨¨c°3¨h¬ð 	¸Fð 	ñ 	ð 	ñ „ñ Ôñ /Ô.ñ /Ô.ñ /Ô.ñ
	ð Ð˜Õ.Ñ/Ô/ØÐ˜Õ.Ñ/Ô/ØÐ˜Õ.Ñ/Ô/ØØ€�„ñ	˜ð 	¨¨s°C¨x¬ð 	¸Vð 	ñ 	ð 	ñ „ñ Ôñ 0Ô/ñ 0Ô/ñ 0Ô/ñ
	ñØðà�3˜�8Œ_ñð �c˜3 �_ fÐ,Ô-ðð ð	ñ ð ñ ð8 Ð˜Õ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Ð>Ñ?Ô?Ø€�„ð $(Ø �=Ø%)Øñ
ð 
ð 
Ø	ð
ð �E”KÔ ñ
ð �Lð	
ð
 �U”\Ô"ð
ð ð
ñ 
ð 
ñ „ñ @Ô?ñ
ð Ð˜�Õ*Ð+Ñ,Ô,ð
 $(Ø �=Ø%)Øñð ð Øðà	ðð �E”KÔ ñ	ð
 �Lðð �U”\Ô"ðð ðñ ð ñ -Ô,ñð Ð˜	Ñ"Ô"ñ,ð ,ñ #Ô"ñ,ð Ð˜Õ.Ñ/Ô/ØÕÔ×'Ò'¨Ô(<Ñ=Ô=Ø€�„ð ØØ#Ø”^Ô)ð)ð )Øð)àð)ð ñ)ð ð	)ð
 �VÔð)ð ð)ð ð)ñ )ð )ñ „ñ >Ô=ñ 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ð �EŒ?ð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ð �E”KÔ ð	Dð 
�&Ô	ð		Dð
 ð	Dñ 	Dð 	Dñ :Ô9ñ	Dð Ð˜�Ô-¨t­|Õ/?Ð@ÑAÔAñ.ð .˜&ð . x°¤}ð .ñ .ð .ñ BÔAñ.ð Ð˜œ	œÕ=Ñ>Ô>ñ,ñ ,ð ,ñ ?Ô>ñ,ð Ð˜�	Ñ"Ô"Ø€�„Ø38Àñ 
ð 
ñ 
ð 
ñ „ñ #Ô"ñ
ð Ð˜�Ô.Ñ/Ô/ð ,0ñð ð Ø
Œ,ñð ˜œÔ(ðð „\ð	ñ ð ñ 0Ô/ñð$ Ð˜�Õ(Ñ)Ô)ØCGñ ð ñ  x°´Ô'@ð ñ ð ñ *Ô)ñð 5:ñ 
ð 
ñ 
ð 
ñ 
ð <AÈñ +ð +ñ +ð +ñ +ð: Ð˜�	Ñ"Ô"Ø€�„ñð ñ „ñ #Ô"ñð
 Ð˜�Ñ'Ô'ñGñ Gð Gñ (Ô'ñGð Ñ �•˜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Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �Õ! 4¥?Ñ 3Ô 3Ð 3Ø Ñ �•˜d�jÑ )Ô )Ð )Ø Ñ �•˜T�YÑ 'Ô 'Ð 'Ø Ñ �•˜t�{Ñ +Ô +Ð +Ø Ñ �•˜d�jÑ )Ô )Ð )Ø Ñ �• ¥Ñ -Ô -Ð -Ø Ñ �Õ" DÕ$4Ñ 5Ô 5Ð 5Ø Ñ �Õ% tÕ':Ñ ;Ô ;Ð ;Ø Ñ �•˜TœYÑ 'Ô 'Ð 'Ð 'Ð 'r-   