ó
    Eñi	û ã                  ó¬w  • % S SK Jr  S SKrS SKrS SKrS SKrS SKrS SKrS SKrS SK	r	S SK
r
S SKrS SKJr  S SKJrJrJrJr  S SKJrJrJrJrJrJrJr  S SKJr  S SKJr  S SKrS SK r S SK!r S SK"r S SK#J$s  J%r&  S SK'J(r(  S S	K)J*r*  S S
K+J,r,  S SK-J.r.  S SK/J0r0  S SK1J2r2J3r3J4r4J5r5J6r6J7r7J8r8J9r9J:r:J;r;J<r<  S SK=J>r>J?r?  S SK@JArAJBrBJCrC  S SKDJErE  S SKFJGrGJHrHJIrIJJrJJKrK  SSKLJMrM  SSKNJOrOJPrPJQrQJRrR  SSKSJTrTJUrU  SSKQJVrVJWrWJXrXJYrYJZrZJ[r[J\r\J]r]J^r^J_r_J`r`JaraJbrbJcrcJdrdJere  SSK$JfrfJgrgJhrhJiriJjrjJkrkJlrlJmrmJnrnJoroJprpJqrq  SSKrJsrsJtrt  \(       a  SSKuJvrv  \" S5      rw\" S5      rx\E" SS/5      ry\Rô                  " \{5      r|0 r}S\~S '   0 rS!\~S"'   \E\ GR                   GR                     " 5       r‚\ Ræ                  GR                  rƒ\ Ræ                  GR                  r„\ Ræ                  GR
                  r…\E\ GR                   GR                     " 5       r†\E\ GR                   GR                     " \ GR                  GR                  /5      r‰\E\ GR                   GR                     " 5       rŠ0 r‹S#\~S$'   \ Ræ                  GR                  rŒGSvS% jr�    GSwS& jrŽGSxS' jr�    GSyS( jr�GSzS) jr‘    GS{S* jr’      GS|S+ jr“\’" \ƒGR(                  \ƒGR*                  \ƒGR,                  \ƒGR.                  \ƒGR0                  \ƒGR2                  \ƒGR4                  \ƒGR6                  \ƒGR8                  \ƒGR:                  \ƒGR<                  \ƒGR>                  \ƒGR@                  \ƒGRB                  /5        \ GRD                  \ GRF                  \ GRH                  \ GRJ                  \ GRL                  \ GRN                  \ GRP                  \ GRR                  \ GRT                  \ GRV                  \ GRT                  \ GRX                  \ GRZ                  S,.r®GS}S- jr¯GS~S. jr°GSS/ jr±S0S1.       GS€S2 jjr²S3 r³      GS�S4 jr´GS‚S5 jrµ            GSƒS6 jr¶      GS„S7 jr·          GS…S8 jr¸S0\7GRr                  S0\}4   GS†S9 jjrºS: r»GS‡S; jr¼     GSˆS< jr½GS‰S= jr¾S> r¿GS‰GSŠS? jjrÀ\º" \ GR                  GR                  SS@9SA 5       rˆ\º" \…GR‚                  SS@9GS‹SB j5       rÂS0SC.GS‹SD jjrÃ\º" \ƒGRˆ                  GRŠ                  SS@9GS‹SE j5       rÆS0S0SF.GSŒSG jjrÇ\º" \…GR�                  SS@9GS‰GSŒSH jj5       rÉSSI\7GRr                  S0SSS0S4SJ jrÊ\n" SK\7GR–                  SSL9  \º" \ƒGR˜                  SISSM9GS�SN j5       rÍSO rÎ\Î" 5          GS‰SP jrÏ\º" \ƒGR                   S0SSM9SQ 5       rÐ\º" \ƒGR¢                  S0SSM9SR 5       rÑ\º" \ƒGR¤                  \ƒGR¦                  \ƒGR¨                  \ƒGRª                  \…GR¬                  /5      SS 5       r×\Ø" \ƒST5      (       a  \º" \ƒGR²                  5      " \×5        \º" \ƒGR´                  SS@9GSŽSU j5       rÚ\º" \ƒGR¶                  SS@9GSŽSV j5       rÛ\º" \ƒGR¸                  /5      GSŽSW j5       rÜ\º" \ƒGRº                  5      SX 5       rÝ\º" \ƒGR¼                  5      SY 5       rÞ\º" \ƒGR¾                  5      SZ 5       rß\º" \ƒGRÀ                  5      S[ 5       rà\º" \ƒGRÂ                  GRÄ                  5      S\ 5       rá\º" \ƒGRÆ                  5      S] 5       rã\º" \ƒGRÈ                  SS@9S^ 5       rä\º" \…GRÊ                  SS@9S_ 5       rå\º" \ƒGRÌ                  SS@9S` 5       ræ\º" \ƒGRÎ                  5      Sa 5       rç\º" \ƒGRÐ                  SS@9\º" \ƒGRˆ                  SS@9\º" \ƒGRÒ                  SS@9GS�Sb j5       5       5       rÄ\º" \ƒGRÔ                  SS@9Sc 5       rê\º" \ƒGRÖ                  SS@9GS�Sd j5       rì\º" \ƒGR(                  SS@9GSŽSe j5       r”\º" \ƒGRÚ                  SS@9GSŽSf j5       rí\º" \ƒGR*                  SS@9GSŽSg j5       r•GS‘Sh jrî\º" \ŒGRÞ                  SS@9                GS’Si j5       rðSj rñ\º" \ƒGRâ                  GRä                  5      Sk 5       ró\º" \ƒGRè                  GRä                  5      Sl 5       rõ\º" \ŒGRì                  SS@9SSm.                 GS“Sn jj5       r÷\º" \ŒGRð                  GRÄ                  SS@9              GS”So j5       rù\º" \ŒGRô                  GRÄ                  SS@9SSm.               GS•Sp jj5       rû\º" \ŒGRð                  GRø                  SS@9              GS–Sq j5       rý\º" \ŒGRô                  GRø                  SS@9SSm.               GS—Sr jj5       rþ\º" \ƒGRþ                  5      GS‘Ss j5       rÿ\º" \ƒGR                   SS@9GS˜GS™St jj5       Gr \º" \ƒGR                  SS@9GS˜GS™Su jj5       Gr\º" \ƒGR                  SS@9GS˜GS™Sv jj5       Gr\º" \ƒGR                  SS@9Sw 5       Gr\º" \ƒGR                  SS@9GS‘Sx j5       Gr\º" \ƒGR
                  SS@9GS‘Sy j5       Gr\º" \ƒGR                  SS@9GS‘Sz j5       Gr\º" \ƒGR                  SS@9S{ 5       Gr\º" \ƒGR                  SS@9S| 5       Gr\º" \ƒGR                  SS@9S} 5       Gr	GS‘S~ jGr
\º" \ƒGR                  5      GSšS€ j5       GrGS›S� jGr\GR                  S‚ 5       GrGSŽGSœSƒ jjGrGSŽGSœS„ jjGrGS›GS�S… jjGrGSžS† jGrS‡ Gr\º" \ Ræ                  GR(                  GR*                  SS@9Sˆ 5       Gr\º" \ƒGR,                  SS@9S‰ 5       Gr\º" \ƒGR.                  SS@9SŠ 5       Gr\º" \ƒGR0                  GR2                  SS@9S‹ 5       Gr\º" \ƒGR6                  5      SŒ 5       Gr\GR8                  " S5      S� 5       GrSŽ GrG\" \ƒGR>                  GRÄ                  5      Gr G\" \ƒGR>                  GRB                  5      Gr"G\" \ƒGRF                  GRÄ                  5      Gr$G\" \ƒGRF                  GRB                  5      Gr%G\" \ƒGRL                  5        G\" \ Ræ                  GRN                  GRP                  GRÄ                  5        G\" \ Ræ                  GRN                  GRR                  GRÄ                  5        \º" \ƒGR>                  5      S� 5       Gr\º" \ƒGRF                  5      S� 5       Gr#\º" \PGRT                  SS@9S‘ 5       Gr+\º" \PGRX                  SS@9GSŸS’ j5       Gr-\º" \PGR\                  SS@9S“ 5       Gr/\º" \PGR`                  SS@9S” 5       Gr1\º" \PGRd                  SS@9S S•.GS S– jj5       Gr3\º" \PGRL                  SS@9S S•.         GS¡S— jj5       Gr4GS¢S˜ jGr5GS£S™ jGr6\º" \ƒGRn                  GRp                  SS@9S0S0SSSš.             GS¤S› jj5       Gr7\º" \ƒGRr                  GRp                  \7GRt                  S@9S0S0Sœ.       GS¥S� jj5       Gr9Sž Gr;SŸ Gr<S  Gr=S¡ Gr>S¢ Gr?S£ Gr@S¤ GrAS¥ GrBG\" \ƒGR†                  5        G\" \ƒGRˆ                  5        G\" \ƒGRŠ                  5        G\" \ƒGRŒ                  S0S¦9  G\" \ƒGRŽ                  GRÄ                  S0S¦9  G\" \ƒGR�                  G\<5        G\" \ƒGR’                  S0S¦9  G\" \ƒGR”                  S0S¦9  \ GR–                  GR™                  5       (       a  G\" \ƒGRš                  S0S¦9  \ GRœ                  GRŸ                  5       (       a  G\" \ƒGR                   S0S¦9  G\" \ƒGR¢                  5        G\" \ƒGR¤                  5        G\" \ƒGR¦                  5        G\" \ƒGR¨                  GRÄ                  5        G\" \ƒGRª                  GRÄ                  5        G\" \ƒGR¬                  5        G\" \ƒGR®                  GR°                  5        G\" \ƒGR²                  GRÄ                  5        G\" \ƒGR´                  GRÄ                  5        G\" \ƒGR¶                  5        G\" \ƒGR¸                  S0S¦9  G\" \ƒGRº                  G\;5        G\" \ƒGR4                  G\A5        G\" \ƒGR¼                  G\;5        G\" \ƒGR¾                  G\<5        G\" \ƒGRÀ                  G\;5        G\" \ƒGRÂ                  G\<5        G\" \ƒGRÄ                  G\<5        G\" \ƒGRÆ                  G\<5        G\" \ƒGRÈ                  5        G\" \ƒGRÊ                  5        G\" \ƒGRÊ                  5        G\" \ƒGRÌ                  5        G\" \ƒGRÎ                  5        G\" \ƒGRÐ                  5        G\" \ƒGRÒ                  G\;5        G\" \ƒGRÔ                  5        G\" \ƒGRÖ                  5        G\" \ƒGRØ                  5        G\" \ƒGRÚ                  5        G\" \ƒGRÜ                  5        G\" \ƒGRÞ                  5        G\" \ƒGRà                  5        G\" \ƒGRâ                  5        G\" \ƒGRä                  G\<5        G\" \ƒGRæ                  5        G\" \ƒGRè                  5        G\" \ƒGRê                  G\<5        G\" \ƒGRì                  5        G\" \ƒGRì                  GRî                  5        G\" \ƒGRð                  5        G\" \ƒGRò                  5        G\" \ƒGRô                  5        G\" \ƒGRö                  5        G\" \ƒGRø                  5        G\" \ƒGRú                  5        G\" \ƒGRü                  5        G\" \ƒGRþ                  5        G\" \ƒGR                   5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR
                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                  5        G\" \ƒGR                   5        G\" \ƒGR"                  GR$                  5        G\" \ƒGR&                  5        G\" \ƒGR(                  5        G\" \ƒGR*                  5        G\" \ƒGR,                  5        G\" \ƒGR.                  5        G\" \ƒGR0                  5        G\" \ƒGR2                  5        G\" \ƒGR4                  GRÄ                  5        G\" \ƒGR6                  GRÄ                  S0S¦9  G\" \ƒGR8                  G\;5        G\" \ GR:                  GR<                  GR>                  5        G\" \ GR:                  GR<                  GR@                  5        G\" \ GR:                  GR<                  GRB                  5        G\" \ƒGRD                  5        G\" \ƒGRF                  5        G\" \ƒGRH                  G\<5        G\" \ƒGRJ                  5        G\" \ƒGRL                  5        G\" \ƒGRN                  5        G\" \ƒGRP                  5        G\" \ƒGRR                  5        G\" \ƒGRT                  GRV                  5        G\" \ƒGRX                  GRÄ                  G\BS0S¦9  G\" \ƒGRZ                  GRÄ                  G\BS0S¦9  G\" \ƒGR\                  GRÄ                  G\BS0S¦9  G\" \ƒGR\                  GR^                  S0S¦9  G\" \ƒGR`                  GRÄ                  G\BS0S¦9  G\" \ƒGRb                  GRÄ                  G\BS0S¦9  G\" \ƒGRd                  GRÄ                  G\BS0S¦9  G\" \ƒGRf                  GRÄ                  G\BS0S¦9  G\" \ƒGRh                  GRÄ                  G\BS0S¦9  G\" \ƒGRj                  GRÄ                  G\BS0S¦9  G\" \ƒGRl                  GRÄ                  G\BS0S¦9  G\" \ƒGRn                  GRÄ                  G\B5        G\" \ƒGRn                  GR^                  5        G\" \ƒGRp                  GRÄ                  G\B5        G\" \ƒGRr                  GRÄ                  G\B5        G\" \ƒGRt                  GRÄ                  G\B5        G\" \ƒGRv                  5        G\" \ƒGRx                  GRp                  SIS§9  G\" \ƒGRz                  GRÄ                  G\<5        \º" \ƒGR|                  SS@9GS‰S¨ j5       Gr¾\º" \ƒGR~                  5      SS©.Sª j5       Gr¿S« GrÀ\Ø" \ƒS¬5      (       a  \º" \ƒGR‚                  5      " G\¿5        \º" \…GR„                  5      S­ 5       GrÂ\º" \ƒGR†                  SS@9GS¦S® j5       GrÃ\º" \ƒGRˆ                  SS@9GS§S¯ j5       GrÄS° GrÅ\º" \ GRø                  \ƒGRŒ                  /5      SSSS0S±.S² j5       rü\º" \ GRŽ                  5      GS‡S³ j5       GrÇ\º" \ GR�                  5      S´ 5       GrÉ\º" \ƒGR”                  5      Sµ 5       GrÊ\º" \ƒGR–                  5      S¶ 5       GrË\º" \ƒGR˜                  5       GS¨SSS·.S¸ jj5       GrÌS¹ GrÍSº GrÎS» GrÏ\º" \ GR                   \ƒGR                   /5      SSSSSSS¼.S½ j5       GrÐS¾ GrÑS¿ GrÒ\º" \ƒGR¦                  5      " G\Ñ" G\Ð5      5      GrÓG\Ñ" G\Ï" S5      5      GrÔG\Ñ" G\Ï" S 5      5      GrÕSÀ GrÖ\º" \ƒGR®                  5      SSSSSÁ.SÂ j5       Gr×\º" \ƒGR°                  5      SSSSSÁ.SÃ j5       GrØ\º" \ƒGR²                  5      SSSSSÁ.SÄ j5       GrÙ\º" \…GR´                  GRÄ                  5      SÅ 5       GrÚ\º" \ GR¶                  \ƒGR¶                  /5      SÆ 5       GrÛ\º" \ƒGR¸                  SS@9GS‰SÇ j5       GrÜ\º" \ƒGRº                  SS@9GS©SÈ j5       GrÝSÉ GrÞ GS›SÊ jGrßSË GràGS›SÌ jGrá\º" \ƒGRÄ                  SS@9SÍ 5       Grâ\º" \ƒGRÆ                  SS@9SÎ 5       Grã\º" \ƒGRÈ                  SS@9GS‰SÏ j5       Grä\º" \ƒGRÊ                  5      GS‰SÐ j5       GråSÑ GræSÒ Grç\º" \ƒGRÐ                  SS@9GS‰SÓ j5       Grè\º" \PGRÒ                  SS@9GS‰SÔ j5       GréGS‰SÕ jGrêG\" \ƒGRÖ                  GRÄ                  S0SÖ9GrìG\" \ƒGRÚ                  GRÄ                  S0SÖ9Grî\º" \ƒGRÖ                  SS@9S× 5       Grë\º" \ƒGRÚ                  SS@9SØ 5       Grí\½SÙ 5       Grï\º" \ƒGRà                  SS@9GSŽSÚ j5       Grð\º" \ƒGRâ                  SS@9GSªSÛ j5       GrñSSISÜ.       GS«SÝ jjGrò\º" \ƒGRæ                  SS@9SSÞ.GS¬Sß jj5       Gró\º" \ƒGRè                  SS@9GSªSà j5       Grô\º" \ƒGRê                  SS@9GSªSá j5       Grõ\º" \ƒGRì                  SS@9GSªSâ j5       Grö\º" \ƒGRî                  SS@9SISã.GS­Sä jj5       Gr÷  GS®     GS¯Så jjGrø\º" \ƒGRò                  GRÄ                  5      GSŽGS°Sæ jj5       Grù\º" \ƒGRô                  GRÄ                  5      GSŽGS°Sç jj5       Grú\º" \ƒGR>                  GRÄ                  5       GS‡   GS±Sè jj5       rŸ\º" \ƒGR@                  GRÄ                  5       GS‡   GS±Sé jj5       r \º" \ƒGRö                  GRÄ                  5         GS¨     GS²Sê jj5       Grû\º" \ƒGRø                  GRÄ                  5         GS¨     GS²Së jj5       GrüSì Grý\º" \…GRü                  GRÄ                  5      Sí 5       Grþ        GS³Sî jGrÿ\º" \ƒGR                   SS@9GS‘Sï j5       Gr GS´Sð jGrGSµSñ jGrGS¶Sò jGr GS·Só jGrSSô.Sõ jGrSö GrSS÷.Sø jGrSù Gr\º" \…GR                  SS@9 GS‰Sú j5       Gr	          GS¸Sû jGr
\º" \…GR                  SS@9Sü 5       GrSý Gr\º" \ƒGR6                  SS@9    GS¹Sþ j5       r›\º" \ƒGR8                  SS@9    GS¹Sÿ j5       rœG\" \ƒGR:                  GRÄ                  S0SÖ9Gr\º" \ƒGR:                  SS@9GS  5       r�GSºGS jGrGS GrGS GrGS GrG\" \ƒGR$                  GRÄ                  S0SÖ9Gr\º" \ƒGR$                  5      GS 5       GrG\" \ƒGR(                  GRÄ                  S0SÖ9Gr\º" \ƒGR(                  5      GS 5       GrGS Gr\º" \ƒGR.                  5      GS 5       Gr\º" \ƒGR0                  5      GS	 5       GrGS
 Gr\º" \ƒGR4                  GRÄ                  5       GS»GS j5       Gr\º" \ƒGR,                  SS@9     GS¼GS j5       r–\º" \ƒGR6                  SS@9     GS¼GS j5       GrG\" \ƒGR8                  GRÄ                  S0SÖ9G\" \ƒGR,                  GRÄ                  S0SÖ9G\" \ƒGR6                  GRÄ                  S0SÖ9/GrGS GrG\" \ƒGR.                  GRÄ                  S0SÖ9Gr\º" \ƒGR.                  SS@9 GSŽGS j5       r—G\" \ƒGR@                  GRÄ                  S0SÖ9Gr!\º" \ƒGR@                  SS@9 GSŽGS j5       Gr GS Gr"SGS.GS jGr#GSŽGS½GS jjGr$GS Gr%\º" \ƒGRL                  5      GS¾SGS.GS jj5       Gr&GS Gr'GS Gr(GS Gr)GS Gr*\º" \ƒGRV                  \…GRV                  /5      GSŽSS0GS.GS jj5       Gr,\º" \ƒGRZ                  5      GSŽSS0GS.GS jj5       Gr-GS Gr.\½GS  5       Gr/G\" \ƒGR`                  GRb                  S0SÖ9Gr2G\" \ƒGR`                  GRf                  S0SÖ9Gr4G\" \ƒGR`                  GRj                  S0SÖ9Gr6\º" \ƒGR`                  SIGS!9GS" 5       Gr0GS‰GS# jGr7\º" \ƒGRp                  5      GS$ 5       Gr8\º" \ƒGRr                  SS@9GS‰GS% j5       Gr9\½GS& 5       Gr:\½GS' 5       Gr;\º" \ƒGRx                  SIGS!9GSŽGS( j5       Gr=\º" \ƒGR|                  /SIGS!9GS) 5       Gr>GS¿GS* jGr?\º" \…GRx                  /SIGS!9GS+ 5       Gr@\º" \ƒGR‚                  \ƒGRx                  GRp                  /SI\7GR–                  SM9GS, 5       Gr<\º" \ƒGR„                  \…GR„                  /SIGS!9GS- 5       GrB\º" \ƒGR†                  \…GR†                  /5      GS¾SGS.GS. jj5       GrDG\" \ƒGRŠ                  GRÄ                  5      GrFG\" \ƒGRŽ                  GRÄ                  5      GrHG\" \ƒGR’                  GRÄ                  5      GrJG\" \ƒGR–                  GRÄ                  5      GrLG\" \ƒGRš                  GRÄ                  5      GrN\º" \ƒGRŠ                  5      GS‡GS/ j5       GrE\º" \ƒGRŽ                  5      GS‡GS0 j5       GrG\º" \ƒGR’                  5      GS1 5       GrI\º" \ƒGR–                  SS@9GSŽGS2 j5       GrK\º" \ƒGRš                  SS@9GSŽGS3 j5       GrM\º" \ƒGRž                  5      GS¾SGS.GS4 jj5       GrO\º" \ƒGR                   5      GS¾GS5 j5       GrQ\º" \ƒGR¤                  SS@9GS¾GS6 j5       GrS\º" \ƒGR¨                  SS@9GS¾GS7 j5       GrU\º" \…GR¬                  5      " G\$" GS85      5        \º" \ƒGR®                  5      " G\$" GS95      5      GrX\º" \ƒGR²                  5      " G\$" GS:5      5      GrZ\º" \ƒGR¶                  5      " G\$" GS;\ GRL                  GS<95      Gr\\º" \ƒGRº                  5      " G\$" GS=\ GRL                  GS<95      Gr^\Ê" \ƒGR¾                  SIGS>GS?9Gr_G\" \ƒGRì                  GRî                  S0SÖ9Gr`\º" \ƒGRì                  GRî                  SS@9SSS0GS@.GSA j5       Gra\º" \ƒGRì                  GRÄ                  SS@9GSÀGSB j5       GrvGS‡GSC jGrbGSÁGSD jGrcG\b" \ƒGRÈ                  5      GrdG\c" \ƒGRÊ                  5      GreG\b" \ƒGRÌ                  5      GrfG\b" \ƒGRÎ                  5      Grg\Ê" \ƒGRÐ                  5      GrhG\c" \ƒGRÒ                  5      GriG\c" \ƒGRÔ                  5      Grj\Ê" \ƒGRÖ                  5      Grk\Ê" \ƒGRØ                  SIGSE9Grl\º" \ƒGRÚ                  SIGS!9SGSF.GSG j5       GrmGSÂGSH jGrn\·" \ƒGRÞ                  GRf                  G\n5        G\c" \ƒGRà                  5        G\c" \ƒGRâ                  5        \Ê" \ƒGRä                  5      Grr\Ê" \ƒGRæ                  5      Grs\Ê" \ƒGRè                  5      Grt\Ê" \ƒGRê                  GSIGSJ9Gru\Ê" \ƒGRì                  5      Grv\Ê" \ƒGRî                  5      Grw\Ê" \ƒGRð                  5      GrxG\b" \ƒGRò                  5        G\b" \ƒGRô                  5      Grz\º" \ƒGRö                  \7GR–                  S@9" G\z5        G\b" \ƒGRø                  5        G\b" \ƒGRú                  5        G\b" \ƒGRü                  5        G\c" \ƒRø                  5        \Ê" \ƒGRþ                  SSI\ GRX                  GSK9Gr\Ê" \ƒGR                   SSI\ GRX                  GSK9Gr€\Ê" \ƒGR                  SSI\ GRX                  GSK9Gr�\Ê" \ƒGR                  SSI\ GRX                  GSK9Gr‚\Ê" \ƒGR                  5      Grƒ\Ê" \ƒGR                  5      Gr„\º" \ƒGR
                  5      " G\ƒ5        \º" \ƒGR                  5      " G\„5        \Ê" \ƒGR                  5      Gr‡\Ê" \ƒGRä                  5      GrrG\b" \ƒGR                  5      Grˆ\Ê" \ƒGR                  5        \Ê" \ƒGR                  GSLGSJ9GrŠ\Ê" \ƒGR¾                  5        \Ê" \ƒGR                  \ GRX                  GS<9  \º" \ƒGR                  5      " G\‡5        \Ê" \ƒGR                  \ GRX                  GS<9  \Ê" \ƒGR                  \ GRX                  GS<9  \Ê" \ƒGR                  \ GRX                  GS<9  \Ê" \ƒGR                   \ GRX                  GS<9Gr�\Ê" \ƒGR"                  \ GRX                  GS<9  \Ê" \ƒGR$                  \ GRX                  GS<9  G\b" \ƒGR&                  5        G\b" \ƒGR(                  5        G\b" \ƒGR*                  5        G\b" \ƒGR,                  5        G\b" \ƒGR.                  5        G\b" \ƒGR0                  5        G\b" \ƒGR2                  5        G\b" \ƒGR4                  5        G\b" \ƒGR6                  5        G\b" \ƒGR8                  5        G\b" \ƒGR:                  5        G\b" \ƒGR<                  5        G\b" \ƒGR>                  5        G\b" \ƒGR@                  5        G\b" \ƒGRB                  5        G\b" \ƒGRD                  5        SGSMGK£GJ¤Gr¤GJ¥Gr¥  GSN Gr¦G\¥ HR  Gr§G\¦" \ƒG\§5       H  u  Gr¨Gr©Grª\Ê" G\¨G\§G\©G\ªGSO9  M     G\¦" \…G\§5       H  u  Gr¨Gr©Grª\Ê" G\¨G\§G\©G\ªGSO9  M     MT     \Ï" \ƒGRV                  GRX                  G\_SIGSE9Gr­\Ï" \ƒGRV                  GRf                  G\_SIGSE9Gr®\Ï" \ƒGRV                  GRp                  G\_SIGSE9  \Ï" \ƒGR^                  GRX                  G\>5      Gr°\Ï" \ƒGR^                  GRp                  G\>5        \Ï" \ƒGR^                  GRf                  G\>5      Gr±\Ï" \ƒGRd                  GRX                  G\l5        \Ï" \ƒGRd                  GRf                  G\l5        \Ï" \ƒGRf                  GRÄ                  G\‡5        \Ï" \ƒGRh                  GRÄ                  G\r5        \Ï" \ƒGRj                  GRf                  G\05        \Ï" \ƒGRj                  GRX                  G\05        \Ï" \ƒGRj                  GRl                  G\05        \Ï" \ƒGRn                  GRX                  G\<5      Gr¸\Ï" \ƒGRn                  GRp                  G\<5        \Ï" \ƒGRn                  GRf                  G\<5      Gr¹\Ï" \ƒGRt                  G\j5        \Ï" \ƒGRv                  G\d5        \Ï" \ƒGRx                  GRX                  G\ƒ5        \Ï" \ƒGRx                  GRf                  G\ƒ5        \Ï" \ƒGRz                  GRX                  G\„5        \Ï" \ƒGRz                  GRf                  G\„5        \Ï" \ƒGR|                  GRX                  G\ƒ5        \Ï" \ƒGR|                  GRf                  G\ƒ5        \Ï" \ƒGR~                  GRX                  G\„5        \Ï" \ƒGR~                  GRf                  G\„5        \Ï" \ƒGR€                  G\ˆ5        \Ï" \ƒGR‚                  G\Š5        \Ï" \ƒGR„                  G\¾5      GrÃGSP GrÄG\Ä" \ƒGRŠ                  GRX                  \ƒGRV                  GRX                  G\­5        G\Ä" \ƒGRŠ                  GRf                  \ƒGRV                  GRf                  G\®5        G\Ä" \ƒGRŒ                  GRX                  \ƒGR^                  GRX                  G\°5        G\Ä" \ƒGRŒ                  GRf                  \ƒGR^                  GRf                  G\±5        G\Ä" \ƒGRŽ                  GRX                  \ƒGRn                  GRX                  G\¸5        G\Ä" \ƒGRŽ                  GRf                  \ƒGRn                  GRf                  G\¹5        G\Ä" \ƒGR�                  GRÄ                  \ƒGR„                  GRÄ                  G\Ã5        GSQ GrÉG\É" \ƒGR”                  G\_5        G\É" \ƒGR–                  G\s5        G\É" \ƒGR˜                  G\t5        G\É" \ƒGRš                  G\u5        G\É" \ƒGRœ                  G\v5        G\É" \ƒGRž                  G\w5        G\É" \ƒGR                   G\x5        G\É" \ƒGR¢                  G\>5        G\É" \ƒGR¤                  GRp                  G\<5        G\É" \ƒGR¤                  GR¦                  G\=5        G\É" \ƒGR¨                  G\5        G\É" \ƒGRª                  G\€5        G\É" \ƒGR¬                  G\�5        G\É" \ƒGR®                  G\‚5        G\É" \ƒGR°                  G\l5        G\É" \ƒGR²                  G\h5        G\É" \ƒGR´                  G\i5        \º" \ƒGR¶                  5      " G\s5        \º" \ƒGR¸                  5      " G\t5        \º" \ƒGRº                  5      " G\v5        \º" \ƒGR¼                  5      " G\w5        \º" \ƒGR¾                  5      " G\x5        G\É" \ƒGRÀ                  \ƒGR¶                  5        G\É" \ƒGRÂ                  \ƒGR¸                  5        G\É" \ƒGRÄ                  \ƒGRº                  5        G\É" \ƒGRÆ                  \ƒGR¼                  5        G\É" \ƒGRÈ                  \ƒGR¾                  5        \º" \ƒGRÊ                  5      GS‡GSR j5       Grå\º" \ƒGRÌ                  GRÎ                  5      GSS 5       Græ\º" \ƒGRÐ                  GRÎ                  5      GST 5       Grè\º" \ƒGRÒ                  5      GSU 5       Gré\>GRÔ                  " 5        H  u  GrëGrì\º" \?" G\ë5      5      " G\ì5        M      \º" \ GRÚ                  5      GSV 5       Grí\º" \ƒGR6                  5      GSW 5       Grî\º" \ Ræ                  GRÞ                  GRà                  5      GSX 5       Grñ\º" \ Ræ                  GRä                  GRæ                  5      GSY 5       Gró\º" \ Ræ                  GR                  GRè                  GRê                  5      GSZ 5       Grö\Ø" \ Ræ                  GRî                  GS[5      (       a;  \º" \ Ræ                  GRî                  GRr                  GRÄ                  5      GS\ 5       Grø\º" \ Ræ                  GR                  GRò                  5      SS©.GS] j5       GrùS GS^GKúGJûGrû  G\" G\û5        \º" \,5      GS_ 5       Grü\º" \ Ræ                  GRú                  GRü                  SS@9  GSÃGS` j5       Grþ\º" \ Ræ                  GRú                  GRþ                  SS@9GS‰GSa j5       Grÿ\º" \ Ræ                  GRú                  GR                   SS@9" \GR                  " G\ÿSIGSb95        \º" \ Ræ                  GRú                  GR                  SS@9GSÄGSc j5       GrGSÅGSd jGrS GSeGKGJGr  \º" G\SS@9GSf 5       Gr\º" \ GR                  GR                  SS@9SGSg.GSÆGSh jj5       Gr\º" \*SS@9    GSÇGSi j5       Gr	\º" \ Ræ                  GR
                  GR                  GRÄ                  5      GSj 5       Gr
\º" \ Ræ                  GR
                  GR                  GRÄ                  5      GSk 5       Gr\º" \ Ræ                  GRú                  GR                  SS@9GSl 5       GrSGSmGKGJGrGJGr  G\" 5         G\" 5         \º" \PGR                   SS@9GSn 5       GrGSo Gr\º" \PGR$                  SS@9GSp 5       GrSGSqKNGJGr  \M" G\5        SGSrKNGJGr  G\GR,                  " 5         G\GR.                  " 5         SGSsKNGJGr  G\GR2                  " 5         SGStKNGJGr  G\GR6                  " 5         \GR8                  GSÈGSu j5       Grg(É  é    )ÚannotationsN)Údefaultdict)ÚCallableÚ
CollectionÚIterableÚSequence)ÚAnyÚcastÚOptionalÚTYPE_CHECKINGÚ	TypeGuardÚTypeVarÚUnion)Ú	ParamSpec)Úpatch)Úcounters)Úassociative_scan_op)Útriton_kernel_wrapper_mutation)ÚFakeScriptObject)Úget_layout_constraint_tag)Úcanonicalize_dimÚcanonicalize_dimsÚcheckÚdtype_to_typeÚelementwise_dtypesÚELEMENTWISE_TYPE_PROMOTION_KINDÚget_computation_dtypeÚis_boolean_dtypeÚis_float_dtypeÚis_integer_dtypeÚNumber)Úmagic_methodsÚmethod_to_operator)Úfree_unbacked_symbolsÚhas_free_unbacked_symbolsÚresolve_unbacked_bindings)Ú
OrderedSet)ÚCeilDivÚFloorDivÚIdentityÚModÚModularIndexingé   )Úimport_submoduleé   )ÚconfigÚinductor_primsÚirÚtest_operators)ÚdecompositionsÚget_decompositions)ÚBaseViewÚ	DtypeViewÚ
ExpandViewÚIndexingConstantÚIRNodeÚ	is_tritonÚ
MutableBoxÚOnlineSoftmaxReductionÚops_wrapperÚPermuteViewÚ	PointwiseÚ	ReductionÚSqueezeViewÚ	TensorBoxÚvalidate_irÚView)ÚceildivÚdecode_deviceÚ
is_dynamicÚis_gpuÚis_pointwise_useÚis_viewÚ,needs_fallback_due_to_atomic_add_limitationsÚpad_listlikeÚ#register_op_dtype_propagation_rulesÚ#register_op_requires_libdevice_fp64Úsympy_productÚuse_scatter_fallback)ÚopsÚV)ÚReductionTypeÚ_TÚ_Pztorchvision::roi_alignzaten::index_addú8dict[Union[Callable[..., Any], str], Callable[..., Any]]Ú	loweringsz9dict[torch._ops.OpOverload, Optional[Callable[..., Any]]]Ú_maybe_layout_constraintsz2dict[torch._ops.OpOverload, torch._ops.OpOverload]Úinplaceable_foreach_opsc                 óÎ   • [         R                  R                  R                   H=  n U R                   H*  nUR                  S:X  a  UR
                  [        ;   a  M)      g   M?     g)NÚcall_functionTF)rS   ÚgraphÚcurrent_nodeÚusersÚopÚtargetÚforeach_ops)ÚnodeÚusers     ÚU/home/mande/repo/quber/.venv/lib/python3.13/site-packages/torch/_inductor/lowering.pyÚcur_node_has_non_foreach_usersrf   †   sI   € Ü—‘×$Ñ$×*Ô*ˆØ—J”JˆDØ—G‘G˜Ó.°D·K±KÄ;Õ4NÚó ñ +ð
 ó    c                óš  • [        [        5      nSn[        U 5       Hª  u  p4[        U[        5      (       d  SnU4n[        U6 (       + =(       d    [        R                  nS nU H4  n[        U[        5      (       d  M  UR                  R                  5       n  O   Uc   S5       eU(       a  Uu  nXU4   R                  X445        M¬     U$ )NFTz.foreach op should have at least one tensor arg)r   ÚlistÚ	enumerateÚ
isinstancer   rH   r0   Ú#combo_kernel_foreach_dynamic_shapesrC   ÚdataÚ
get_deviceÚappend)Ú	arg_pairsÚoutÚunpack_argsÚiÚargsÚuse_foreachÚdeviceÚts           re   Úgroup_foreach_argsrx   ’   sÈ   € ô ”dÓ
€CØ€KÜ˜YÖ'‰ˆÜ˜$¤×)Ñ)ØˆKØ�7ˆDä˜DÐ!Ô!×O¤V×%OÑ%Oð 	ð ˆÛˆAÜ˜!œY×'Ó'ØŸ™×*Ñ*Ó,�Ùñ ð Ñ!ÐSÐ#SÓSÐ!ÞØ‰GˆTØ�[Ð!Ñ"×)Ñ)¨1¨)Ö4ñ (ð  €Jrg   c                ó¶   • [        U [        R                  R                  5      (       d  g[	        U SS9=n(       a  [        U5      $ U [        ;   a	  [        U    $ g)zHGet layout constraints. Returns None if there are no layout constraints.NF)Úwith_default)rk   ÚtorchÚ_opsÚ
OpOverloadr   Útag_to_layout_constraintrY   )ÚfnÚmaybe_layout_tags     re   Úmaybe_layout_constraintsr�   ª   sR   € ä�bœ%Ÿ*™*×/Ñ/×0Ñ0àä4°RÀeÑLÐLÐÕLÜ'Ð(8Ó9Ð9à	Ô&Ó&Ü(¨Ñ,Ð,Ørg   c                ó„  • U [         R                  R                  R                  :X  a  [        $ U [         R                  R                  R
                  :X  a  [        $ U [         R                  R                  R                  :X  a  [        $ U [         R                  R                  R                  :X  a  g [        SU  35      e)NzUnknown layout constraint tag: )r{   Ú_CÚTagÚneeds_exact_stridesÚconstrain_to_fake_tensorsÚneeds_contiguous_stridesÚrequire_contiguous_stridesÚneeds_fixed_stride_orderÚconstrain_to_fx_stridesÚflexible_layoutÚAssertionError)Útags    re   r~   r~   ¸   s„   € ð Œe�h‰h�l‰l×.Ñ.Ó.Ü(Ð(Ø
Œe�h‰h�l‰l×3Ñ3Ó3Ü)Ð)Ø
Œe�h‰h�l‰l×3Ñ3Ó3Ü&Ð&Ø
Œe�h‰h�l‰l×*Ñ*Ó*ØÜ
Ð:¸3¸%Ð@Ó
AÐArg   c                ó.   • U (       d  [        SU 35      eg )Nzinductor does not support ©ÚNotImplementedError©ÚcondÚmsgs     re   Ú
assert_nyir”   Æ   s   € ÞÜ!Ð$>¸s¸eÐ"DÓEÐEð rg   c                ó¼  ^ • [        T [        [        [        [        45      (       a  T  Vs/ s H  n[        U5      PM     sn$ [        T [        R                  R                  5      (       a  [        R                  T 5        g [        T [        R                  R                  5      (       a-  [        R                  U 4S jT R                  5        5       5        g s  snf )Nc              3  ó<   >#   • U  H  n[        TU5      v •  M     g 7f©N)Úgetattr)Ú.0Úoverloadr   s     €re   Ú	<genexpr>Ú,add_needs_realized_inputs.<locals>.<genexpr>Ø   s   øé € ð %
Ú2@ hŒG�B˜×!Ð!².ùó   ƒ)rk   ri   ÚsetÚtupler'   Úadd_needs_realized_inputsr{   r|   r}   Úneeds_realized_inputsÚaddÚOpOverloadPacketÚupdateÚ	overloads)r   Úxs   ` re   r    r    Ë   s¤   ø€ ô �"”tœS¤%¬Ð4×5Ñ5á68Ó9²b°Ô)¨!Ö,±bÑ9Ð9Ü�"”e—j‘j×+Ñ+×,Ñ,Ü×!Ñ! "Ô%ð
 ô	 
�BœŸ
™
×3Ñ3×	4Ñ	4Ü×$Ñ$ô %
Ø24·,±,´.ó%
ô 	
ð ùò :s   «Cc                ó¼   • [        U [        R                  R                  5      (       a*  U R	                  5        H  nU[
        [        X5      '   M     g U[
        U '   g r—   )rk   r{   r|   r£   r¥   rY   r˜   )r   Ú
constraintrš   s      re   Úadd_layout_constraintr©   Þ   sH   € ô �"”e—j‘j×1Ñ1×2Ñ2ØŸ™žˆHØ?IÔ%¤g¨bÓ&;Ó<ò 'ð )3Ô! "Ò%rg   )r   r/   r-   é   é   é   é   é   é   é	   é
   é   é   c                óp   • [        U [        5      (       d  U $ U [        ;   d   SU  S35       e[        U    n U $ )Nzid z missing from DTYPE_ID_LOOKUP)rk   ÚintÚDTYPE_ID_LOOKUP©Údtypes    re   Údecode_dtyper¹     s@   € Ü�eœS×!Ñ!ØˆØ”OÓ#ÐO s¨5¨'Ð1NÐ%OÓOÐ#ä˜EÑ"€EØ€Lrg   c                ó  • [        U [        5      (       a9  [        U R                  5       5      =(       d    [	        U R                  5       5      $ [        U [
        R                  5      (       a  U R                  SL $ [        U [        5      $ ©NT)	rk   rC   r    Ú	get_dtyper   ÚsympyÚExprÚ
is_integerrµ   ©r¦   s    re   Úis_integer_typerÁ     s^   € Ü�!”Y×ÑÜ §¡£Ó.×QÔ2BÀ1Ç;Á;Ã=Ó2QÐQÜ	�A”u—z‘z×	"Ñ	"Ø�|‰|˜tÐ#Ð#ä˜!œSÓ!Ð!rg   c                ó~   • [        U [        5      (       a  [        U R                  5       5      $ [        U [        5      $ r—   )rk   rC   r   r¼   ÚboolrÀ   s    re   Úis_boolean_typerÄ   '  s-   € Ü�!”Y×ÑÜ §¡£Ó.Ð.ä˜!œTÓ"Ð"rg   F)Úreturn_compute_dtypec                ót   • SS jnU Vs/ s H
  oC" U5      PM     nn[        USU 06u  pgU(       a  U$ U$ s  snf )Nc                óÐ   • [        U [        [        R                  45      (       a  U $ [	        U R                  5       5      n[        R                  " S/U-  U R                  5       S9$ )Nr/   r·   )	rk   r!   r½   ÚBasicÚlenÚget_sizer{   Úzerosr¼   )ÚinpÚdims     re   Úconstruct_inputÚ+get_promoted_dtype.<locals>.construct_input3  sJ   € Ü�cœF¤E§K¡KÐ0×1Ñ1ØˆJä�c—l‘l“nÓ%ˆCä—;’; ˜s S™y°·±³Ñ@Ð@rg   Útype_promotion_kind)rÌ   r	   Úreturnr	   )r   )rÐ   rÅ   rt   rÎ   ÚargÚinpsÚcompute_dtypeÚresult_dtypes           re   Úget_promoted_dtyperÖ   .  sO   € ô
Añ -1Ó1ªD SˆO˜CÖ ©D€DÐ1Ü"4Ø	ð#Ø#6ñ#Ñ€Mö 1ˆ=ÐB°lÐBùò	 2s   Š5c                óR  • [        U [        [        45      (       d  U /n O[        U 5      n [        U 5       Hm  n[        U[        R                  R
                  5      (       d  M.  UR                  5        H+  n[        X5      nU[        ;  d  M  U R                  U5        M-     Mo     U $ r—   )
rk   ri   rŸ   r{   r|   r£   r¥   r˜   rX   ro   )Úaten_fnr   rš   Úother_fns       re   Úget_overloadsrÚ   B  s}   € Ü�g¤¤e˜}×-Ñ-Ø�)‰ä�w“-ˆä�7ŽmˆÜ�bœ%Ÿ*™*×5Ñ5×6Ó6ØŸL™LžN�Ü" 2Ó0�Ø¤9Õ,Ø—N‘N 8Ö,ó +ñ ð €Nrg   c                óè   • [        U [        R                  R                  5      (       a  XR                  ;   $ [        U [        R                  R
                  5      (       a  XR                  5       ;   $ g©NF)rk   r{   r|   r£   Ú_qualified_op_namer}   Úname)r`   Ú	namespaces     re   Úin_namespacerà   R  sS   € ô �"”e—j‘j×1Ñ1×2Ñ2Ø×1Ñ1Ñ1Ð1Ü	�BœŸ
™
×-Ñ-×	.Ñ	.ØŸG™G›IÑ%Ð%Ørg   c           	     óH  • [        U R                  [        R                  5      (       a  [	        U R                  5       5      (       a  U $ U R                  5        Vs/ s H,  n[        R                  R                  R                  U5      PM.     nnU R                  5       nUby  UR                  S:X  ai  XA:w  ad  [        U5      S:X  d  [        U5      S:X  aF  US   S:X  a=  [        [        R                  " [        R                  R!                  XS5      5      5      $ U $ s  snf )z:
Copy cpu scalar if doesn't not match with given `device`
Úcpur   r/   F)rk   rm   r2   ÚReinterpretViewr%   rÊ   rS   r]   ÚsizevarsÚsize_hint_or_throwrn   ÚtyperÉ   rC   Ú
StorageBoxÚ
DeviceCopyÚcreate)r¦   rv   ÚsÚsizeÚ
cur_devices        re   Úmaybe_copy_cpu_scalarrí   \  sÙ   € ô �a—f‘fœb×0Ñ0×1Ñ1Ô5NØ	�
‰
‹÷6ñ 6ð ˆØ<=¿J¹J¼LÓIºL°qŒA�G‰G×Ñ×/Ñ/°Ö2¹L€DÐIØ—‘“€JàÑØ�O‰O˜uÓ$ØÓ Ü�‹Y˜!‹^¤ D£	¨Q£°4¸±7¸a³<äœŸš¤r§}¡}×';Ñ';¸AÈ5Ó'QÓRÓSÐSØ€Hùò Js   Á3Dc           	     ó~  ^ ^^^• [        T 5       VVs/ s H  u  pV[        U[        5      (       d  M  UPM      nnnTR                  5        VV	s/ s H  u  p‰[        U	[        5      (       d  M  UPM      n
nn	U(       d  U
(       d  T T4$ U(       d  U(       Ga:  U(       a  [        R
                  mO{T  Vs/ s H=  n[        U[        [        R                  45      (       d  [        US5      (       d  M;  UPM?     nnUR                  S TR                  5        5       5        [        USU06mU(       a  T US      OTU
S      R                  5       mU H  n[        T U   T5      T U'   M     U
 H  n[        TU   T5      TU'   M     S	UU4S jjnT  Vs/ s H
  o½" U5      PM     snm TR                  5        VV	s0 s H  u  p‰X�" U	5      _M     sn	nmU(       GaF  [        [!        ["        R$                  " U 4S jU 5       U4S jU
 5       5      5      6 n[!        US   R'                  5       5      n[)        X~S[+        U5       5       H
  u  pVUT U'   M     [)        X®[+        U5      S 5       H
  u  p†UTU'   M     [-        [+        T 5      5       HD  n[        T U   [.        R0                  5      (       d  M'  [2        R4                  " T U   U5      T U'   MF     T HD  n[        TU   [.        R0                  5      (       d  M'  [2        R4                  " TU   U5      TU'   MF     T T4$ s  snnf s  sn	nf s  snf s  snf s  sn	nf )
z:
Transforms arguments for broadcasting and type promotion
r¸   c              3  óL   #   • U  H  n[        US 5      (       d  M  Uv •  M     g7f)r¸   N)Úhasattr)r™   Úas     re   r›   Ú!transform_args.<locals>.<genexpr>Œ  s   é € Ð!Tª_¨ÄÈÈ7×@S§!¡!ª_ùs   ‚$›	$rÐ   r   c                óÈ   >• [        U [        5      (       a  [        U T5      $ [        U [        R                  5      (       a   [        R                  " U R
                  TTS9$ U $ )N©Úvaluer¸   rv   )rk   rC   Úto_dtyper2   ÚConstantrõ   )rÒ   rv   r¸   s    €€re   ÚpromoteÚtransform_args.<locals>.promote�  sJ   ø€ Ü˜#œy×)Ñ)Ü  UÓ+Ð+Ü˜C¤§¡×-Ñ-Ü—{’{¨¯©¸%ÈÑOÐOà�
rg   c              3  ó.   >#   • U  H
  nTU   v •  M     g 7fr—   © )r™   rs   rt   s     €re   r›   rò   ¬  s   øé € Ð3¢l �T˜!–W¢lùó   ƒc              3  ó.   >#   • U  H
  nTU   v •  M     g 7fr—   rû   )r™   ÚkÚkwargss     €re   r›   rò   ­  s   øé € Ð7ª 1�V˜A–Yªùrü   N)rÒ   r	   rÑ   r	   )rj   rk   rC   Úitemsr{   rÃ   r!   r½   rÈ   rð   ÚextendÚvaluesrÖ   rn   rí   Úbroadcast_tensorsri   Ú	itertoolsÚchainrÊ   ÚziprÉ   Úranger2   r÷   r8   ré   )rt   rÿ   Ú	broadcastrÐ   Úconvert_input_to_boolrs   r¦   Úargs_indicesrþ   ÚvÚkwargs_indicesrñ   Úpromoting_argsrø   Úbroadcastedrë   rv   r¸   s   ``              @@re   Útransform_argsr  p  sÌ  û€ ô #,¨D¤/ÔN¢/™$˜!´ZÀÄ9×5M—A¡/€LÑNØ$*§L¡L¤NÔO¢N™D˜A´jÀÄI×6N—a¡N€NÑOæ¦Ø�Vˆ|Ðæ×3Þ Ü—J‘J‰Eñ
 óâ�AÜ˜a¤&¬%¯+©+Ð!6×7Ñ7¼7À1Àg×;N÷ Ùð ð ð ×!Ñ!Ñ!T¨V¯]©]¬_Ó!TÔTÜ&Øðà$7ñˆEö &2ˆD�˜a‘Ò!°v¸nÈQÑ>OÑ7Pß
‰*‹,ð 	ó ˆAÜ+¨D°©G°VÓ<ˆD�‹Gñ ó  ˆAÜ-¨f°Q©i¸Ó@ˆF�1‹Iñ  ÷	ð 	ñ %)Ó)¢D˜q�˜–
¡DÑ)ˆØ,2¯L©L¬NÔ;ªN¡D A�!�W˜Q“Z’-©NÒ;ˆçÜ'ÜÜ—’Ü3¡lÓ3Ü7©Ó7óóð
ˆô �K ‘N×+Ñ+Ó-Ó.ˆä˜Ð2E´C¸Ó4EÐ&FÖG‰DˆAØˆD�‹Gñ Hä˜´C¸Ó4EÐ4GÐ(HÖI‰DˆAØˆF�1‹Iñ Jô ”s˜4“yÖ!ˆAÜ˜$˜q™'¤2§;¡;×/Ó/Ü$×+Ò+¨D°©G°TÓ:��Q“ñ "ó ˆAÜ˜& ™)¤R§[¡[×1Ó1Ü&×-Ò-¨f°Q©i¸Ó>��q“	ñ ð �ˆ<ÐùóI OùÛOùòùò> *ùÛ;s.   “L#²L#ÁL)Á-L)Â3:L/Ã1L/ÆL4Æ9L9c                óÚ   ^• [         R                  " T5      SU4S jj5       n[        U 5      n[        R	                  U5        [
        R	                  [        R                  X25      5        U$ )a�  
Add a foreach lowering to lowerings dict.

Arguments:
    aten_fn: torch.ops.aten.* fn we are lowering
    decomp_fn: alternate implementation on our IR
    broadcast: True to apply broadcasting to tensor inputs
    type_promotion_kind: kind of type promotion applied to tensor inputs, `None` means no type promotion
    convert_input_to_bool: some logical ops require inputs are converted to bool
c                 ó.   >• T" U 0 UD6n[        U5        U$ r—   )rD   )rt   rÿ   rq   Ú	decomp_fns      €re   ÚwrappedÚ+_register_foreach_lowering.<locals>.wrappedÐ  s   ø€ á˜Ð( Ñ(ˆÜ�CÔØˆ
rg   )rt   r	   rÿ   r	   rÑ   r	   )Ú	functoolsÚwrapsrÚ   rb   r¤   rX   ÚdictÚfromkeys)rØ   r  r  Úaten_fnss    `  re   Ú_register_foreach_loweringr  Â  sV   ø€ ô ‡_‚_�YÓöó  ðô
 ˜WÓ%€HÜ×Ñ�xÔ Ü×Ñ”T—]‘] 8Ó5Ô6Ø€Nrg   c                ó¶   ^ ^^^^• [         R                  " T5      U UUUU4S j5       n[        T 5      m UR                  [        R                  T U5      5        U$ )a†  
Add a lowering to lowerings dict

Arguments:
    aten_fn: torch.ops.aten.* fn we are lowering
    decomp_fn: alternate implementation on our IR
    broadcast: True to apply broadcasting to tensor inputs
    type_promotion_kind: kind of type promotion applied to tensor inputs, `None` means no type promotion
    convert_input_to_bool: some logical ops require inputs are converted to bool
c                 óv  >• [        U 5      n [        U5      nSn[        U 5      S:X  a.  [        U S   [         [        45      (       a  Sn[        U S   5      n [        S T 5       5      (       d  [        S U 5       5      (       a   S5       e[        XTTT5      u  pU(       a  U /n T" U 0 UD6n[        U5        U$ )NFr/   r   Tc              3  óX   #   • U  H   o[         ;   =(       d    [        US 5      v •  M"     g7f)Ú_c10d_functionalN)Ú	fallbacksrà   )r™   r   s     re   r›   Ú6_register_lowering.<locals>.wrapped.<locals>.<genexpr>ù  s&   é € ð 
ÚPWÈ"”9‰_×D¤¨RÐ1CÓ DÔDÒPWùs   ‚(*c              3  ó*   #   • U  H	  oS :H  v •  M     g7f)rq   Nrû   ©r™   r¦   s     re   r›   r   ý  s   é € Ð6ªv¨! ž:ªvùó   ‚zout= ops aren't yet supported)	ri   r  rÉ   rk   rŸ   ÚallÚanyr  rD   )	rt   rÿ   Úunpackedrq   rØ   r  r	  r  rÐ   s	       €€€€€re   r  Ú#_register_lowering.<locals>.wrappedï  sÃ   ø€ ä˜t›*ˆÜ!% f£ˆØˆäˆt‹9˜‹>œj¨¨a©´4¼°-×@Ñ@ØˆHÜ˜˜Q™“=ˆDäñ 
ÙPWó
÷ 
ñ 
ô Ñ6©vÓ6×6Ñ6ÐWÐ8WÓWÐ6ä%Ø˜)Ð%8Ð:Oó
‰ˆö Ø�6ˆDá˜Ð( Ñ(ˆÜ�CÔàˆ
rg   )r  r  rÚ   r¤   r  r  )rØ   r  r  rÐ   r	  Úlowering_dictr  s   `````  re   Ú_register_loweringr)  Ü  sO   ü€ ô& ‡_‚_�YÓ÷ð ó  ðô6 ˜GÓ$€Gà×ÑœŸ™ w°Ó8Ô9Ø€Nrg   c           	     ó<   • [         R                  " [        U UUUUS9$ )z#
Shim to support decorator syntax.
)r  rÐ   r	  r(  )r  Úpartialr)  )rØ   r  rÐ   r	  r(  s        re   Úregister_loweringr,    s)   € ô ×ÒÜØØØ/Ø3Ø#ñð rg   c                ó>  • [        U5      nU (       a  X:X  a  U$ / n[        R                  " [        U 5      [        U5      [        R
                  R                  S9 GH*  u  p4[        R                  R                  R                  U5      (       a  UR                  U5        MG  [        R                  R                  R                  U5      (       a  UR                  U5        Mˆ  [        R                  R                  R                  X45        [        [        R                  " U5      R                  5      [        [        R                  " U5      R                  5      :  a  UR                  U5        GM  UR                  U5        GM-     [        [        U5      5      $ )z�
Broadcasting logic based on symbolic shapes.

We give the shapes 0 and 1 concrete values, while all other shapes
are symbolic sympy formulas.
)Ú	fillvalue)rŸ   r  Úzip_longestÚreversedr½   ÚSÚOnerS   r]   rä   Úis_size_one_or_falsero   Úcheck_equalsrÉ   ÚexpandÚfree_symbols)rñ   ÚbÚoutputr¦   Úys        re   Úbroadcast_symbolic_shapesr:  '  s  € ô 	ˆa‹€AÞ�“Øˆà€FÜ×%Ò%¤h¨q£k´8¸A³;Ì%Ï'É'Ï+É+ÕV‰ˆÜ�7‰7×Ñ×0Ñ0°×3Ñ3Ø�M‰M˜!ÖÜ�W‰W×Ñ×2Ñ2°1×5Ñ5Ø�M‰M˜!Öä�G‰G×Ñ×)Ñ)¨!Ô/Ü”5—<’< “?×/Ñ/Ó0´3´u·|²|ÀA³×7SÑ7SÓ3TÓTØ—‘˜a× à—‘˜a× ñ Wô ”˜&Ó!Ó"Ð"rg   c                ó”  ^• Ub
  Ub   S5       eUc  Uc  [         R                  n[        S U  5       5      (       d  U $ [        S U  5       5      (       a2  U=(       d    [	        U SU06mU4S jnU  Vs/ s H
  oC" U5      PM     sn$ [        S U  5       5      n/ nU  GH!  n[        U[        [        45      (       an  UR                  [        R                  " [        R                  " XER                  5       UR                  5       S9[!        UR#                  5       5      5      5        M�  [        U[$        R&                  5      (       ad  UR                  [        R                  " [)        XER                  5       UR                  5       S9[!        UR#                  5       5      5      5        GM  UR                  U5        GM$     U$ s  snf )	NzEonly one of override_return_dtype or type_promotion_kind may be givenc              3  ól   #   • U  H*  n[        U[        R                  [        [        45      v •  M,     g 7fr—   )rk   r½   rÈ   rµ   Úfloatr"  s     re   r›   Ú$promote_constants.<locals>.<genexpr>I  s%   é € ÐHÂ¸AŒz˜!œeŸk™k¬3´Ð6×7Ð7Âùó   ‚24c              3  ól   #   • U  H*  n[        U[        [        [        R                  45      v •  M,     g 7fr—   )rk   rµ   r=  r½   rÈ   r"  s     re   r›   r>  K  s%   é € Ð
DºV¸Œ:�aœ#œu¤e§k¡kÐ2×3Ð3ºVùr?  rÐ   c                ó¾   >• [        U [        R                  5      (       a  [        R                  " U T[        S 5      S9$ [        R                  " U T[        S 5      S9$ )N©Úindexr¸   rv   rô   )rk   r½   rÈ   r2   r9   rG   r÷   ©r¦   r¸   s    €re   Ú
const_funcÚ%promote_constants.<locals>.const_funcR  sM   ø€ Ü˜!œUŸ[™[×)Ñ)Ü×*Ò*Ø 5´¸tÓ1Dñð ô —{’{¨°%ÄÈdÓ@SÑTÐTrg   c              3  ó~   #   • U  H3  n[        U[        [        [        R                  45      (       d  M/  Uv •  M5     g 7fr—   )rk   rC   r8   r2   r÷   r"  s     re   r›   r>  [  s&   é € ÐWš�A¤:¨a´)¼ZÌÏÉÐ1U×#V�a‰ašùs   ‚.=´	=rô   rB  )r   ÚDEFAULTr%  r$  rÖ   Únextrk   rµ   r=  ro   r8   ré   r2   r÷   r¼   Úget_device_or_errorri   rÊ   r½   rÈ   r9   )ÚinputsÚoverride_return_dtyperÐ   rE  r¦   Úexrq   r¸   s          @re   Úpromote_constantsrN  A  sŒ  ø€ Ø Ñ(Ð,?Ñ,Gð ØOóÐGð Ñ$Ð)<Ñ)DÜ=×EÑEÐäÑHÁÓH×HÑHØˆÜ
Ñ
D¹VÓ
D×DÑDØ%÷ 
Ô);Øð*
ð !4ñ*
ˆõ	Uñ (.Ó.¢v !�
˜1–¡vÑ.Ð.Ü	ÑW™ÓWÓ	W€BØ
€CÜˆÜ�aœ#œu˜×&Ñ&Ø�J‰JÜ×!Ò!Ü—K’KØ§|¡|£~¸b×>TÑ>TÓ>Vñô ˜Ÿ™›Ó'ó	öô ˜œ5Ÿ;™;×'Ñ'Ø�J‰JÜ×!Ò!Ü$Ø§|¡|£~¸b×>TÑ>TÓ>Vñô ˜Ÿ™›Ó'ó	÷ð �J‰J�q�Mñ) ð, €Jùò3 /s   Á3Gc                ó4   ^ ^^^^^• S S.SUU UUUU4S jjjnU$ )N©Úalphac           	     ó.  >^^^^	^
^^• Tb%  [        S T 5       5      (       a  T(       a   eT" T6 $ [        TT5      mT(       a'  U b#  U S:w  a  [        T5      m[        TS   U 5      TS'   OU b   eT Vs/ s H  o"R	                  5       PM     snm
TS   R                  5       mT=(       d    TS   R                  5       mTSS   Hh  n[        U[        R                  5      (       a  M$  [        T5      [        UR                  5       5      :X  a  ML   ST ST SUR                  5        35       e   [        R                  [        R                  4m[        R                  S L=(       a…    [!        [        R                  SS 5      S L=(       aa    [        R                  R"                  R$                  S L=(       a4    [        R                  R"                  R$                  R'                  SS	5      m	T	=(       a    TT;   mUUU	UUU
UUU4	S
 jnT(       d_  S nT H=  n[)        UR+                  5       R,                  5      (       d  M-  UR+                  5       n  O   U(       d  TS   R+                  5       nT=(       d    Wn[.        R0                  " UTUTS9$ s  snf )Nc              3  óf   #   • U  H'  n[        U[        5      =(       a    [        U5      v •  M)     g 7fr—   ©rk   r:   r;   )r™   rÌ   s     re   r›   Ú0make_pointwise.<locals>.inner.<locals>.<genexpr>  s&   é € ð /
ÚBH¸3ŒJ�sœFÓ#×6¬	°#«Ô6Â&ùó   ‚/1r/   éÿÿÿÿr   zndim mismatch Ú r^   Úlow_precision_pointwise_barrierFc                ó&  >	• [        U 5      [        T5      :X  d   SU  ST 35       eT[        R                  :X  a  Tb  T" T Vs/ s H
  o" U 5      PM     sn6 $ / n[        T5       Hi  u  p1U" U 5      nTU   R	                  5       nT	(       a1  UT;   a+  [
        R                  " XESS9n[
        R                  " Xe5      nUR                  U5        Mk     T
" U6 nT(       a-  [
        R                  " UTSS9n[
        R                  " UT5      $ U$ s  snf )Nzwrong ndim rX  F)Úuse_compute_types)rÉ   r{   rÃ   rj   r¼   rR   rö   ro   )rC  ÚloadÚinputs_loadedÚ	inp_indexrq   Ú	inp_dtypeÚdowncastr¸   Úemulate_output_castÚemulate_precision_castsr   rK  ÚloadersÚ	low_pr_fpÚoverride_fn_when_input_boolÚrangess          €€€€€€€€€re   Úinner_fnÚ/make_pointwise.<locals>.inner.<locals>.inner_fn£  s  ø€ Ü�u“:¤ V£Ó,ÐL°¸E¸7À!ÀFÀ8Ð.LÓLÐ,ØœŸ
™
Ó"Ð'BÑ'NÙ2ÉWÓ4UÊWÀT°T¸%¶[ÉWÑ4UÐVÐVà "�Ü'0°Ö'9‘O�IÙ˜u›+�CØ & yÑ 1× ;Ñ ;Ó =�IÞ.°9À	Ó3IÜ#&§<¢<°ÐRWÑ#X˜Ü!Ÿlšl¨8Ó?˜Ø!×(Ñ(¨Ö-ñ (:ñ ˜-Ð(�Þ&ô  #Ÿ|š|¨C°È%ÑP�HÜŸ<š<¨°%Ó8Ð8Ø�
ùò# 5Vs   ÁD©rv   r¸   rg  rf  )r%  rN  ri   ÚmulÚmake_loaderrÊ   r¼   rk   r2   ÚBaseConstantrÉ   r{   Úbfloat16Úfloat16rS   r]   r˜   r^   ÚmetaÚgetrI   rn   ræ   r@   ré   )rQ  rK  r¦   Úotherrg  rv   rs   r¸   ra  rb  rc  rd  rf  Úallow_alphar   Úoverride_devicere  rL  Útriton_fallbacks    `     @@@@@@€€€€€€re   ÚinnerÚmake_pointwise.<locals>.inner~  sN  ÿ€ ØÑ&¬3ñ /
ÙBHó/
÷ ,
ñ ,
ö #Ð"�?Ù" FÐ+Ð+ä" 6Ð+@ÓAˆÞØÑ  U¨a£Zä˜f›�ä  ¨¡¨UÓ3��r‘
øà‘=Ð �=Ù,2Ó3ªF q—=‘=–?©FÑ3ˆØ˜‘×#Ñ#Ó%ˆØ%×>¨°©×)<Ñ)<Ó)>ˆà˜A˜B“ZˆEÜ˜e¤R§_¡_×5Ó5¼¸V»ÌØ—‘Ó óIõ :ð Aà ˜t 1 V H¨A¨e¯n©nÓ.>Ð-?Ð@óAð ñ  ô —^‘^¤U§]¡]Ð3ˆ	ä�G‰G˜4Ð÷ XÜœŸ™ °Ó6¸dÐB÷Xä—‘×$Ñ$×)Ñ)°Ð5÷Xô —‘×$Ñ$×)Ñ)×-Ñ-Ð.OÐQVÓWð	 	 ð 6×L¸%À9Ñ:LÐ÷	õ 	ö, ØˆFÛ�Ü˜!Ÿ,™,›.×-Ñ-×.Ó.ØŸ\™\›^�FÙñ ö Ø ™×-Ñ-Ó/�ð !×* Fˆä×ÒØØØØñ	
ð 	
ùòo 4s   Á4J)rK  rC   rû   )r   rL  rs  re  rr  rt  ru  s   `````` re   Úmake_pointwiserw  v  s   ý€ ð )-÷ L
÷ L
ð\ €Lrg   c                ó$   ^ ^• SS.SUU 4S jjjnU$ )Nr/   rP  c                ó`  >^ • [        [        R                  R                  R                  5      S:H  =(       d<    [        R                  R                  R
                  [        ;   =(       d
    [        5       nS nU H"  n[        U[        [        45      (       d  M   Un  O   Uc   S5       e/ nU HO  n[        U[        [        45      (       d   UR                  U/[        U5      -  5        M>  UR                  U5        MQ     [        [        U6 5      nUU U	4S jn[        U[        U5      Xr5      $ )Nr   z1at least one input must be a list to a foreach opc                ó,   >• T(       a  T" U ST06$ T" U 6 $ )NrQ  rû   )rt   rr  rQ  Úpw_fns    €€€re   Úapply_fnÚ7make_foreach_pointwise.<locals>.inner.<locals>.apply_fnë  s    ø€ ÞÙ˜dÐ0¨%Ñ0Ð0á˜d�|Ð#rg   )rÉ   rS   r]   r^   r_   ra   Úinplace_foreach_opsrf   rk   ri   rŸ   ro   rx   r  Úforeach_group_loop)
rQ  rK  Úrealize_outputsÚa_list_inputÚinputÚbroadcast_inputsÚgroupsr|  rr  r{  s
   `       €€re   ru  Ú%make_foreach_pointwise.<locals>.innerÐ  s
  ù€ ä”—‘×$Ñ$×*Ñ*Ó+¨qÑ0÷ 0Ü�w‰w×#Ñ#×*Ñ*Ô.AÑA÷0ä-Ó/ð 	ð ˆÛˆEÜ˜%¤$¬ ×/Ó/Ø$�Ùñ ð Ñ'ð 	
Ø?ó	
Ð'ð
 ÐÛˆEÜ˜e¤d¬E ]×3Ñ3Ø ×'Ñ'¨¨´#°lÓ2CÑ(CÖDð !×'Ñ'¨Ö.ñ ô $¤CÐ)9Ð$:Ó;ˆ÷	$ô " &¬#¨lÓ*;¸XÓWÐWrg   )rK  zlist[list[TensorBox]]rû   )r{  rr  ru  s   `` re   Úmake_foreach_pointwiser†  Ï  s   ù€ Ø45÷ !Xó !XðF €Lrg   c                óê  • S/U-  nU R                  5        H¿  u  u  pVn/ nU H‡  u  pšU" U
5      nX´U	'   [        R                  R                  U[        R
                  5      (       d  MF  U(       d  MO  U(       d  MX  UR                  5         UR                  UR                  5       5        M‰     U(       d  M   [        R                  R                  U5        MÁ     [        S U 5       5      (       d   eU$ )aE  
Common loop over grouped foreach arguments.

Args:
    groups: Result of group_foreach_args - dict mapping (device, use_foreach) to groups
    num_outputs: Number of outputs to produce
    apply_fn: Function to apply to each set of args, returns the output
    realize_outputs: Whether to realize outputs for foreach fusion
Nc              3  ó(   #   • U  H  oS Lv •  M
     g 7fr—   rû   r"  s     re   r›   Ú%foreach_group_loop.<locals>.<genexpr>  ó   é € Ð.¢g ˜�}¢gùó   ‚)r   rS   r]   Úhas_featureÚBackendFeatureÚFOREACHÚrealizero   Úget_operation_nameÚregister_operation_listr$  )r„  Únum_outputsr|  r€  Úoutputsrv   ru   ÚgroupÚoperation_listÚ
output_indrt   r8  s               re   r  r  ö  sÌ   € ð ˆf�{Ñ"€GØ(.¯©®Ñ$Ñˆ˜uØ$&ˆÛ %ÑˆJÙ˜d“^ˆFØ"(�JÑô —‘×#Ñ# F¬N×,BÑ,B×CÓCß�Kß#�Oà—‘Ô Ø×%Ñ% f×&?Ñ&?Ó&AÖBñ !&÷ ˆ>Ü�G‰G×+Ñ+¨NÖ;ñ )7ô" Ñ.¡gÓ.×.Ñ.Ð.Ð.Ø€Nrg   c                óˆ   ^^• U R                  5       mTT:X  a  U(       a  [        U 5      $ U $ UU4S jn[        UTS9" U 5      $ )Nc                ó0   >• [         R                  " U TTS9$ )N)Ú	src_dtype)rR   rö   )r¦   r¸   r™  s    €€re   Ú	_to_dtypeÚto_dtype.<locals>._to_dtype  s   ø€ Ü�|Š|˜A˜u°	Ñ:Ð:rg   ©rL  )r¼   Úclonerw  )r¦   r¸   Úcopyrš  r™  s    `  @re   rö   rö     s@   ù€ Ø—‘“€IØ�EÓÞŒu�Q‹xÐ& QÐ&ö;ô ˜)¸5ÒAÀ!ÓDÐDrg   ©rÐ   c                óî  • SSK Jn  UnU R                  nU" U[        R                  S9n[        R
                  " U5         UR                  " U6   SSS5        UR                  nU(       d   e[        U5      nS/[        U5      -  n	UR                  5        H¯  u  u  p«n/ nU Hw  u  nnXùU'   [        R                  R                  U
[        R                  5      (       d  M?  U(       d  MH  UR                  5         UR                  UR!                  5       5        My     U(       d  M�  [        R                  R#                  U5        M±     [%        S U	 5       5      (       d   eU	$ ! , (       d  f       GN= f)a)  
This lowers an invocation of foreach_map
The way this works is that an arbitrary N-arg func is provided by the user, looped over by the
polyfill with the same semantics as a foreach op (a loop applying an n-ary function to n args)
and then traced into a subgraph by dynamo.
This code allows us to inline the subgraph into the main graph lowering using the PontwiseSubgraphLowering.
The graph outputs represent the vertically fused sequence of ops, and then register_operation_list
below registers the buffers as horizontally fuseable in the scheduler.
r/   )ÚPointwiseSubgraphLowering)Úroot_graph_loweringNc              3  ó(   #   • U  H  oS Lv •  M
     g 7fr—   rû   r"  s     re   r›   Ú_foreach_map.<locals>.<genexpr>J  rŠ  r‹  )Úsubgraph_loweringr¡  Úgraph_modulerS   r]   Úset_graph_handlerÚrunÚgraph_outputsrx   rÉ   r   rŒ  r�  rŽ  r�  ro   r�  r‘  r$  )Úsubgraphrt   rÿ   r¡  rK  ÚgmÚpw_subgraphÚsub_outputsr„  r“  rv   ru   r”  r•  r–  r8  s                   re   Ú_foreach_mapr®  !  s2  € õ =à€Fà	×	Ñ	€BÙ+¨BÄAÇGÁGÑL€KÜ	
×	Ò	˜[Õ	)Ø�Š˜Ñ ÷ 
*ð ×+Ñ+€KæÐˆ;Ü Ó,€Fàˆf”s˜;Ó'Ñ'€GØ(.¯©®Ñ$Ñˆ˜uØ$&ˆó ñ
ØØà"(�JÑä�w‰w×"Ñ" 6¬>×+AÑ+A×BÓBÇ{À{Ø—‘Ô Ø×%Ñ% f×&?Ñ&?Ó&AÖBñ ÷ ˆ>Ü�G‰G×+Ñ+¨NÖ;ñ )7ô Ñ.¡gÓ.×.Ñ.Ð.Ð.Ø€N÷3 
*Ö	)ús   Á E%Å%
E4c                óD  • UR                   (       d  U R                  5       R                   (       ag  U R                  5       (       a*  [        XS9n[        R
                  R                  X 5        U$ [        [        R                  R                  SS9" X5      $ [        XSS9$ )Nr·   F©Úadd_to_fallback_setT©rž  )Ú
is_complexr¼   rÊ   Ú
empty_liker2   ÚInplaceCopyFallbackré   Úfallback_handlerÚprimsÚconvert_element_typeÚdefaultrö   )r¦   r¸   Údsts      re   Ú_convert_element_typer»  N  s~   € à××˜1Ÿ;™;›=×3×3Ø�:‰:�<‰<ô ˜QÑ,ˆCÜ×"Ñ"×)Ñ)¨#Ô1ØˆJä#Ü×*Ñ*×2Ñ2Èòàóð ô �A 4Ñ(Ð(rg   r²  c               ó  • U R                  5       nX1:X  a  U(       a  [        U 5      $ U $ S nU" U5      nU" U5      nXV:w  a)  [        [        R                  R
                  5      " X5      $ [        [        R                  " X5      5      $ )Nc                ó¤   • U R                   (       a   [        R                  " U 5      R                  $ [        R                  " U 5      R                  $ r—   )Úis_floating_pointr{   ÚfinfoÚbitsÚiinfor·   s    re   Ú_get_primitive_bitwidthÚ1to_dtype_bitcast.<locals>._get_primitive_bitwidthc  s5   € Ø×"×"Ü—;’;˜uÓ%×*Ñ*Ð*ä—;’;˜uÓ%×*Ñ*Ð*rg   )	r¼   r�  r¶  ÚatenÚviewr¸   rC   r7   ré   )r¦   r¸   rž  Úx_dtyperÂ  Úsrc_bitsÚdst_bitss          re   Úto_dtype_bitcastrÉ  ^  ss   € Ø�k‰k‹m€GØÓÞŒu�Q‹xÐ& QÐ&ò+ñ ' wÓ/€HÙ& uÓ-€HØÓä¤§	¡	§¡Ô0°Ó:Ð:äœ×)Ò)¨!Ó3Ó4Ð4rg   c                ó8  • UR                   (       d  U R                  5       R                   (       a`  [        R                  " [        R
                  R                  [        R                  R                  R                  R                  X5      5      $ [        X5      $ r—   )r³  r¼   rC   ré   r2   ÚComplexViewr{   rR   rÄ  rÅ  r¸   rÉ  rD  s     re   Ú_view_dtyperÌ  r  sa   € à××˜1Ÿ;™;›=×3×3Ü×ÒÜ�N‰N×!Ñ!¤%§)¡)§.¡.×"5Ñ"5×";Ñ";¸QÓFó
ð 	
ô ˜AÓ%Ð%rg   ©rž  Únon_blockingc               óÐ   • [        U5      nU R                  5       U:X  a  U(       a  [        U 5      $ U $ [        R                  " [
        R                  R	                  XU5      5      $ r—   )rG   rn   r�  rC   ré   r2   rè   )r¦   rv   rž  rÎ  s       re   Ú	to_devicerÐ  {  sM   € Ü˜6Ó"€FØ‡|�|ƒ~˜ÓÞŒu�Q‹xÐ& QÐ&Ü×ÒœBŸM™M×0Ñ0°¸LÓIÓJÐJrg   c                ó   • [        XSUS9$ )NTrÍ  )rÐ  )r¦   rv   rÎ  s      re   Ú_device_putrÒ  ‚  s   € ä�Q T¸ÑEÐErg   Tc	                ó   • U=(       d    U R                   n[        U5      n	[        XU5        Ub  [        U5      n[        U	UUUUS9n	[	        U UUUS9" U	5      n	[        [        U5      (       a  [	        [        [        U5      SUS9" U	5        U	$ )z3A pointwise function that maps ops.{name} to inputsN)rL  re  rr  rt  )r  rÐ   r	  )rÐ   r	  )Ú__name__r>   rN   rw  r,  rð   r·  r˜   )
rØ   rÞ   r  rÐ   r	  rL  re  rr  rt  r   s
             re   Úregister_pointwiserÕ  ‡  s³   € ð ×#�7×#Ñ#€DÜ	�TÓ	€Bä'ØÐ#8ôð #Ñ.Ü&1Ð2MÓ&NÐ#ä	Ø
Ø3Ø$?ØØ'ñ
€Bô 
ØØØ/Ø3ò	
ð
 	ó

€Bô Œu�d×ÑÜÜ”E˜4Ó Ø $Ø"7ò	
ð ô		ð
 €Irg   Úldexp)rÐ   rL  )r  rÐ   c                ó„  ^^	• [        S5      mU R                  5       nUR                  5       nUR                  nUR                  (       + =(       a    U[        R                  :g  nU(       a  U(       a  U4S jn[        U5      " X5      $ [        U 5      (       a  [        R                  OUm	U	4S jn[        UT	S9" X5      $ )NrÖ  c                ó   >• T" X5      $ r—   rû   )r¦   ÚnÚldexp_fns     €re   Úcompute_ldexpÚ%ldexp_lowering.<locals>.compute_ldexpÇ  s   ø€ Ù˜A“>Ð!rg   c                ó¸   >• [         R                  " UT5      n[         R                  " ST5      n[         R                  " X25      n[         R                  " X5      $ )Ng       @)rR   rö   ÚconstantÚpowrj  )r¦   rÙ  Ú
n_out_typeÚtwoÚ
pow_resultÚ	out_dtypes        €re   Úcompute_fallbackÚ(ldexp_lowering.<locals>.compute_fallbackÏ  s@   ø€ ÜŸš a¨Ó3ˆJÜ—,’,˜s IÓ.ˆCÜŸš Ó1ˆJÜ—7’7˜1Ó)Ð)rg   rœ  )r>   r¼   r¾  r{   rÃ   rw  rÁ   Úfloat32)
r¦   rÙ  rÆ  Ún_dtypeÚ
x_is_floatÚn_is_intrÛ  rä  rÚ  rã  s
           @@re   Úldexp_loweringrê  »  s¡   ù€ ä˜7Ó#€Hà�k‰k‹m€GØ�k‰k‹m€Gà×*Ñ*€JØ×,Ñ,Ô,×F°¼E¿J¹JÑ1F€Hæ–hõ	"ô ˜mÔ,¨QÓ2Ð2ô &5°Q×%7Ñ%7”E—M’M¸Wˆ	õ	*ô ØØ"+ò
ð óð 	rg   c                 ó2  ^^• Sn [        S5      mU4S jnU4S jn[        U5      [        U[        R                  S9/mU4S jn[	        [
        R                  5      " U5      n[        [        U 5      (       a  [	        [        [        U 5      SS9" U5        U$ )z2A pointwise function that maps ops.frexp to inputsÚfrexpc                 ó   >• T" U 0 UD6S   $ ©Nr   rû   ©rt   rÿ   rì  s     €re   Úfrexp0Úregister_frexp.<locals>.frexp0à  ó   ø€ Ù�dÐ%˜fÑ% aÑ(Ð(rg   c                 ó   >• T" U 0 UD6S   $ ©Nr/   rû   rï  s     €re   Úfrexp1Úregister_frexp.<locals>.frexp1ã  rò  rg   rœ  c                 ó0   >• TS   " U 0 UD6TS   " U 0 UD64$ ©Nr   r/   rû   )rt   rÿ   Úpw_fnss     €re   r   Úregister_frexp.<locals>.fnë  s*   ø€ Ø�aŠy˜$Ð) &Ñ)¨6°!ª9°dÐ+E¸fÑ+EÐEÐErg   NrŸ  )
r>   rw  r{   Úint32r,  rÄ  rì  rð   r·  r˜   )rÞ   rð  rõ  r   rì  rù  s       @@re   Úregister_frexprü  Û  s‘   ù€ à€DÜ˜Ó €Eõ)õ)ô 	�vÓÜ�v´U·[±[ÑAð€Fõ
Fô 
Ü�
‰
ô
àó

€Bô Œu�d×ÑÜÜ”E˜4Ó Ø $ò	
ð ô	ð €Irg   c                ó.   • [        XS9n[        X5      nU$ )N©rr  )r†  r  )rØ   Úpointwise_lowering_fnrr  r   s       re   Úregister_foreach_pointwiser   ý  s   € ô
 
 Ð 5Ñ	O€BÜ	# GÓ	0€BØ€Irg   c           
     ó*  • S n[        U[        [        45      (       a  [        U5      " U5      n[        U[        [        45      (       a  [        U5      " U5      nXU/n[	        US   US   [
        R                  S9n[        U5       VVs/ s H  u  pg[        U[        5      (       d  M  UPM      nnn[        U[        U Vs/ s H  odU   PM	     sn6 5       H	  u  pgXtU'   M     [        [        U5      5       H]  n[        XF   [        R                  5      (       d  M&  [        R                   " XF   [#        XHS      R%                  5       5      5      XF'   M_     ['        X5S9" US   [)        US   U5      [)        US   U5      5      $ s  snnf s  snf )Nc                 ó(   • [         R                  " U 6 $ r—   )rR   Úwhere©rt   s    re   r   Úwhere.<locals>.fn	  s   € Ü�yŠy˜$ÐÐrg   r/   r-   rŸ  r   rœ  )rk   r=  rµ   Úconstant_likerÖ   r   rH  rj   rC   r  r  r  rÉ   r2   r÷   r8   ré   ri   rÊ   rw  rö   )	r’   rñ   r7  r   rt   r¸   rs   r¦   Úindicess	            re   r  r    sX  € ò ô �!”eœS�\×"Ñ"Ü˜!Ô˜QÓˆÜ�!”eœS�\×"Ñ"Ü˜!Ô˜QÓˆà�Qˆ<€DÜØˆQ‰��a‘Ô.M×.UÑ.Uñ€Eô ' tœ_ÔIš_‘T�Q´
¸1¼i×0H�q™_€GÑIÜ�GÔ.Á'Ó0JÂ'¸Q°a´Á'Ñ0JÐKÖL‰ˆØˆQ‹ñ Mä”3�t“9ÖˆÜ�d‘gœrŸ{™{×+Ó+Ü ×'Ò'¨©´°dÀ1¹:Ñ6F×6OÑ6OÓ6QÓ1RÓSˆD‹Gñ ô ˜"Ò:ØˆQ‰”˜$˜q™' 5Ó)¬8°D¸±G¸UÓ+Cóð ùó JùÚ0Js   ÂF
Â,F
ÃFc                 ó¼  • [        U 5      S:X  a+  [        U S   [        [        45      (       a  [	        U S   6 $ U $ [
        R                  " [        S U  5       S5      n/ nU  Hv  n[        UR                  5       5      =oA:X  a  OC[        U5      [        U5      :w  d   [        S [        XA5       5       5      (       a  [        X15      nUR                  U5        Mx     U$ )Nr/   r   c              3  ó@   #   • U  H  oR                  5       v •  M     g 7fr—   )rÊ   r"  s     re   r›   Ú$broadcast_tensors.<locals>.<genexpr>'  s   é € Ð#Aº&°Q§J¡J§L Lº&ùó   ‚rû   c              3  óÌ   #   • U  HZ  u  p[         R                  R                  R                  U5      [         R                  R                  R                  U5      :g  v •  M\     g 7fr—   )rS   r]   rä   r3  ©r™   rñ   r7  s      re   r›   r
  .  sM   é € ð .
ò +‘�ô �G‰G×Ñ×1Ñ1°!Ó4Ü�w‰w×Ñ×4Ñ4°QÓ7ö8â*ùs   ‚A"A$)rÉ   rk   ri   rŸ   r  r  Úreducer:  rÊ   r%  r  r5  ro   )rK  ra   r“  r¦   Úsizess        re   r  r     sÍ   € ä
ˆ6ƒ{�aÓÜ�f˜Q‘i¤$¬ ×/Ñ/Ü$ f¨Q¡iÐ0Ð0ØˆÜ(×/Ò/Ü!Ñ#A¹&Ó#AÀ2ó €Fð €GÛˆÜ˜1Ÿ:™:›<Ó(Ð(ˆEÓ3Øä�‹Zœ3˜v›;Ó&¬#ñ .
ô ˜EÔ*ó.
÷ +
ñ +
ô
 �qÓ!ˆAØ�‰�qÖñ ð €Nrg   c                ó   • U $ r—   rû   rÀ   s    re   Únopr  8  s   € à€Hrg   Ú
lift_freshc                ó  • [        U [        5      (       d   eUc)  [        [        R                  " U R                  5      5      $ [        U[
        [        R                  45      (       a)  [        R                  R                  R                  U5      O[        S U 5       5      n[        [        U R                  5       5      U5      n[!        [        U[        5      (       d  U4OU5      n/ n[#        U R                  5       5       H`  u  pEXB;   aE  [        R                  R                  R%                  [        R&                  " US5      5      (       a  MO  UR)                  U5        Mb     X0R                  5       :w  a  [+        X5      $ U $ )Nc              3  ót   #   • U  H.  n[         R                  R                  R                  U5      v •  M0     g 7fr—   )rS   r]   rä   Ú	guard_int©r™   Úds     re   r›   Úsqueeze.<locals>.<genexpr>J  s(   é € Ð>º#°Q”1—7‘7×#Ñ#×-Ñ-¨a×0Ð0º#ùs   ‚68r/   )rk   rC   rB   ré   rm   rµ   r½   r¾   rS   r]   rä   r  rŸ   r   rÉ   rÊ   r'   rj   Úguard_or_falseÚEqro   rÅ  )r¦   rÍ   ÚdimsÚ	new_shaper  rê   s         re   Úsqueezer  A  s  € ä�aœ×#Ñ#Ð#Ð#Ø
�{Üœ×+Ò+¨A¯F©FÓ3Ó4Ð4ô �cœC¤§¡Ð,×-Ñ-ô 	
�‰×Ñ×"Ñ" 3Ô'äÑ>¹#Ó>Ó>ð ô
 œC §
¡
£Ó-¨sÓ
3€CÜ¤J¨s´E×$:Ñ$:�s‘fÀÓD€Dà€IÜ˜!Ÿ*™*›,Ö'‰ˆØ“	œaŸg™g×.Ñ.×=Ñ=¼e¿hºhÀqÈ!»n×MÓMØ×Ñ˜QÖñ (ð
 "+¯j©j«lÓ!:Œ4�ÓÐAÀÐArg   c                ó*   • [        [        X5      5      $ r—   )r�  r  )r¦   rÍ   s     re   Úsqueeze_copyr  X  s   € ä”˜“Ó!Ð!rg   c                óš   • [        X5      n[        U [        5      (       d   e[        U[        5      (       d   eUR                  U l        U $ r—   )r  rk   rC   rm   ©r¦   rÍ   Úvals      re   Úsqueeze_r#  ]  sA   € ä
�!‹/€CÜ�aœ×#Ñ#Ð#Ð#Ü�cœ9×%Ñ%Ð%Ð%Ø�X‰X€A„FØ€Hrg   c                ó¦   • [        U 5      (       a  [        U S[        R                  S9$ [	        S5      n[        U[        R                  S9" U 5      $ )NFr·   Úisinfrœ  ©rÁ   Ú	full_liker{   rÃ   r>   rw  ©r¦   r   s     re   r%  r%  f  ó@   € ä�q×ÑÜ˜˜E¬¯©Ñ4Ð4Ü	�WÓ	€BÜ˜"´E·J±JÒ?ÀÓBÐBrg   c                ó¦   • [        U 5      (       a  [        U S[        R                  S9$ [	        S5      n[        U[        R                  S9" U 5      $ )NFr·   Úisnanrœ  r&  r(  s     re   r+  r+  n  r)  rg   c                óp   • [        U 5      (       a  [        U 5      $ [        S5      n[        U5      " U 5      $ )NÚceil©rÁ   r�  r>   rw  r(  s     re   r-  r-  v  s0   € ä�q×ÑÜ�Q‹xˆÜ	�VÓ	€BÜ˜"Ô˜aÓ Ð rg   c                óp   • [        U 5      (       a  [        U 5      $ [        S5      n[        U5      " U 5      $ )NÚfloorr.  r(  s     re   r0  r0  ~  ó0   € ä�q×ÑÜ�Q‹xˆÜ	�WÓ	€BÜ˜"Ô˜aÓ Ð rg   c                óp   • [        U 5      (       a  [        U 5      $ [        S5      n[        U5      " U 5      $ )NÚroundr.  r(  s     re   r3  r3  †  s0   € ä�q×ÑÜ�Q‹xˆä˜Ó!ˆÜ˜bÔ! !Ó$Ð$rg   c                óp   • [        U 5      (       a  [        U 5      $ [        S5      n[        U5      " U 5      $ )NÚtruncr.  r(  s     re   r5  r5  �  r1  rg   c                ó*  • [        U /5      u  n [        U [        R                  5      (       a   [        R
                  " U [        U5      5      $ [        U [        5      (       d   e[        U[        [        45      (       d   e[        U R                  5       5      [        U5      :X  a  U $ [        U R                  5       5      (       dš  [        R                  R                  R                  [        U R                  5       5      5      nUS:”  aT  [        U5      (       dD  U R!                  [        R                  R                  R                  [        U5      5      U-  5        [        [        R
                  " U R"                  [        U5      5      5      $ rî  )rN  rk   r2   rl  r8   ré   rŸ   rC   ri   rÊ   r$   rS   r]   rä   rå   rP   Ú
mark_reuserm   )r¦   r  Úx_size_products      re   r5  r5  —  s  € ä˜a˜SÓ!�D€QÜ�!”R—_‘_×%Ñ%Ü× Ò  ¤E¨%£LÓ1Ð1Ü�aœ×#Ñ#Ð#Ð#Ü�eœd¤E˜]×+Ñ+Ð+Ð+ÜˆQ�Z‰Z‹\Óœe E›lÓ*Øˆä  §¡£×.Ñ.ÜŸ™×)Ñ)×<Ñ<Ü˜!Ÿ*™*›,Ó'ó
ˆð ˜AÓÔ&;¸E×&BÑ&Bà�L‰LÜ—‘× Ñ ×3Ñ3´MÀ%Ó4HÓIØ!ñ"ôô ”Z×&Ò& q§v¡v¬u°U«|Ó<Ó=Ð=rg   c                óš   • [        U5      nU H  nSX4'   M	     U n[        U5       H  u  pgUS:w  d  M  [        XV5      nM     [        XQ5      $ ©NrW  )ri   rj   Ú	unsqueezer5  )rñ   ÚshapeÚbroadcast_dimensionsrê   Úbroadcast_dimensionr  Úidxr¦   s           re   Úbroadcast_in_dimr@  ²  sS   € äˆU‹€AÛ3ÐØ!#ˆÓñ  4ð 	
€AÜ˜A–,‰ˆØ��7Ü˜!Ó!ŠAñ ô �!ÓÐrg   c                ó4   • [        XR                  5       5      $ r—   )r5  rÊ   )r¦   r9  s     re   Ú	expand_asrB  À  s   € ä�!—Z‘Z“\Ó"Ð"rg   c                óŽ  ^^^• [        U R                  5       5      m[        T5      [        T5      :”  aK  [        R                  R
                  /[        T5      [        T5      -
  -  T-   m[        U [        T5      5      n [        T5      [        U R                  5       5      :X  d   e[        U R                  5       5      nSn[        [        T5      5       H  nTU   S:X  a  SnX$   TU   -  X$'   M     U(       a&  [        X R                  5       U R                  5       S9$ [        S [        TT5       5       5      (       a  [        [        X5      5      $ UUU4S jn[        T5      (       dŒ  [        U5      (       d|  [         R"                  R$                  R'                  [)        T5      5      nUS:”  aD  U R+                  [         R"                  R$                  R'                  [)        U5      5      U-  5        U R-                  5       m[.        R0                  " U R                  5       U R                  5       U[        U5      S9$ )NFr   T©r¸   rv   c              3  óH   #   • U  H  u  pUS :H  =(       d    US :H  v •  M     g7f©r/   Nrû   r  s      re   r›   Úrepeat.<locals>.<genexpr>×  s$   é € Ð
AÒ*@¡$ !ˆA�‰F×�a˜1‘fÔÒ*@ùs   ‚ "c                ó   >• [        U 5      [        T5      :X  d   e[        U 5      n [        [        T5      5       HI  nTU   S:w  d  M  TU   S:X  a  [        R                  R
                  X'   M5  [        X   STU   5      X'   MK     T" U 5      $ rô  )rÉ   ri   r  r½   r1  ÚZeror,   )rC  rs   Úold_sizeÚrepeatsÚx_loaders     €€€re   rg  Úrepeat.<locals>.inner_fnÜ  s}   ø€ Ü�5‹zœS ›\Ó)Ð)Ð)Ü�U“ˆÜ”s˜7“|Ö$ˆAØ�q‰z˜Q�Ø˜A‘; !Ó#Ü$Ÿw™wŸ|™|�E“Hä.¨u©x¸¸HÀQ¹KÓH�E“Hñ %ñ ˜‹Ðrg   ri  )ri   rÊ   rÉ   r½   r1  r2  rÅ  r  Úemptyr¼   rn   r$  r  r�  r5  r$   rS   r]   rä   rå   rP   r7  rk  r@   ré   )	r¦   rK  Únew_sizeÚzero_tensorrs   rg  Úold_size_productrJ  rL  s	    `     @@re   ÚrepeatrR  Å  sº  ú€ ä�A—J‘J“LÓ!€HÜ
ˆ7ƒ|”c˜(“mÓ#Ü—G‘G—K‘K�=¤C¨£L´3°x³=Ñ$@ÑAÀHÑLˆÜ�”D˜“NÓ#ˆÜˆw‹<œ3˜qŸz™z›|Ó,Ó,Ð,Ð,ä�A—J‘J“LÓ!€Hà€KÜ”3�w“<Ö ˆØ�1‰:˜‹?ØˆKØ‘k G¨A¡JÑ.ˆ‹ñ !ö
 Ü�X§[¡[£]¸1¿<¹<»>ÑJÐJÜ
Ñ
A¬#¨g°xÔ*@Ó
A×AÑAÜ”V˜AÓ(Ó)Ð)÷	ô ! ×*Ñ*Ô3HÈ×3RÑ3RÜŸ7™7×+Ñ+×>Ñ>¼}ÈXÓ?VÓWÐØ˜aÓð �L‰LÜ—‘× Ñ ×3Ñ3´MÀ(Ó4KÓLØ#ñ$ôð
 �}‰}‹€HÜ×ÒØ�|‰|‹~Ø�k‰k‹mØÜ�H‹~ñ	ð rg   c                óV   • [        [        R                  " U R                  U5      5      $ r—   )rC   rE   ré   rm   )r¦   r  s     re   rÅ  rÅ  ú  s   € ô ”T—[’[ §¡¨Ó/Ó0Ð0rg   c                óÐ   • [        U [        5      (       d   e[        U[        [        45      (       d   e[        [        R
                  " U R                  [        U5      5      5      $ r—   )rk   rC   ri   rŸ   r?   ré   rm   )r¦   r  s     re   ÚpermuterU    sL   € ä�aœ×#Ñ#Ð#Ð#Ü�dœT¤5˜M×*Ñ*Ð*Ð*Ü”[×'Ò'¨¯©´°d³Ó<Ó=Ð=rg   c                óx  • SSK JnJn  [        U [        5      (       d   e[        XS5      nU R                  5       U   n[        R                  " U5      n[        U[        R                  5      (       d  US:”  d   U5       e US:X  a6  [        R                  R                  R                  Xƒ5      (       a  US:X  a  U $ SS jn	Su  p«UnU(       a  U	" X(S5      n
U	" X8U5      nU
b  Ub  X«p2SnU(       d3  [	        [        R                   R#                  U R$                  XX4US95      $ U(       d   eU" [        R                  R                  R&                  [        R                  R(                  R*                  S   5      nUc   e[-        U5      S	::  d   U5       eSu  pïUR/                  5        H=  u  nnUU" S
5      [0        R2                  " U5      4:X  a  UnM,  UU" S5      4:X  d  M;  UnM?     U
b  Ub   e[        R4                  " UUUUU R                  5       U   5      n[        R                  R7                  U5      Ul        [        R                  R;                  U5        UnU R=                  5       c  U R?                  5         U
b6  Ub   eU RA                  5       RB                  X RE                  5       U   -  -   nO˜[        RF                  " UUU RA                  5       RB                  U RE                  5       U   U R                  5       U   SS9n[        R                  R7                  U5      Ul        [        R                  R;                  U5        Un[I        U R                  5       5      n[I        U RE                  5       5      nUUU'   UU==   U-  ss'   [K        U UUU5      $ ! [         a     GNúf = f)zù
Lowers a slice call, creating ExternKernels for the output size & storage offset symbols,
if the indices are unbacked and appropriate semantics aren't known.
If they are known (indices are static/backed/unbacked with info), a SliceView is created.
r   )ÚCallMethodKeyr&   r/   c                ó  • U c  U$ S n[         R                  " U 5      n [         R                  " U5      nU" [         R                  " U S5      5      (       a#  U" [         R                  " X5      5      (       a  U $ U" [         R                  " U S5      5      (       a&  U" [         R                  " X* 5      5      (       a  X-   $ U" [         R
                  " X5      5      (       a  U$ U" [         R                  " X* 5      5      (       a  gg )Nc                óT   • [         R                  R                  R                  U 5      $ r—   )rS   r]   rä   r  rÀ   s    re   Ú<lambda>Ú5slice_.<locals>.compute_slice_index.<locals>.<lambda>+  s   € ”q—w‘w×'Ñ'×6Ñ6°qÔ9rg   r   )r½   r5  ÚGeÚLeÚLtÚGt)rC  rë   r¹  r   s       re   Úcompute_slice_indexÚ#slice_.<locals>.compute_slice_index'  sÃ   € Ø‰=ØˆNá9ˆÜ—’˜UÓ#ˆÜ�|Š|˜DÓ!ˆÙŒe�hŠh�u˜aÓ ×!Ñ!¡b¬¯ª°%Ó)>×&?Ñ&?ØˆLÙ”—’˜ Ó"×#Ñ#©¬5¯8ª8°E¸5Ó+A×(BÑ(BØ‘<ÐÙ”—’˜Ó%×&Ñ&ØˆKÙ”—’˜ Ó&×'Ñ'ØØrg   ©NNF©ÚclampÚunbacked_bindingsr-   rë   Ústorage_offsetTr—   )&Ú%torch.fx.experimental.symbolic_shapesrW  r&   rk   rC   Ú_validate_dimrÊ   r½   r5  r¾   rS   r]   rä   Ústatically_known_leqÚ	TypeErrorr2   Ú	SliceViewré   rm   Ú	shape_envr^   ro  rÉ   r   ÚpytreeÚSequenceKeyÚDynamicSliceSizeÚregister_bufferrÞ   Úregister_operationÚmaybe_get_layoutr�  Ú
get_layoutÚoffsetÚ
get_strideÚDynamicSelectStorageOffsetri   Ú
as_strided)r¦   rÍ   ÚstartÚendÚsteprd  rW  r&   rë   r`  Ústart_indexÚ	end_indexÚambiguous_slicere  Úsym_sizeÚsym_storageÚsymÚkeypathÚb_sizerO  Únew_storage_offsetÚ	b_storageÚ	new_sizesÚnew_stridess                           re   Úslice_r‡    s^  € ÷ô
 �aœ×#Ñ#Ð#Ð#Ü
˜ Ó
"€CØ�:‰:‹<˜Ñ€DÜ�<Š<˜Ó€DÜ�dœEŸJ™J×'Ñ'¨4°!«8Ð9°TÓ9Ð3ðà�Q‹JÜ—‘× Ñ ×5Ñ5°d×@Ñ@Ø˜“	àˆHô
ð" (Ñ€KØ€OÞÙ)¨%°qÓ9ˆÙ'¨°4Ó8ˆ	ØÑ" yÑ'<Ø$�3Ø#ˆOö ÜÜ�L‰L×Ñ §¡¨°CÀUÐÐKó
ð 	
ö €Lˆ5Ù1Ü	�‰×Ñ×"Ñ"¤A§G¡G×$8Ñ$8×$=Ñ$=Ð>QÑ$RóÐð Ñ(Ð(Ð(ÜÐ Ó! QÓ&Ð9Ð(9Ó9Ð&Ø&Ñ€HØ)×/Ñ/Ö1‰ˆˆWØ‘} VÓ,¬f×.@Ò.@ÀÓ.EÐFÓFØŠHØ™Ð'7Ó8Ð:Õ:ØŠKñ	 2ð Ñ )Ñ"3Ð3Ð3Ü× Ò ØØØØØ	�
‰
‹�SÑó€Fô —'‘'×)Ñ)¨&Ó1€F„KÜ‡G�G×Ñ˜vÔ&Ø€Hà×ÑÓÑ#à	�	‰	ŒàÑàÑ"Ð"Ð"ØŸ\™\›^×2Ñ2°[Ç<Á<Ã>ÐRUÑCVÑ5VÑVÑä×1Ò1ØØØ�L‰L‹N×!Ñ!Ø�L‰L‹N˜3ÑØ�J‰J‹L˜ÑØñ
ˆ	ô Ÿ™×0Ñ0°Ó;ˆ	ŒÜ	�‰×"Ñ" 9Ô-Ø(Ðä�Q—Z‘Z“\Ó"€IÜ�q—|‘|“~Ó&€KØ€Iˆc�NØ�Ó˜ÑÓÜ�a˜ KÐ1CÓDÐDøôw ó Úðús   Â;N+ Î+
N9Î8N9c                ó2  • S nS n[        U [        5      (       a_  [        U R                  [        R                  5      (       a6  U R                  5       nU R                  nU R                  R                  5       n U R                  5         [        R                  " U 5      (       d  [        SU  S35      e[        R                  " U 5      u  pg[        R                  " U(       a  UOUR                  U(       a  UOUR                  U Vs/ s H  n[        R                  " U5      PM     snU Vs/ s H  n[        R                  " U5      PM     sn[        R                  " U=(       d    S5      5      n	[        [        R                   " XiS95      $ s  snf s  snf )Nzunrealized as_strided(z, ...)r   ©rm   Úlayout)rk   rC   rm   r2   r6   rn   r¸   Úunwrap_viewr�  Úis_storage_and_layoutr�   Úas_storage_and_layoutÚFixedLayoutrv   r½   r5  rã   )
r¦   rë   Ústriderf  Ú
new_deviceÚ	new_dtypeÚstorageÚ
old_layoutrê   Ú
new_layouts
             re   rw  rw  �  s$  € à€JØ€IÜ�!”Y×Ñ¤J¨q¯v©v´r·{±{×$CÑ$Cð —\‘\“^ˆ
Ø—G‘Gˆ	Ø�F‰F×ÑÓ ˆØ‡I�I„KÜ×#Ò# A×&Ñ&Ü!Ð$:¸1¸#¸VÐ"DÓEÐEÜ×2Ò2°1Ó5Ñ€GÜ—’Þ ‰
 j×&7Ñ&7Þ‰	 J×$4Ñ$4Ù"&Ó'¢$˜QŒ�Š�aŽ¡$Ñ'Ù"(Ó)¢&˜QŒ�Š�aŽ¡&Ñ)Ü�Š�^×( qÓ)ó€Jô ”R×'Ò'¨WÑHÓIÐIùò	 	(ùÚ)s   Ä FÄ- Fc                ój   • [        U [        5      (       d   e[        XX#5      R                  U l        U $ r—   )rk   rC   rw  rm   )r¦   rë   r�  rf  s       re   Úas_strided_r–  ž  s.   € ä�aœ×#Ñ#Ð#Ð#Ü˜ Ó8×=Ñ=€A„FØ€Hrg   c                ó0   • [        XX#5      n[        U5      $ r—   )rw  r�  )r¦   rë   r�  rf  Úresults        re   Úas_strided_copyr™  ¥  s   € ä˜ Ó8€FÜ�‹=Ðrg   c                óœ  ^ ^^^• / mSnT  H1  nTR                  X"UR                  5       T   -   45        TS   S   nM3     T  Vs/ s H  o3R                  5       PM     snmUU UU4S jn[        T S   R                  5       5      nTS   S   UT'   [        R
                  " T S   R                  5       T S   R                  5       UUS9$ s  snf )Nr   rW  c           	     ó¬  >^
^• [         R                  " U T   [        R                  5      n/ n/ n[	        [        T5      5       GHH  m
T
S:X  a%  [         R                  " S[        R                  5      O*[         R                  " TT
   S   [        R                  5      n[         R                  " TT
   S   [        R                  5      n[         R                  " X5      n[         R                  " X5      nT
S:X  a  UnO+T
[        T5      S-
  :X  a  UnO[         R                  " Xg5      nUR                  U5        [        U 5      m[        TT   TT
   S   -
  5      TT'   UR                  [         R                  " UU
UU4S jS5      5        GMK     US   n	[	        [        T5      S-
  SS5       H!  m
[         R                  " UT
   UT
   U	5      n	M#     U	$ )Nr   r/   c                 ó   >• TT    " T5      $ r—   rû   )rs   Úidx_loadÚinputs_loaderss   €€€re   rZ  Ú1pointwise_cat.<locals>.inner_fn.<locals>.<lambda>×  s   ø€ ˜N¨1Ò-¨hÔ7rg   ç        rW  r-   )rR   Ú
index_exprr{   Úint64r  rÉ   rÞ  ÚgeÚltÚand_ro   ri   r*   Úmaskedr  )r?  Úidx_dimÚmasksÚmasked_loadsrx  ry  Ú
start_condÚend_condÚmaskÚnext_valrs   r�  rÍ   rK  rž  Úinputs_rangess             @@€€€€re   rg  Úpointwise_cat.<locals>.inner_fnµ  s‹  ú€ Ü—.’.  S¡¬5¯;©;Ó7ˆàˆØˆÜ”s˜6“{×#ˆAð ˜“6ô —’˜Q¤§¡Ô,ä—^’^ M°!Ñ$4°QÑ$7¼¿¹ÓEð ô
 —.’. ¨qÑ!1°!Ñ!4´e·k±kÓBˆCäŸš Ó/ˆJÜ—v’v˜gÓ+ˆHØ�A‹vØ‘Ø”c˜&“k A‘oÓ%Ø!‘ä—x’x 
Ó5�à�L‰L˜ÔÜ˜C“yˆHô % X¨c¡]°]À1Ñ5EÀaÑ5HÑ%HÓIˆH�S‰Mà×ÑÜ—
’
ØÞ7Øó÷ñ5 $ðD   Ñ#ˆÜœ˜F› qÑ(¨"¨bÖ1ˆAÜ—y’yØ�a‘Ø˜Q‘ØóŠHñ 2ð ˆrg   ri  )ro   rÊ   rk  ri   r@   ré   rn   r¼   )rK  rÍ   Úprev_endrÌ   rg  rO  rž  r®  s   ``    @@re   Úpointwise_catr±  «  sØ   û€ à9;€MØ€HÛˆØ×Ñ˜h°3·<±<³>À#Ñ3FÑ(FÐGÔHØ  Ñ$ RÑ(Šñ ñ 4:Ó:²6¨C—o‘oÖ'±6Ñ:€N÷.ð .ô` �F˜1‘I×&Ñ&Ó(Ó)€HØ! "Ñ% bÑ)€HˆS�Mä×ÒØ�a‰y×#Ñ#Ó%Ø�Q‰i×!Ñ!Ó#ØØñ	ð ùòk ;s   ÁC	c           	     óî  ^^^^^^^^	^
• [        TR                  5       5      S:X  d   S5       e[        TR                  5       5      S:X  d   S5       eU R                  5       [        R                  :X  a  [        U [        R                  5      n U R                  5       [        R                  :X  d   SU R                  5        35       eT[        U R                  5       5      :  d!   S[        U R                  5       5       35       eU R                  5       mTR                  5       m	TR                  5       m
UUUUUUU	UU
4	S jn[        R                  " U R                  5       TUU R                  5       S9$ )Nr/   úexpect scales 1 dimúexpect zero_points 1 dimú<Expecting input to have dtype torch.float32, but got dtype: úExpecting axis to be < c                óh  >	• U T
   4nT" U 5      nT" U5      nT" U5      n[        TT[        R                  S9u  pVTR                  [        R                  :w  a%  [        R
                  " U[        R                  5      nTR                  [        R                  :w  a%  [        R
                  " U[        R                  5      n[        R                  " U5      n[        R                  " X'-  5      U-   n[        R                  " U[        R                  " Xh5      5      n	[        R
                  " U	T5      $ ©Nr·   )Ú_create_constantsr{   ræ  r¸   rR   rö   rû  Ú
reciprocalr3  ÚmaximumÚminimum)r?  Úchannel_idxr‚  ÚscaleÚ
zero_pointÚqminÚqmaxÚ	inv_scaler"  ÚclampedÚaxisr¸   Úinput_loaderÚ	quant_maxÚ	quant_minÚscalesÚscales_loaderÚzero_pointsÚzero_points_loaders             €€€€€€€€€re   rg  Ú;quantized_decomposed_quantize_per_channel.<locals>.inner_fn
  sØ   ø€ Ø˜4‘y�lˆá˜SÓ!ˆÙ˜kÓ*ˆÙ'¨Ó4ˆ
Ü& y°)Ä5Ç=Á=ÑQ‰
ˆà�<‰<œ5Ÿ=™=Ó(Ü—L’L ¬¯©Ó6ˆEØ×Ñ¤§¡Ó+ÜŸš j´%·+±+Ó>ˆJÜ—N’N 5Ó)ˆ	Ü�iŠi˜Ñ)Ó*¨ZÑ7ˆÜ—+’+˜d¤C§K¢K°Ó$:Ó;ˆÜ�|Š|˜G UÓ+Ð+rg   ri  )rÉ   rÊ   r¼   r{   rm  rö   ræ  rk  r@   ré   rn   )r‚  rÈ  rÊ  rÄ  rÇ  rÆ  r¸   rg  rÅ  rÉ  rË  s    `````` @@@re   Ú)quantized_decomposed_quantize_per_channelrÍ  ð  s?  ÿø€ ô ˆv�‰Ó Ó! QÓ&Ð=Ð(=Ó=Ð&Üˆ{×#Ñ#Ó%Ó&¨!Ó+ÐGÐ-GÓGÐ+à‡�ÓœEŸN™NÓ*Ü˜¤§¡Ó.ˆØ�?‰?Ó¤§¡Ó-ð Ø
FÀuÇÁÓGXÐFYÐZóÐ-ð ”#�e—n‘nÓ&Ó'Ó'ð Ø
!¤# e§n¡nÓ&6Ó"7Ð!8Ð9óÐ'ð ×$Ñ$Ó&€LØ×&Ñ&Ó(€MØ$×0Ñ0Ó2Ð÷,õ ,ô" ×ÒØ×ÑÓ!ØØØ�~‰~Óñ	ð rg   c           	     ó   ^ ^• T R                  5         [        T [        R                  5      m U U4S jn[        R
                  " T R                  5       T R                  5       U[        T R                  5       5      S9nUR                  5         U$ )Nc                óÌ   >• [         R                  R                  5          [        R                  " TR                  5       " U 5      T5      sS S S 5        $ ! , (       d  f       g = fr—   )r2   ÚComputedBufferÚforce_realizerR   Údevice_assert_asyncrk  )rC  r’   r“   s    €€re   rg  Ú_assert_async.<locals>.inner_fn'  s?   ø€ Ü×Ñ×,Ñ,Õ.Ü×*Ò*¨4×+;Ñ+;Ô+=¸eÓ+DÀcÓJ÷ /×.×.ús    +AÁ
A#ri  )
r�  rö   r{   rÃ   r@   ré   rn   r¼   ri   rÊ   )r’   r“   rg  Úassertion_ops   ``  re   Ú_assert_asyncrÕ  #  sm   ù€ Ø‡L�L„NÜ�Dœ%Ÿ*™*Ó%€DöKô ×#Ò#Ø�‰Ó Ø�n‰nÓØÜ�D—M‘M“OÓ$ñ	€Lð ×ÑÔØÐrg   c                ó   • [        X5      $ r—   ©rÕ  r‘   s     re   Úlower_assert_asyncrØ  5  ó   € ä˜Ó#Ð#rg   c                ó   • [        X5      $ r—   r×  r‘   s     re   Úlower_assert_functional_asyncrÛ  :  rÙ  rg   )rã  c               ó~  ^^^^^	^
^• [        TR                  5       5      S:X  d   S5       e[        TR                  5       5      S:X  d   S5       eU R                  5       U:X  d   SU SU R                  5        35       eT[        U R                  5       5      :  d!   S[        U R                  5       5       35       eTc  [        R                  mU R                  5       m	TR                  5       m
TR                  5       mUU	UUU
UU4S jn[        R                  " U R                  5       TUU R                  5       S9$ )	Nr/   r³  r´  úExpecting input to have dtype ú, but got dtype: r¶  c                óø  >• U T   4nT" U 5      nT
" U5      nT" U5      nT	R                   [        R                  :w  a%  [        R                  " U[        R                  5      nTR                   [        R                  :w  a%  [        R                  " U[        R                  5      n[        R
                  " [        R                  " U[        R                  5      U5      U-  n[        R                  " UT5      nU$ r—   )r¸   r{   ræ  rR   rö   Úsub)r?  r½  r‚  r¾  r¿  r"  rÄ  rÅ  rã  rÈ  rÉ  rÊ  rË  s         €€€€€€€re   rg  Ú=quantized_decomposed_dequantize_per_channel.<locals>.inner_fn]  s¯   ø€ Ø˜4‘y�lˆá˜SÓ!ˆÙ˜kÓ*ˆÙ'¨Ó4ˆ
à�<‰<œ5Ÿ=™=Ó(Ü—L’L ¬¯©Ó6ˆEØ×Ñ¤§¡Ó-ÜŸš j´%·-±-Ó@ˆJÜ�gŠg”c—l’l 5¬%¯-©-Ó8¸*ÓEÈÑMˆÜ�lŠl˜3 	Ó*ˆØˆ
rg   ri  ©	rÉ   rÊ   r¼   r{   ræ  rk  r@   ré   rn   )r‚  rÈ  rÊ  rÄ  rÇ  rÆ  r¸   rã  rg  rÅ  rÉ  rË  s    ```   ` @@@re   Ú+quantized_decomposed_dequantize_per_channelrã  ?  s-  þ€ ô ˆv�‰Ó Ó! QÓ&Ð=Ð(=Ó=Ð&Üˆ{×#Ñ#Ó%Ó&¨!Ó+ÐGÐ-GÓGÐ+Ø�?‰?Ó Ó%ð Ø
(¨¨Ð/@ÀÇÁÓARÐ@SÐTóÐ%ð ”#�e—n‘nÓ&Ó'Ó'ð Ø
!¤# e§n¡nÓ&6Ó"7Ð!8Ð9óÐ'ð ÑÜ—M‘Mˆ	à×$Ñ$Ó&€LØ×&Ñ&Ó(€MØ$×0Ñ0Ó2Ð÷ó ô ×ÒØ×ÑÓ!ØØØ�~‰~Óñ	ð rg   c                óÚ  ^^^^• U R                  5       [        R                  :X  a  [        U [        R                  5      n U R                  5       [        R                  :X  d   SU R                  5        35       eU R                  5       mUUUU4S jn[        R                  " U R                  5       T[        R                  " U[        U5      [        U5      S9U R                  5       S9$ )Nrµ  c                ó@  >• T
" U 5      n[        SU-  U[        R                  S9u  pB[        R                  " X4-  5      U-   n[        TT[        R                  S9u  pg[        R
                  " [        R                  " XV5      U5      n[        R                  " UT	5      $ )Nç      ð?r·   )r¹  r{   ræ  rR   r3  r¼  r»  rö   )r?  r¾  r¿  r‚  rÂ  r"  rÀ  rÁ  rÃ  r¸   rÅ  rÆ  rÇ  s            €€€€re   rg  ÚBquantized_decomposed_quantize_per_tensor_default.<locals>.inner_fn‡  s   ø€ Ù˜SÓ!ˆÜ 1Ø�%‰K˜¬5¯=©=ñ!
Ñˆ	ô �iŠi˜Ñ)Ó*¨ZÑ7ˆÜ& y°)Ä5Ç=Á=ÑQ‰
ˆÜ—+’+œcŸkšk¨#Ó4°dÓ;ˆÜ�|Š|˜G UÓ+Ð+rg   ©r¾  r¿  ri  )r¼   r{   rm  rö   ræ  rk  r@   ré   rn   r  r+  r=  rµ   rÊ   )r‚  r¾  r¿  rÇ  rÆ  r¸   rg  rÅ  s      ``` @re   Ú0quantized_decomposed_quantize_per_tensor_defaultré  t  sÁ   û€ ð ‡�ÓœEŸN™NÓ*Ü˜¤§¡Ó.ˆØ�?‰?Ó¤§¡Ó-ð Ø
FÀuÇÁÓGXÐFYÐZóÐ-ð ×$Ñ$Ó&€L÷,ð ,ô ×ÒØ×ÑÓ!ØÜ×"Ò"ØœE %›L´S¸³_ñ
ð �~‰~Óñð rg   c               ój  ^^• U R                  5       U:X  d   SU SU R                  5        35       eTc  [        R                  mU R                  5       mUU4S jn[        R
                  " U R                  5       T[        R                  " U[        U5      [        U5      S9U R                  5       S9$ )NrÝ  rÞ  c                óô   >• T" U 5      n[        X[        R                  S9u  p[        R                  " [        R
                  " U[        R                  5      U5      U-  n[        R
                  " UT5      nU$ r¸  )r¹  r{   ræ  rR   rà  rö   )r?  r¾  r¿  r‚  r"  rÅ  rã  s        €€re   rg  ÚDquantized_decomposed_dequantize_per_tensor_default.<locals>.inner_fn±  sY   ø€ Ù˜SÓ!ˆÜ-¨eÄuÇ}Á}ÑUÑˆÜ�gŠg”c—l’l 5¬%¯-©-Ó8¸*ÓEÈÑMˆÜ�lŠl˜3 	Ó*ˆØˆ
rg   rè  ri  )r¼   r{   ræ  rk  r@   ré   rn   r  r+  r=  rµ   rÊ   )	r‚  r¾  r¿  rÇ  rÆ  r¸   rã  rg  rÅ  s	         ` @re   Ú2quantized_decomposed_dequantize_per_tensor_defaultrí  ›  s«   ù€ ð �?‰?Ó Ó%ð Ø
(¨¨Ð/@ÀÇÁÓARÐ@SÐTóÐ%ð ÑÜ—M‘Mˆ	à×$Ñ$Ó&€Löô ×ÒØ×ÑÓ!ØÜ×"Ò"ØœE %›L´S¸³_ñ
ð �~‰~Óñð rg   c                ó>  ^^^^^^^^	• U R                  5       [        R                  :X  a  [        U [        R                  5      n U R                  5       [        R                  :X  d   SU R                  5        35       e[        TR                  5       5      S:X  d;  [        TR                  5       5      S:X  a  TR                  5       S   S:X  d   S5       e[        TR                  5       5      S:X  d;  [        TR                  5       5      S:X  a  TR                  5       S   S:X  d   S5       eU R                  5       mTR                  5       mTR                  5       m	UUUUUUUU	4S jn[        R                  " U R                  5       TUU R                  5       S9$ )Nrµ  r   r/   úexpect scale as scalar tensorú"expect zero_point as scalar tensorc                óÖ  >• T	" U 5      nT" [        TR                  5       5      S:X  a  SOS5      nT" [        TR                  5       5      S:X  a  SOS5      nTR                  [        R                  :w  a%  [
        R                  " U[        R                  5      nTR                  [        R                  :w  a%  [
        R                  " U[        R                  5      n[
        R                  " U[
        R                  " U5      -  5      U-   n[        TT
[        R                  S9u  pV[
        R                  " [
        R                  " XE5      U5      n[
        R                  " UT5      $ )Nr/   ©r   rû   r·   )rÉ   rÊ   r¸   r{   ræ  rR   rö   r3  rº  r¹  r¼  r»  )r?  r‚  Ú_scaleÚ_zero_pointr"  rÀ  rÁ  rÃ  r¸   rÅ  rÆ  rÇ  r¾  Úscale_loaderr¿  Úzero_point_loaders           €€€€€€€€re   rg  ÚAquantized_decomposed_quantize_per_tensor_tensor.<locals>.inner_fnÝ  sõ   ø€ Ù˜SÓ!ˆÙ¤c¨%¯.©.Ó*:Ó&;¸qÓ&@™dÀbÓIˆÙ'´°E·N±NÓ4DÓ0EÈÓ0J©ÐPRÓSˆØ�;‰;œ%Ÿ-™-Ó'Ü—\’\ &¬%¯-©-Ó8ˆFØ×ÑœuŸ}™}Ó,ÜŸ,š, {´E·M±MÓBˆKÜ�iŠi˜¤§¢¨vÓ 6Ñ6Ó7¸+ÑEˆÜ& y°)Ä5Ç=Á=ÑQ‰
ˆÜ—+’+œcŸkšk¨#Ó4°dÓ;ˆÜ�|Š|˜G UÓ+Ð+rg   ri  )r¼   r{   rm  rö   ræ  rÉ   rÊ   rk  r@   ré   rn   )
r‚  r¾  r¿  rÇ  rÆ  r¸   rg  rÅ  rõ  rö  s
    ````` @@@re   Ú/quantized_decomposed_quantize_per_tensor_tensorrø  Â  sf  ÿ€ ð ‡�ÓœEŸN™NÓ*Ü˜¤§¡Ó.ˆØ�?‰?Ó¤§¡Ó-ð Ø
FÀuÇÁÓGXÐFYÐZóÐ-ô ˆu�~‰~ÓÓ  AÓ%ÜˆE�N‰NÓÓ Ó" u§~¡~Ó'7¸Ñ':¸aÓ'?ð'à&ó'ð ô ˆz×"Ñ"Ó$Ó%¨Ó*ÜˆJ×ÑÓ!Ó" aÓ'¨J×,?Ñ,?Ó,AÀ!Ñ,DÈÓ,Ið,à+ó,ð ð ×$Ñ$Ó&€LØ×$Ñ$Ó&€LØ"×.Ñ.Ó0Ð÷,ô ,ô ×ÒØ×ÑÓ!ØØØ�~‰~Óñ	ð rg   c               óÎ  ^^^^^	^
• [        TR                  5       5      S:X  d;  [        TR                  5       5      S:X  a  TR                  5       S   S:X  d   S5       e[        TR                  5       5      S:X  d;  [        TR                  5       5      S:X  a  TR                  5       S   S:X  d   S5       eU R                  5       U:X  d   SU SU R                  5        35       eTc  [        R                  mU R                  5       mTR                  5       m	TR                  5       m
UUUU	UU
4S jn[        R                  " U R                  5       TUU R                  5       S9$ )	Nr   r/   rï  rð  rÝ  rÞ  c                óh  >• T" U 5      nT" [        TR                  5       5      S:X  a  SOS5      nT
" [        TR                  5       5      S:X  a  SOS5      nTR                  [        R                  :w  a%  [
        R                  " U[        R                  5      nT	R                  [        R                  :w  a%  [
        R                  " U[        R                  5      n[
        R                  " [
        R                  " U[        R                  5      U5      U-  n[
        R                  " UT5      nU$ )Nr/   rò  rû   )rÉ   rÊ   r¸   r{   ræ  rR   rö   rà  )r?  r‚  ró  rô  r"  rÅ  rã  r¾  rõ  r¿  rö  s        €€€€€€re   rg  ÚCquantized_decomposed_dequantize_per_tensor_tensor.<locals>.inner_fn  sÏ   ø€ Ù˜SÓ!ˆÙ¤c¨%¯.©.Ó*:Ó&;¸qÓ&@™dÀbÓIˆÙ'´°E·N±NÓ4DÓ0EÈÓ0J©ÐPRÓSˆØ�;‰;œ%Ÿ-™-Ó'Ü—\’\ &¬%¯-©-Ó8ˆFØ×ÑœuŸ}™}Ó,ÜŸ,š, {´E·M±MÓBˆKÜ�gŠg”c—l’l 5¬%¯-©-Ó8¸+ÓFÈÑOˆÜ�lŠl˜3 	Ó*ˆØˆ
rg   ri  râ  )r‚  r¾  r¿  rÇ  rÆ  r¸   rã  rg  rÅ  rõ  rö  s    ``   ` @@@re   Ú1quantized_decomposed_dequantize_per_tensor_tensorrü  ò  sU  ý€ ô ˆu�~‰~ÓÓ  AÓ%ÜˆE�N‰NÓÓ Ó" u§~¡~Ó'7¸Ñ':¸aÓ'?ð'à&ó'ð ô ˆz×"Ñ"Ó$Ó%¨Ó*ÜˆJ×ÑÓ!Ó" aÓ'¨J×,?Ñ,?Ó,AÀ!Ñ,DÈÓ,Ið,à+ó,ð ð �?‰?Ó Ó%ð Ø
(¨¨Ð/@ÀÇÁÓARÐ@SÐTóÐ%ð ÑÜ—M‘Mˆ	à×$Ñ$Ó&€LØ×$Ñ$Ó&€LØ"×.Ñ.Ó0Ð÷
ò 
ô ×ÒØ×ÑÓ!ØØØ�~‰~Óñ	ð rg   c                ó|  ^^^^^^^• U S   R                  5       R                  S:H  nU(       aŒ  [        S U  5       5      (       au  U  H  nUR                  5         M     [        S U  5       5      (       a  [	        [
        R                  /U Q76 u  p[        [
        R                  R                  5      " X5      $ [        U 5      S:X  a  [        U S   5      $ [        U S   US5      n[        U S[        R                  06nU  Vs/ s H  n[        Xe5      PM     n nSS jmS mUUU4S	 jm[!        U4S
 jU  5       5      nSUU4S jjm["        R$                  (       a  ['        X5      $ U(       a(  [)        [*        R,                  R/                  X5      5      $ UU4S jmSnSmSS jm[        U 5      U::  d8  [        U 5      ["        R0                  ::  a¼  [        UU4S jU  5       5      (       a¡  [        U4S j[2        R4                  R6                   5       5      n	[!        U4S jU  5       5      =(       a    U	n
[        U4S jU  5       5      =(       a    [!        U4S jU  5       5      (       + nU
(       d  U(       a  U(       d  ['        X5      $ [)        [*        R,                  R/                  X5      5      $ s  snf )Nr   râ   c              3  ó‚   #   • U  H5  oR                  5       [        R                  [        R                  4;   v •  M7     g 7fr—   )r¼   r{   Úint8Úuint8©r™   r‚  s     re   r›   Úcat.<locals>.<genexpr>'  s*   é € ð ÚDJ¸5�‰ÓœeŸj™j¬%¯+©+Ð6Ö6ÂFùs   ‚=?c              3  óZ   #   • U  H!  n[        UR                  5       5      S :H  v •  M#     g7f)r«   N)rÉ   rÊ   r  s     re   r›   r  .  s!   é € Ð>²v¨eŒs�5—>‘>Ó#Ó$¨Ö)²vùs   ‚)+r/   rÐ   c                ó$  • [        U [        5      (       aO  [        U R                  [        R                  5      (       a  U R                  R                  5       $ U R                  $ [        U [        R                  5      (       a  U R                  $ U $ r—   )rk   rC   rm   r2   r6   r‹  rç   rÀ   s    re   Úunwrap_tensorÚcat.<locals>.unwrap_tensor;  s_   € Ü�aœ×#Ñ#Ü˜!Ÿ&™&¤"§+¡+×.Ñ.Ø—v‘v×)Ñ)Ó+Ð+à—v‘v�ä�aœŸ™×'Ñ'Ø—6‘6ˆMàˆrg   c                óŒ   • [        U [        R                  5      =(       a$    [        U R                  [        R                  5      $ r—   )rk   r2   rÐ  rm   rA   )rw   s    re   Úis_reductionÚcat.<locals>.is_reductionG  s)   € Ü˜!œR×.Ñ.Ó/×T´J¸q¿v¹vÄrÇ|Á|Ó4TÐTrg   c                ó  >• [        U [        [        R                  45      (       a  T" T" U 5      5      $ T" U 5      =(       dD    [        U [        R                  5      =(       a#    [        U4S jU R                  5        5       5      $ )Nc              3  ón   >#   • U  H*  nT" [         R                  R                  U5      5      v •  M,     g 7fr—   )rS   r]   Ú
get_buffer)r™   ÚreadÚcan_fuse_reductions     €re   r›   Ú2cat.<locals>.can_fuse_reduction.<locals>.<genexpr>P  s/   øé € ð â.�Dñ #¤1§7¡7×#5Ñ#5°dÓ#;×<Ð<Ú.ùs   ƒ25)rk   rC   r2   rç   r@   r%  Úget_read_names)rw   r  r  r  s    €€€re   r  Úcat.<locals>.can_fuse_reductionJ  sk   ø€ Ü�aœ)¤R§]¡]Ð3×4Ñ4Ù%¡m°AÓ&6Ó7Ð7á˜‹O÷ Ü˜!œRŸ\™\Ó*÷ Üô à×,Ñ,Ô.óó ð	
rg   c              3  ó4   >#   • U  H  nT" U5      v •  M     g 7fr—   rû   ©r™   rw   r  s     €re   r›   r  W  s   øé € ÐBº6°aÑ.¨q×1Ð1º6ùó   ƒc                óX  >• [         R                  " U 5      (       a;  [         R                  " U SS9u  p[         R                  R	                  U5      (       + $ [        U [        [         R                  45      (       a  T" T" U 5      5      $ [        U [         R                  5      (       a  gg)NF)ÚfreezeT)	r2   rŒ  r�  ÚConcatKernelÚcan_realize_into_without_copyrk   rC   rç   r@   )r¦   r’  Ú_Úshould_lower_cat_inputr  s      €€re   r  Ú#cat.<locals>.should_lower_cat_inputY  s   ø€ ô ×#Ò# A×&Ñ&Ü×1Ò1°!¸EÑB‰JˆGÜ—‘×DÑDÀWÓMÔMÐMä�aœ)¤R§]¡]Ð3×4Ñ4Ù)©-¸Ó*:Ó;Ð;ä�aœŸ™×&Ñ&Øàrg   c                ó`  >• [        U [        [        R                  45      (       a  T" T" U 5      5      $ [        U [        R                  5      (       d  gU R                  5       R                  nU R                  5        H+  nUT" [        R                  R                  U5      5      -  nM-     U$ rî  )rk   rC   r2   rç   r@   Úinner_fn_opcountÚnum_opsr  rS   r]   r  )r¦   Úcountr  Úop_countr  s      €€re   r   Úcat.<locals>.op_countp  s‹   ø€ Ü�aœ)¤R§]¡]Ð3×4Ñ4Ù™M¨!Ó,Ó-Ð-ô ˜!œRŸ\™\×*Ñ*Øà×"Ñ"Ó$×,Ñ,ˆØ×$Ñ$Ö&ˆDØ‘XœaŸg™g×0Ñ0°Ó6Ó7Ñ7ŠEñ 'ð ˆrg   r¯   r-   c                óp   • U [         R                  R                  [         R                  R                  4;   $ r—   )rÄ  Úcatr¹  Úconstant_pad_nd©r`   s    re   Úadditional_pointwise_opsÚ%cat.<locals>.additional_pointwise_ops…  s(   € Ø”d—h‘h×&Ñ&¬×(<Ñ(<×(DÑ(DÐEÑEÐErg   c              3  ó:   >#   • U  H  nT" U5      T:*  v •  M     g 7fr—   rû   )r™   rw   ÚMAX_SIMPLE_OP_COUNTr   s     €€re   r›   r  Š  s   øé € ÐCºF°q‘˜“Ð2Ö2ºFùó   ƒc              3  ó<   >#   • U  H  n[        UT5      v •  M     g 7fr—   )rJ   )r™   Úuser&  s     €re   r›   r  Œ  s#   øé € ð 
â+�ô ˜SÐ":×;Ð;Ú+ùr�   c              3  ó4   >#   • U  H  nT" U5      v •  M     g 7fr—   rû   ©r™   rÌ   r  s     €re   r›   r  “  s   øé € Ð>²v°Ñ& s×+Ð+²vùr  c              3  ó4   >#   • U  H  nT" U5      v •  M     g 7fr—   rû   r.  s     €re   r›   r  ˜  s   øé € ð "
Ú39¨CÑ" 3×'Ð'²6ùr  c              3  ó4   >#   • U  H  nT" U5      v •  M     g 7fr—   rû   r  s     €re   r›   r  š  s   øé € Ð<²V°Ñ(¨×+Ð+²Vùr  )r¦   zUnion[TensorBox, ir.StorageBox]rÑ   ú	ir.IRNode©rÑ   rÃ   ©r`   útorch._ops.OpOverload)rn   ræ   r$  r�  Úrequire_channels_lastrÄ  r#  r¶  r¹  rÉ   r�  rh  rÖ   r   rH  rö   r%  r0   Úforce_pointwise_catr±  rC   r2   r  ré   Úmax_pointwise_cat_inputsrS   r^   r_   )rK  rÍ   Ú
cpu_devicer‚  r  r¸   rÌ   Úfusable_reductionÚMAX_COMPLEX_POINTWISE_CATÚpointwise_usesÚfuse_pointwise_useÚhorizontal_fuse_catr)  r&  r  r  r   r  r  s               @@@@@@@re   r#  r#  $  sD  þ€ à˜‘×%Ñ%Ó'×,Ñ,°Ñ5€JÞ”cñ ÙDJó÷ ñ ó
 ˆEØ�M‰MŽOñ äÑ>±vÓ>×>Ñ>Ü-¬d¯h©hÐ@¸Ò@‰IˆFÜ¤§¡× 0Ñ 0Ô1°&Ó>Ð>ä
ˆ6ƒ{�aÓÜ�V˜A‘YÓÐä
˜˜q™	 3¨Ó
*€CÜØ	ðÜ%D×%LÑ%Lñ€Eñ /5Ó5ªf sŒh�sÖ"©f€FÐ5ô
òU÷

ô ÔB¹6ÓBÓBÐ÷ð ô ×!×!Ü˜VÓ)Ð)ö ÜœŸ™×/Ñ/°Ó<Ó=Ð=öð$ !"ÐØÐôFô ˆ6ƒ{Ð/Ó/Ü	ˆV‹œ×7Ñ7Ó	7ÜÕC¹FÓC×CÑCäô 
ä—~‘~×+Ò+ó
ó 
ˆô Ô>±vÓ>Ó>×QÀ>ð 	ô "ô "
Ù39ó"
ó 
÷ =äÔ<±VÓ<Ó<Ô<ð 	ö Ö"5Ö>OÜ  Ó-Ð-ä”R—_‘_×+Ñ+¨FÓ8Ó9Ð9ùòK 6s   ÄJ9c                ó–  ^^^
^^• U R                  5       m[        T5      m[        TTS9m[        TTS9m[        TT:g  UU4S j5        [        R
                  R                  R                  [        R                  " US5      5      nU(       a\  [        R
                  R                  R                  [        R
                  R                  R                  TT   U-   TT   5      S5      nO[[        R
                  R                  R                  [        R
                  R                  R                  TT   TT   U-
  5      S5      nSm
U(       a  U* S4m
OSU4m
[        T5       VVs/ s H  u  pgUTT4;  d  M  UPM     nnnUR                  U5        U
UUUU4S jn	[        [        R                   R#                  XU	5      5      $ s  snnf )N)r?  Úrankc                 ó   >• ST  ST 3$ )Nz(diagonal dimensions cannot be identical z, rû   )Údim1Údim2s   €€re   rZ  Údiagonal.<locals>.<lambda>©  s   ø€ Ð HÈÈÈbÐQUÐPVÑWrg   r   )r   r   c                óÞ   >• U S   nS/[        T	5      -  nSn[        T5       H2  nUT:X  a  UTS   -   X$'   M  UT:X  a  UTS   -   X$'   M'  X   X$'   US-  nM4     U[        T	5      S-
  :X  d   eU$ )NrW  r   r/   r-   )rÉ   r  )
r?  Údiag_idxÚoriginal_idxÚcur_dimr  Úbase_idxrA  rB  Únum_dimsÚoriginal_shapes
        €€€€€re   Ú	reindexerÚdiagonal.<locals>.reindexerÅ  s�   ø€ Ø�r‘7ˆØ�sœS Ó0Ñ0ˆØˆÜ�x–ˆAØ�D‹yØ"*¨X°a©[Ñ"8�“Ø�d“Ø"*¨X°a©[Ñ"8�“à"%¡,�‘Ø˜1‘’ñ !ð œ#˜nÓ-°Ñ1Ó1Ð1Ð1ØÐrg   )rÊ   rÉ   r   r   rS   r]   rä   Úevaluate_exprr½   r^  Úevaluate_maxÚevaluate_minrj   ro   rC   r2   ÚGenericViewré   )r‚  rt  rA  rB  Úoffset_negativeÚ	diag_sizers   rê   r  rK  rH  rI  rJ  s     ``      @@@re   ÚdiagonalrS  ¡  s…  ü€ à—^‘^Ó%€NÜ�>Ó"€HÜ ¨8Ñ4€DÜ ¨8Ñ4€Dä	Ø�‰ÕWôô —g‘g×&Ñ&×4Ñ4´U·X²X¸fÀaÓ5HÓI€OÞÜ—G‘G×$Ñ$×1Ñ1Ü�G‰G×Ñ×)Ñ)Ø˜tÑ$ vÑ-¨~¸dÑ/Cóð ó	
‰	ô —G‘G×$Ñ$×1Ñ1Ü�G‰G×Ñ×)Ñ)Ø˜tÑ$ n°TÑ&:¸VÑ&Cóð ó	
ˆ	ð €HÞØ�G˜Q�<‰à�v�;ˆä$ ^Ô4ÔNÒ4‘4�1¸À$ÈÀÑ8M�QÑ4€EÑNØ	‡L�L�Ô÷ñ ô  ”R—^‘^×*Ñ*¨5¸ÓCÓDÐDùó' Os   Å&GÅ8Gc                ó,   • [        [        XX#5      5      $ r—   )r�  rS  )r‚  rt  rA  rB  s       re   Údiagonal_copyrU  Ø  s   € ä”˜%¨Ó4Ó5Ð5rg   c                óJ   • [        U 5      n[        XRX45      n[        Xa5        U$ r—   )r�  rS  Ú	mutate_to)r‚  Úsrcrt  rA  rB  r8  ra   s          re   Údiagonal_scatterrY  Ý  s$   € ä�5‹\€FÜ�f dÓ1€FÜˆfÔØ€Mrg   c           	     ól  • [         R                  " U5      n[         R                  " U R                  5       U   5      nS n[        R                  R
                  R                  [         R                  " US5      5      (       a  X#-   nOE[        R                  R
                  R                  [         R                  " US5      5      (       a  UnUb‹  [        U5      (       ab  U R                  5         U R                  5       nU R                  5       nU R                  5       R                  Xa   U-  -   nXQ	 Xa	 [        XXg5      $ [        XXDS-   SS9n[!        X�5      $ [#        [        R                  R
                  R$                  [        R                  R&                  R(                  S   5      n	U	c   e[+        U	5      S:X  d   U	5       e[-        [/        U	R1                  5       5      5      u  p«U R                  5         U R                  5       nU R                  5       nU
n[2        R4                  " U
UU R                  5       R                  Xa   U R                  5       U   SS9n[        R                  R7                  U5      Ul        [        R                  R;                  U5        XQ	 Xa	 [        XXg5      $ )Nr   r/   Frc  re  )r½   r5  rÊ   rS   r]   rä   r  r^  r\  r%   r�  ru  rs  rt  rw  r‡  r  r&   rl  r^   ro  rÉ   rI  Úiterr   r2   rv  rp  rÞ   rq  )r¦   rÍ   r?  rë   Úactual_indexrO  Ú
new_striderƒ  Úslice_resultre  Úunbacked_offset_symr  Úbuffers                re   Úselectra  å  s.  € ä
�,Š,�sÓ
€CÜ�<Š<˜Ÿ
™
› SÑ)Ó*€DØ€Lä‡w�w×Ñ×&Ñ&¤u§x¢x°°QÓ'7×8Ñ8Ø‘z‰Ü	
�‰×	Ñ	×	(Ñ	(¬¯ª°#°qÓ)9×	:Ñ	:ØˆàÑÜ$ S×)Ñ)ð �I‰IŒKØ—z‘z“|ˆHØŸ™›ˆJØ!"§¡£×!6Ñ!6¸¹È<Ñ9WÑ!WÐà�Ø�Ü˜a¨:ÓJÐJô " !¨,ÀqÑ8HÐPUÑVˆLÜ˜<Ó-Ð-ô 2Ü	�‰×Ñ×"Ñ"¤A§G¡G×$8Ñ$8×$=Ñ$=Ð>QÑ$RóÐð Ñ(Ð(Ð(ÜÐ Ó! QÓ&Ð9Ð(9Ó9Ð&Ü!¤$Ð'8×'>Ñ'>Ó'@Ó"AÓBÑÐð ‡I�I„KØ�z‰z‹|€HØ—‘“€JØ,ÐÜ×*Ò*ØØØ	�‰‹×ÑØ‰Ø	�
‰
‹�SÑØñ€Fô —'‘'×)Ñ)¨&Ó1€F„KÜ‡G�G×Ñ˜vÔ&àˆØˆÜ�a :ÓBÐBrg   c                ón  • [        XS5      nUn[        U[        [        45      (       d^  U R	                  5       U   n[
        R                  R                  R                  [        XA-   S-
  U5      5      nU/U-  nXES-
  U-  -
  US'   / nSnU H#  nXx-   n	UR                  [        XXySS95        U	nM%     U$ )Nr   r/   rW  Frc  )rh  rk   ri   rŸ   rÊ   rS   r]   rä   r  r)   ro   r‡  )
r¦   r  rÍ   Úsizes_Úx_sizeÚchunksr˜  rx  rë   ry  s
             re   Úsplitrf  &  s¿   € ä
˜ Ó
"€CØ€Fô �eœd¤E˜]×+Ñ+Ø—‘“˜cÑ"ˆÜ—‘×!Ñ!×+Ñ+¬H°V±^ÀaÑ5GÈÓ,OÓPˆØ�˜6Ñ!ˆà¨™z¨UÑ2Ñ2ˆˆr‰
ð €FØ€EÛˆØ‰lˆð 	�‰”f˜Q U°uÑ=Ô>ØŠñ ð €Mrg   c                ó   • [        XU5      $ r—   )rf  )r¦   r  rÍ   s      re   Úsplit_with_sizesrh  A  s   € ä�˜3ÓÐrg   c                óæ   • [        XS5      n[        R                  R                  R	                  U R                  5       U   5      n[        U5       Vs/ s H  n[        XU5      PM     nnU$ s  snf rî  )rh  rS   r]   rä   r  rÊ   r  ra  )r¦   rÍ   rd  rs   r˜  s        re   Úunbindrj  F  s\   € ä
˜ Ó
"€CÜ�W‰W×Ñ×'Ñ'¨¯
©
«°SÑ(9Ó:€FÜ).¨v¬Ó7ª AŒf�Q˜QÖ©€FÐ7Ø€Mùò 8s   ÁA.c                ó6  ^^• U R                  5       n[        U5      n[        XQ5      mUS:X  a  [        [	        U S5      USS9$ UT   n[
        R                  R                  nUR                  X&5        UR                  ST5        [        Xb-
  T5      S-   nUR                  U5      S:”  a,  U R                  UR                  [        X‚-  U5      5      5        / US T QUPUTS-   S  QUPn	UU4S jn
[        [        R                   R#                  X	U
5      5      $ )Nr   F)ry  rd  r/   c                óD   >• U S   U T   T-  -   n/ U S T QUPU TS-   S Q7$ )NrW  r/   rû   )r?  Údim_idxrÍ   rz  s     €€re   rK  Úunfold.<locals>.reindexerd  s?   ø€ Ø�b‘'˜C ™H t™OÑ+ˆØ8��T�c�Ð8˜GÐ8 c¨#°©'°BÐ&7Ñ8Ð8rg   )rÊ   rÉ   r   r‡  r;  rS   r]   rä   Ú	check_leqÚcheck_ltr)   rå   r7  r(   rC   r2   rP  ré   )r¦   Ú	dimensionrë   rz  r  ÚndimÚdim_sizerä   Únew_dim_sizeÚout_sizerK  rÍ   s      `       @re   Úunfoldrv  N  s  ù€ à�J‰J‹L€EÜˆu‹:€DÜ
˜4Ó
+€CàˆqƒyÜ”i  1“o¨4°uÑ=Ð=à�S‰z€HÜ�w‰w×Ñ€HØ×Ñ�tÔ&Ø×Ñ�a˜Ôä˜H™O¨TÓ2°QÑ6€LØ×"Ñ" 8Ó,¨qÓ0Ø	�‰Ø×'Ñ'¬°Ñ0CÀXÓ(NÓOô	
ð E��t˜�ÐD˜lÐD¨U°3¸±7°9Ð-=ÐD¸tÐD€Hö9ô ”R—^‘^×*Ñ*¨1¸	ÓBÓCÐCrg   c                ó¶   • [        XS5      n[        U R                  5       5      nUR                  U[        R
                  R                  5        [        X5      $ rô  )rh  ri   rÊ   Úinsertr½   r1  r2  rÅ  )r¦   rÍ   r  s      re   r;  r;  k  sA   € ä
˜ Ó
"€CÜ�Q—Z‘Z“\Ó"€IØ×Ñ�Sœ%Ÿ'™'Ÿ+™+Ô&Ü�ÓÐrg   c                óš   • [        X5      n[        U [        5      (       d   e[        U[        5      (       d   eUR                  U l        U $ r—   )r;  rk   rC   rm   r!  s      re   Ú
unsqueeze_rz  s  sB   € ä
�AÓ
€CÜ�aœ×#Ñ#Ð#Ð#Ü�cœ9×%Ñ%Ð%Ð%Ø�X‰X€A„FØ€Hrg   c                ó  • [         R                  R                  R                  R	                  [
        R                  " U5      5      n[        U R                  5       5      nUS:  a  XU-   -  nSUs=::  a	  X2-   :  d   e   eU$ rî  )	rS   r]   rä   rl  rM  r½   ÚsympifyrÉ   rÊ   )r¦   rÍ   rt  rr  s       re   rh  rh  |  sn   € Ü
�'‰'×
Ñ
×
$Ñ
$×
2Ñ
2´5·=²=ÀÓ3EÓ
F€CÜˆq�z‰z‹|Ó€DØ
ˆQƒwØ�f‰}ÑˆØ�Õ#�d‘mÓ#Ð#Ñ#Ð#Ð#Ø€Jrg   rW  c                óò   • [        XS5      n[        R                  R                  R	                  U R                  5       U   5      S-  n[        XSUSS9n[        XX"S-  SS9n[        U[        U5      5      $ )Nr   r-   Frc  )	rh  rS   r]   rä   r  rÊ   r‡  rj  Úsigmoid)r¦   rÍ   Únew_lenrñ   r7  s        re   Úglur€  …  sk   € ä
˜ Ó
"€Cä�g‰g×Ñ×(Ñ(¨¯©«°cÑ):Ó;¸qÑ@€Gäˆq�q˜'¨Ñ/€AÜˆq�w¨!¡°5Ñ9€AÜˆq”'˜!“*ÓÐrg   c                óZ   ^ • U(       a  [         R                  T 5        U 4S jnSUl        U$ )Nc                 ó|   >• S n[         R                  " U[        R                  R                  " T/U Q70 UD65      $ )Nc                óp   • [        U [        R                  5      (       a  [        R                  " U 5      $ U $ r—   ©rk   r2   r:   rC   ré   rÀ   s    re   Úwrap_tensorsÚ7fallback_handler.<locals>.handler.<locals>.wrap_tensors•  ó(   € Ü*4°Q¼¿	¹	×*BÑ*B”9×#Ò# AÓ&ÐIÈÐIrg   )rm  Útree_mapr2   ÚFallbackKernelré   )rt   rÿ   r…  Úkernels      €re   ÚhandlerÚ!fallback_handler.<locals>.handler”  s<   ø€ ò	Jô �ŠØœ"×+Ñ+×2Ò2°6ÐK¸DÒKÀFÑKó
ð 	
rg   T)r  r¢   Ú_is_fallback_handler)rŠ  r±  r‹  s   `  re   r¶  r¶  �  s&   ø€ ÞÜ�‰�fÔõ
ð $(€GÔ à€Nrg   c                 ó0   • [         R                  " S5        g )NzjTorchinductor does not support code generation for complex operators. Performance may be worse than eager.)ÚwarningsÚwarnrû   rg   re   Ú_warn_complex_not_supportedr‘  ¢  s   € ä‡M‚MØtõrg   c                óÖ  • U R                  5       (       a  [        5         gU R                  (       a  gU R                  (       a  gU R                  [
        R                  :X  Ga  U(       d  g[        UR                  [
        R                  R                  5      =(       as    UR                  [        R                  R                  [        R                  R                  [        R                  R                  [        R                   R                  4;   =(       dJ    [        UR                  [
        R                  R                  5      =(       a    [#        UR                  5      (       + $ g)z0Do not support reading or writing to this tensorTF)r³  r‘  Úis_metaÚ	is_sparser¸   r{   Úfloat8_e8m0fnurk   ra   r|   r}   rÄ  rÅ  r#  r¹  r�  Ú
_scaled_mmrK   )rw   rc   s     re   Úunsupported_input_tensorr—  «  sá   € à‡|�|‡~�~ä#Ô%Øà‡y‡yØà‡{‡{Øà‡w�w”%×&Ñ&Ô&ÞØô
 �t—{‘{¤E§J¡J×$9Ñ$9Ó:÷ Ø—‘ä—	‘	—‘Ü—‘× Ñ Ü—
‘
×"Ñ"Ü—‘×'Ñ'ð	ñ÷Yô ˜4Ÿ;™;¬¯
©
×(=Ñ(=Ó>×WÄ7È4Ï;É;ÓCWô

ð 
	
ð rg   c                óL  • [         R                  R                  [        R                  R
                  R                  R                  4nUb&  UR                  U;   a  U R                  5       (       a  g[        X5      (       a  gU R                  =(       a    [        R                  $ )z2Do not support writing tensor but can read from itFT)rÄ  rÅ  r¸   r{   rR   r·  r¸  r¹  ra   r³  r—  Úis_cpur0   Údisable_cpp_codegen)rw   rc   Úsupported_complex_viewss      re   Úunsupported_output_tensorrœ  Í  sr   € ô 	�	‰	�‰Ü�	‰	�‰×,Ñ,×4Ñ4ðÐð Ñ˜DŸK™KÐ+BÓBÀqÇ|Á|Ç~Á~ØÜ ×(Ñ(ØØ�8‰8×2œ×2Ñ2Ð2rg   c                ó^  ^ • T R                   [        R                  R                  L a  gT R                  S:X  a  gT R                   [        R
                  R                  L a  gU 4S jn[        R                  " T R                  0 T R                  D6 H  nU" USS9(       d  M    g   U" T SS9$ )NFÚplaceholderc                ó„  >• [        U [        R                  R                  5      (       d  gSU R                  ;  a  g[
        R                  " U R                  S   5       H]  n[        U[        R                  R                  5      (       d  M.  U(       a  [        UT5      (       a    gMJ  [        UT5      (       d  M]    g   g)NFr"  T)rk   r{   ÚfxÚNodero  rm  Útree_leavesÚ_subclassesÚ
FakeTensorrœ  r—  )Úinp_out_nodeÚ	is_outputro  rc   s      €re   Úcheck_skip_conditionÚCfallback_node_due_to_unsupported_type.<locals>.check_skip_conditionæ  s˜   ø€ Ü˜,¬¯©¯©×6Ñ6Øà˜×)Ñ)Ó)Øä×&Ò& |×'8Ñ'8¸Ñ'?Ö@ˆDÜ˜d¤E×$5Ñ$5×$@Ñ$@×AÑAÙæÜ,¨T°4×8Ñ8Ùñ 9ô ,¨D°$×7Ó7Ùñ Að rg   )r¦  T)
ra   rÄ  Úview_as_complexr¹  r`   Úlift_fresh_copyrm  Úarg_tree_leavesrt   rÿ   )rc   Úallow_cpu_inputsr§  rÒ   s   `   re   Ú%fallback_node_due_to_unsupported_typer­  Ú  s“   ø€ à‡{�{”d×*Ñ*×2Ñ2Ò2Øà‡w�w�-ÓØð ‡{�{”d×*Ñ*×2Ñ2Ò2Øõô* ×%Ò% t§y¡yÐ@°D·K±KÔ@ˆÙ ¨u×5Ñ5Ùñ Añ   °Ñ5Ð5rg   c                óZ  ^• [         R                  =(       aF    U [        R                  [        R                  R
                  [        R                  R
                  1;   nU [        ;  d  U(       d  U(       d
   SU  35       eU(       aå  [        [        R                  " S5      5      (       aÁ  [        U /5      (       a°  [         R                  (       a(  U [        R                  R                  R                   ;   ds  U(       dl  [        R"                  R                   R$                  (       a4  S[        R"                  R                   l        [&        R)                  S5        [+        SU  S35      eU4S jn[-        U [        R.                  R0                  5      (       a+  U R3                  5        H  n[5        X5      nU" U5        M     g [-        U [        R.                  R6                  [        R.                  R8                  45      (       a	  U" U 5        g [;        SU  S	[=        U 5       35      e)
Nz*both a fallback and a decomp for same op: ÚCIFznA make_fallback error occurred in suppress_errors config, and suppress_errors is being disabled to surface it.zmake_fallback(a.  ): a decomposition exists, we should switch to it. To fix this error, either add a decomposition to core_aten_decompositions (preferred) or inductor_decompositions, and delete the corresponding `make_fallback` line. Get help from the inductor team if unsure, don't pick arbitrarily to unblock yourself.c                ój   >• [        U 5        Tb  [        U T5        [        U S S9" [        U 5      5      $ ©NrŸ  )r    r©   r,  r¶  )Úop_overloadÚlayout_constraints    €re   Úregister_fallbackÚ(make_fallback.<locals>.register_fallback*	  s8   ø€ Ü! +Ô.ØÑ(Ü! +Ð/@ÔAÜ  À$ÒGÜ˜[Ó)ó
ð 	
rg   zUnsupported fallback z with type )r0   rb  rÄ  ÚaddcmulÚ_foreach_addcmulÚScalarÚ_foreach_addcdivr4   rÃ   ÚosÚgetenvr5   Úfallback_randomr{   Ú_decompÚdecompositions_for_rngÚextra_random_decompsÚ_dynamoÚsuppress_errorsÚlogÚwarningrŒ   rk   r|   r£   r¥   r˜   r}   ÚHigherOrderOperatorÚRuntimeErrorræ   )r`   r³  r�  Úoverride_decompÚskip_decomp_for_precisionr´  Úolr²  s    `      re   Úmake_fallbackrÉ  	  s¡  ø€ ô !'× >Ñ >÷ !À2Ü�‰Ü×Ñ×$Ñ$Ü×Ñ×$Ñ$ðJñ DÐð
 ”^Ó#¦Ö:Sð Ø
4°R°DÐ9óÐSö 	Ü”—’˜4“×!Ñ!Ü ˜t×$Ñ$ô ×"×"Ø”e—m‘m×:Ñ:×OÑOÓOæô �=‰=×Ñ×/×/Ø38ŒE�M‰M× Ñ Ô0Ü�K‰KðHôô Ø˜R˜Dð !fð fó
ð 	
õ
ô �"”e—j‘j×1Ñ1×2Ñ2Ø—,‘,–.ˆBÜ! "›/ˆKÙ˜kÖ*ò !ô 
�BœŸ™×.Ñ.´·
±
×0NÑ0NÐO×	PÑ	PÙ˜"ÕäÐ2°2°$°kÄ$ÀrÃ(ÀÐLÓMÐMrg   c                óP   • SnU  H  nX-  nM	     [        U[        R                  S9$ )z¾
TorchInductor offset calculation differs from PyTorch eager offset
calculation for random ops (tl.rand vs torch.rand). In future, we should
strive for same impl for tl.rand and torch.rand.
r/   r·   ©Útensorr{   r¢  )r<  Únumelrê   s      re   Úphilox_rand_offsetrÎ  <	  s+   € ð €EÛˆØ‘	Šñ ä�%œuŸ{™{Ñ+Ð+rg   c                ó@  ^^	^
^• [         R                  " UTU [         R                  R                  U 5      5      R	                  5       m
UR                  5       mUR                  5       m	UU	U
U4S jn[        R                  " UTU[        U 5      S9n[        U 5      nXx4$ )Nc                óŒ  >• [         R                  " T" / 5      [        R                  5      n[         R                  " T" / 5      [        R                  5      n[         R                  " [         R
                  " T" U 5      [        R                  5      U5      n[         R                  " UU5      n[         R                  " UT5      $ r—   )rR   rö   r{   rû  r¢   r¡  Úrand)	rC  Úseed_index_exprÚoffset_index_exprÚrand_index_exprr˜  r¸   Úoffset_loaderÚ
random_posÚseed_loaders	        €€€€re   rg  Úphilox_rand.<locals>.inner_fnU	  sˆ   ø€ ô Ÿ,š,¡{°2£¼¿¹ÓDˆÜŸLšL©°rÓ):¼E¿K¹KÓHÐäŸ'š'Ü�NŠN™: eÓ,¬e¯k©kÓ:Ð<Mó
ˆô —’ØØó
ˆô �|Š|˜F EÓ*Ð*rg   ri  )
r2   rŽ  ÚFlexibleLayoutÚcontiguous_stridesÚmake_indexerrk  r@   ré   ri   rÎ  )rë   Úseedrt  r�  rv   r¸   rg  Úrandom_values_nodeÚoffset_noderÕ  rÖ  r×  s        `   @@@re   Úphilox_randrß  H	  sœ   û€ ô —’ØØØÜ
×Ñ×,Ñ,¨TÓ2ó	÷
 �lƒnð ð ×"Ñ"Ó$€KØ×&Ñ&Ó(€M÷+ð +ô #×)Ò)ØØØÜ�D‹zñ	Ðô % TÓ*€KØÐ*Ð*rg   c           	     óú   • [         R                  (       a\  [        R                  " [        R
                  [        R                  R                  [        R                  R                  XU5      5      $ [        S5      e)Nz&should be handled in replace_random.py)r0   r¼  rm  rˆ  rC   ré   r2   r‰  rÄ  Únative_dropoutr¹  rŒ   )r¦   ÚpÚtrains      re   rá  rá  o	  sW   € ä××Ü�ŠÜ×ÑÜ×Ñ×$Ñ$¤T×%8Ñ%8×%@Ñ%@À!ÈÓNó
ð 	
ô
 ÐEÓFÐFrg   c                ó’  • [         R                  (       d/  U R                  5       [        R                  " S5      :X  d   S5       eU R                  5         [        U5      S:X  d  [        US   [        5      (       a  [        R                  R                  O[        R                  R                  n[        R                  " X /UQ76   U $ )Nrâ   úTthis should be handled in decomps unless config.fallback_random or the device is CPUr   )r0   r¼  rn   r{   rv   r�  rÉ   rk   r=  rÄ  Ú
bernoulli_ÚTensorr2   ÚInplaceBernoulliFallback)r¦   rt   r²  s      re   ræ  ræ  z	  s”   € ä×!×! Q§\¡\£^´u·|²|ÀEÓ7JÓ%Jð Ø^óÐJð ‡I�I„Kô ˆt‹9˜‹>œZ¨¨Q©´×7Ñ7ô 	�‰×Òä�_‰_×#Ñ#ð ô
 ×Ò Ð6°Ó6Ø€Hrg   c                ó´   • [         R                  (       d/  U R                  5       [        R                  " S5      :X  d   S5       e[        [        U 5      /UQ76 $ )Nrâ   rå  )r0   r¼  rn   r{   rv   ræ  r�  )r¦   rt   s     re   Úbernoulli_prê  ‰	  sG   € ä×!×! Q§\¡\£^´u·|²|ÀEÓ7JÓ%Jð Ø^óÐJô ”e˜A“hÐ& Ò&Ð&rg   c                ó   • [         er—   ©rŒ   )r  s    re   Ú_foobarrí  ’	  s   € ä
Ðrg   c                ó.   • [         R                  S5        g )Nz1using triton random, expect difference from eager)rÂ  Úinfo)Úsalts    re   Ú_warn_triton_randomrñ  —	  s   € ä‡H�HÐ@ÕArg   c                 óJ   • [        [        R                  R                  5        g r—   )rñ  rS   r]   Úcreation_timerû   rg   re   Úwarn_triton_randomrô  œ	  s   € äœŸ™×-Ñ-Õ.rg   c                 ó¶   • UR                  S5      b  [        U 0 UD6$ [        R                  (       a  UR	                  SS 5        [        U 0 UD6$ [        S5      e©NÚ	generatorz-should have been handled in replace_random.py)rp  Úfallback_rand_generatorr0   r¼  ÚpopÚfallback_rand_defaultrŒ   ©rt   rÿ   s     re   rÑ  rÑ  ¬	  sT   € à‡z�z�+ÓÑ*Ü&¨Ð7°Ñ7Ð7Ü	×	×	Ø�
‰
�; Ô%Ü$ dÐ5¨fÑ5Ð5Ü
ÐHÓ
IÐIrg   c                 ó¶   • UR                  S5      b  [        U 0 UD6$ [        R                  (       a  UR	                  SS 5        [        U 0 UD6$ [        S5      erö  )rp  Úfallback_randn_generatorr0   r¼  rù  Úfallback_randn_defaultrŒ   rû  s     re   Úrandnrÿ  ¶	  sT   € à‡z�z�+ÓÑ*Ü'¨Ð8°Ñ8Ð8Ü	×	×	Ø�
‰
�; Ô%Ü% tÐ6¨vÑ6Ð6Ü
ÐHÓ
IÐIrg   c                ól   • [         R                  " U5      n[         R                  R                  X5      $ r—   )r2   Úget_stride_orderÚExternKernelÚrequire_stride_order)Úinput_tensorr�  Ústride_orders      re   Úinductor_force_stride_orderr  À	  s'   € ä×&Ò& vÓ.€LÜ�?‰?×/Ñ/°ÓKÐKrg   c                ó   • [        S5      e)Nz.should be handled in fuse_seed_creation_pass()rì  )rv   s    re   Úinductor_seedr  Æ	  s   € ä
ÐIÓ
JÐJrg   c                ó~   • [        5         [        R                  " [        R                  " U [        U5      5      5      $ r—   )rô  rC   ré   r2   ÚRandomSeedsrG   )r  rv   s     re   Úinductor_seedsr  Ë	  s)   € äÔÜ×ÒœBŸNšN¨5´-ÀÓ2GÓHÓIÐIrg   c                óz   ^ ^• UU 4S jn[         R                  " T R                  5       T R                  5       U/ S9$ )Nc                óN   >• [         R                  " TR                  5       T5      $ r—   )rR   Ú	load_seedÚget_name)r  rC  Úseedss    €€re   rg  Ú&inductor_lookup_seed.<locals>.inner_fnÓ	  s   ø€ Ü�}Š}˜UŸ^™^Ó-¨uÓ5Ð5rg   ri  )r@   ré   rn   r¼   )r  rC  rg  s   `` re   Úinductor_lookup_seedr  Ñ	  s9   ù€ ö6ô ×ÒØ×ÑÓ!Ø�o‰oÓØØñ	ð rg   ©rt  c               ó˜  ^^^	• [         R                  (       a   eTS;   d   e/ U Qn [        R                  nUR	                  5       n[
        R                  " XTU [
        R                  R                  U 5      US9R                  5       mUR                  5       m	UUU	4S jn[        R                  " UUU/ U QS9nUR                  5         U$ )N)rÑ  rÿ  r  c                ó�   >• [        [        T5      " T" / 5      [        R                  " T" U 5      [        R                  5      5      $ r—   )r˜   rR   r¡  r{   rû  )rC  ÚmoderÖ  r×  s    €€€re   rg  Ú!inductor_random.<locals>.inner_fnê	  s5   ø€ Ü”s˜DÔ!Ù˜‹OÜ�NŠN™: eÓ,¬e¯k©kÓ:ó
ð 	
rg   ri  )r0   r¼  r{   ræ  rJ  r2   rŽ  rÙ  rÚ  rÛ  rk  r@   ré   r�  )
rë   rÜ  r  rt  r¸   rv   rg  r˜  rÖ  r×  s
     `     @@re   Úinductor_randomr  Þ	  s¼   ú€ ä×%×%Ð%Ð%ØÐ$Ó$Ð$Ð$ØˆTˆ7€DÜ�M‰M€EØ×%Ñ%Ó'€FÜ—’Ø�tœR×.Ñ.×AÑAÀ$ÓGÐPVñç�lƒnð ð ×"Ñ"Ó$€K÷
ô ×ÒØØØØ�ˆwñ	€Fð ‡N�NÔØ€Mrg   c               óh  ^ ^^^	• [         R                  (       a   e/ UQn[        R                  nUR	                  5       n[
        R                  " XeU[
        R                  R                  U5      US9R                  5       mUR                  5       m	UU UU	4S jn[        R                  " UUU/ UQS9$ )Nr  c           	     ó   >• [         R                  " T" / 5      [         R                  " T" U 5      [        R                  5      [         R                  " T[        R
                  5      [         R                  " T[        R
                  5      5      $ r—   )rR   Ú	randint64r¡  r{   rû  r¢  )rC  ÚhighÚlowrÖ  r×  s    €€€€re   rg  Ú"inductor_randint.<locals>.inner_fn
  sV   ø€ Ü�}Š}Ù˜‹OÜ�NŠN™: eÓ,¬e¯k©kÓ:Ü�NŠN˜3¤§¡Ó,Ü�NŠN˜4¤§¡Ó-ó	
ð 	
rg   ri  )r0   r¼  r{   r¢  rJ  r2   rŽ  rÙ  rÚ  rÛ  rk  r@   ré   )
r  r  rë   rÜ  rt  r¸   rv   rg  rÖ  r×  s
   ``      @@re   Úinductor_randintr  ú	  s¦   û€ ô ×%×%Ð%Ð%ØˆTˆ7€DÜ�K‰K€EØ×%Ñ%Ó'€FÜ—’Ø�tœR×.Ñ.×AÑAÀ$ÓGÐPVñç�lƒnð ð ×"Ñ"Ó$€K÷
ð 
ô ×ÒØØØØ�ˆwñ	ð rg   c                ó¸   • U R                  5       nU R                  5       n[        S [        X5       5       5      US   -   nU R	                  5       US   UUS   4$ )Nc              3  ó6   #   • U  H  u  pUS -
  U-  v •  M     g7frF  rû   )r™   rê   Ústs      re   r›   Ú%_boundaries_helper.<locals>.<genexpr>
  s   é € ÐAÒ/@¡e a�a˜!‘e˜r–\Ò/@ùs   ‚rW  )rÊ   ru  Úsumr  r  )Útbrë   r�  Ú
max_offsets       re   Ú_boundaries_helperr'  
  s\   € ð
 �;‰;‹=€DØ�]‰]‹_€FÜÑA¬s°4Ô/@ÓAÓAÀFÈ2ÁJÑN€Jà
�‰‹ØˆR‰ØØˆr‰
ð	ð rg   c                óH   • U R                  5       U R                  5       S   4$ r:  )r  ru  ©r%  s    re   Ú_sorter_helperr*  '
  s   € Ø�;‰;‹=˜"Ÿ-™-›/¨"Ñ-Ð-Ð-rg   ©Ú	out_int32ÚrightÚsideÚsorterc          	     óp  ^ ^^^
^• S nU" T 5      (       a  U" U5      (       a  Tb8  U" T5      (       d+  [        [        R                  R                  SS9" T UUTUTS9$ Ub  US:X  a  SmU(       a  [        R
                  O[        R                  m
UR                  5       mT R                  5         Tb  TR                  5         [        T R                  5       5      S:X  a  U
UU UU4S jnO
U
UU UU4S	 jnUR                  5       n[        R                  " UT
UUR                  S
9n	U	R                  5         U	$ )Nc                ó^   • [         R                  R                  U [        R                  5      $ r—   )rS   r]   rŒ  r�  Ú	BUCKETIZEr)  s    re   rZ  Úsearchsorted.<locals>.<lambda>5
  s   € ¤A§G¡G×$7Ñ$7Ø
ŒN×$Ñ$ô%rg   Fr°  r+  r-  Tr/   c           
     ó„   >• T" U 5      n[         R                  " U[        T5      STTTc  S O
[        T5      Tc  S S9$ SS9$ )Nr   ©r/  Úsorter_indices©rR   Ú	bucketizer'  r*  )r?  r"  Úindex_dtyper-  Úsorted_sequencer/  Úvalues_loaders     €€€€€re   rg  Úsearchsorted.<locals>.inner_fnZ
  sV   ø€ Ù Ó$ˆCÜ—=’=ØÜ" ?Ó3ØØØØ%™~‘t´>À&Ó3IØ'-¡~˜tñð ð <=ñð rg   c                ó°   >^ • T" T 5      nSU U4S jjn[         R                  " U[        T5      U" T5      TTTc  S O
[        T5      Tc  S S9$ U" T5      S9$ )Nc                óÆ   >• U R                  5       n[        R                  " [        R                  " [
        R                  S [        US S TS S 5       5       5      T5      $ )Nc              3  ó.   #   • U  H  u  pX-  v •  M     g 7fr—   rû   )r™   rê   rs   s      re   r›   ÚNsearchsorted.<locals>.inner_fn.<locals>.get_flattened_index.<locals>.<genexpr>q
  s   é € Ð&UÒ9T±° q¦uÒ9Tùó   ‚rW  )ru  rR   r¡  r  r  Úoperatorr¢   r  )r%  Ústridesr?  r9  s     €€re   Úget_flattened_indexÚ;searchsorted.<locals>.inner_fn.<locals>.get_flattened_indexm
  sU   ø€ ØŸ-™-›/�Ü—~’~Ü×$Ò$Ü Ÿ™Ñ&U¼¸WÀSÀb¸\È3ÈsÐPRÈ8Ô9TÓ&Uóð  ó	ð rg   r5  )r%  rC   r7  )r?  r"  rD  r9  r-  r:  r/  r;  s   `  €€€€€re   rg  r<  h
  sm   ù€ Ù Ó$ˆC÷ð ô —=’=ØÜ" ?Ó3Ù# OÓ4ØØØ%™~‘t´>À&Ó3IØ'-¡~˜tñð ñ <OÈvÓ;Vñð rg   ri  )r¶  rÄ  Úsearchsortedrç  r{   rû  r¢  rk  r�  rÉ   rÊ   rn   r@   ré   r<  )r:  Úselfr,  r-  r.  r/  Úvalidate_bucketizerg  rv   r˜  r9  r;  s   `  ` `    @@re   rF  rF  +
  s  ü€ ñÐñ ˜×/Ñ/Ù! $×'Ñ'ØÑÑ'9¸&×'AÑ'Aä¤× 1Ñ 1× 8Ñ 8ÈeÒTØØØØØØñ
ð 	
ð Ñ˜D G›OØˆæ!*”%—+’+´·±€KØ×$Ñ$Ó&€Mð ×ÑÔàÑØ�‰Ôä
ˆ?×#Ñ#Ó%Ó&¨!Ó+÷
	ò 
	÷	ñ 	ð0 �_‰_Ó€FÜ×ÒØØØØ�z‰zñ	€Fð ‡N�NÔà€Mrg   ©r,  r-  c               ó”  ^^^^• [        TR                  5       5      S:X  d   e[        R                  R	                  U [
        R                  5      (       a3  [        R                  R	                  T[
        R                  5      (       d)  [        [        R                  R                  SS9" U TUTS9$ TR                  5         U R                  5       nU R                  5       mU(       a  [        R                  O[        R                   mUUUU4S jn["        R$                  " UTUU R                  5       S9nUR                  5         U$ )Nr/   Fr°  rI  c                ó^   >• T" U 5      n[         R                  " U[        T5      STT5      nU$ rî  )rR   r8  r'  )rC  r"  r  Ú
boundariesr9  rÅ  r-  s      €€€€re   rg  Úbucketize.<locals>.inner_fn«
  s6   ø€ Ù˜5Ó!ˆÜ—-’-ØÜ˜zÓ*ØØØó
ˆð ˆrg   ri  )rÉ   rÊ   rS   r]   rŒ  r�  r2  r¶  rÄ  r8  rç  r�  rn   rk  r{   rû  r¢  r@   ré   )	r‚  rL  r,  r-  rv   rg  r˜  r9  rÅ  s	    ` `   @@re   r8  r8  �
  sÿ   û€ ô ˆz×"Ñ"Ó$Ó%¨Ó*Ð*Ð*ô 	
�‰×Ñ˜E¤>×#;Ñ#;×<Ñ<Ü�G‰G×Ñ 
¬N×,DÑ,D×EÑEä¤§¡× 5Ñ 5È5ÒQØ�:¨¸%ñ
ð 	
ð ×ÑÔØ×ÑÓ€FØ×$Ñ$Ó&€Læ!*”%—+’+´·±€K÷
ð 
ô ×ÒØØØØ�~‰~Óñ	€Fð ‡N�NÔà€Mrg   c                óŠ   • [         R                  " [        R                  [        R                  R
                  X45      u  pX4$ r—   )rm  Útree_map_onlyr2   r:   r  Úrequire_stride1©r  rt   rÿ   s      re   Úrequire_denserR  Ê
  s5   € Ü×'Ò'Ü
�	‰	”2—?‘?×2Ñ2°T°Nó�L€Dð ˆ<Ðrg   c                óŠ   • [         R                  " [        R                  [        R                  R
                  X45      u  pX4$ r—   )rm  rO  r2   r:   r  Úrequire_contiguousrQ  s      re   rT  rT  Ñ
  s5   € Ü×'Ò'Ü
�	‰	”2—?‘?×5Ñ5¸°~ó�L€Dð ˆ<Ðrg   c                óŠ   • [         R                  " [        R                  [        R                  R
                  X45      u  pX4$ r—   )rm  rO  r2   r:   r  rˆ   rQ  s      re   rˆ   rˆ   Ø
  s7   € ô ×'Ò'Ü
�	‰	”2—?‘?×=Ñ=À¸~ó�L€Dð ˆ<Ðrg   c                óŠ   • [         R                  " [        R                  [        R                  R
                  X45      u  pX4$ r—   )rm  rO  r2   r:   r  r5  rQ  s      re   r5  r5  á
  s5   € Ü×'Ò'Ü
�	‰	”2—?‘?×8Ñ8¸4¸.ó�L€Dð ˆ<Ðrg   c           	     óÄ  • Uc  U $ [        U[        5      (       a  U $ [        U [        R                  5      (       a-  [        R                  R                  XR                  5       5      $ [        U [        5      (       a!  U  Vs0 s H  o"[        X   X   5      _M     sn$ [        U [        [        45      (       a!  [        U 5      " S [        X5       5       5      $ U $ s  snf )Nc              3  ó<   #   • U  H  u  p[        X5      v •  M     g 7fr—   ©Úconstrain_to_fake_tensor)r™   rñ   Úf_as      re   r›   Ú+constrain_to_fake_tensor.<locals>.<genexpr>ò
  s   é € ð 
Ú=O±°!Ô$ Q×,Ð,Ò=Oùó   ‚)rk   r   r2   r:   r  Úrequire_exact_stridesr�  r  rZ  rŸ   ri   ræ   r  )rÒ   Úfake_argÚkeys      re   rZ  rZ  è
  sÁ   € ØÑØˆ
Ü�(Ô,×-Ñ-Øˆ
Ü�#”r—y‘y×!Ñ!Ü�‰×4Ñ4°S¿/¹/Ó:KÓLÐLÜ�#”t×ÑÙRUÓVÒRUÈ3Ô-¨c©h¸¹ÓFÒFÑRUÑVÐVÜ	�Cœ%¤˜×	'Ñ	'Ü�CŒyñ 
Ü=@ÀÔ=Oó
ó 
ð 	
ð €Jùò Ws   ÂCc           
     ó¬   • [        S [        X5       5       5      n UR                  5        VVs0 s H  u  pEU[        XSU   5      _M     nnnX4$ s  snnf )Nc              3  ó<   #   • U  H  u  p[        X5      v •  M     g 7fr—   rY  )r™   rÒ   r_  s      re   r›   Ú,constrain_to_fake_tensors.<locals>.<genexpr>ù
  s!   é € ð â1‰MˆCô 	! ×/Ð/Ú1ùr]  )rŸ   r  r   rZ  )rt   rÿ   Ú	fake_argsÚfake_kwargsrþ   r  s         re   r†   r†   ø
  s[   € Üñ ä  Ô1óó €Dð JPÏÉÌÔXÊÁÀˆaÔ)¨!¸©^Ó<Ò<É€FÑXØˆ<Ðùó Ys   ¯Ac           
     óâ   ^• U4S jm[        U4S j[        XR                  5       5       5      nUR                  5        VVs0 s H  u  p4UT" X@R                  U   5      _M     nnnX4$ s  snnf )Nc           	     óœ  >• [        U [        R                  5      (       as  [        R                  " UR                  S   R                  5       [        R                  R                  R                  5      n[        R                  R                  X5      $ [        U [        5      (       a  U  Vs0 s H  o3T" X   X   5      _M     sn$ U $ s  snf ©Nr"  )rk   r2   r:   r  ro  r�  rS   r]   rä   rl  r  r  r  )rÒ   Úfx_argr  r`  Úapply_constraints       €re   rj  Ú1constrain_to_fx_strides.<locals>.apply_constraint  sž   ø€ Ü�cœ2Ÿ9™9×%Ñ%Ü×.Ò.Ø—‘˜EÑ"×)Ñ)Ó+¬Q¯W©W×-=Ñ-=×-GÑ-GóˆLô —?‘?×7Ñ7¸ÓJÐJÜ�cœ4× Ñ ÙLOÓPÊCÀSÑ)¨#©(°F±KÓ@Ò@ÉCÑPÐPØˆ
ùò Qs   Â-C	c              3  ó8   >#   • U  H  u  pT" X5      v •  M     g 7fr—   rû   )r™   rÒ   ri  rj  s      €re   r›   Ú*constrain_to_fx_strides.<locals>.<genexpr>  s    øé € ð Ú9P©+¨#Ñ˜×%Ð%Ò9Pùs   ƒ)rŸ   r  rt   r   rÿ   ©Úfx_nodert   rÿ   rþ   r  rj  s        @re   rŠ   rŠ     sl   ø€ õô ô Ü9<¸TÇ<Á<Ô9Póó €Dð EKÇLÁLÄNÔSÂN¹D¸AˆaÑ! !§^¡^°AÑ%6Ó7Ò7ÁN€FÑSØˆ<Ðùó Ts   Á"A+c                óü   ^ ^• U 4S jm[        U4S j[        [        UT R                  5      5       5       5      nUR	                  5        VVs0 s H  u  p4UT" SUT R
                  U   5      _M     nnnX4$ s  snnf )Nc           
     óš  >^• [        U[        R                  5      (       d  U$ UR                  S   nUR	                  5        Vs/ s H:  n[        U[
        R                  5      (       a  UR                  R                  OUPM<     nn[        R                  R                  R                  n[        R                  " UR	                  5       U5      nU(       a=  US   S:w  a4  [        [        [!        [#        UR%                  5       5      5      5      5      nTR&                  [(        R*                  R,                  :X  a  U S;   a  [#        U5      S:X  d   eSnUR.                  (       d  [        R0                  R3                  X5      $ SmTR&                  [
        R4                  R(                  R6                  R,                  :H  =(       a    U S:H  n[        U[8        5      (       d   e[#        UR%                  5       5      S	;  a  U$ [        R:                  " UT5      n	U	(       a4  [        R<                  " [        R0                  R?                  U5      U5      $ [        U[        5      (       aL  URA                  5       b;  U	(       a4  [        R<                  " [        R0                  R?                  U5      U5      $ U(       GaÂ  [        UR%                  5       5      n
/ nURA                  5       n[!        [#        UR%                  5       5      S
-
  5       H}  n[        R                  R                  RC                  X]   S5      (       d8  Uc  M9  [        R                  R                  RC                  XÍ   S5      (       d  Ml  URE                  U5        M     S/[#        U
5      -  nS
US'   S
n[!        [#        U
5      S-
  SS5       HŸ  nXíS
-      S:w  a
  XúUS
-      -  nXÛ;   a=  [        R                  R                  RC                  XíS
-      T-  S5      (       a  SXí'   MZ  [        R                  R                  RC                  UT-  S5      (       d  [G        UT5      T-  nXþU'   M¡     [        R0                  RI                  X5      $ U	(       a4  [        R<                  " [        R0                  R?                  U5      U5      $ [        U[        5      (       aL  URA                  5       b;  U	(       a4  [        R<                  " [        R0                  R?                  U5      U5      $ U4S jn[        URJ                  [        RL                  5      (       a\  U" U5      (       dO  U" URO                  5       5      (       a4  [        R<                  " [        R0                  R?                  U5      U5      $ [        R0                  R3                  X5      $ s  snf )Nr"  rW  r   )r   r¬   r«   )rª   r/   r-   r   r¯   rª   ©rª   r«   r/   r-   c                ó¶   >• [         R                  R                  R                  [        R
                  " [        U R                  5       S   T5      S5      5      $ )NrW  r   )rS   r]   rä   r  r½   r  r+   rÊ   )r¦   Ú	ALIGNMENTs    €re   Ú
is_alignedÚ=sdpa_constraint.<locals>.apply_constraint.<locals>.is_aligned†  s@   ø€ Ü—7‘7×#Ñ#×2Ñ2Ü—’œ˜QŸZ™Z›\¨"Ñ-¨yÓ9¸1Ó=óð rg   )(rk   r2   r:   ro  r�  r{   ÚSymIntrc   ÚexprrS   r]   rä   rl  r  ri   r0  r  rÉ   rÊ   ra   rÄ  Ú0_scaled_dot_product_efficient_attention_backwardr¹  Úis_cudar  r  rR   Ú'_scaled_dot_product_efficient_attentionrC   Úis_aligned_realized_tensorÚtry_match_insignificant_stridesÚrealize_inputÚmaybe_get_strideÚstatically_known_equalsro   rF   r^  rm   r6   r‹  )r?  rÒ   ri  Úmeta_valrê   Úmeta_stride_exprrl  r  Úeffn_attn_fwd_biasÚis_aligned_tensorru  Úexpanded_dimsÚmaybe_striders   Úout_stridesr�  ru  rt  ro  s                    @€re   rj  Ú)sdpa_constraint.<locals>.apply_constraint  s“  ù€ Ü˜#œrŸy™y×)Ñ)ØˆJà—;‘;˜uÑ%ˆàGOÇÁÔGXó
ÚGXÀ!œ: a¬¯©×6Ñ6ˆA�F‰F�KŠK¸AÒ=ÑGXð 	ð 
ô —G‘G×$Ñ$×.Ñ.ˆ	Ü×*Ò*¨8¯?©?Ó+<¸iÓHˆæ˜L¨Ñ,°Ó1ä¤¬¬s°3·<±<³>Ó/BÓ)CÓ DÓEˆLð �N‰NÜ×DÑD×LÑLóMà�v“ä�|Ó$¨Ó)Ð)Ð)ð
 (ˆLà××Ü—?‘?×7Ñ7¸ÓJÐJð ˆ	ð �N‰NÜ�y‰y�~‰~×EÑE×MÑMñN÷ à�q‘ð 	ô ˜#œy×)Ñ)Ð)Ð)Üˆs�|‰|‹~Ó fÓ,ØˆJä×9Ò9¸#¸yÓIÐÞÜ×5Ò5Ü—‘×-Ñ-¨cÓ2Ð4Dóð ô
 �sœF×#Ñ#Ø×$Ñ$Ó&Ñ2Þ!ä×5Ò5Ü—‘×-Ñ-¨cÓ2Ð4Dóð ÷ Ü˜CŸL™L›NÓ+ˆHàˆMð ×/Ñ/Ó1ˆLÜœ3˜sŸ|™|›~Ó.°Ñ2Ö3�Ü—7‘7×#Ñ#×;Ñ;Ð<LÑ<OÐQR×SÑSØ Ó,ÜŸ™×(Ñ(×@Ñ@ÀÁÐRS×TÓTà!×(Ñ(¨Ö+ñ 4ð ˜$¤ X£Ñ.ˆKØˆK˜‰OØˆFÜœ3˜x›=¨1Ñ,¨b°"Ö5�Ø 1™uÑ%¨Ó*Ø#¨q°1©u¡oÑ5�Fð Ó%Ü—w‘w×'Ñ'×?Ñ?Ø#¨¡EÑ*¨YÑ6¸÷ñ ð *+˜™Ù ä—w‘w×'Ñ'×?Ñ?ÀÈÑ@RÐTU×VÑVÜ$ V¨YÓ7¸)ÑC�Fà!'˜A“ñ! 6ô$ —?‘?×8Ñ8¸ÓJÐJæÜ×5Ò5Ü—‘×-Ñ-¨cÓ2Ð4Dóð ô
 �sœF×#Ñ#Ø×$Ñ$Ó&Ñ2Þ!ä×5Ò5Ü—‘×-Ñ-¨cÓ2Ð4Dóð õ	ô
 �c—h‘h¤§¡×,Ñ,Ù˜c—?‘?Ù˜cŸo™oÓ/×0Ñ0Ü×=Ò=ÜŸ™×5Ñ5°cÓ:Ð<Lóð ô �‰×3Ñ3°CÓFÐFùòo
s   ÁAWc              3  ó@   >#   • U  H  u  nu  p#T" XU5      v •  M     g 7fr—   rû   )r™   r?  rÒ   ri  rj  s       €re   r›   Ú"sdpa_constraint.<locals>.<genexpr>”  s)   øé € ð â"DÑˆC‘�#ñ 	˜ 6×*Ð*Ú"Dùs   ƒrW  )rŸ   rj   r  rt   r   rÿ   rn  s   `    @re   Úsdpa_constraintr‹    sz   ù€ õ|Gô| ô ä"+¬C°°g·l±lÓ,CÔ"Dóó €Dð IOÏÉÌÔWÊÁÀˆaÑ! " a¨¯©¸Ñ):Ó;Ò;É€FÑWØˆ<Ðùó Xs   Á$A8)r�  )rÆ  c                ó  • [        U[        R                  5      (       d&  [        XR	                  5       U R                  5       S9nUnU R                  5       UR                  5       :w  a  [        X0R                  5       5      nU R	                  5       UR	                  5       :w  a  [        X0R	                  5       5      nU R                  5       UR                  5       :w  a$  [        X0R                  5       5      n[        U5      $ [        U5      $ ©NrD  )rk   r2   r:   rÌ  r¼   rn   rÐ  rö   rÊ   r5  r�  )rG  rX  rÎ  r¦   rq   s        re   rž  rž  ~  s¶   € ä�cœ2Ÿ9™9×%Ñ%Ü�S§¡Ó 0¸¿¹Ó9JÑKˆØ€AØ‡�Ó˜CŸN™NÓ,Ó,Ü�aŸ™Ó*Ó+ˆØ‡~�~Ó˜3Ÿ=™=›?Ó*Ü�QŸ™Ó(Ó)ˆà‡}�}ƒ˜#Ÿ,™,›.Ó(Ü�QŸ™›Ó(ˆÜ�S‹zÐÜ�‹8€Org   )Úmemory_formatc          	     ó²   • [         R                  " U R                  5       U R                  5       U R	                  5       [        U R                  5       5      S9$ ©Nri  )r@   ré   rn   r¼   rk  ri   rÊ   )r¦   rŽ  s     re   r�  r�  Ž  s@   € ô ×ÒØ�|‰|‹~Ø�k‰k‹mØ—‘“Ü�A—J‘J“LÓ!ñ	ð rg   c                ó"  • / n[        U [        5      (       a«  [        U R                  [        R                  5      (       a‚  U R                  n [        U [        R                  5      (       aL  UR                  U R                  5       5        U R                  n [        U [        R                  5      (       a  ML  [        U 5      n [        U 5      n U(       a:  U R                  n US S S2    H  n[        R                  " XS9n M     [        U 5      n U $ )NrW  r‰  )rk   rC   rm   r2   rã   ro   rs  r�  )r¦   Úreinterpret_view_layoutsrŠ  s      re   Úclone_preserve_reinterpret_viewr“  ™  sÊ   € Ø!ÐÜ�!”Y×Ñ¤J¨q¯v©v´r×7IÑ7I×$JÑ$JØ�F‰Fˆä˜œB×.Ñ.×/Ñ/Ø$×+Ñ+¨A¯L©L«NÔ;Ø—‘ˆAô ˜œB×.Ñ.×/Ó/ô �a‹Lˆäˆa‹€AæØ�F‰FˆØ.©t°¨tÔ4ˆFÜ×"Ò"¨Ñ9ŠAñ 5ä�a‹Lˆà€Hrg   rª  c               óZ   ^^^• UUU4S jn[         R                  " [        U5      TUU /S9$ )Nc                ó@   >• [         R                  " TU S   -  T-   TS9$ )Nr   r·   ©rR   r¡  )rC  r¸   rx  rz  s    €€€re   r   Úiota.<locals>.fn¼  s!   ø€ Ü�~Š~˜d U¨1¡X™o°Ñ5¸UÑCÐCrg   ri  )r@   ré   rG   )Úlengthrx  rz  r¸   rv   Úrequires_gradr   s    ```   re   Úiotarš  ²  s1   ú€ ÷Dô ×ÒÜ˜VÓ$ØØØˆxñ	ð rg   c           	     óà  ^^^^• [        XR                  5       5      nU R                  5       m[        U TS5      m[        R
                  R                  R                  [        R                  " TS5      5      (       a  TU R                  5       T   -   mOo[        R
                  R                  R                  [        R                  " TS5      5      (       a  O+[        [        R                  R                  5      " XTT5      $ [        R
                  R                  R!                  ST5        [        R
                  R                  R#                  TU R                  5       T   5        [%        ['        UT5      U R                  5       5      nUR                  5       mUUUU4S jn[(        R*                  " U R-                  5       U R                  5       U[/        U R                  5       5      S9$ )Nr   c           	     ó  >• [         R                  " [         R                  " [         R                  " U T   [        R
                  5      [         R                  " T[        R
                  5      5      T" U 5      T" U 5      5      $ r—   )rR   r  Úeqr¡  r{   rû  )r?  rÍ   rC  Ú
src_loaderrL  s    €€€€re   rg  Ú select_scatter.<locals>.inner_fnÙ  sX   ø€ Ü�yŠyÜ�FŠFÜ—’˜s 3™x¬¯©Ó5Ü—’˜u¤e§k¡kÓ2óñ �s‹OÙ�S‹Mó
ð 	
rg   ri  )rö   r¼   rk  rh  rS   r]   rä   r  r½   r^  rÊ   r\  r¶  rÄ  Úselect_scatterr¹  ro  rp  r5  r;  r@   ré   rn   ri   )r¦   rX  rÍ   rC  rg  rž  rL  s     `` @@re   r   r   Ç  sX  û€ ä
�3Ÿ™›Ó
&€CØ�}‰}‹€HÜ
˜˜3 Ó
"€CÜ‡w�w×Ñ×&Ñ&¤u§x¢x°°qÓ'9×:Ñ:Ø˜Ÿ
™
› SÑ)Ñ)‰Ü	
�‰×	Ñ	×	(Ñ	(¬¯ª°%¸Ó);×	<Ñ	<Øô  ¤× 3Ñ 3× ;Ñ ;Ô<¸QÀSÈ%ÓPÐPä‡G�G×Ñ×Ñ˜q %Ô(Ü‡G�G×Ñ×Ñ˜e Q§Z¡Z£\°#Ñ%6Ô7Ü
”˜3 Ó$ a§j¡j£lÓ
3€CØ—‘Ó"€J÷
ð 
ô ×ÒØ�|‰|‹~Ø�k‰k‹mØÜ�A—J‘J“LÓ!ñ	ð rg   c           	     ó6  ^ ^^^^^^	^
• [        UT R                  5       5      nT R                  5       m
[        T TS5      mT R	                  5       T   m[
        R                  R                  T TTT5      u  mm[        T R	                  5       5      n[        TT-
  TS-
  -   T5      UT'   [        X5      nUR                  5       m	UUUU	UUU U
4S jn[        R                  " T R                  5       T R                  5       U[        T R	                  5       5      S9$ )Nr   r/   c                óV  >^• T	S:X  a  TT:X  a  T
S:X  a  T" U 5      $ [         R                  " U T   [        R                  5      n[	        U 5      m[        U T   T	-
  T
5      TT'   / nT	S:w  a]  UR                  [         R                  " U[         R                  " [        R                  " T	5      [        R                  5      5      5        TT:w  a]  UR                  [         R                  " U[         R                  " [        R                  " T5      [        R                  5      5      5        T
S:w  a}  UR                  [         R                  " [         R                  " [        U T   T	-
  ST
5      [        R                  5      [         R                  " S[        R                  5      5      5        U(       d   e[        R                  " [         R                   U5      n[         R"                  " UUU4S j[%        T5      (       a  SOS5      n[         R&                  " UUT" U 5      5      $ )Nr   r/   c                 ó   >• T" T 5      $ r—   rû   )Úsrc_idxrž  s   €€re   rZ  Ú1slice_scatter.<locals>.inner_fn.<locals>.<lambda>  s
   ø€ ‘J˜wÔ'rg   r   )rR   r¡  r{   r¢  ri   r)   ro   r£  r½   r5  r¤  r�  r,   rÞ  r  r  r¥  r¦  rÁ   r  )r?  r§  r¬  Úsrc_valr¤  rÍ   rs  ry  rž  rx  rz  r¦   rL  s       @€€€€€€€€re   rg  Úslice_scatter.<locals>.inner_fnú  s™  ù€ Ø�A‹:˜# ›/¨d°a«iá˜c“?Ð"ä—.’.  S¡¬5¯;©;Ó7ˆÜ�s“)ˆÜ  C¡¨5Ñ 0°$Ó7ˆ�‰àˆØ�A‹:Ø�K‰KÜ—’ØÜ—N’N¤5§<¢<°Ó#6¼¿¹ÓDóôð �(‹?Ø�K‰KÜ—’ØÜ—N’N¤5§<¢<°Ó#4´e·k±kÓBóôð �1‹9Ø�K‰KÜ—’Ü—N’NÜ'¨¨C©°5Ñ(8¸!¸TÓBÄEÇKÁKóô —L’L ¤E§K¡KÓ0ó	ôö ˆˆtÜ×Ò¤§¡¨$Ó/ˆÜ—*’*ØÝ'Ü  ×#Ñ#‰A¨ó
ˆô
 �yŠyØØÙ�S‹Mó
ð 	
rg   ri  )rö   r¼   rk  rh  rÊ   r2   rk  Únormalize_start_endri   r)   r5  r@   ré   rn   )r¦   rX  rÍ   rx  ry  rz  Úsrc_sizerg  rs  rž  rL  s   ` ````  @@@re   Úslice_scatterrª  ë  sä   ÿ€ ä
�3˜Ÿ™›Ó
&€CØ�}‰}‹€HÜ
˜˜3 Ó
"€CØ�z‰z‹|˜CÑ €Hô —‘×1Ñ1°!°S¸%ÀÓE�J€Eˆ3ä�A—J‘J“LÓ!€HÜ˜S 5™[¨D°1©HÑ5°tÓ<€HˆS�MÜ
�Ó
€CØ—‘Ó"€J÷,
ô ,
ô\ ×ÒØ�|‰|‹~Ø�k‰k‹mØÜ�A—J‘J“LÓ!ñ	ð rg   c                óv   • [        U [        [        45      (       a  [        U 5      S:”  a  [	        U S   5      $ U $ rî  )rk   ri   rŸ   rÉ   Ú_unwraprÀ   s    re   r¬  r¬  0  s0   € Ü�!”dœE�]×#Ñ#¬¨A«°«
Ü�q˜‘t‹}ÐØ€Hrg   ©r¸   rv   rŠ  Ú
pin_memoryc               ó:  ^ ^• [        US [        R                  4;   SU 35        [        U(       + S5        [        [	        T 5      [
        5      (       a  T=(       d    [        R                  mOT=(       d    [        R                  " 5       m/ n[        T [        R                  5      (       a  U U4S jnOÈ[        T [        [
        45      (       a  U U4S jnO¥[        T 5      S:X  d-  [        T S   [        [
        45      (       aE  [        T 5      S::  a6  UR                  [        R                  " [        T 5      5      5        U U4S jnO3[        R                  R!                  [        R"                  " T TUS95      $ [$        R&                  " [)        U5      TUUS	9$ )
Núlayout=r®  c                ó2   >• [         R                  " TT5      $ r—   r–  ©rC  rm   r¸   s    €€re   rg  Útensor.<locals>.inner_fnC  s   ø€ Ü—>’> $¨Ó.Ð.rg   c                ó2   >• [         R                  " TT5      $ r—   ©rR   rÞ  r²  s    €€re   rg  r³  H  s   ø€ Ü—<’<  eÓ,Ð,rg   r   r¯   c                óŠ   >^ ^• UUUU 4S jm[        T5      S:X  a  [        R                  " ST5      $ T" S[        T5      5      $ )Nc           	     ón  >• X:  d   eX-
  S:X  a  [         R                  " TU    T5      $ X-
  S-  U -   n[         R                  " [         R                  " [         R                  " TS   [
        R                  5      [         R                  " U[
        R                  5      5      T" X5      T" X!5      5      $ )Nr/   r-   r   )rR   rÞ  r  r¤  r¡  r{   r¢  )rx  ry  ÚmidÚbinary_searchrm   r¸   rC  s      €€€€re   r¹  Ú/tensor.<locals>.inner_fn.<locals>.binary_searchP  s”   ø€ Ø“{Ð"�{Ø‘; !Ó#ÜŸ<š<¨¨U©°UÓ;Ð;Ø‘{ qÑ(¨5Ñ0�Ü—y’yÜ—F’FÜŸš u¨Q¡x´·±Ó=ÜŸš S¬%¯+©+Ó6óñ " %Ó-Ù! #Ó+óð rg   r   )rÉ   rR   rÞ  )rC  r¹  rm   r¸   s   `@€€re   rg  r³  O  s<   ú€ ÷ð ô �4‹y˜A‹~Ü—|’| A uÓ-Ð-Ù  ¤C¨£IÓ.Ð.rg   rD  ri  )r”   r{   Ústridedrk   r¬  rµ   r¢  Úget_default_dtyper½   rÈ   r=  rÉ   ro   ÚIntegerrS   r]   Úadd_tensor_constantrÌ  r@   ré   rG   )rm   r¸   rv   rŠ  r®  rf  rg  s   ``     re   rÌ  rÌ  6  s+  ù€ äˆv˜$¤§¡Ð.Ñ.°'¸&¸Ð0BÔCÜ�:Œ~˜|Ô,Ü”'˜$“-¤×%Ñ%Ø×$œŸ™‰à×2œ×0Ò0Ó2ˆà!€Fä�$œŸ™×$Ñ$÷	/ô 
�Dœ5¤#˜,×	'Ñ	'÷	-ô 
ˆT‹�a‹œ: d¨1¡g´´s¨|×<Ñ<ÄÀTÃÈaÃà�‰”e—m’m¤C¨£IÓ.Ô/÷	/ô( �w‰w×*Ñ*Ü�LŠL˜ U°6Ñ:ó
ð 	
ô ×ÒÜ˜VÓ$ØØØñ	ð rg   c                ó|   • [        U [        5      (       a  Ub  [        X5      n Ub  [        X5      n U $ [	        XUS9$ r�  )rk   rC   rö   rÐ  rÌ  )rm   r¸   rv   s      re   Ú	as_tensorrÀ  o  sA   € ä�$œ	×"Ñ"ØÑÜ˜DÓ(ˆDØÑÜ˜TÓ*ˆDØˆÜ�$¨FÑ3Ð3rg   c                ó2   • [        U [        R                  S9$ r¸  rË  )rm   s    re   Úlong_tensorrÂ  z  s   € ä�$œeŸk™kÑ*Ð*rg   c                óü  • [        [        R                  R                  R                  [        R                  R
                  R                  S   5      nUc   e[        U5      S:X  d   U5       e[        [        UR                  5       5      5      u  p#[        R                  " X#U 5      n[        R                  R                  U5      Ul        [        R                  R                  U5        [        R                  R
                  R                  S   n[!        U["        R$                  ["        R&                  ["        R(                  45      (       a  UR*                  R,                  $ [.        R0                  " U5      $ )Nre  r/   r"  )r&   rS   r]   rä   rl  r^   ro  rÉ   rI  r[  r   r2   ÚDynamicScalarrp  rÞ   rq  rk   r{   rw  ÚSymFloatÚSymBoolrc   rx  r½   r|  )rm   re  Úbinding_symr�  r`  r"  s         re   Ú_local_scalar_denserÈ    s  € ô 2Ü	�‰×Ñ×"Ñ"¤A§G¡G×$8Ñ$8×$=Ñ$=Ð>QÑ$RóÐð Ñ(Ð(Ð(ÜÐ Ó! QÓ&Ð9Ð(9Ó9Ð&ô   ¤Ð%6×%<Ñ%<Ó%>Ó ?Ó@Ñ€KÜ×Ò˜k°DÓ9€FÜ—'‘'×)Ñ)¨&Ó1€F„KÜ‡G�G×Ñ˜vÔ&ô �'‰'×
Ñ
×
#Ñ
# EÑ
*€CÜ�#œŸ™¤e§n¡n´e·m±mÐD×EÑEØ�x‰x�}‰}Ðä�}Š}˜SÓ!Ð!rg   c                ó   • g r—   rû   )rm   r“   s     re   Ú_assert_scalarrÊ  ¬  s   € ð rg   )rv   rŠ  c               ó   • g r—   rû   )rñ   rë   r�  r¸   rv   rŠ  s         re   Ú_assert_tensor_metadatarÌ  ¶  s   € ð rg   c                óº  ^^^• U m[        U [        [        45      (       d  [        TS5      (       a  TR                  m[        T[        [        45      (       a  UU4S jnO\[        T[
        R                  5      (       a  UU4S jnO5[        TR                  5       5      S:X  d   eTR                  5       mU4S jn[        R                  " UTU[        U5      S9$ )Nrõ   c                ó2   >• [         R                  " TT5      $ r—   rµ  ©rC  r¸   rõ   s    €€re   rg  Ú_full.<locals>.inner_fnÄ  s   ø€ Ü—<’<  uÓ-Ð-rg   c                ó2   >• [         R                  " TT5      $ r—   r–  rÏ  s    €€re   rg  rÐ  É  s   ø€ Ü—>’> %¨Ó/Ð/rg   r   c                ó   >• T" / 5      $ r—   rû   )rC  Úvalue_loaders    €re   rg  rÐ  Ð  s   ø€ Ù Ó#Ð#rg   ri  )rk   rµ   r=  rð   rõ   r½   rÈ   rÉ   rÊ   rk  r@   ré   ri   )Ú
fill_valuerv   r¸   rë   rg  rõ   rÓ  s     `  @@re   Ú_fullrÕ  ½  s°   ú€ Ø€EÜ�j¤3¬ ,×/Ñ/´G¸EÀ7×4KÑ4KØ—‘ˆä�%œ#œu˜×&Ñ&÷	.ô 
�Eœ5Ÿ;™;×	'Ñ	'÷	0ô �5—>‘>Ó#Ó$¨Ó)Ð)Ð)Ø×(Ñ(Ó*ˆõ	$ô ×ÒØØØÜ�D‹zñ	ð rg   c                ó8   • [        [        U5      5      " U 40 UD6$ r—   ©Úcreate_tensor_likeÚtensor_constructor)r¦   rÔ  rÿ   s      re   r'  r'  Û  s   € ÜÔ0°Ó<Ô=¸aÑJÀ6ÑJÐJrg   c                ó&   ^ • S S S S SS S.U 4S jjnU$ )NF)Únamesr¸   rv   rŠ  r®  rŽ  c                ó0  >• [        U S L S5        [        US [        R                  4;   SU 35        [        U(       + S5        [        U5      nU=(       d    [        R                  " 5       n[        U5      S:X  a;  [        US   [        [        [        R                  45      (       a  [        US   5      nU H$  n[        U[        R                  5      (       d  M$   e   U Vs/ s H  n[        R                  " U5      PM     nn[        TX!U5      $ s  snf )Núnamed tensorsr°  r®  r/   r   )r”   r{   r»  rG   r¼  rÉ   rk   ri   rŸ   ÚSizerw  r½   r5  rÕ  )	rÛ  r¸   rv   rŠ  r®  rŽ  rë   rê   rÔ  s	           €re   ru  Ú!tensor_constructor.<locals>.innerá  sá   ø€ ô 	�5˜D�= /Ô2Ü�6˜d¤E§M¡MÐ2Ñ2°g¸f¸XÐ4FÔGÜ�z”> <Ô0Ü˜vÓ&ˆØ×2œ×0Ò0Ó2ˆÜˆt‹9˜‹>œj¨¨a©´4¼ÄÇ
Á
Ð2K×LÑLÜ˜˜a™“>ˆDó ˆAÜ! !¤U§\¡\×2Ó2Ð2Ð2ñ á)-Ó.ª A”—’˜Q–©ˆÐ.Ü�Z °Ó5Ð5ùò /s   Ã$ Drû   )rÔ  ru  s   ` re   rÙ  rÙ  ß  s(   ø€ ð ØØØØØ÷6ð 6ð. €Lrg   )rÛ  r¸   rŠ  rv   r®  rŽ  c           	     óà   • [        U S L S5        [        U5      n[        U5      S:X  a;  [        US   [        [
        [        R                  45      (       a  [        US   5      n[        US XX4S9$ )NrÝ  r/   r   ©r¸   rŠ  rv   r®  )	r”   rG   rÉ   rk   ri   rŸ   r{   rÞ  Úempty_strided)rÛ  r¸   rŠ  rv   r®  rŽ  rë   s          re   rN  rN  û  se   € ô ˆu˜ˆ}˜oÔ.Ü˜6Ó"€FÜ
ˆ4ƒy�Aƒ~œ* T¨!¡W¬t´U¼E¿J¹JÐ.G×HÑHÜ�T˜!‘W‹~ˆÜØˆd˜%°vñð rg   c                ó$   ^ • SSSSSS.U 4S jjnU$ )zR
Shim to convert X_like(...) into X(...).  For example zeros_like() into zeros().
NF)r¸   rv   rŠ  r®  rŽ  c               ó  >• [        U(       + S5        [        US [        R                  4;   SU 35        Uc  U R                  5       nO[	        U5      nU=(       d    U R                  5       n[        U R                  5       5      nT" XaX#US9$ )Nr®  r°  r­  )r”   r{   r»  r¼   r¹   rn   ri   rÊ   )r¦   r¸   rv   rŠ  r®  rŽ  rë   Úcreation_fns          €re   Ú_constant_likeÚ*create_tensor_like.<locals>._constant_like  s~   ø€ ô 	�z”> <Ô0Ü�6˜d¤E§M¡MÐ2Ñ2°g¸f¸XÐ4FÔGØ‰=Ø—K‘K“M‰Eä  Ó'ˆEØ×)˜1Ÿ<™<›>ˆÜ�A—J‘J“LÓ!ˆÙØ fÈ
ñ
ð 	
rg   rû   )rå  ræ  s   ` re   rØ  rØ    s#   ø€ ð  ¨d¸uÐTX÷
ð 
ð Ðrg   c                ó*   • [        [        U 5      5      $ r—   r×  )rÔ  s    re   r  r  %  s   € ÜÔ0°Ó<Ó=Ð=rg   c                ó"   ^ • S S S S S.U 4S jjnU$ )Nrá  c               óœ  >• [        U[        [        45      (       d   e[        U(       + S5        [        US [        R
                  4;   SU 35        [        U5      =(       d    U R                  5       nU=(       d    U R                  5       nU Vs/ s H  n[        R                  " U5      PM     nn[        T[        U5      X!5      $ s  snf )Nr®  r°  )rk   ri   rŸ   r”   r{   r»  r¹   r¼   rn   r½   r½  rÕ  rG   )r¦   rë   r¸   rŠ  rv   r®  rê   rÔ  s          €re   Ú_new_constantÚ#new_constant.<locals>._new_constant/  s¢   ø€ ô ˜$¤¤u ×.Ñ.Ð.Ð.Ü�z”> <Ô0Ü�6˜d¤E§M¡MÐ2Ñ2°g¸f¸XÐ4FÔGä˜UÓ#×4 q§{¡{£}ˆØ×)˜1Ÿ<™<›>ˆÙ*.Ó/ª$ Q”—’˜aÖ ©$ˆÐ/Ü�Z¤¨vÓ!6¸ÓDÐDùò 0s   Â C	rû   )rÔ  rë  s   ` re   Únew_constantrí  .  s    ø€ à t°DÀT÷
Eð 
Eð Ðrg   rá  c          	     ó|   • Uc  U R                  5       nUc  U R                  5       n[        US UU[        U5      US9$ ©Nrá  ©r¼   rn   râ  rG   )r¦   rë   r¸   rŠ  rv   r®  s         re   Ú	new_emptyrñ  >  sF   € à�}Ø—‘“ˆØ�~Ø—‘“ˆÜØØØØÜ˜VÓ$Øñð rg   c               óÔ  • [        U [        [        45      (       d   e[        U[        [        [        S 5      45      (       d   e[	        US [
        R                  4;   SU 35        [        U5      =(       d    [
        R                  " 5       nU=(       d     [
        R                  " S5      R                  n[        U5      n[        SXBU S9nUR                  5         UR                  R                  n[        R                   " UR                  S/[#        U 5      -  S9Ul        [        U[$        R&                  5      (       d   eU  Vs/ s H  n[(        R*                  " U5      PM     n nU(       a'  U Vs/ s H  n[(        R*                  " U5      PM     snO[$        R,                  R/                  U 5      n[$        R0                  " UUU UU=(       d    SS9Ul        U$ s  snf s  snf )Nr°  r   r   )rÔ  rv   r¸   rë   )rf  F)rv   r¸   rë   r�  Ú	is_pinned)rk   ri   rŸ   ræ   r”   r{   r»  r¹   r¼  rÌ  rv   rG   rÕ  r�  rm   ÚdataclassesÚreplacerÉ   r2   rÐ  r½   r5  rÙ  rÚ  rŽ  rŠ  )	rë   r�  r¸   rŠ  rv   r®  Ú	pointwiser`  rê   s	            re   râ  râ  N  sƒ  € ô �dœT¤5˜M×*Ñ*Ð*Ð*Ü�fœt¤U¬D°«JÐ7×8Ñ8Ð8Ð8Üˆv˜$¤§¡Ð.Ñ.°'¸&¸Ð0BÔCä˜Ó×<¤5×#:Ò#:Ó#<€EØ×/”u—|’| CÓ(×/Ñ/€FÜ˜6Ó"€FÜ ¨6ÀTÑJ€IØ×ÑÔØ�^‰^× Ñ €Fä×%Ò% f§k¡k¸1¸#ÄÀDÃ	¹/ÑJ€F„KÜ�fœb×/Ñ/×0Ñ0Ð0Ð0Ù%)Ó*¢T ŒE�LŠL˜ŽO¡T€DÐ*ö ñ #)Ó)¢&˜QŒ�Š�aŽ¡&Ò)ä×Ñ×1Ñ1°$Ó7ð ô
 —N’NØØØØØ×% ñ€F„Mð Ðùò +ùâ)s   Å	 G Å6 G%c          	     ó|   • Uc  U R                  5       nUc  U R                  5       n[        UUUU[        U5      US9$ rï  rð  )r¦   rë   r�  r¸   rŠ  rv   r®  s          re   Únew_empty_stridedrø  o  sH   € ð �}Ø—‘“ˆØ�~Ø—‘“ˆÜØØØØÜ˜VÓ$Øñð rg   c                ó  • U Vs/ s H,  n[         R                  R                  R                  U5      PM.     nn[	        [        [        U5      5      UR                  S9n[        R                  R                  X5      $ s  snf )N)r`  )rS   r]   rä   rå   Úsortedr  rÉ   Ú__getitem__r2   r  r  )r¦   r�  rê   r  s       re   Úcopy_stridedrü  �  sa   € á>DÓEºf¸Œa�g‰g×Ñ×1Ñ1°!Ö4¹f€FÐEÜœ%¤ F£Ó,°&×2DÑ2DÑE€LÜ�?‰?×/Ñ/°Ó@Ð@ùò Fs   …3A?c                óX   • UR                  S5      c   S5       e[        U5      " U 40 UD6$ )Nr¸   z(dtype should be handled by decomposition)rp  rÙ  )rë   rÔ  rÿ   s      re   Úfullrþ  ˆ  s2   € à�:‰:�gÓÑ*ÐVÐ,VÓVÐ*Ü˜jÔ)¨$Ñ9°&Ñ9Ð9rg   c                óê  ^^^^• [        U [        5      (       d   eUR                  5       S:X  a  [        XR	                  5       5      $ U R	                  5       m[        T5      S:H  n[        U TU5      mU(       a  [        U S/5      n S/mU R                  5       mUR                  5       mUUUU4S jn[        R                  " U R                  5       U R                  5       UUR	                  5       S9$ )Nr   r/   c                ó˜   >• [        U 5      n [        R                  " T" U 5      TT   5      n[        U 5      S:X  a  U/n OXT'   T" U 5      $ rî  )ri   rR   Úindirect_indexingrÉ   )r?  Ú
gather_idxrÍ   Úindex_loaderrë   rL  s     €€€€re   r   Úgather.<locals>.fn¢  sJ   ø€ Ü�3‹iˆÜ×*Ò*©<¸Ó+<¸dÀ3¹iÓHˆ
Üˆs‹8�q‹=Ø�,‰Cà!�‰HÙ˜‹}Ðrg   ri  )rk   rC   Ú	get_numelrñ  rÊ   rÉ   rh  r5  rk  r@   ré   rn   r¼   )	r¦   rÍ   rC  Úsparse_gradrt  r   r  rë   rL  s	    `    @@@re   Úgatherr  Ž  sÍ   û€ ô �aœ×#Ñ#Ð#Ð#Ø‡�Ó˜AÓä˜ŸN™NÓ,Ó-Ð-à�:‰:‹<€DÜ�‹Y˜!‰^€FÜ
˜˜3 Ó
'€CæÜ�1�q�c‹NˆØˆsˆà�}‰}‹€HØ×$Ñ$Ó&€L÷ð ô ×ÒØ�|‰|‹~Ø�k‰k‹mØØ�~‰~Óñ	ð rg   c                óV  ^^^^	^
• U(       a+  [        [        R                  R                  5      " XX#U5      $ U(       a   e[	        U [
        5      (       d   e[	        U[
        5      (       d   eS[        UR                  5       5      ;   d   eU R                  5       m	UR                  5       m[        UR                  5       5      mU R                  5       m
/ UR                  5       QT
SS  QmUUUU	U
4S jn[        R                  " U R                  5       U R                  5       UTS9$ )Nrµ   r/   c                ó¸   >• [        U 5      [        T5      :X  d   U  ST 35       eT" U S T 5      n[        R                  " UTS   5      // U TS  Q-   nT" U5      $ )Nz != r   )rÉ   rR   r  )r?  Ú	var_indexÚ
weight_idxÚindices_loaderÚindices_ndimrO  Úweight_loaderÚweight_sizes      €€€€€re   r   Úembedding.<locals>.fnÅ  s{   ø€ Ü�3‹xœ3˜x›=Ó(Ð@¨S¨E°°h°ZÐ*@Ó@Ð(Ù" 3 }¨Ð#5Ó6ˆ	Ü×+Ò+¨I°{À1±~ÓFÐGð K
Ø��ÐðK
ñ 
ˆ
ñ ˜ZÓ(Ð(rg   ri  )r¶  rÄ  Ú	embeddingr¹  rk   rC   Ústrr¼   rk  rÉ   rÊ   r@   ré   rn   )Úweightr  Úpadding_idxÚscale_grad_by_freqÚsparser   r  r  rO  r  r  s         @@@@@re   r  r  ³  s  ü€ æÜ¤§¡× 6Ñ 6Ô7Ø˜[¸fó
ð 	
ö Ðˆ:Ü�fœi×(Ñ(Ð(Ð(Ü�gœy×)Ñ)Ð)Ð)Ø”C˜×)Ñ)Ó+Ó,Ó,Ð,Ð,à×&Ñ&Ó(€MØ×(Ñ(Ó*€NÜ�w×'Ñ'Ó)Ó*€LØ—/‘/Ó#€KØ6�×!Ñ!Ó#Ð6 k°!°" oÐ6€H÷)ñ )ô ×ÒØ× Ñ Ó"Ø×ÑÓ ØØñ	ð rg   c           
     óL  • [        S U  5       5      (       d-   SU  Vs/ s H  o"c  M  UR                  5       PM     sn 35       e[        S U  5       5      (       a  [        S5      e[	        U 5       VVs/ s H  u  p#[        U[        5      (       d  M  UPM      nnn[        U5      S:”  d   S5       eS /[        U 5      -  n[        U[        U Vs/ s H  o U   PM	     sn6 5       H(  u  p#UR                  5       U:w  a  [        S5      eX5U'   M*     XT4$ s  snf s  snnf s  snf )Nc              3  óÊ   #   • U  HY  nUc  M  UR                  5       [        R                  [        R                  [        R                  [        R
                  4;   v •  M[     g 7fr—   )r¼   r{   r¢  rû  rÃ   r   ©r™   rs   s     re   r›   Ú.check_and_broadcast_indices.<locals>.<genexpr>Ö  sA   é € ð âˆAØó 	Mˆ�‰‹œ%Ÿ+™+¤u§{¡{´E·J±JÄÇÁÐLÖLÚùs   ‚A#�AA#z)indices must be int64, byte or bool. Got c              3  óŒ   #   • U  H:  oc  M  UR                  5       [        R                  [        R                  4;   v •  M<     g 7fr—   )r¼   r{   rÃ   r   r  s     re   r›   r  Ý  s.   é € ð Ú<C°qÓ2ˆ�‰‹œ%Ÿ*™*¤e§k¡kÐ2Ö2ºGùs
   ‚AŒ8AzFallback for bool indicesr   z"requires at least 1 non-None indexz.Fallback when indices is on a different device)r$  r¼   r%  r�   rj   rk   rC   rÉ   r  r  rn   )r  rv   rs   r¦   Ú
valid_idxsÚnew_indicess         re   Úcheck_and_broadcast_indicesr  Õ  s2  € Üñ áó÷ ñ ð ð
 4ÉGÓ4eÊGÀq³]°Q·[±[¶]ÉGÑ4eÐ3fÐgóð ô ñ Ù<Có÷ ñ ô "Ð"=Ó>Ð>ä )¨'Ô 2ÔOÒ 2™˜´jÀÄI×6N—!Ñ 2€JÑOÜˆz‹?˜QÓÐDÐ DÓDÐØ�&œ3˜w›<Ñ'€KÜ�JÔ 1É
Ó3SÊ
À1¸A´JÉ
Ñ3SÐ TÖU‰ˆð �<‰<‹>˜VÓ#Ü%Ð&VÓWÐWØ�A‹ñ Vð Ð"Ð"ùò# 5fùó Pùò 4Ts   žD¨DÁ5DÂDÃD!c	           
     ól  ^^^^^^^^^^• Sm[         R                  " T5       H  u  pšX©-
  S:w  d  M  SmM     [        T5       VVs/ s H  u  p¼Ub  M
  X   PM     snnm/ TQU [        T5      [        T5      -   S  QmTS   nT(       a  TT-   mOTS U T-   TUS  -   mUUUUUUUUUU4
S jnTU4$ s  snnf )NFr/   Tr   c                óö  >
• [        U 5      [        T5      :X  d   e[        T5      [        T
5      :X  d   e[        T5      n/ nTS   nT(       a  SOUnSn[        TS   S-   5       H|  nXd:X  a  XQ-  nTU   c+  U[        U 5      :  d   eUR                  X   5        US-  nM=  TU   nUc   eT
U   nUR                  [        R                  " U" XXA-    5      UT	TS95        M~     / UQXS  QnTc  U$ T" U5      $ )Nr   rW  r/   ©r   Úwrap_neg)rÉ   r  ro   rR   r  )r?  r?  Ú	new_indexÚfirst_tensor_indexÚstart_offsetÚnext_idxrs   Úloaderrë   r   Úindexed_sizer  Úindices_loadersÚnon_consecutive_tensorsÚoutput_sizeÚtensor_indicesÚtensor_sizer"  rL  s            €€€€€€€€€€re   r   Ú*index_output_size_and_inner_fn.<locals>.fn  s=  ø€ Ü�3‹xœ3˜{Ó+Ó+Ð+Ð+Ü�?Ó#¤s¨<Ó'8Ó8Ð8Ð8ä�;ÓˆØˆ	Ø+¨AÑ.ÐÞ3‘qÐ9KˆØˆÜ�~ bÑ)¨AÑ-Ö.ˆAØÓ ØÑ �Ø�q‰zÑ!Ø¤# c£(Ó*Ð*Ð*Ø× Ñ  ¡Ô/Ø˜A‘’à(¨Ñ+�ØÑ)Ð)Ð)Ø# A‘�Ø× Ñ Ü×)Ò)Ù˜s°,Ñ2EÐFÓGØØ#Ø!)ñ	öñ /ð&
Øð
à�ˆ^ð
ˆ	ð %Ñ,ˆyÐE±(¸9Ó2EÐErg   )r  Úpairwiserj   rÉ   )rd  r  r,  r-  r)  r(  rL  r   r"  ÚpreviousÚcurrentrs   r"  r$  r   r*  r+  s    ````````      @@re   Úindex_output_size_and_inner_fnr2  ï  så   ÿù€ ð$ $ÐÜ&×/Ò/°Ö?ÑˆØÑ Õ"Ø&*Ò#ñ @ô ,5°WÔ+=ÔMÒ+=¡ À“9�6”9Ñ+=ÒM€KØS�KÐS &¬¨[Ó)9¼CÀÓ<OÑ)OÐ)QÐ"RÐS€Kà'¨Ñ*ÐÞØ! KÑ/‰ð Ð+Ð+Ð,ØñàÐ,Ð-Ð.ñ/ð 	÷ Fö  FðD ˜ˆ?Ðùó_ Ns   Á	B0ÁB0c                ó†   • [        XU5      u  p4n[        R                  " U R                  5       U R	                  5       UUS9$ r�  )Úindex_impl_helperr@   ré   rn   r¼   )r¦   r  r   r+  rg  r  s         re   Ú
index_implr5  8  s>   € Ü0°¸UÓCÑ€K˜1ä×ÒØ�|‰|‹~Ø�k‰k‹mØØñ	ð rg   c                ó¤  ^^• [        U[        [        45      (       d   eU R                  5       m[	        XR                  5       5      u  p[        U5      S:”  d   S5       eU Vs/ s H  oUb  UR                  5       OS PM     nn[        XS      R                  5       5      nU R                  5       n[        [        U5      5       Vs/ s H  oQU   c  M
  X…   PM     n	nU(       a  SU	;   a  SU;  a  [        S5      e[        [        U5      5       Vs/ s H  oXU   PM	     n	n[        UUUUUU	S UUS9	u  n
mUU4S jnX«T4$ s  snf s  snf s  snf )Nr   z Must have at least one valid idxz0index is out of bounds for dimension with size 0r!  c                ó    >• T" T" U 5      5      $ r—   rû   )r?  Úindex_inner_fnrL  s    €€re   rg  Ú#index_impl_helper.<locals>.inner_fnb  s   ø€ Ù™ sÓ+Ó,Ð,rg   )rk   ri   rŸ   rk  r  rn   rÉ   rÊ   r  Ú
IndexErrorr2  )r¦   r  r   r"  r,  rs   r)  r-  rd  r(  r+  rg  r8  rL  s               @@re   r4  r4  C  sL  ù€ Ü�g¤¤e˜}×-Ñ-Ð-Ð-Ø�}‰}‹€HÜ9¸'Ç<Á<Ã>ÓRÑ€GÜˆ~Ó Ó"ÐFÐ$FÓFÐ"áKRÓSÊ7Àa©-�q—}‘}”¸TÒAÉ7€OÐSô �w¨aÑ0Ñ1×:Ñ:Ó<Ó=€Kà�Z‰Z‹\€Fä',¬S°«\Ô':ÓUÒ': !Àa¹j“I�F”IÑ':€LÐUÞ��lÓ" q°Ó';ÜÐKÓLÐLä',¬S°«\Ô':Ó;Ò': !˜1”IÑ':€LÐ;Ü"@ØØØØØØØØØñ
#Ñ€K�ö-ð  .Ð0Ð0ùò9 Tùò Vùò <s   Á%EÃ		EÃEÄEc                ó¨   •  [        XSS9$ ! [         a;    U R                  5         [        [        R
                  R                  SS9" X5      s $ f = f)NT©r   Fr°  )r5  r�   r�  r¶  rÄ  rC  rç  ©r¦   r  s     re   rC  rC  h  sM   € ð
Ü˜!¨DÑ1Ð1øÜó 
à	�	‰	ŒÜ¤§
¡
× 1Ñ 1ÀuÒMØó
ò 	
ð
ús   ‚	 ŒAAÁAc                ó   • [        XSS9$ )NFr<  )r5  r=  s     re   Ú_unsafe_indexr?  t  s   € ä�a¨Ñ.Ð.rg   c           	     ó.   • [        [        U 5      XUSSS9$ )NTF©r   Úmay_realize©Úindex_put_impl_r�  ©r¦   r  r  Ú
accumulates       re   Ú	index_putrG  �  s   € äÜˆa‹�' :°TÀuñð rg   c           	     ó.   • [        [        U 5      XUSSS9$ )NFrA  rC  rE  s       re   Ú_unsafe_index_putrI  ˆ  s   € äÜˆa‹�' :°UÈñð rg   c                óÎ   • UR                  5       U R                  5       :w  a  [        X R                  5       5      nU(       a  [        X5      n[        U [	        US   X 5      5      $ rî  )rn   rÐ  r¢   rW  r  )rG  r  rõ   rF  s       re   Úindex_put_as_masked_fillrK  �  sP   € Ø×ÑÓ˜TŸ_™_Ó.Ó.Ü˜%§¡Ó!2Ó3ˆÞÜ�DÓ ˆÜ�Tœ5 ¨¡¨UÓ9Ó:Ð:rg   c                óÎ  • SSK Jn  [        [        R                  [
        R                  R                  R                  R                  5      n[
        R                  R                  n[        R                  (       dQ  UbN  U" U5      (       aA  SnUR                  R                  SS 5      =n(       a  U SU 3nU[
        R                  l        [        R                   " XPXU5        U $ )Nr/   )Ú,_fx_node_is_input_dependent_cudagraph_unsafezLindex_put_ fallback with boolean indexing is not compatible with CUDA graphsÚstack_traceú Found from : 
 )ÚutilsrM  r˜   rÄ  Ú
index_put_rS   r]   r^   ra   Ú_overloadnamer0   Úgraph_partitionro  rp  Údisable_cudagraphs_reasonr2   ÚIndexPutFallback)	rG  r  r  rF  rM  r²  ro  r“   rN  s	            re   Úindex_put_fallbackrV  —  s«   € ÝCäœ$Ÿ/™/¬1¯7©7×+?Ñ+?×+FÑ+F×+TÑ+TÓU€Kô
 �g‰g×"Ñ"€Gä×"×"ØÑÙ8¸×AÑAà\ˆØ!Ÿ,™,×*Ñ*¨=¸$Ó?Ð?ˆ;Õ?Ø�EÐ*¨;¨-Ð8ˆCØ,/Œ�‰Ô)ä×Ò˜¨7¸JÔGØ€Krg   c           	     ó   • [        XX#SSS9$ )NTrA  ©rD  ©rG  r  r  rF  s       re   rQ  rQ  ®  s   € äØ�v°À4ñð rg   c           	     ó   • [        XX#SSS9$ )NFTrA  rX  rY  s       re   Ú_unsafe_index_put_r[  µ  s   € äØ�v°ÀDñð rg   c                óØ  ^• U(       aU  S m[         R                  " U 5      UR                  5       ;   a*  [        U4S jU 5       5      (       d  UR	                  5         UR                  5       S:X  a£  [        U5      S:X  a”  US   R                  5       [        R                  [        R                  4;   a_  US   n[        [        UR                  5       5      [        U R                  5       5      5       H  n[        US5      nM     [        X/X#5      $ [        R                  " 5       (       a  [!        XX#5      $ U HH  nUc  M  UR                  5       [        R                  [        R                  4;   d  M<  [!        XX#5      s  $    U R                  5       n	[        U	5      n
U(       aQ  [#        U R                  5       5      (       a3  U
S:X  a  [%        U S/5      n [!        XX#5      n U
S:X  a  [%        U / 5      n U $ ['        X R                  5       5      n [)        XR+                  5       5      u  pU Vs/ s H  oÌb  UR/                  5       OS PM     nn[1        U [2        5      (       d   eU R	                  5         U
S:X  a  [%        U S/5      n [5        XS      R                  5       5      n[        [        U5      5       Vs/ s H  oÉU   PM	     nn[7        U	UUUUUS US9u  nn[9        UU5      nU R+                  5       nUc   e[         R:                  " UU R                  5       UR/                  5       UUU(       a  SOS S9n[         R<                  " S [         R>                  " U 5      US	9n[@        RB                  RE                  U5      Ul#        [@        RB                  RI                  U5        U
S:X  a  [%        U / 5      n U $ ! [,         a    [!        XX#5      s $ f = fs  snf s  snf )
Nc                ó$  • [        U [        5      (       aû  [        U R                  [        R                  5      (       aÒ  U R                  R                  5       n [        U [        R                  5      =(       a—    [        U R                  [        R                  5      =(       al    [        U R                  SS 5      =(       aN    U R                  R                  R                  [        R                  R                  R                  R                  L $ g)Nro  F)rk   rC   rm   r2   r6   r‹  rç   r  r˜   ro  ra   r{   rR   rÄ  Úrandpermr¹  )Úindices    re   Úindice_slice_from_randpermÚ3index_put_impl_.<locals>.indice_slice_from_randperm¿  s±   € ô ˜&¤)×,Ñ,´¸F¿K¹KÌÏÉ×1UÑ1UØŸ™×0Ñ0Ó2�ä˜v¤r§}¡}Ó5÷ VÜ" 6§;¡;´·±Ó@÷Vä §¡¨Y¸Ó=÷Vð Ÿ™×+Ñ+×2Ñ2´e·i±i·n±n×6MÑ6M×6UÑ6UÐUð	ð rg   c              3  ó4   >#   • U  H  nT" U5      v •  M     g 7fr—   rû   )r™   r_  r`  s     €re   r›   Ú"index_put_impl_.<locals>.<genexpr>Í  s   øé € ð H
Ú=D°6Ñ& v×.Ð.ºWùr  r/   r   rW  r<  Ú
atomic_add©rv   r¸   rg  rf  Úoutput_indexerÚscatter_mode©rÞ   rŠ  rm   )%r2   Útry_get_namer  r$  r�  r  rÉ   r¼   r{   rÃ   r   r  rÊ   r;  rK  Ú$are_deterministic_algorithms_enabledrV  rL   rÅ  rö   r  rn   r�   rk  rk   rC   ri   r2  r5  ÚScatterrÐ  ÚMutationLayoutSHOULDREMOVErS   r]   rp  rÞ   rq  )rG  r  r  rF  r   rB  r¬  r  rC  rd  Úx_ndimr,  rs   r)  r-  r(  Úexpected_vals_sizerg  rv   Úscatterr`  r`  s                        @re   rD  rD  ¼  sq  ø€ Þò	ô �?Š?˜4Ó  F×$9Ñ$9Ó$;Ó;ÄCô H
Ù=DóH
÷ E
ñ E
ð �N‰NÔð 	×ÑÓ˜aÓÜ�‹L˜AÓØ�A‰J× Ñ Ó"¤u§z¡z´5·;±;Ð&?Ó?à�q‰zˆÜ”s˜4Ÿ=™=›?Ó+¬S°·±³Ó-AÖBˆAÜ˜T 2Ó&ŠDñ Cä'¨¨f°fÓIÐIô ×1Ò1×3Ñ3Ü! $°ÓDÐDó ˆØÓ §¡Ó!2´u·z±zÄ5Ç;Á;Ð6OÕ!OÜ% d°VÓHÒHñ ð �]‰]‹_€FÜ�‹[€FæÔBÀ4Ç>Á>ÓCS×TÑTà�Q‹;Ü˜˜q˜c“?ˆDÜ! $°ÓDˆØ�Q‹;Ü˜˜b“>ˆDØˆä�fŸn™nÓ.Ó/€FðEä"=Ø—_‘_Ó&ó#
Ñˆñ LSÓSÊ7Àa©-�q—}‘}”¸TÒAÉ7€OÐSä�dœI×&Ñ&Ð&Ð&Ø‡L�L„Nð �ƒ{Ü�D˜1˜#‹ˆô �w¨aÑ0Ñ1×:Ñ:Ó<Ó=€KÜ',¬S°«\Ô':Ó;Ò': !˜1”IÑ':€LÐ;ä#AØØØØØØØØñ	$Ñ Ð˜ô �FÐ.Ó/€Fð �_‰_Ó€FØÑÐÐÜ�jŠjØØ�n‰nÓØ×#Ñ#Ó%Ø!ØÞ%/‘\°Tñ€Gô ×ÒØÜ×,Ò,¨TÓ2Øñ€Fô
 —'‘'×)Ñ)¨&Ó1€F„KÜ‡G�G×Ñ˜vÔ&à�ƒ{Ü�D˜"‹~ˆØ€Køôe ó EÜ! $°ÓDÒDðEüò Tùò <s   ÈO È5O"ËO'ÏOÏOr°  c                óâ   ^^^^^	• [        XSSS9u  pEmTR                  5       mU R                  5       m	UUUUU	4S jn[        R                  " U R	                  5       U R                  5       UUS9$ )NFr!  c                óæ   >^ • TR                   [        R                  :w  a,  [        R                  " T" T 5      [        R                  5      nOT" T 5      n[        R
                  " UUU U4S jT5      $ )Nc                 ó    >• T" T " T5      5      $ r—   rû   )Ú_unsafe_index_fnr?  Úself_loaders   €€€re   rZ  Ú8_unsafe_masked_index.<locals>.inner_fn.<locals>.<lambda>I  s   ø€ ©KÑ8HÈÓ8MÔ,Nrg   )r¸   r{   rÃ   rR   rö   r¦  )r?  Úmask_valrs  Úfillr¬  Úmask_loaderrt  s   ` €€€€€re   rg  Ú&_unsafe_masked_index.<locals>.inner_fnD  sK   ù€ Ø�:‰:œŸ™Ó#Ü—|’|¡K°Ó$4´e·j±jÓA‰Há" 3Ó'ˆHÜ�zŠz˜(Ö$NÐPTÓUÐUrg   ri  )r4  rk  r@   ré   rn   r¼   )
rG  r¬  r  rw  rf  r  rg  rs  rx  rt  s
    ` `   @@@re   Ú_unsafe_masked_indexrz  <  ss   ü€ ä"3Ø˜U¨Uñ#Ñ€FÐð ×"Ñ"Ó$€KØ×"Ñ"Ó$€K÷Vñ Vô ×ÒØ�‰Ó Ø�n‰nÓØØñ	ð rg   c           	     óâ   • [        XS5      nU R                  5       n[        [        U5      5       Vs/ s H%  nX&   (       a  [	        X&   XV   * XV   S-
  5      OS PM'     nn[        XUSS9$ s  snf )Nr   r/   T)rF  )r  rÊ   r  rÉ   rd  rI  )r¦   r¬  r  r  Úmasked_valuer<  rs   Úclamped_indicess           re   Ú#_unsafe_masked_index_put_accumulater~  S  sx   € ä˜ qÓ)€LØ�J‰J‹L€Eô ”s˜7“|Ô$óâ$ˆAð 7>·jŒˆg‰j˜5™8˜) U¡X°¡\Ô2ÀdÒJÙ$ð ð ô ˜Q°È$ÑOÐOùòs   ³,A,c                óX   • [         R                  " U[         R                  " X 5      5      $ r—   )rR   r»  r¼  ©rñ   ÚminÚmaxs      re   rd  rd  `  s   € ä�;Š;�sœCŸKšK¨Ó/Ó0Ð0rg   c                óJ   • [        U 5      n[        XRX45      n[        Xa5        U$ r—   )r�  rw  Úcopy_)rG  rX  rë   r�  rf  r8  Úoutput_views          re   Úas_strided_scatterr†  e  s$   € ä�4‹[€FÜ˜V¨6ÓB€KÜ	ˆ+ÔØ€Mrg   c                ó0   • [        [        U 5      XU40 UD6$ r—   )Úscatter_r�  )r¦   rÍ   rC  rX  rÿ   s        re   ro  ro  m  s   € ä”E˜!“H˜c¨#Ñ8°Ñ8Ð8rg   ©r  Úinclude_selfc               óT  • [        U[        5      n[        U UUR                  5       [	        [
        R                  U(       a  UR                  5       O
[        U5      5      U(       a  UR                  5       R                  OSU5      (       a  [        R                  " U UUUUUUS9  U$ g )Nznot implr‰  )rk   rC   rQ   r¼   r
   r{   r¸   ræ   rn   r2   ÚScatterFallback)r²  rG  rÍ   rC  rX  r  rŠ  Úsrc_is_tensors           re   Úscatter_fallbackrŽ  r  s�   € ô ˜s¤IÓ.€MÜØØØ�‰ÓÜŒU�[‰[®]˜#Ÿ-™-œ/ÄÀSÃ	ÓJæ!.ˆ�‰Ó×Ò°JØ÷ñ ô 	×ÒØØØØØØØ%ò	
ð ˆàrg   ©r  c          	     ó   • US;   d   eUcV  [        [        R                  [        R                  R
                  R                  R                  5      n[        XPXX4S9nUb  U$ US:X  a  SnOUS:X  a  Sn[        XX#U5      $ )N)Nr¢   Úmultiplyr�  r¢   r$  r‘  Úprod)
r˜   rÄ  rˆ  rS   r]   r^   ra   rR  rŽ  Úscatter_reduce_)rG  rÍ   rC  rX  r  r²  Úfallback_results          re   rˆ  rˆ  ”  sƒ   € àÐ.Ó.Ð.Ð.Ø�~ÜœdŸm™m¬Q¯W©W×-AÑ-A×-HÑ-H×-VÑ-VÓWˆÜ*Ø˜s¨3ñ
ˆð Ñ&Ø"Ð"à�ƒØ‰Ø	�:Ó	ØˆÜ˜4 e°&Ó9Ð9rg   c                ó.   • [        [        U 5      XU5      $ r—   )Úscatter_add_r�  ©r¦   rÍ   rC  rX  s       re   Úscatter_addr˜  ¦  s   € äœ˜a› #¨cÓ2Ð2rg   c                ó   • [        XX#S5      $ )Nr$  )r“  r—  s       re   r–  r–  «  s   € ä˜1 5¨uÓ5Ð5rg   c                ó0   • [        [        U 5      XX440 UD6$ r—   )r“  r�  )r¦   rÍ   rC  rX  Úreduction_typerÿ   s         re   Úscatter_reducerœ  °  s   € äœ5 ›8 S°ÑOÈÑOÐOrg   )rŠ  c          
     ó  ^ ^^^^• US;   d   e[        [        R                  R                  5       5      S:X  a"  S[        R                  R                  5       ;   d   S5       e[	        T[
        5      (       a  [        T T5      m[        [        R                  R                  T TUTUUS9nU(       a  U$ [	        T [        5      (       d   eS[        UR                  5       5      ;   d   e[        T R                  5       5      nUS:X  a  [        T S/5      m [	        T[        5      (       a*  [        TR                  5       5      S:X  a  [        TS/5      m[	        U[        5      (       a*  [        UR                  5       5      S:X  a  [        US/5      nUR                  5       S:X  a  T $ [        T T5      mT R!                  5         UR#                  5       m[	        T[        5      (       a  TR#                  5       OS mUUU 4S jnU UU4S	 jn	S
 n
T R%                  5       nUc   eU(       d¦  [&        R(                  " UT R                  5       U 4S jUR                  5       US S9n[&        R*                  " S [&        R,                  " T 5      US9n[.        R0                  R3                  U5      Ul        [.        R0                  R7                  U5        [&        R(                  " UT R                  5       U	UR                  5       UU
" U5      S9n[&        R*                  " S [&        R,                  " T 5      US9n[.        R0                  R3                  U5      Ul        [.        R0                  R7                  U5        US:X  a  [        T / 5      m T $ )N)Nr$  r’  ÚmeanÚamaxÚaminr/   rá  zKaten.scatter_reduce_.two is not the unique overload of aten.scatter_reduce_r‰  rµ   r   c                ó¨   >• TR                  5       n[        U5      n[        U 5      n[        R                  " T" U 5      US:X  a  SOUT   SS9UT'   U$ )Nr   r/   F)r"  )rÊ   rÉ   ri   rR   r  )r?  r<  rr  Úindirect_idxrÍ   r  rG  s       €€€re   rf  Ú'scatter_reduce_.<locals>.output_indexerã  sU   ø€ à—‘“ˆÜ�5‹zˆÜ˜C“yˆÜ×1Ò1Ù˜Ó D¨A£I™q°5¸±:Èñ
ˆ�SÑð Ðrg   c                ól   >• T(       a  T" U 5      $ [         R                  " TTR                  5       5      $ r—   ©rR   rÞ  r¼   )r?  rG  rX  rž  s    €€€re   r   Úscatter_reduce_.<locals>.fní  s*   ø€ ÞÙ˜c“?Ð"ô —<’<  T§^¡^Ó%5Ó6Ð6rg   c                ó   • U S:X  a  gU b   eg )Nr$  rd  rû   r�  s    re   Úbackend_reduce_strÚ+scatter_reduce_.<locals>.backend_reduce_strõ  s   € Ø�U‹?Øð ‘>Ð!�>Ørg   c                óN   >• [         R                  " STR                  5       5      $ rî  r¥  )rC  rG  s    €re   rZ  Ú!scatter_reduce_.<locals>.<lambda>  s   ø€ ¤3§<¢<°°4·>±>Ó3CÔ#Drg   re  rh  )rÉ   rÄ  r“  r¥   rk   r!   r'  rŽ  rá  rC   r  r¼   rÊ   rÅ  r  rh  r�  rk  rn   r2   rk  rÐ  rl  rS   r]   rp  rÞ   rq  )rG  rÍ   rC  rX  r  rŠ  r”  rr  rf  r   r¨  rv   Úzero_outr`  ro  r  rž  s   `` `           @@re   r“  r“  µ  sï  ü€ àÐBÓBÐBÐBäŒD× Ñ ×*Ñ*Ó,Ó-°Ó2Ø”T×)Ñ)×3Ñ3Ó5Ó5ðUð UóUð	6ô �#”v×ÑÜ˜˜cÓ"ˆä&Ü×Ñ× Ñ ØØØØØØ!ñ€Oö ØÐä�dœI×&Ñ&Ð&Ð&Ø”C˜Ÿ™Ó)Ó*Ó*Ð*Ð*äˆt�}‰}‹Ó€DØˆqƒyÜ�D˜1˜#‹ˆä�#”y×!Ñ!¤c¨#¯,©,«.Ó&9¸QÓ&>Ü�3˜˜‹nˆä�%œ×#Ñ#¬¨E¯N©NÓ,<Ó(=ÀÓ(BÜ�U˜Q˜CÓ ˆà‡�Ó˜AÓØˆä
˜˜cÓ
"€Cà‡L�L„NØ×$Ñ$Ó&€LÜ&0°´i×&@Ñ&@�—‘Ô"Àd€J÷÷7òð �_‰_Ó€FØÑÐÐæä—:’:ØØ—.‘.Ó"ÜDØ—>‘>Ó#Ø)Øñ
ˆô ×"Ò"ØÜ×0Ò0°Ó6Øñ
ˆô
 —g‘g×-Ñ-¨fÓ5ˆŒÜ	�‰×"Ñ" 6Ô*ô
 �jŠjØØ�n‰nÓØØ�~‰~ÓØ%Ù'¨Ó/ñ€Gô ×ÒØÜ×,Ò,¨TÓ2Øñ€Fô
 —'‘'×)Ñ)¨&Ó1€F„KÜ‡G�G×Ñ˜vÔ&àˆqƒyÜ�D˜"‹~ˆØ€Krg   c                ód  ^^^^^^• U R                  5         U R                  5       mU R                  5       T* S  mU R                  5       S T*  nT Vs/ s H,  n[        R                  R
                  R                  U5      PM.     snm[        U5      T:X  d   eUn[        TU5       VVs/ s H	  u  phXh-  PM     snnm[        U5       H  u  piU	c  M
  SU	-  TU'   M     U4S jmUUUUU4S jn
[        R                  " U R                  5       U R                  5       U
/ UQUQS9$ s  snf s  snnf )Nræ  c                ó¸  >• [         R                  " U [        R                  5      n T(       a:  [         R                  " U [         R
                  " S[        R                  5      5      n [         R                  " U [         R
                  " U[        R                  5      5      n [         R                  " U [        R                  5      n [         R                  " XSS9$ )Nç      à?Fr<  )
rR   r¡  r{   ræ  r¢   rÞ  rj  rö   rû  r  )r¦   r¾  rë   Úexacts      €re   Úscale_fnÚ$upsample_nearestnd.<locals>.scale_fn?  s�   ø€ ô �NŠN˜1œeŸm™mÓ,ˆÞÜ—’˜œ3Ÿ<š<¨¬U¯]©]Ó;Ó<ˆAÜ�GŠG�A”s—|’| E¬5¯=©=Ó9Ó:ˆÜ�LŠL˜œEŸK™KÓ(ˆÜ×$Ò$ Q°EÑ:Ð:rg   c                ó–   >• U T* S  nU S T*  nT
" / UQ[        UTT5       VVVs/ s H  u  p4nT	" X4U5      PM     snnnQ5      $ s  snnnf r—   )r  )r?  r¦   r7  rs   rê   rë   Úi_sizesÚ
inv_scalesrÙ  r±  rL  s         €€€€€re   r   Úupsample_nearestnd.<locals>.fnJ  s_   ø€ Ø���ˆHˆØ��!�ˆHˆÙØWˆaÐW¼#¸aÀÈWÔ:UÕVÒ:U©J¨A°$‘8˜A $Ö'Ñ:UÓVÐWó
ð 	
ùÜVs   ¤Ari  )Úrealize_hintrk  rÊ   rS   r]   rä   r  rÉ   r  rj   r@   ré   rn   r¼   )r¦   r+  Úscales_xrÙ  r°  Úbatchrs   Úo_sizesÚor¾  r   r´  rµ  r±  rL  s      ``      @@@@re   Úupsample_nearestndr¼  *  s  ý€ ð ‡N�NÔØ�}‰}‹€HØ�j‰j‹l˜A˜2˜3Ð€GØ�J‰J‹L˜˜1˜"Ð€EÙ6=Ó>²g°Œq�w‰w×Ñ×)Ñ)¨!Ö,±gÑ>€Gäˆx‹=˜AÓÐÐØ€Gä$'¨°Ô$9Ô:Ò$9™D˜A�!”%Ñ$9Ò:€JÜ˜hÖ'‰ˆØÓØ %™KˆJ�q‹Mñ (õ	;÷
ñ 
ô ×ÒØ�|‰|‹~Ø�k‰k‹mØØ!�Ð!˜Ð!ñ	ð ùò9 ?ùó
 ;s   Á3D'Â+D,c                ó   • [        XU4SS9$ )Nr/   ©rÙ  ©r¼  ©r¦   r+  rÈ  s      re   Úupsample_nearest1drÁ  Y  s   € ä˜a¨v¨i¸1Ñ=Ð=rg   c                ó   • [        XU4SSS9$ )Nr/   T©rÙ  r°  r¿  rÀ  s      re   Ú_upsample_nearest_exact1drÄ  ^  s   € ä˜a¨v¨i¸1ÀDÑIÐIrg   c                ó   • [        XX#4SS9$ )Nr-   r¾  r¿  ©r¦   r+  Úscales_hÚscales_ws       re   Úupsample_nearest2drÉ  c  s   € ô ˜a¨xÐ.BÀaÑHÐHrg   c                ó   • [        XX#4SSS9$ )Nr-   TrÃ  r¿  rÆ  s       re   Ú_upsample_nearest_exact2drË  j  s   € ô ˜a¨xÐ.BÀaÈtÑTÐTrg   c                ó   • [        XX#U4SS9$ )Nrª   r¾  r¿  ©r¦   r+  Úscales_drÇ  rÈ  s        re   Úupsample_nearest3drÏ  q  s   € ô ˜a¨xÀ8Ð.LÐPQÑRÐRrg   c                ó   • [        XX#U4SSS9$ )Nrª   TrÃ  r¿  rÍ  s        re   Ú_upsample_nearest_exact3drÑ  |  s   € ô Ø	˜¨XÐ6¸!À4ñð rg   c                ó.   ^ • [        U 4S jU 5       5      $ )Nc              3  óR   >#   • U  H  n[         R                  " UT5      v •  M     g 7fr—   rµ  )r™   rñ   r¸   s     €re   r›   Ú$_create_constants.<locals>.<genexpr>Š  s   øé € Ð6²¨A”—’˜a ×'Ð'²ùs   ƒ$')rŸ   )r¸   rt   s   ` re   r¹  r¹  ‰  s   ø€ ÜÔ6±Ó6Ó6Ð6rg   c                ó¾   ^^^• U R                  5       mU R                  5       mUUU4S jn[        R                  " U R	                  5       U R                  5       UTS9$ )Nc                óŽ   >• [        U 5      n [        U 5      [        T5      :X  d   eT H  nTU   S-
  X   -
  X'   M     T" U 5      $ rô  )ri   rÉ   )r?  rÍ   r  r  rL  s     €€€re   r'  Úrev.<locals>.loader“  sN   ø€ Ü�3‹iˆÜ�3‹xœ3˜u›:Ó%Ð%Ð%ÛˆCØ˜c™
 Q™¨#©(Ñ2ˆC‹Hñ ñ ˜‹}Ðrg   ri  )rk  rÊ   r@   ré   rn   r¼   )r¦   r  r'  r  rL  s    ` @@re   ÚrevrØ  �  sM   ú€ ð �}‰}‹€HØ�J‰J‹L€E÷ô ×ÒØ�|‰|‹~Ø�k‰k‹mØØñ	ð rg   c                óÔ  • S nU" 5       (       a  g[        U5      S:w  d  [        U R                  5       5      S:w  a  gU R                  5         [        U [        R
                  5      (       aÉ  [        U R                  [        R                  5      (       a   [        U R                  R                  [        R                  5      (       dH  [        R                  (       aX  [        U R                  R                  [        R                  5      (       a%  U R                  R                  R                  (       d  gU R                  5         [        R                  " U 5      u  pEUR                  nUS   S:w  a  gUS   S:w  d  US   S:w  d	  US   S:w  a  gUS   nUS:X  a  gUS   nUR                   S   n	X‰U-   :  a  gU R                  R                  R                  n
UR                   S   UR                   S   U-   /nU["        R$                  R&                  U
'   [)        U UUR                  UR*                  5      n[-        USX™U-   SS	9n[/        XÒ5        [0        S
   S==   S-  ss'   U$ )z¬
This optimization changes the semantics of padding from 'clone'
style to 'view' style.

Thanks to functionalization, this change can still maintain numerical
correctness.
c                 ó  • [         R                  R                  n U c  g[        U R                  5      n[        U5      S:X  aF  US   R                  [        R                  R                  [        R                  R                  4;   a  gg)zè
Conservatively check if padding can be fused with downstream op.
1. if the downstream op is a sum, then there is little benefit to
   do inplace padding
2. if the downstream op is a matmul, doing inplace padding can
   save membw.
Tr/   r   F)rS   r]   r^   rŸ   r_   rÉ   ra   rÄ  Úmmr¹  Úaddmm)r^   r_   s     re   Ú_padding_can_be_fusedÚ6inplace_constant_pad_nd.<locals>._padding_can_be_fused®  sk   € ô —w‘w×+Ñ+ˆØÑØÜ�l×(Ñ(Ó)ˆÜˆu‹:˜‹?˜u Q™xŸ™Ü�G‰G�O‰OÜ�J‰J×Ñð3
ó  
ð àrg   Nr«   r-   r/   r   rª   F)rÍ   rx  ry  rd  ÚinductorÚinplace_padding)rÉ   rÊ   r�  rk   r2   rC   rm   rç   rÐ  r0   Úcan_inplace_pad_graph_inputÚInputBufferrÞ   Úfreeze_layoutr�  r�  rë   rS   r]   Úbuffer_to_padded_sizerw  rt  r‡  Úfill_r   )r¦   ÚpaddingrÔ  rÝ  r  rŠ  rC  ÚnpadÚstride0ÚrowsizeÚbufnameÚpadded_sizeÚ	resized_xÚsliced_xs                 re   Úinplace_constant_pad_ndrî  £  sè  € òñ( ×ÑØô ˆ7ƒ|�qÓœC §
¡
£Ó-°Ó2Øð
 ‡I�I„Kô
 �qœ"Ÿ,™,×'Ñ'Ü˜!Ÿ&™&¤"§-¡-×0Ñ0ä�q—v‘v—{‘{¤B×$5Ñ$5×6Ñ6ä×2×2Ü˜qŸv™vŸ{™{¬B¯N©N×;Ñ;ð �v‰v�{‰{××àØ‡O�OÔä×(Ò(¨Ó+�I€AØ�m‰m€GØˆq�z�QƒØàˆq�z�Qƒ˜' !™*¨›/¨W°Q©Z¸1«_Øà�1‰:€DØˆqƒyØà�a‰j€GØ�k‰k˜!‰n€Gà˜4‘ÓØà�f‰f�k‰k×Ñ€GØ—;‘;˜q‘> 6§;¡;¨q¡>°DÑ#8Ð9€KØ-8„A‡G�G×!Ñ! 'Ñ*ÜØ	ØØ�‰Ø�‰ó	€Iô �i Q¨gÀT¹>ÐQVÑW€HÜ	ˆ(ÔäˆZÑÐ*Ó+¨qÑ0Ó+ØÐrg   c                óú  ^^^^^^^• [        U5      S-  S:X  d   e[        S U 5       5      (       a  [        U 5      $ [        R                  (       a  [        XT5      nU(       a  U$ U R                  5       n[        [        [        [        US S S2   USS S2   5      5      5      5      m[        U5      [        T5      -
  m/ mT H?  u  pVTR                  [        R                  R                  R                  U5      U45        MA     [        US T 5      n/ m[        TUTS  5       HC  u  u  p‰n
TR                  U
5        UR                  [        R                   " X¨-   U	-   5      5        ME     [        U5      [        U5      :X  d   e[#        U R%                  5       5      " T5      mUUUUU4S jmUUU4S jnU R'                  5       m[(        R*                  " U R-                  5       U R%                  5       UUS9$ )Nr-   r   c              3  ó*   #   • U  H	  oS :H  v •  M     g7f©r   Nrû   ©r™   râ  s     re   r›   Ú"constant_pad_nd.<locals>.<genexpr>  s   é € Ð
#š7�a�Ž6š7ùr#  r/   c                óN  >^ • / n[        T T	S  TT5       HL  u  nu  p4nUS:w  a  UR                  [        US5      5        US:w  d  M2  UR                  [        X%5      5        MN     [        R
                  " [        R                  U5      n[        R                  " UU U
4S jT5      $ )Nr   c                 ó   >• T" T 5      $ r—   rû   )rC  rL  s   €€re   rZ  Ú/constant_pad_nd.<locals>.mask.<locals>.<lambda>(  s	   ø€ ©°¬rg   )	r  ro   Úrange_mask_lowÚrange_mask_highr  r  rR   r¥  r¦  )rC  r¬  r?  r  r  r˜  ÚboundsrÔ  Ú
mask_sizesrÙ  rL  s   `     €€€€€re   r¬  Úconstant_pad_nd.<locals>.mask   s‰   ù€ ØˆÜ(+¨E°!°"¨I°v¸zÖ(JÑ$ˆC‘�#˜fØ�a‹xØ—‘œN¨3°Ó2Ô3Ø�q�yØ—‘œO¨CÓ8Ö9ñ	 )Kô
 ×Ò¤§¡¨$Ó/ˆÜ�zŠz˜$Õ 7¸ÓDÐDrg   c                óÀ   >• [        U S T 5      n[        U TS  T5       H  u  nu  p4UR                  X#-
  5        M     [        U5      [        U 5      :X  d   eT" U5      $ r—   )ri   r  ro   rÉ   )rC  r#  r?  r  Ú_highÚbounds_precompr¬  rÙ  s        €€€re   Ú	offset_fnÚ"constant_pad_nd.<locals>.offset_fn*  sa   ø€ Ü˜˜r ˜“Oˆ	Ü!$ U¨1¨2 Y°Ö!?ÑˆC‘�#Ø×Ñ˜S™YÖ'ñ "@ä�9‹~¤ U£Ó+Ð+Ð+Ù�I‹Ðrg   ri  )rÉ   r$  r�  r0   rà  rî  rÊ   ri   r0  r  ro   rS   r]   rä   Úlookup_precomputed_sizer½   r5  r   r¼   rk  r@   ré   rn   )r¦   ræ  rÔ  rq   r  ÚlÚhr+  r  r  rë   rÿ  rù  rþ  r¬  rú  rÙ  rL  s     `         @@@@@@re   r$  r$    s¯  þ€ ä�‹L˜1Ñ Ó"Ð"Ð"Ü
Ñ
#™7Ó
#×#Ñ#Ü�Q‹xˆä××Ü% a°*Ó=ˆÞØˆJð �J‰J‹L€Eä”(œ4¤ G©C¨a¨C¡L°'¸!¸$¸Q¸$±-Ó @ÓAÓBÓC€FÜˆE‹
”S˜“[Ñ €Að 68€NÛ‰ˆØ×ÑœqŸw™w×/Ñ/×GÑGÈÓJÈAÐNÖOñ ô �u˜R˜a�y“/€KØ€JÜ  ¨¨q¨r¨Ö3Ñ‰ˆ�TØ×Ñ˜$ÔØ×Ñœ5Ÿ<š<¨©
°TÑ(9Ó:Ö;ñ 4ô ˆ{Óœs 5›zÓ)Ð)Ð)Ü˜qŸ{™{›}Ô-¨jÓ9€J÷Eñ E÷ð �}‰}‹€HÜ×ÒØ�|‰|‹~Ø�k‰k‹mØØñ	ð rg   c                óä   • [         R                  " [         R                  " U [        R                  5      [         R                  " [
        R                  " U5      [        R                  5      5      $ r—   )rR   r£  r¡  r{   r¢  r½   r½  )rs   r  s     re   r÷  r÷  :  s@   € Ü�6Š6Ü�Š�qœ%Ÿ+™+Ó&Ü�Š”u—}’} SÓ)¬5¯;©;Ó7óð rg   c                ó¼   • [         R                  " [         R                  " U [        R                  5      [         R                  " U[        R                  5      5      $ r—   )rR   r¤  r¡  r{   r¢  )rs   r  s     re   rø  rø  A  s7   € Ü�6Š6Ü�Š�qœ%Ÿ+™+Ó&Ü�Š�tœUŸ[™[Ó)óð rg   c                óT   • [         R                  " [        X5      [        X5      5      $ r—   )rR   r¥  r÷  rø  )rs   r  r  s      re   Ú
range_maskr  H  s#   € Ü�8Š8Ü�qÓÜ˜Ó óð rg   c                ó–   ^ ^^^^^^^• T R                  5       T* S  mT R                  5       mT=(       d    S/T-  mUUUUUUU U4S jnU$ )Nr   c                óh  >^^• U S T*  mU T* S  m[         R                  " [        R                  [	        T5       Vs/ s H   n[        TU   TU   T
U   -   T
U   * 5      PM"     sn5      nT	(       a   [        R                  " UUUUUU4S jT5      $ [        R                  " UUUU4S jT5      $ s  snf )Nc                 ó.   >• [        TTT S9" / TQTQ5      $ )N©rÍ   )Úconstant_boundary_condition)rÍ   ÚihÚpad_fill_valueÚprefixr¦   s   €€€€€re   rZ  Ú;constant_boundary_condition.<locals>.load.<locals>.<lambda>c  s   ø€ Ô3°A°~È3ÒOØ"�f�N˜r�Nôrg   c                 ó   >• T" / TQT Q5      $ r—   rû   )r  r  rL  s   €€€re   rZ  r  i  s   ø€ ©(°>°V°>¸b°>Ô*Brg   )r  r  rR   r¥  r  r  r¦  )rC  rs   r¬  r  r  rÍ   rÔ  r  r  ræ  Ú	padding_hr¦   rL  s      @@€€€€€€€€re   r\  Ú)constant_boundary_condition.<locals>.loadW  s³   ú€ Ø�u˜˜�ˆØ�C�4�5ˆ\ˆä×ÒÜ�H‰HäLQÐRUÌJÓWÊJÀqŒZ˜˜1™˜q ™t i°¡lÑ2°Y¸q±\°MÖBÉJÑWó
ˆö ô �JŠJØ÷ð ð óð
	
ô —’˜DÖ"BÀJÓOð
	
ùò Xs   ¼'B/
)rÊ   rk  )	r¦   rÔ  ræ  r  rÍ   r\  r  r  rL  s	   ````` @@@re   r  r  O  sE   ÿ€ ð 	
�
‰
‹�c�T�UÐ€AØ�}‰}‹€Hà×$˜A˜3 ™9€I÷
ô 
ð* €Krg   ©Údilationc               óž  • Uc  S/[        U5      -  n[        U SXA   -  -   Xa   X!   S-
  -  -
  X1   S-
  -   X1   5      nU(       Ga  [        U SXA   -  -   Xa   X!   S-
  -  -
  SX1   S-
  -  -   X1   5      n[        R                  R                  R                  US-
  X1   -  U -
  XA   -
  5      S:¼  a<  US-  n[        R                  R                  R                  SXƒU   -  U -
  XA   -
  5        [        R                  R                  R                  Xx-
  5      S:X  a.  [        R                  R                  R                  Xx5        SnXu4$ UnXu4$ )Nr/   r-   r   F)rÉ   r)   rS   r]   rä   Ú	size_hintro  r4  )	r¦   rs   Úkernel_sizer�  ræ  Ú	ceil_moder  Úx_outÚx_alts	            re   Úpooling_sizer  o  si  € ØÑØ�3œ˜W›Ñ%ˆäØ	ˆA�‘
‰NÑ˜X™[¨K©N¸QÑ,>Ñ?Ñ?À6Á9ÈqÁ=ÑQØ‰	ó€E÷
 ÜØØ�'‘*‰nñà‰k˜[™^¨aÑ/Ñ0ñ1ð �6‘9˜q‘=Ñ!ñ"ð ‰Ió
ˆô �7‰7×Ñ×%Ñ% u¨q¡y°F±IÑ&=ÀÑ&AÀGÁJÑ&NÓOÐSTÓTà�Q‰JˆEÜ�G‰G×Ñ×&Ñ& q¨%¸±)Ñ*;¸aÑ*?À'Á*Ñ*LÔMÜ�7‰7×Ñ×%Ñ% e¡mÓ4¸Ó9ä�G‰G×Ñ×)Ñ)¨%Ô7ØˆIð ÐÐð ˆEØÐÐrg   c               ól   • [        X5      n [        R                  " [        R                  U 5      nUS:„  $ )Né   )rM   r  r  rB  rj  )r  Ún_dimÚwindow_sizes      re   Ú%should_fallback_max_pool_with_indicesr!  �  s-   € Ü˜{Ó2€KÜ×"Ò"¤8§<¡<°Ó=€KØ˜ÑÐrg   ©Úassert_fallbackc               óÐ  • US:X  a  S/U-  nUS:X  a  S/U-  nU(       d  Un[        X5      n[        X%5      n[        X55      n[        XE5      n[        U [        5      (       d   e[        U5      U:X  d   e[        U5      U:X  d   e[        U5      U:X  d   e[        U5      U:X  d   e[        U R	                  5       5      US-   US-   4;   d   e[        XS9nUb  Xv:X  d   eXX4U4$ )Nr   r/   r-   ©r  )rM   rk   rC   rÉ   rÊ   r!  )r¦   r  r�  ræ  r  r  r#  Úuse_fallbacks           re   Úmax_pool_checksr'  “  s  € ð �!ƒ|Ø�#˜‘+ˆØ�1ƒ}Ø�3˜‘;ˆÞØˆä˜{Ó2€KÜ˜&Ó(€FÜ˜7Ó*€GÜ˜HÓ,€Hä�aœ×#Ñ#Ð#Ð#Üˆ{Ó˜uÓ$Ð$Ð$Üˆv‹;˜%ÓÐÐÜˆw‹<˜5Ó Ð Ð Üˆx‹=˜EÓ!Ð!Ð!Üˆq�z‰z‹|Ó ¨¡¨E°A©IÐ 6Ó6Ð6Ð6ä8¸ÑR€LØÑ"ØÓ.Ð.Ð.à °<Ð?Ð?rg   c               ó&  ^^^^^• U R                  5         U R                  S T*  nU R                  T* S  n[        [        T5       V	s/ s H  n	[	        X‰   X‘TTUTS9PM     sn	6 u  p¥U R
                  nU[        R                  L a  SO;UR                  (       a  [        S5      O[        R                  " U5      R                  n[        U5      [        U
5      -   n[        T5      (       d'  [        U5      (       d  [        S T 5       5      (       a  [        XTS9mOU R                  5       mUUUUU4S jn[         R"                  " SU U R%                  5       UUUUUS9n[         R"                  " S	U U R%                  5       [        R&                  UUUUS9n[)        UR*                  R*                  [         5      (       a  UR-                  5         [)        UR*                  R*                  [         5      (       a  UR-                  5         UU4$ s  sn	f )
Nr  Fú-infc              3  ó*   #   • U  H	  oS :„  v •  M     g7frF  rû   r  s     re   r›   Ú)_max_pool_with_offsets.<locals>.<genexpr>Ï  s   é € Ð,EºH°q°®UºHùr#  r  c                ó¦   >• U S T*  nU T* S  n[        T5       Vs/ s H  nX4   T	U   -  X   TU   -  -   TU   -
  PM      nnT
" / UQUQ5      $ s  snf r—   ©r  )r?  Úreduction_idxr  Úbhrs   r  r  r  ræ  r�  rL  s         €€€€€re   Úfn_innerÚ(_max_pool_with_offsets.<locals>.fn_innerÔ  s‚   ø€ Ø�W�u�f�ˆØ�%��ˆ\ˆô ˜5”\ó
â!�ð ‰U�V˜A‘YÑ =Ñ#3°h¸q±kÑ#AÑBÀWÈQÁZÔOÙ!ð 	ð 
ñ ˜˜&˜ 2˜Ó'Ð'ùò	
s   ›%Ar‚  ©r›  Ú
input_noderv   Ú	dst_dtyper™  rg  rf  Úreduction_rangesÚargmax)r·  r<  r  r  r  r¸   r{   rÃ   r¾  r=  rÁ  r�  ri   r%  r  rk  rA   ré   rn   r¢  rk   rm   r�  )r¦   r  r�  ræ  r  r  r  r¹  Údhwr  Údhw_outr¸   Ú	min_valuerO  r0  r˜  ÚoffsetsrL  s     ``` `          @re   Ú_max_pool_with_offsetsr;  °  sÊ  ü€ ð ‡N�NÔØ�G‰G�G�e�VÐ€EØ
�'‰'�5�&�'Ð
€Cäô
 ˜5”\ó	

ò "�ô Ø‘˜¨°¸ÈXôñ "ñ	

ðÑ€Gð �G‰G€Eð ”E—J‘JÒñ 	à$×6×6Œe�FŒm¼E¿KºKÈÓ<N×<RÑ<Rð ô �E‹{œT '›]Ñ*€HÜ
ˆ7‡|�|”s˜9—~‘~¬Ñ,E¹HÓ,E×)EÑ)EÜ.¨qÀÑG‰à—=‘=“?ˆ÷(ñ (ô ×ÒØØØ�|‰|‹~ØØØØØ$ñ	€Fô ×ÒØØØ�|‰|‹~Ü—+‘+ØØØØ$ñ	€Gô �&—+‘+×"Ñ"¤I×.Ñ.à�‰ÔÜ�'—,‘,×#Ñ#¤Y×/Ñ/à�‰Ôà�7ˆ?Ðùòs

s   ÁHc                óö   • [        U5      n[        U UUUUUSS9u  pp4n[        R                  " SS9   [	        U UUUUUUS9u  p‰U[        U	[        R                  5      4sS S S 5        $ ! , (       d  f       g = f)NFr"  r  ©Úunroll_reductions_thresholdr%  )rÉ   r'  r0   r   r;  rö   r{   rÿ  )
r¦   r  r�  ræ  r  r  r  r  r˜  r:  s
             re   Ú!_low_memory_max_pool_with_offsetsr?  û  s‡   € ô �Ó€Eô 1@Ø	ØØØØØØñ1Ñ-€K˜¨Aô 
�Š°"Ó	5Ü0ØØØØØØØñ
‰ˆð ”x ¬¯©Ó4Ð4÷ 
6×	5×	5ús   ³-A*Á*
A8c                óR  ^^^^^^• [        T5      mU R                  5       m[        R                  " [        R
                  " [        R                  T5      5      mUUUUUU4S jn[        R                  " U R                  5       [        R                  UU R                  5       S9nU$ )Nc                óü   >• T	" U 5      n[         R                  " UT
5      n[        R                  " UT5      nT" X5      n[         R                  " [        R
                  " UTT* S  5      [        R                  5      $ r—   )rR   r  r1   Ú_flattened_index_to_ndr¡  Ú_flatten_indexr{   r¢  )r?  rt  Úoffset_sympyr.  ÚidhwÚincrements_to_indexÚ
input_sizer  r  Úoffsets_loaderr   s        €€€€€€re   Úoffsets_to_indicesÚ4_pool_offsets_to_indices.<locals>.offsets_to_indices+  sk   ø€ Ù Ó$ˆÜ×,Ò,¨V°[ÓAˆÜ&×=Ò=¸lÈKÓXˆÙ" 3Ó6ˆÜ�~Š~Ü×)Ò)¨$°
¸E¸6¸7Ð0CÓDÄeÇkÁkó
ð 	
rg   ri  )rÉ   rk  r½   r|  r  r  rB  rj  r@   ré   rn   r{   r¢  rÊ   )	r:  r  rG  rF  rI  r  r  rH  r   s	    ```  @@@re   Ú_pool_offsets_to_indicesrK    s�   ý€ ô �Ó€EØ×(Ñ(Ó*€NÜ—-’-¤	× 0Ò 0´·±¸{Ó KÓL€K÷
ò 
ô ×ÒØ×!Ñ!Ó#Ü�k‰kØ#Ø×ÑÓ!ñ	€Gð €Nrg   c                óJ   ^^^^• [        U5      mUUUU4S jn[        XX&5      $ )Nc                ó„   >• U T* S  n[        T5       Vs/ s H  nX#   TU   -  X   TU   -  -   TU   -
  PM      sn$ s  snf r—   r-  )r?  r.  r/  rs   r  r  ræ  r�  s       €€€€re   rF  ÚD_low_memory_max_pool_offsets_to_indices.<locals>.increments_to_indexF  s`   ø€ Ø�%��ˆ\ˆô ˜5”\ó
â!�ð ‰U�V˜A‘YÑ =Ñ#3°h¸q±kÑ#AÑBÀWÈQÁZÔOÙ!ñ
ð 	
ùò 
s   •%=)rÉ   rK  )r:  r  rG  r�  ræ  r  rF  r  s      ``` @re   Ú'_low_memory_max_pool_offsets_to_indicesrO  =  s-   û€ ô �Ó€E÷
ð 
ô $Ø˜jóð rg   c           
     ó~   • [        XX#XFS9u  pp4n[        XX#XEUS9u  p‰[        U	UU R                  U* S  UUU5      n
XŠ4$ )Nr%  )r'  r;  rO  r<  )r¦   r  r�  ræ  r  r  r  r  rq   r:  r  s              re   Ú_max_pool_with_indicesrQ  R  si   € ô 1@Ø	˜¨ñ1Ñ-€K˜¨Aô *Ø	˜¨ÀEñ�L€Cô 6ØØØ	�‰���ÐØØØó€Gð ˆ<Ðrg   c           
     ó   • [        XX#XESS9$ ©Nr-   r%  ©rQ  ©r¦   r  r�  ræ  r  r  s         re   Úmax_pool2d_with_indicesrV  p  ó   € ô "Ø	˜¨ÀAñð rg   c           
     ó   • [        XX#XESS9$ ©Nrª   r%  rT  rU  s         re   Úmax_pool3d_with_indicesrZ    rW  rg   c                ón  ^^^^^^^^^^^• TS:X  a  SS/mUS:X  a  SS/nT(       d  Tm[        U[        5      (       d   e[        T5      S:X  d   e[        T5      S:X  d   e[        T5      S:X  d   e[        U5      S:X  d   e[        UR                  5       5      S;   d   eU R	                  5         U R                  5       n[        U[        5      (       a»  [        UR                  R                  [        5      (       a’  UR                  R                  n	U	R                  5       n
U
c   e[        R                  " S [        R                  " U
U	R                  5       U	R                  5       S9U	S9nUR                  5         UR                  5       nOUR                  5       nUS L=(       a    US   S:H  =(       d    US L=(       a    US   S:H  n[        S U 5       5      (       a  [!        XTTTXVU5      $ UR                  5       Gt pïmU R                  5       Gt nmmUR#                  5       mU R#                  5       m[%        UR                  5       5      n['        UU4S j[)        TS   S-  5       5       5      m['        UU4S	 j[)        TS   S-  5       5       5      mTT-  nUS
:”  a  [!        XTTTXVU5      $ UR                  5       mUUUUUUUUUUU4S jn[        R*                  " U R                  5       U R                  5       UUS9nU(       a  [        R,                  R/                  U5      $ U$ )Nr   r/   r-   rr  )rv   r¸   rë   rh  c              3  ó*   #   • U  H	  oS :g  v •  M     g7frF  rû   r  s     re   r›   Ú3max_pool2d_with_indices_backward.<locals>.<genexpr>¾  s   é € Ð
$š8�a�Ž6š8ùr#  c              3  ó–   >#   • U  H>  n[        [        UTS    5      [        S [        UTS    -
  TS    5      5      -
  S5      v •  M@     g7f©r   r/   N©r‚  r)   ©r™   r  r  r�  s     €€re   r›   r]  Ë  óO   øé € ð â*ˆAô 	ŒH�Q˜˜q™	Ó"¤S¨¬H°Q¸ÀQ¹Ñ5GÈÐPQÉÓ,SÓ%TÑTÐVW×XÐXÚ*ùó   ƒAA	c              3  ó–   >#   • U  H>  n[        [        UTS    5      [        S[        UTS    -
  TS    5      5      -
  S 5      v •  M@     g7f©r/   r   Nr`  ©r™   Úwr  r�  s     €€re   r›   r]  Ï  rb  rc  r  c                óÚ  >• U Gt pn[         R                  " UT-  U-   [        R                  5      nUTS   -   nUTS   -   n[         R                  " [	        UTS   -
  TS   -   TS   5      [        R                  5      n[         R                  " [	        UTS   -
  TS   -   TS   5      [        R                  5      n[         R                  " [	        UTS   5      S-   [        R                  5      n[         R                  " [	        UTS   5      S-   [        R                  5      n[         R
                  " U[         R                  " S[        R                  5      5      n[         R
                  " U[         R                  " S[        R                  5      5      n[         R                  " U[         R                  " T[        R                  5      5      n[         R                  " U[         R                  " T[        R                  5      5      nS n	[        T5       GHD  n
[        T5       GH0  n[         R                  " U[         R                  " U
[        R                  5      5      n[         R                  " U[         R                  " U[        R                  5      5      n/ UQ[         R                  " [         R                  " U[         R                  " U[         R                  " S[        R                  5      5      5      TS   SS9P[         R                  " [         R                  " U[         R                  " U[         R                  " S[        R                  5      5      5      TS   SS9PnT" U5      nT" U5      n[         R                  " Xô5      nU	c>  [         R                  " UU[         R                  " S[        R                  5      5      n	GM¯  [         R                  " [         R                  " [         R                   " XÇ5      [         R                   " XØ5      5      U5      n[         R                  " U[         R                  " U	U5      U	5      n	GM3     GMG     U	c   eU	$ )Nr   r/   éþÿÿÿFr<  rW  r   )rR   r¡  r{   rû  r)   r»  rÞ  r¼  r  r¢   r  rà  r�  r  ræ  r¥  r¤  )r?  r  r  rg  Ú
index_testÚphstartÚpwstartÚphendÚpwendÚgradientÚph_Úpw_ÚphÚpwÚ
grad_indexÚindex_actualÚ	grad_partr   r¬  Úgrad_loaderÚh_window_sizer  Úindices_sizer  ræ  Úpooled_heightÚpooled_widthr�  Úw_window_sizeÚwidths                      €€€€€€€€€€€re   r   Ú,max_pool2d_with_indices_backward.<locals>.fnÞ  s+  ø€ Ø‰ˆ�AÜ—^’^ A¨¡I°¡M´5·;±;Ó?ˆ
Ø�˜‘
‰NˆØ�˜‘
‰NˆÜ—.’.Ü�Q˜ Q™Ñ'¨&°©)Ñ3°V¸A±YÓ?ÄÇÁó
ˆô —.’.Ü�Q˜ Q™Ñ'¨&°©)Ñ3°V¸A±YÓ?ÄÇÁó
ˆô —’œx¨¨6°!©9Ó5¸Ñ9¼5¿;¹;ÓGˆÜ—’œx¨¨6°!©9Ó5¸Ñ9¼5¿;¹;ÓGˆä—+’+˜g¤s§|¢|°A´u·{±{Ó'CÓDˆÜ—+’+˜g¤s§|¢|°A´u·{±{Ó'CÓDˆÜ—’˜E¤3§>¢>°-ÄÇÁÓ#MÓNˆÜ—’˜E¤3§>¢>°,ÄÇÁÓ#LÓMˆàˆÜ˜×'ˆCÜ˜]×+�Ü—W’W˜W¤c§l¢l°3¼¿¹Ó&DÓE�Ü—W’W˜W¤c§l¢l°3¼¿¹Ó&DÓE�ðØðä×)Ò)ÜŸš B¬¯ª°´s·|²|ÀAÄuÇ{Á{Ó7SÓ(TÓUØ$ RÑ(Ø#ñðô ×)Ò)ÜŸš B¬¯ª°´s·|²|ÀAÄuÇ{Á{Ó7SÓ(TÓUØ$ RÑ(Ø#ñð�
ñ  .¨jÓ9�Ù'¨
Ó3�	ÜŸš˜|Ó8�àÑ#ä"ŸyšyØ˜y¬#¯,ª,°s¼E¿M¹MÓ*Jó “Hô Ÿ8š8ÜŸšÜŸFšF 2Ó-ÜŸFšF 2Ó-óð ó�Dô  #Ÿyšy¨¬s¯wªw°xÀÓ/KÈXÓV“HôE ,ñ (ðH Ñ#Ð#Ð#Øˆrg   ri  )rk   rC   rÉ   rÊ   r·  r  rm   r@   rn   r2   rÐ  rÙ  r¼   Údecide_layoutru  r%  Ú)fallback_max_pool2d_with_indices_backwardrk  ri   r‚  r  ré   r  r5  )Úgrad_outputr¦   r  r�  ræ  r  r  r  Ú	gO_striderm   rv   Úx_bufferÚx_strideÚis_channels_lastÚ_batchÚ_heightr  rO  r   r   rq   rw  rx  r  ry  rz  r{  r|  r}  s     ```                @@@@@@@@re   Ú max_pool2d_with_indices_backwardrˆ  “  s  ÿú€ ð �!ƒ|Ø�a�&ˆØ�1ƒ}Ø�q�6ˆÞØˆä�aœ×#Ñ#Ð#Ð#Üˆ{Ó˜qÓ Ð Ð Üˆv‹;˜!ÓÐÐÜˆw‹<˜1ÓÐÐÜˆx‹=˜AÓÐÐÜˆq�z‰z‹|Ó Ó&Ð&Ð&ð ×ÑÔØ×,Ñ,Ó.€Iä�!”Y×Ñ¤J¨q¯v©v¯{©{¼I×$FÑ$FØ�v‰v�{‰{ˆØ—‘Ó"ˆØÑ!Ð!Ð!Ü×$Ò$ØÜ×$Ò$ØØ—n‘nÓ&Ø—]‘]“_ñð
 ñ
ˆð 	×ÑÔ Ø×&Ñ&Ó(‰à×%Ñ%Ó'ˆà ¨Ð,×A°¸!±ÀÑ1A÷ Ø˜Ð×3 )¨A¡,°!Ñ"3ð ô Ñ
$™8Ó
$×$Ñ$ä8Ø˜K¨°¸(Èwó
ð 	
ð  Ÿj™j›lÑ€V�eØ&1×&:Ñ&:Ó&<Ñ#€Qˆ�|à×(Ñ(Ó*€NØ×)Ñ)Ó+€KÜ�A—J‘J“LÓ!€Häõ ä�{ 1‘~¨Ñ)Ô*óó €Mô õ ä�{ 1‘~¨Ñ)Ô*óó €Mð
   -Ñ/€Kà�RÓä8Ø˜K¨°¸(Èwó
ð 	
ð ×#Ñ#Ó%€L÷9÷ 9ôv ×
Ò
Ø×%Ñ%Ó'Ø×#Ñ#Ó%ØØñ	€Cö Ü�‰×4Ñ4°SÓ9Ð9àˆ
rg   c                ó8   ^^• U R                  5       mUU4S jnU$ )Nc           
     ó  >^ ^^^	^
• Uu  mm	Uu  mm
Uu  pE[         R                  " [         R                  " [         R                  " TT-   [        R
                  5      [         R                  " U[        R
                  5      5      [         R                  " [         R                  " T
T	-   [        R
                  5      [         R                  " U[        R
                  5      5      5      n[         R                  " UUUU	U U
U4S jT5      $ )Nc                 ó,   >• T" / TQT T-   PTT-   P5      $ r—   rû   )Úh_start_indexr  Úiwr  Úw_start_indexrL  s   €€€€€€re   rZ  Ú3pad_adaptive_loader.<locals>.load.<locals>.<lambda>:  s$   ø€ ‘HÐN˜vÐN }°rÑ'9ÐN¸=È2Ñ;MÐNÔOrg   )rR   r¥  r¤  r¡  r{   r¢  r¦  )r  Ú
incrementsÚstart_indicesÚend_indicesÚh_end_indexÚw_end_indexr¬  rŒ  r  r�  rŽ  Úpad_valrL  s   `      @@@@€€re   r\  Ú!pad_adaptive_loader.<locals>.load(  s·   ý€ Ø‰ˆˆBØ'4Ñ$ˆ�}Ø#.Ñ ˆä�xŠxÜ�FŠFÜ—’˜}¨rÑ1´5·;±;Ó?Ü—’˜{¬E¯K©KÓ8óô �FŠFÜ—’˜}¨rÑ1´5·;±;Ó?Ü—’˜{¬E¯K©KÓ8óó	
ˆô �zŠzØßOÑOØó
ð 	
rg   ©rk  )r¦   r•  r\  rL  s    ` @re   Úpad_adaptive_loaderr˜  %  s   ù€ Ø�}‰}‹€Hö
ð, €Krg   c                ó²   • [         R                  " XUS9n[         R                  " XUS9n[         R                  " XUS9n[         R                  " XUS9n	XgX‰4$ )N)Úout_dimÚinp_dim)r  r+  )
r{  r|  Úh_inÚw_inÚh_outÚw_outrŒ  r“  rŽ  r”  s
             re   Ú compute_indices_adaptive_poolingr   A  sU   € Ü×%Ò% kÈ$ÑO€MÜ×#Ò# IÀdÑK€Kä×%Ò% kÈ$ÑO€MÜ×#Ò# IÀdÑK€Kà }ÐAÐArg   c                ó\   ^^^^^^• Uu  pgUu  p‰[        XXgX‰5      u  mmmmUUUUUU4S jn
U
$ )Nc                ó   >• U Gt p#nT" U5      nT" U5      nT" U5      nT" U5      nS n	[         R                  " [        TS   5      [        TS   5      5       H"  u  p«U" UX«/XW/Xh/5      nU	c  Un	M  T" XÉ5      n	M$     U	$ rø  )r  Úproductr  )r?  r'  r  r/  ÚbwrŒ  r“  rŽ  r”  r˜  r  r�  r"  Úh_end_index_fnÚh_start_index_fnÚkernel_maxesÚ
pooling_fnÚw_end_index_fnÚw_start_index_fns                €€€€€€re   r   Ú _adaptive_pooling_fn.<locals>.fnZ  s¡   ø€ Ø‰ˆ�Rá(¨Ó,ˆÙ$ RÓ(ˆá(¨Ó,ˆÙ$ RÓ(ˆàˆÜ×'Ò'¬¨l¸1©oÓ(>ÄÀlÐSTÁoÓ@VÖW‰FˆBÙØØ�ØÐ.ØÐ*ó	ˆCð ‰~Ø’á# CÓ0’ñ Xð ˆrg   ©r   )r{  r|  r§  Úin_sizesÚ	out_sizesr¨  rœ  r�  rž  rŸ  r   r¥  r¦  r©  rª  s     `  `     @@@@re   Ú_adaptive_pooling_fnr¯  K  sF   ý€ ð �J€DØ�L€Eô 	)Ø ¨Eó	ñØØØØ÷
ò ð. €Irg   c                ód   ^^^
^^^^• Uu  nmUu  px[        XUTXx5      u  mm
mmU
UUUUUU4S jn	U	$ )Nc                óÆ  >• U Gt p#nT" U5      nT" U5      nT" U5      nT" U5      nS n	S n
[         R                  " [        TS   5      [        TS   5      5       Hƒ  u  p¼U" UX¼/XW/Xh/5      n[        R                  " X[-   T-  U-   U-   [
        R                  5      nU
c  Un
O+[        R                  " [        R                  " XÙ5      Xê5      n
U	c  Un	M{  T" XÙ5      n	M…     U
$ rø  )	r  r£  r  rR   r¡  r{   r¢  r  Úgt)r?  r'  r  r/  r¤  rŒ  r“  rŽ  r”  ÚmaxvalÚmaxindexr  r�  r"  rC  r¥  r¦  r§  r¨  r©  r�  rª  s                  €€€€€€€re   r   Ú)_adaptive_pooling_fn_with_idx.<locals>.fnƒ  sõ   ø€ Ø‰ˆ�Rá(¨Ó,ˆÙ$ RÓ(ˆá(¨Ó,ˆÙ$ RÓ(ˆàˆØˆÜ×'Ò'¬¨l¸1©oÓ(>ÄÀlÐSTÁoÓ@VÖW‰FˆBÙØØ�ØÐ.ØÐ*ó	ˆCô —N’NØÑ# tÑ+¨mÑ;¸bÑ@Ä%Ç+Á+óˆEð ÑØ ‘äŸ9š9¤S§V¢V¨CÓ%8¸%ÓJ�à‰~Ø’á# CÓ0’ñ) Xð, ˆrg   r¬  )r{  r|  r§  r­  r®  r¨  rœ  rž  rŸ  r   r¥  r¦  r©  r�  rª  s     `  `    @@@@@re   Ú_adaptive_pooling_fn_with_idxr¶  t  sK   þ€ ð �J€Dˆ$Ø�L€Eô 	)Ø  d¨Eó	ñØØØØ÷
!ó !ðF €Irg   c           	     ó&  ^ ^^• T R                  5       [        R                  :X  a  [        S5      e[	        T [
        5      (       d   e[        U5      S:X  d   eT R                  5         T R                  5       Gt p#n[        R                  R                  R                  U5      n[        R                  R                  R                  U5      nUu  pVX5:X  a  XF:X  a  [        T 5      $ US:X  d  US:X  a/  / UQUPUPn[        UT R                  5       T R                  5       S9$ X5-  S:X  a*  XF-  S:X  a"  [!        X55      [!        XF5      /n[#        T U5      $ [%        X5-   S-
  U5      n	[%        XF-   S-
  U5      n
['        U5      XV/-   nT R                  5       nXš-  nUS:”  a  [)        T U5      $ S nS n[+        UUXš/X4/XV/[,        R.                  S	9m[1        [3        T 5      5      mUUU 4S
 jn[4        R6                  " T R                  5       UUUS9nU$ )Nz0'adaptive_avg_pool2d' not implemented for 'Long'r-   r   rD  r/   r  c                ó   • [        X-  U5      $ r—   ©r)   ©rC  rš  r›  s      re   r{  Ú)_adaptive_avg_pool2d.<locals>.start_indexÔ  ó   € Ü˜™¨7Ó3Ð3rg   c                ó2   • [        U S-   U-  U-   S-
  U5      $ rô  r¹  rº  s      re   r|  Ú'_adaptive_avg_pool2d.<locals>.end_index×  ó"   € Ü˜ ™ gÑ-°Ñ7¸!Ñ;¸WÓEÐErg   ©r{  r|  r§  r­  r®  r¨  c                ó`   >• [         R                  " T" U [        T5      5      T" U T5      5      $ r—   )rR   Útruedivr˜  )r?  Úfn_sumÚones_loaderr¦   s    €€€re   r   Ú _adaptive_avg_pool2d.<locals>.fnå  s-   ø€ Ü�{Š{Ù�3Ô+¨AÓ.Ó/±¸¸[Ó1Ió
ð 	
rg   ri  )r¼   r{   r¢  rÅ  rk   rC   rÉ   r·  rÊ   rS   r]   rä   r  r�  rN  rn   r)   Ú
avg_pool2drF   ri   Úfallback_adaptive_avg_pool2dr¯  rR   r¢   r˜  Ú	ones_liker@   ré   )r¦   r+  r¹  rœ  r�  rž  rŸ  Úo_sizer  Úh_kernel_maxÚw_kernel_maxrO  r¸   r   r{  r|  r   ÚrvrÃ  rÄ  s   `                 @@re   Ú_adaptive_avg_pool2drÍ  ®  sò  ú€ à‡{�{ƒ}œŸ™Ó#äÐMÓNÐNÜ�aœ×#Ñ#Ð#Ð#Üˆ{Ó˜qÓ Ð Ð Ø‡N�NÔàŸ™›Ñ€U�$ä�7‰7×Ñ×%Ñ% dÓ+€DÜ�7‰7×Ñ×%Ñ% dÓ+€Dà�L€Eð ƒ}˜›Ü�Q‹xˆà�ƒz�U˜a“ZØ'�5Ð'˜%Ð' Ð'ˆÜ�V 1§;¡;£=¸¿¹»ÑHÐHØ�|�qÓ˜T™\¨QÓ.Ü Ó,¬h°tÓ.CÐDˆÜ˜!˜[Ó)Ð)ä˜D™L¨1Ñ,¨uÓ5€LÜ˜D™L¨1Ñ,¨uÓ5€Lä�E‹{˜e˜^Ñ+€HØ�K‰K‹M€EàÑ-€KØ�RÓä+¨A¨{Ó;Ð;ò4òFô "ØØØ"Ð1Ø�Ø�.Ü—7‘7ñ€Fô &¤i°£lÓ3€K÷
ô
 
×	Ò	Ø�|‰|‹~ØØØñ	
€Bð €Irg   c           	     óž  ^ ^^• T R                  5       [        R                  :X  a  [        S5      e[	        T [
        5      (       d   e[        U5      S:X  d   eT R                  5         T R                  5       Gt p#n[        R                  R                  R                  U5      n[        R                  R                  R                  U5      nUu  pVUS:X  d  US:X  aV  / UQUPUPn[        UT R                  5       T R                  5       S9[        U[        R                  T R                  5       S94$ X5-  S:X  a  XF-  S:X  a  [        e[!        X5-   S-
  U5      n[!        XF-   S-
  U5      n	[#        U5      XV/-   n
T R                  5       nX‰-  nUS:”  a  [%        T U5      $ S nS n['        UUX‰/X4/XV/[(        R*                  S	9m[-        UUX‰/X4/XV/[(        R*                  S	9mUU 4S
 jnUU 4S jn[.        R0                  " T R                  5       UUU
S9n[.        R0                  " T R                  5       [        R                  UU
S9nUU4$ )Nz,adaptive_max_pool2d not implemented for Longr-   r   rD  r/   r  c                ó   • [        X-  U5      $ r—   r¹  rº  s      re   r{  Ú(adaptive_max_pool2d.<locals>.start_index  r¼  rg   c                ó2   • [        U S-   U-  U-   S-
  U5      $ rô  r¹  rº  s      re   r|  Ú&adaptive_max_pool2d.<locals>.end_index!  r¿  rg   rÀ  c           	     ó<   >• T" U [        T[        S5      5      5      $ ©Nr)  ©r˜  r=  )r?  Úinner_func_max_valr¦   s    €€re   Úinner_fn_max_valÚ-adaptive_max_pool2d.<locals>.inner_fn_max_val6  ó   ø€ Ù! #Ô':¸1¼eÀF»mÓ'LÓMÐMrg   c           	     ó<   >• T" U [        T[        S5      5      5      $ rÔ  rÕ  )r?  Úinner_func_max_idxr¦   s    €€re   Úinner_fn_max_idxÚ-adaptive_max_pool2d.<locals>.inner_fn_max_idx9  rÙ  rg   ri  )r¼   r{   r¢  rÅ  rk   rC   rÉ   r·  rÊ   rS   r]   rä   r  rN  rn   Ú
ValueErrorrF   ri   Úfallback_adaptive_max_pool2dr¯  rR   r»  r¶  r@   ré   )r¦   r+  r¹  rœ  r�  rž  rŸ  rÉ  rÊ  rË  rO  r¸   r   r{  r|  r×  rÜ  rÌ  ÚrirÛ  rÖ  s   `                  @@re   Úadaptive_max_pool2drá  ù  s3  ú€ à‡{�{ƒ}œŸ™Ó#äÐIÓJÐJÜ�aœ×#Ñ#Ð#Ð#Üˆ{Ó˜qÓ Ð Ð Ø‡N�NÔàŸ™›Ñ€U�$ä�7‰7×Ñ×%Ñ% dÓ+€DÜ�7‰7×Ñ×%Ñ% dÓ+€Dà�L€Eà�ƒz�U˜a“ZØ'�5Ð'˜%Ð' Ð'ˆÜ�V 1§;¡;£=¸¿¹»ÑHÌ%Øœ%Ÿ+™+¨a¯l©l«nñK
ð 
ð 	
ð �|�qÓ˜T™\¨QÓ.äÐä˜D™L¨1Ñ,¨uÓ5€LÜ˜D™L¨1Ñ,¨uÓ5€Lä�E‹{˜e˜^Ñ+€HØ�K‰K‹M€EàÑ-€KØ�RÓä+¨A¨{Ó;Ð;ò4òFô .ØØØ"Ð1Ø�Ø�.Ü—;‘;ñÐô 7ØØØ"Ð1Ø�Ø�.Ü—;‘;ñÐöNöNô 
×	Ò	Ø�|‰|‹~ØØ!Øñ	
€Bô 
×	Ò	Ø�|‰|‹~Ü�k‰kØ!Øñ	
€Bð ˆrˆ6€Mrg   c                ój   ^ ^^^^^^• TT   mTT   mTT   mT R                  5       mUUUUUU U4S jnU$ )Nc                ó|  >• TR                  5       n[        U5      S:X  a]  [        U 5      S:X  a  T" SU S   TS-
  T
-
  /5      nOK[        U 5      S:¼  a  T" U S   U S   TS-
  T
-
  /5      nO$T" SSTS-
  T
-
  /5      nOT" / U QTS-
  T
-
  P5      n[        R                  " UTR	                  5       5      n[        R                  " TT-
  [
        R                  5      n[        R                  " TS-
  [
        R                  5      n[        R                  " [        R                  " U[
        R                  5      [        R                  " U[
        R                  5      5      n[        R                  " [        R                  " US5      SU5      n[        R                  " XC-   U-  5      [        R                  " X7-  5      -
  n[        R                  " U[
        R                  5      n[        R                  " XF5      n	[        R                  " [        R                  " X˜U5      [        R                   " T5      5      $ )Nrª   r/   r   r-   )rÊ   rÉ   rR   r¡  r¼   r{   r¢  rÂ  rö   Úfloat64r  r�  r5  r¤  r  r½   r|  )r  rs   Úsamples_shapeÚsampleÚi_exprÚdiffÚout_sz_exprrQ  Úseq_ir¬  rÍ   Úin_szÚ	kernel_szÚndimsÚout_szÚsamplesÚsamples_loaders             €€€€€€€re   r\  Ú)_fractional_pooling_offsets.<locals>.loadQ  s½  ø€ ð  ×(Ñ(Ó*ˆäˆ}Ó Ó"Ü�6‹{˜aÓñ (¨¨F°1©I°u¸q±yÀ3±Ð(GÓH‘Ü�V“ Ó!ñ (¨°©°F¸1±I¸uÀq¹yÈ3¹Ð(OÓP‘ñ (¨¨A¨u°q©y¸3©Ð(?Ó@‘ñ $Ð$> fÐ$>¨e°a©i¸#©oÐ$>Ó?ˆFÜ—’  7×#4Ñ#4Ó#6Ó7ˆÜ�~Š~˜e iÑ/´·±Ó=ˆÜ—n’n V¨a¡Z´·±Ó=ˆÜ—’Ü�LŠL˜œuŸ}™}Ó-¬s¯|ª|¸KÌÏÉÓ/Wó
ˆô —	’	œ#Ÿ&š& ¨aÓ0°!°UÓ;ˆÜ—	’	˜6™?¨eÑ3Ó4´s·y²yÀÁÓ7PÑPˆÜ—’˜U¤E§K¡KÓ0ˆÜ�vŠv�fÓ*ˆÜ×$Ò$¤S§Y¢Y¨t¸DÓ%AÄ5Ç=Â=ÐQVÓCWÓXÐXrg   r—  )rï  rë  rî  rì  rÍ   rí  r\  rð  s   `````` @re   Ú_fractional_pooling_offsetsrò  K  s@   þ€ Ø�C‰[€FØ�#‰J€EØ˜#‘€IØ×(Ñ(Ó*€N÷!Yó !YðF €Krg   c                ó   • [        XX#SS9$ rS  ©Ú_fractional_max_pool©r¦   r  r+  Úrandom_sampless       re   Úfractional_max_pool2drø  w  ó   € ä °ÐSTÑUÐUrg   c                ó   • [        XX#SS9$ rY  rô  rö  s       re   Úfractional_max_pool3drû  |  rù  rg   c                óô  ^^^^• U R                  5         U R                  S T*  U R                  T* S  pe[        R                  " SS9   [	        T5       Vs/ s H  n[        UUUUTUS9PM     snmU R                  5       mUUU4S jnUU4S jm[        U5      [        U5      -   n	U R                  5       n
[        R                  " SU U R                  5       U
U
UU	US9n[        R                  " SU U R                  5       [        R                  U
UU	US9n[        U[        5      (       d   U5       e[        UR                   R                   [        5      (       a  UR#                  5         [        U[        5      (       d   U5       e[        UR                   R                   [        5      (       a  UR#                  5         [%        XÁU R                  T5      nX½4sS S S 5        $ s  snf ! , (       d  f       g = f)	Nr  r=  )rï  rë  rî  rì  rí  rÍ   c                ó4   >• U S T*  nT" / UQT" X5      Q5      $ r—   rû   )r?  r.  r  rF  r  rL  s      €€€re   r0  Ú&_fractional_max_pool.<locals>.fn_inner”  s,   ø€ Ø˜˜5˜&�\ˆFÙÐO˜fÐOÑ':¸3Ó'NÐOÓPÐPrg   c                ó€   >• U S T*  nU T* S  n[        T5       Vs/ s H  nTU   " X#U   5      X   -   PM     sn$ s  snf r—   r-  )r?  r.  r  Úbdhwr  Údhw_index_fnr  s        €€re   rF  Ú1_fractional_max_pool.<locals>.increments_to_index˜  s]   ø€ Ø˜˜5˜&�\ˆFØ˜�v�w�<ˆDô ˜uœóâ%�Að ˜Q’ ¨Q©Ó0°=Ñ3CÔCÙ%ñð ùò s   ›;r‚  r2  r6  )r·  r<  r0   r   r  rò  rk  ri   r¼   rA   ré   rn   r{   r¢  rk   rC   rm   r�  rK  )r¦   r  r+  r÷  r  r¹  Úinp_dhwr  r0  rO  r¸   r˜  r:  r  r  rF  rL  s       `         @@@re   rõ  rõ  �  sº  û€ Ø‡N�NÔØ—W‘W˜W˜u˜fÐ% q§w¡w°¨v¨wÐ'7ˆ7ä	�Š°"Ó	5ô ˜5”\ó

ò "�ô (Ø&ØØ"Ø%ØØôñ "ñ

ˆð —=‘=“?ˆ÷	Qö	ô ˜“;¤ kÓ!2Ñ2ˆØ—‘“ˆÜ×!Ò!Ø ØØ—<‘<“>ØØØØØ(ñ	
ˆô ×"Ò"Ø#ØØ—<‘<“>Ü—k‘kØØØØ(ñ	
ˆô ˜&¤)×,Ñ,Ð4¨fÓ4Ð,Ü�f—k‘k×&Ñ&¬	×2Ñ2à�N‰NÔÜ˜'¤9×-Ñ-Ð6¨wÓ6Ð-Ü�g—l‘l×'Ñ'¬×3Ñ3à�O‰OÔä*Ø !§'¡'Ð+>ó
ˆð ˆ÷{ 
6Ñ	5ùò

÷ 
6Õ	5ús   ÁG)ÁG$Á.E,G)Ç$G)Ç)
G7c           	     ó`  ^ ^^• T R                  5         T R                  5       Gt pVn[        R                  R                  R                  U5      n[        R                  R                  R                  U5      nUGt pXn	Xh-  S:X  a'  Xy-  S:X  a  [        T [        Xh5      [        Xy5      /SS9$ [        Xh5      n
[        Xy5      nS mU4S jn[        TUX«/Xg/X‰/[        R                  S9mUU 4S jn[        R                  " T R                  5       T R                  5       U[!        U5      S9nU$ )	Nr   r/   )Údivisor_overridec                óF   • [        X-  [        R                  " U5      5      $ r—   )r(   r½   r|  rº  s      re   r{  Ú0upsample_nearest2d_backward.<locals>.start_indexÚ  s   € Ü�u‘¬¯ª°gÓ(>Ó?Ð?rg   c                ó   >• T" U S-   X5      $ rô  rû   )rC  rš  r›  r{  s      €re   r|  Ú.upsample_nearest2d_backward.<locals>.end_indexÝ  s   ø€ Ù˜E A™I¨Ó9Ð9rg   rÀ  c                ó(   >• T" U [        T5      5      $ r—   )r˜  )r?  rÃ  r¦   s    €€re   r   Ú'upsample_nearest2d_backward.<locals>.fné  s   ø€ Ù�cÔ.¨qÓ1Ó2Ð2rg   ri  )r·  rÊ   rS   r]   rä   r  rÆ  r)   rF   r¯  rR   r¢   r@   ré   rn   r¼   ri   )r¦   r+  rG  rÇ  rÈ  r†  Úinp_hÚinp_wÚout_hÚout_wrÊ  rË  r|  r   rÌ  rÃ  r{  s   `              @@re   Úupsample_nearest2d_backwardr  Å  s  ú€ ð ‡N�NÔàŸJ™J›LÑ€V�EÜ�G‰G×Ñ×&Ñ& uÓ-€EÜ�G‰G×Ñ×&Ñ& uÓ-€Eð 'Ñ€V�Eà�}˜Ó˜e™m¨qÓ0ÜØ”˜Ó&¬°Ó(>Ð?ÐRSñ
ð 	
ô ˜5Ó(€LÜ˜5Ó(€Lò@õ:ô "ØØØ"Ð1Ø�Ø�.Ü—7‘7ñ€Fö3ô 
×	Ò	Ø�|‰|‹~Ø�k‰k‹mØä�JÓñ
€Bð €Irg   c                ó"   • [        U UUUUUUSS9$ )Nr-   r  ©Ú_avg_poolnd©r¦   r  r�  ræ  r  Úcount_include_padr  s          re   rÆ  rÆ  ÷  ó)   € ô Ø	ØØØØØØØñ	ð 	rg   c                ó"   • [        U UUUUUUSS9$ )Nrª   r  r  r  s          re   Ú
avg_pool3dr    r  rg   c                ó¢  ^^^^^^^• T(       d  TmT(       d  S/T-  m[        TT5      m[        TT5      m[        TT5      m[        U [        5      (       d   e[        T5      T:X  d   e[        T5      T:X  d   e[        T5      T:X  d   e[        U R	                  5       5      TS-   TS-   4;   d   eU R                  5         U R	                  5       S T*  nU R	                  5       T* S  m[        [        T5       V	s/ s H  n	[        TU	   U	TTTU5      PM     sn	6 u  p«[        T5      (       d  [        U5      (       a  [        U STS9mSnOU R                  5       mSn[        U5      [        U
5      -   nU R                  5       n[        U [        R                   SS9nUUUU4S	 jn["        R$                  " [&        R(                  T5      nUS
:”  a;  [        S [        TT5       5       5      (       a  [*        TS-
     nU" U TTTUTU5      $ US
::  a  [,        R.                  " S
S9O[0        R2                  " 5       nU R5                  5       nUc   eU   [6        R8                  " SU UUUUUTS9nS S S 5        [;        WR<                  S5      (       a9  [        UR<                  R<                  [6        5      (       a  UR?                  5         U(       a  U(       a  U(       a  UOUn[A        UU5      nO<UUUUUU4S jn[B        R8                  " U R5                  5       UUUS9n[A        UU5      n[E        UU5      $ s  sn	f ! , (       d  f       NÕ= f)Nr   r/   r-   r   r  TF)rÐ   rÅ   c                óž   >• U S T*  nU T* S  nUn[        T5       Vs/ s H  oSU   TU   -  XE   -   TU   -
  PM     nnT	" / UQUQ5      $ s  snf r—   r-  )
r?  r.  r  r/  r  rs   rÍ   ræ  r�  rL  s
         €€€€re   r0  Ú_avg_poolnd.<locals>.fn_inner]  sn   ø€ Ø�U�s�d�ˆØ�#��ˆZˆØˆÜ>CÀC¼jÓIºj¸�‰e�f˜Q‘iÑ "¡%Ñ'¨'°!©*Ô4¹jˆÐIÙ˜˜&˜ 2˜Ó'Ð'ùò Js   �A
r  c              3  ó    #   • U  HD  u  p[         R                  R                  R                  [        R
                  " X5      5      v •  MF     g 7fr—   )rS   r]   rä   Ústatically_known_truer½   ÚNe)r™   rþ   rê   s      re   r›   Ú_avg_poolnd.<locals>.<genexpr>f  s9   é € ð  â,‰DˆAô 	
�‰×Ñ×.Ñ.¬u¯xªx¸«~×>Ð>Ú,ùs   ‚AAr=  r$  r2  rm   c                óÎ  >• U T* S  n/ n[        T5       H©  nX   TU   -  TU   -
  n[        R                  " UT
U   -   T	U   TU   -   5      nT(       d1  [        R                  " US5      n[        R                  " UT	U   5      n[        R
                  " XT-
  [        R                  5      nUR                  U5        M«     [        R                  " [        R                  U5      $ rî  )r  r½   ÚMinÚMaxrR   r¡  r{   rû  ro   r  r  rj  )r?  r/  Údivide_factorsrs   ÚhstartÚhendÚfactorr  rÍ   r  r  ræ  r�  s          €€€€€€re   Úfn_countÚ_avg_poolnd.<locals>.fn_count•  sÆ   ø€ Ø�c�T�U�ˆBàˆNÜ˜3–Z�Ø™ ¨¡Ñ*¨W°Q©ZÑ7�Ü—y’y ¨+°a©.Ñ!8¸!¸A¹$ÀÈÁÑ:KÓL�Þ(Ü"ŸYšY v¨qÓ1�FÜ Ÿ9š9 T¨1¨Q©4Ó0�DÜŸš¨©´u·{±{ÓC�Ø×%Ñ% fÖ-ñ  ô ×#Ò#¤C§G¡G¨^Ó<Ð<rg   ri  )#rM   rk   rC   rÉ   rÊ   r·  r  r  r  r%  r  rk  ri   r¼   rÖ   r   rH  r  r  rB  rj  Úfallbacks_avg_poolndr0   r   Ú
contextlibÚnullcontextrn   rA   ré   rð   rm   r�  Údiv_primr@   rö   )r¦   r  r�  ræ  r  r  r  rÍ   r¹  rs   rž  Ú
ceil_modesÚhad_paddingrO  r¸   Úoutput_dtyper0  r   ÚfallbackÚcontextrv   rÌ  Údivisorr˜  r'  Údivide_factorr  rL  s    ``` ` `                  @@re   r  r  *  s   þ€ ö ØˆÞØ�#˜‘)ˆÜ˜{¨CÓ0€KÜ˜& #Ó&€FÜ˜7 CÓ(€Gä�aœ×#Ñ#Ð#Ð#Üˆ{Ó˜sÓ"Ð"Ð"Üˆv‹;˜#ÓÐÐÜˆw‹<˜3ÓÐÐÜˆq�z‰z‹|Ó  q¡¨#°©'Ð 2Ó2Ð2Ð2à‡N�NÔØ�J‰J‹L˜˜3˜$Ð€EØ	�
‰
‹�c�T�UÐ€Aäô ˜3”Zó

â�ô ˜˜1™˜q +¨v°wÀ	ÖJÙñ

ðÑ€Eô ˆ7‡|�|”s˜:—‘Ü.¨q°#¸3Ñ?ˆØ‰à—=‘=“?ˆØˆä�E‹{œT %›[Ñ(€HØ�K‰K‹M€Eä%Ø	Ü;×CÑCØ!ñ€L÷(ð (ô ×"Ò"¤8§<¡<°Ó=€Kà�RÓœCñ  ä˜ VÔ,ó ÷ ñ ô (¨¨a©Ñ0ˆÙØØØØØØØó
ð 	
ð ˜"Óô 	�Š°Ò4ä×#Ò#Ó%ð ð �\‰\‹^€FØÑÐÐâ	Ü×ÒØ ØØØ"ØØØØ(ñ	
ˆ÷ 
ô ˆr�w‰w˜×Ñ¤J¨r¯w©w¯|©|¼Y×$GÑ$Gà
�
‰
ŒæÖ*Þ&6Ñ"¸KˆÜ˜"˜gÓ&‰÷	=ò 	=ô "×(Ò(Ø—<‘<“>ØØØñ	
ˆô ˜"˜mÓ,ˆä�F˜EÓ"Ð"ùòI

÷t 
�ús   Ã=L;ÉM Í 
Mc                ó(  ^^^^^^^^^^^^^^• Tb  TS:w  d   S5       eT(       d  TmT(       d  SS/m[        U [        5      (       d   e[        U[        5      (       d   e[        T5      S:X  d   e[        T5      S:X  d   e[        T5      S:X  d   e[        UR                  5       5      S;   d   eU R	                  5         UR                  5       Gt nmm[        TSTTTU5      u  pš[        TSTTTU5      u  p¼U R                  5       mTS   =(       d    TS   =(       d    U
=(       d    UmU R                  5       Gt nmm[        UR                  5       5      nUR                  5       n[        UU4S j[        TS   S-  5       5       5      m[        UU4S j[        TS   S-  5       5       5      mTT-  nUS:”  a  [        U UTTTUTT5      $ UUUUU4S	 jmUUUUUUUUUUUU4S
 jn[        R                  " U R                  5       UUUS9nU$ )Nr   údivisor must be not zeror-   rr  r/   c              3  ó–   >#   • U  H>  n[        [        UTS    5      [        S [        UTS    -
  TS    5      5      -
  S5      v •  M@     g7fr_  r`  ra  s     €€re   r›   Ú&avg_pool2d_backward.<locals>.<genexpr>Ü  rb  rc  c              3  ó–   >#   • U  H>  n[        [        UTS    5      [        S[        UTS    -
  TS    5      5      -
  S 5      v •  M@     g7fre  r`  rf  s     €€re   r›   r7  à  rb  rc  r  c           	     ón  >• [         R                  " TS   [        R                  5      n[         R                  " TS   [        R                  5      n[         R                  " TS   [        R                  5      n[         R                  " TS   [        R                  5      n[         R                  " TS   [        R                  5      n[         R                  " TS   [        R                  5      n[         R                  " [         R
                  " X5      U5      n[         R                  " [         R
                  " X5      U5      n	[         R                  " [         R                  " X†5      [         R                  " [         R                  " T[        R                  5      U5      5      n
[         R                  " [         R                  " X—5      [         R                  " [         R                  " T[        R                  5      U5      5      n[         R                  " U[         R                  " S[        R                  5      5      n[         R                  " U	[         R                  " S[        R                  5      5      n	[         R                  " U
[         R                  " T[        R                  5      5      n
[         R                  " U[         R                  " T[        R                  5      5      n[         R
                  " [         R                  " X¨5      [         R                  " X¹5      5      nU$ )zc
This computes the scaling factor that we will divide an element
by when `count_include_pad=False`
r   r/   )
rR   rÞ  r{   rû  rà  rj  r¼  r¢   r¡  r»  )rr  rs  Ústride_hÚstride_wÚpad_hÚpad_wÚkernel_hÚkernel_wr$  Úwstartr%  Úwendr3  Úheightr  ræ  r�  r}  s                €€€€€re   Ú!compute_pool_size_without_paddingÚ>avg_pool2d_backward.<locals>.compute_pool_size_without_paddingó  sÝ  ø€ ô
 —<’<  q¡	¬5¯;©;Ó7ˆÜ—<’<  q¡	¬5¯;©;Ó7ˆÜ—’˜W Q™Z¬¯©Ó5ˆÜ—’˜W Q™Z¬¯©Ó5ˆÜ—<’< ¨A¡´·±Ó<ˆÜ—<’< ¨A¡´·±Ó<ˆÜ—’œŸš Ó.°Ó6ˆÜ—’œŸš Ó.°Ó6ˆÜ�{Š{Ü�GŠG�FÓ%Ü�GŠG”C—N’N 6¬5¯;©;Ó7¸Ó?ó
ˆô �{Š{Ü�GŠG�FÓ%Ü�GŠG”C—N’N 5¬%¯+©+Ó6¸Ó>ó
ˆô —’˜V¤S§\¢\°!´U·[±[Ó%AÓBˆÜ—’˜V¤S§\¢\°!´U·[±[Ó%AÓBˆÜ�{Š{˜4¤§¢°¼¿¹Ó!DÓEˆÜ�{Š{˜4¤§¢°´u·{±{Ó!CÓDˆÜŸš¤§¢¨Ó 5´s·w²w¸tÓ7LÓMˆØÐrg   c                ó„  >• U Gt pnUTS   -   nUTS   -   n[         R                  " [        UTS   -
  TS   -   TS   5      [        R                  5      n[         R                  " [        UTS   -
  TS   -   TS   5      [        R                  5      n[         R                  " [        UTS   5      S-   [        R                  5      n[         R                  " [        UTS   5      S-   [        R                  5      n[         R
                  " U[         R                  " S[        R                  5      5      n[         R
                  " U[         R                  " S[        R                  5      5      n[         R                  " U[         R                  " T[        R                  5      5      n[         R                  " U[         R                  " T[        R                  5      5      nS n[        T5       GHD  n	[        T5       GH0  n
[         R                  " U[         R                  " U	[        R                  5      5      n[         R                  " U[         R                  " U
[        R                  5      5      nTb  TnO"T(       d  T(       d  TS   TS   -  nOT" X¼5      n[         R                  " T" / UQ[         R                  " [         R                  " U[         R                  " U[         R                  " S[        R                  5      5      5      TSS9P[         R                  " [         R                  " U[         R                  " U[         R                  " S[        R                  5      5      5      TSS9P5      U5      n[         R                  " [         R                  " X¶5      [         R                  " XÇ5      5      nUc=  [         R                  " Xþ[         R                  " S[        R                   5      5      nGM  [         R                  " U[         R                  " XŽ5      U5      nGM3     GMG     Uc   eU$ )Nr   r/   Fr<  r   )rR   r¡  r)   r{   rû  r»  rÞ  r¼  r  r¢   rÂ  r  rà  r¥  r¤  r  ræ  )r?  r  r  rg  rk  rl  rm  rn  ro  rp  rq  rr  rs  r¾  Úpartr¬  rC  r  r  rw  rx  r.  r  ræ  rz  r{  r�  r|  s                   €€€€€€€€€€€€re   r   Úavg_pool2d_backward.<locals>.fn  s  ø€ Ø‰ˆ�AØ�˜‘
‰NˆØ�˜‘
‰NˆÜ—.’.Ü�Q˜ Q™Ñ'¨&°©)Ñ3°V¸A±YÓ?ÄÇÁó
ˆô —.’.Ü�Q˜ Q™Ñ'¨&°©)Ñ3°V¸A±YÓ?ÄÇÁó
ˆô —’œx¨¨6°!©9Ó5¸Ñ9¼5¿;¹;ÓGˆÜ—’œx¨¨6°!©9Ó5¸Ñ9¼5¿;¹;ÓGˆä—+’+˜g¤s§|¢|°A´u·{±{Ó'CÓDˆÜ—+’+˜g¤s§|¢|°A´u·{±{Ó'CÓDˆÜ—’˜E¤3§>¢>°-ÄÇÁÓ#MÓNˆÜ—’˜E¤3§>¢>°,ÄÇÁÓ#LÓMˆàˆÜ˜×'ˆCÜ˜]×+�Ü—W’W˜W¤c§l¢l°3¼¿¹Ó&DÓE�Ü—W’W˜W¤c§l¢l°3¼¿¹Ó&DÓE�à#Ñ/Ø,‘EÞ&®kØ'¨™N¨[¸©^Ñ;‘Eá=¸bÓE�Eä—{’{ÙðØ#ðä×1Ò1Ü #§¢Ø$&¬¯ª°´s·|²|ÀAÄuÇ{Á{Ó7SÓ(Tó!"ð !.Ø&+ñðô  ×1Ò1Ü #§¢Ø$&¬¯ª°´s·|²|ÀAÄuÇ{Á{Ó7SÓ(Tó!"ð !-Ø&+ñðóð& ó)�ô. —x’xÜ—F’F˜2Ó%Ü—F’F˜2Ó%ó�ð Ñ#Ü"Ÿyšy¨´S·\²\À#ÄuÇ}Á}Ó5UÓV“Hä"Ÿyšy¨¬s¯wªw°xÓ/FÈÓQ“HôS ,ñ (ðV Ñ#Ð#Ð#Øˆrg   ri  )rk   rC   rÉ   rÊ   r·  r  rk  ri   r¼   r‚  r  Úfallback_avg_pool2d_backwardr@   ré   rn   )r�  r¦   r  r�  ræ  r  r  r  r  Ú_h_outÚ
ceil_mode1Ú_w_outÚ
ceil_mode2rO  r¸   r   r   rÌ  rC  rw  rx  r.  rB  rz  r{  r|  r}  s     ``` ``          @@@@@@@@@re   Úavg_pool2d_backwardrM  ³  s"  ÿý€ ð Ñ#Ð'7¸1Ó'<ÐXÐ>XÓXÐ<ÞØˆÞØ�a�&ˆä�k¤9×-Ñ-Ð-Ð-Ü�aœ×#Ñ#Ð#Ð#Üˆ{Ó˜qÓ Ð Ð Üˆv‹;˜!ÓÐÐÜˆw‹<˜1ÓÐÐÜˆq�z‰z‹|Ó Ó&Ð&Ð&à×ÑÔàŸ
™
›Ñ€Qˆ�ä%Ø��; ¨°óÑ€Fô & e¨Q°¸VÀWÈiÓXÑ€Fà×)Ñ)Ó+€Kà˜!‘*×F ¨¡
×F¨j×F¸J€Kà&1×&:Ñ&:Ó&<Ñ#€Qˆ�|Ü�A—J‘J“LÓ!€HØ�K‰K‹M€Eäõ ä�{ 1‘~¨Ñ)Ô*óó €Mô õ ä�{ 1‘~¨Ñ)Ô*óó €Mð
   -Ñ/€KØ�RÓä+ØØØØØØØØó	
ð 		
÷ñ ÷8?÷ ?ð ?ôB 
×	Ò	Ø×%Ñ%Ó'ØØØñ	
€Bð €Irg   c                ó  ^^^^^^^^^^^^^^^^^ • Tb  TS:w  d   S5       eT(       d  TmT(       d  / SQm[        U [        5      (       d   e[        U[        5      (       d   e[        T5      S:X  d   e[        T5      S:X  d   e[        T5      S:X  d   e[        UR                  5       5      S;   d   eU R	                  5         UR                  5       Gt nmmm [        TSTTTU5      u  pš[        TSTTTU5      u  p¼[        T STTTU5      u  pÞU R                  5       m[        T5      =(       d    U
=(       d    U=(       d    UmU R                  5       Gt nmmm[        UR                  5       5      nUR                  5       nUU4S j[        S5       5       u  mmmTT-  T-  nUS	:”  a  [        U UTTTUTT5      $ UUUUUU 4S
 jmUUUUUUUUUUUUUU4S jn[        R                  " U R                  5       UUUS9nU$ )Nr   r5  )r   r   r   rª   )r«   r¬   r/   r-   c              3  ór   >^#   • U  H+  m[        UUU4S  j[        TT   S-  5       5       5      v •  M-     g7f)c           
   3  óz   >#   • U  H0  n[        UTT   -  [        S UTT   -
  TT   -  5      -
  S5      v •  M2     g7fr_  )r‚  )r™   r  rs   r  r�  s     €€€re   r›   Ú0avg_pool3d_backward.<locals>.<genexpr>.<genexpr>Œ  sH   øé € ð 
â.�ô ��V˜A‘Y‘¤ Q¨¨[¸©^Ñ);ÀÀqÁ	Ñ(IÓ!JÑJÈA×NÐNÚ.ùs   ƒ8;r-   N)r‚  r  )r™   rs   r  r�  s    @€€re   r›   Ú&avg_pool3d_backward.<locals>.<genexpr>‹  sA   ùé € ð 3ò
 ˆAô	 	ö 
ä˜; q™>¨AÑ-Ô.ó
÷ 	
ð 	
ò ùs   „37é}   c           	     óø  >• S T 5       u  p4nS T 5       u  pgnS T 5       u  pšnS [        XU/X4U/XgU/5       5       u  pÍnS [        XÍU/XšU/TTT/XgU/5       5       u  nnnS XÍU4 5       u  pÍnS [        UUU/TTT/5       5       u  nnn[        R                  " [        R                  " [        R                  " Xü5      [        R                  " UU5      5      [        R                  " UU5      5      nU$ )Nc              3  ól   #   • U  H*  n[         R                  " U[        R                  5      v •  M,     g 7fr—   ©rR   rÞ  r{   rû  )r™   rê   s     re   r›   ÚQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>¢  s"   é € Ð'UÊfÈ¬¯ª°Q¼¿¹×(DÐ(DÊfùr?  c              3  ól   #   • U  H*  n[         R                  " U[        R                  5      v •  M,     g 7fr—   rV  rò  s     re   r›   rW  £  s"   é € ÐMÂWÀœsŸ|š|¨A¬u¯{©{×;Ð;ÂWùr?  c              3  ól   #   • U  H*  n[         R                  " U[        R                  5      v •  M,     g 7fr—   rV  )r™   rþ   s     re   r›   rW  ¤  s%   é € ð (
Ú2=¨QŒC�LŠL˜œEŸK™K×(Ð(²+ùr?  c              3  ó~   #   • U  H3  u  pn[         R                  " [         R                  " X5      U5      v •  M5     g 7fr—   )rR   rà  rj  )r™   râ  rê   Úpads       re   r›   rW  ¨  s5   é € ð "
ò‘	��cô �GŠG”C—G’G˜A“M 3×'Ð'òùs   ‚;=c           
   3  óî   #   • U  Hk  u  pp4[         R                  " [         R                  " X5      [         R                  " [         R                  " U[        R
                  5      U5      5      v •  Mm     g 7fr—   )rR   r¼  r¢   r¡  r{   rû  )r™   rx  rþ   rÍ   r[  s        re   r›   rW  ®  sV   é € ð 

ò'Ñ"�˜#ô �KŠKÜ—’˜Ó!¤3§7¢7¬3¯>ª>¸#¼u¿{¹{Ó+KÈSÓ#Q÷ð ò'ùs   ‚A3A5c              3  ó–   #   • U  H?  n[         R                  " U[         R                  " S [        R                  5      5      v •  MA     g7frñ  ©rR   r»  rÞ  r{   rû  )r™   rx  s     re   r›   rW  ¹  s4   é € ð "
â1�ô �KŠK˜œsŸ|š|¨A¬u¯{©{Ó;×<Ð<Ú1ùó   ‚AA	c              3  óš   #   • U  HA  u  p[         R                  " U[         R                  " U[        R                  5      5      v •  MC     g 7fr—   ©rR   r¼  r¡  r{   rû  )r™   ry  rÍ   s      re   r›   rW  ½  s6   é € ð 
âK‘�ô �KŠK˜œSŸ^š^¨C´·±Ó=×>Ð>ÚKùó   ‚A	A)r  rR   rj  rà  )Úpdrr  rs  Ústride_dr:  r;  Úpad_dr<  r=  Úkernel_dr>  r?  Údstartr$  r@  Údendr%  rA  r3  ÚdepthrB  r  ræ  r�  r}  s                      €€€€€€re   rC  Ú>avg_pool3d_backward.<locals>.compute_pool_size_without_padding¡  s.  ø€ Ù'UÉfÓ'UÑ$ˆ˜HÙMÁWÓMÑˆ�eñ(
Ù2=ó(
Ñ$ˆ˜Hñ"
ä Ø˜�˜x°8Ð<¸uÈUÐ>Sôó"
Ñˆ˜ñ

ô '*Ø Ð(Ø XÐ.Ø˜ Ð&Ø˜uÐ%ô	'ó	

Ñˆˆd�Dñ"
à ¨&Ñ1ó"
Ñˆ˜ñ
ä  t¨TÐ 2°U¸FÀEÐ4JÔKó
Ñˆˆd�Dô ŸšÜ�GŠG”C—G’G˜DÓ)¬3¯7ª7°4¸Ó+@ÓAÄ3Ç7Â7È4ÐQWÓCXó
ˆð Ðrg   c                óR  >• U Gt pp4S [        X#U/T5       5       u  p#nS [        X#U/TT!5       5       u  pVnS [        X#U/T!5       5       u  p‰n
S XVU4 5       u  pVnS [        X‰U
/TTT /5       5       u  p‰n
S n[        T5       GH—  n[        T5       GHƒ  n[        T"5       GHo  nS [        XVU/XÍU/5       5       u  nnnTb  TnO*T(       d  T(       d  TS   TS   -  TS	   -  nO
T" UUU5      n[        R                  " T" / UQ[        R                  " [        R
                  " U[        R                  " U[        R                  " S[        R                  5      5      5      TS
S9P[        R                  " [        R
                  " U[        R                  " U	[        R                  " S[        R                  5      5      5      TS
S9P[        R                  " [        R
                  " U[        R                  " U
[        R                  " S[        R                  5      5      5      T S
S9P5      U5      n[        R                  " [        R                  " [        R                  " Xø5      [        R                  " UU	5      5      [        R                  " UU
5      5      nUc>  [        R                  " UU[        R                  " S[        R                  5      5      nGMB  [        R                  " U[        R                  " UU5      U5      nGMr     GM†     GMš     Uc   eU$ )Nc              3  ó.   #   • U  H  u  pX-   v •  M     g 7fr—   rû   )r™   r  r[  s      re   r›   Ú2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>È  s   é € ÐAÒ)@™v˜q�1–7Ò)@ùrA  c              3  ó�   #   • U  H<  u  pn[         R                  " [        X-
  U-   U5      [        R                  5      v •  M>     g 7fr—   ©rR   r¡  r)   r{   rû  )r™   r  rþ   rê   s       re   r›   rm  Ê  s:   é € ð %
â>‘��aô �NŠNœ8 A¡E¨A¡I¨qÓ1´5·;±;×?Ð?Ú>ùs   ‚AAc              3  óˆ   #   • U  H8  u  p[         R                  " [        X5      S -   [        R                  5      v •  M:     g7frF  ro  )r™   r  rê   s      re   r›   rm  Ï  s4   é € ð 
â.‘�ô �NŠNœ8 A›>¨AÑ-¬u¯{©{×;Ð;Ú.ùs   ‚A Ac              3  ó–   #   • U  H?  n[         R                  " U[         R                  " S [        R                  5      5      v •  MA     g7frñ  r^  )r™   Úpstarts     re   r›   rm  Ô  s4   é € ð %
â5�ô �KŠK˜¤§¢¨Q´·±Ó <×=Ð=Ú5ùr_  c              3  óš   #   • U  HA  u  p[         R                  " U[         R                  " U[        R                  5      5      v •  MC     g 7fr—   ra  )r™   ÚpendÚ
pooled_dims      re   r›   rm  Ø  s;   é € ð 
ò%Ñ �ô �KŠK˜œcŸnšn¨Z¼¿¹ÓE×FÐFò%ùrb  c              3  óš   #   • U  HA  u  p[         R                  " U[         R                  " U[        R                  5      5      v •  MC     g 7fr—   )rR   r¢   rÞ  r{   rû  )r™   rr  Úp_s      re   r›   rm  ä  s:   é € ð "ò+™J˜Fô Ÿš ¬¯ª°R¼¿¹Ó(E×FÐFò+ùrb  r   r/   r-   Fr<  r   )r  r  rR   rÂ  r  r¼  rà  rÞ  r{   rû  r¥  r¤  r  ræ  r¢   )#r?  r  r  r  rg  Úpdstartrk  rl  Úpdendrm  rn  ro  Úpd_rp  rq  rc  rr  rs  r¾  rF  r¬  rC  r  Úd_window_sizer  rw  rx  r.  r  ræ  Úpooled_depthrz  r{  r�  r|  s#                        €€€€€€€€€€€€€€re   r   Úavg_pool3d_backward.<locals>.fnÆ  sÞ  ø€ ØÑˆ�AÙA¬¨a°A¨Y¸Ô)@ÓA‰ˆˆañ%
ä  a˜y¨+°vÔ>ó%
Ñ!ˆ˜'ñ

ä˜Q 1˜I vÔ.ó
Ñˆ�eñ
%
à"¨WÑ5ó%
Ñ!ˆ˜'ñ
ä$'Ø˜uÐ%¨°mÀ\Ð'Rô%ó
Ñˆ�eð ˆä˜×'ˆCÜ˜]×+�Ü  ×/�Cñ"ä*-Ø$¨wÐ7¸#ÀC¸ô+ó"‘J�B˜˜Bð (Ñ3Ø 0™Þ*¶+Ø +¨A¡°¸Q±Ñ ?À+ÈaÁ.Ñ P™á AÀ"ÀbÈ"Ó M˜äŸ;š;Ù#ðØ!'ðä #× 5Ò 5Ü$'§K¢KØ(*¬C¯GªG°E¼3¿<º<ÈÌ5Ï;É;Ó;WÓ,Xó%&ð %1Ø*/ñ!"ðô !$× 5Ò 5Ü$'§K¢KØ(*¬C¯GªG°E¼3¿<º<ÈÌ5Ï;É;Ó;WÓ,Xó%&ð %2Ø*/ñ!"ðô  !$× 5Ò 5Ü$'§K¢KØ(*¬C¯GªG°E¼3¿<º<ÈÌ5Ï;É;Ó;WÓ,Xó%&ð %1Ø*/ñ!"ð!óð4 ó7�Dô< Ÿ8š8ÜŸš¤§¢¨Ó!2´C·F²F¸2¸uÓ4EÓFÜŸš˜r 5Ó)ó�Dð  Ñ'Ü#&§9¢9Ø  $¬¯ª°S¼%¿-¹-Ó(Hó$›ô $'§9¢9¨T´3·7²7¸8ÀTÓ3JÈHÓ#U›ôm 0ô ,ñ (ðr Ñ#Ð#Ð#Øˆrg   ri  )rk   rC   rÉ   rÊ   r·  r  rk  r%  ri   r¼   r  Úfallback_avg_pool3d_backwardr@   ré   rn   )!r�  r¦   r  r�  ræ  r  r  r  r†  Ú_d_outÚceil_mode_drI  Úceil_mode_hrK  Úceil_mode_wr  rO  r¸   r   r   rÌ  rC  r{  ri  rw  rx  r.  rB  r|  rz  r{  r|  r}  s!     ``` ``             @@@@@@@@@@@@re   Úavg_pool3d_backwardrƒ  ^  s  ÿÿø€ ð Ñ#Ð'7¸1Ó'<ÐXÐ>XÓXÐ<ÞØˆÞÚˆä�k¤9×-Ñ-Ð-Ð-Ü�aœ×#Ñ#Ð#Ð#Üˆ{Ó˜qÓ Ð Ð Üˆv‹;˜!ÓÐÐÜˆw‹<˜1ÓÐÐÜˆq�z‰z‹|Ó Ó&Ð&Ð&à×ÑÔà$%§J¡J£LÑ!€VˆU�F˜Eä&Øˆq�+˜v w°	óÑ€Fô 'Ø��; ¨°óÑ€Fô 'Øˆq�+˜v w°	óÑ€Fð ×)Ñ)Ó+€KÜ�g“,×K +×K°×KÀ€Kà4?×4HÑ4HÓ4JÑ1€Qˆ�m \Ü�A—J‘J“LÓ!€HØ�K‰K‹M€Eõ3ô
 �q”ó3Ñ/€M�= -ð   -Ñ/°-Ñ?€KØ�SÓä+ØØØØØØØØó	
ð 		
÷#ò #÷JU÷ Uò Uôn 
×	Ò	Ø×%Ñ%Ó'ØØØñ	
€Bð €Irg   c                óF  • U R                  5       n[        U[        5      (       a  U/nOU(       d  [        [	        U5      5      n[	        U5      S:X  a  [        U5      S;   d
   SU 35       e/ $ [        U5      n[        [	        U5      5       Hg  nX   S:  a'  X==   [	        U5      (       a  [	        U5      OS-  ss'   SX   s=::  a  [	        U5      :  a  ML  O  [	        U5      S:X  a
  X   S:X  a  Mg   e   [	        [        U5      5      [	        U5      :X  d   S5       eU$ )Nr   )rû   rò  ©rW  zinvalid axis: r/   zreduction axis not unique)rÊ   rk   rµ   r  rÉ   rŸ   ri   r'   )r¦   rÄ  rë   rs   s       re   Ú_validate_reduction_axisr†  &  sô   € Ø�:‰:‹<€DÜ�$œ×ÑØˆv‰ÞÜ”S˜“YÓˆÜ
ˆ4ƒy�Aƒ~Ü�T‹{Ð/Ó/ÐH°>À$ÀÐ1HÓHÐ/Øˆ	Ü�‹:€DÜ”3�t“9ÖˆØ‰7�Q‹;Ø‹G¤C¨§I¡I”s˜4”y°1Ñ4‹GØ�D‘GÕ'œc $›i×'¬C°«I¸«N¸t¹wÈ!½|ÐLÐLñ ô Œz˜$ÓÓ ¤C¨£IÓ-ÐJÐ/JÓJÐ-Ø€Krg   )r›  c          	     ó°  ^^^^^^^• Ub  [        X5      n U R                  5       m[        [           " [	        X5      5      n/ n/ m/ m/ m[        [        T5      5       HT  nXq;   a'  TR                  U5        TR                  TU   5        M/  TR                  U5        UR                  TU   5        MV     SmUS;   Ga  [        T5      S:”  aó  [        U 5      (       aã  [        U R                  [        5      (       a  SmOÁ[        U R                  [        R                  5      (       d\  [        U R                  [        R                  5      (       ao  [        U R                  R                  [        R                  5      (       a<  U R!                  5       nUR#                  5       =(       d    UR%                  5       (       + mUUUUUUU4S jn	T(       a1  ['        T5      n
T H  n[(        R*                  R,                  X§'   M!     OUn
U R/                  5       m[1        U R3                  5       U=(       d    U R5                  5       U R5                  5       U	U
TS9$ )NF)r6  Úargminr/   Tc                ó¨  >• [        U5      [        T5      :X  d   eT
(       a.  [        U 5      [        T5      :X  d   eT Vs/ s H  o U   PM	     n n[        U 5      [        T5      :X  d   eS /[        U 5      [        U5      -   -  n[        R                  " [        TU 5      [        TU5      5       H	  u  pEXSU'   M     T	" U5      nT(       a{  U Vs/ s H  n[        R
                  " U5      PM     nnUS   n[        S[        U5      5       H  nUTU   -  Xr   -   nM     U[        R                  " U[        R                  5      4$ U$ s  snf s  snf rø  )rÉ   r  r  r  r½   r5  r  rR   r¡  r{   r¢  )rC  Úreduction_indexrs   r#  r?  Úvarrõ   ÚrindexÚ
linear_idxÚinner_loaderÚkeepdimsÚkept_idxÚreduced_idxÚreduced_sizesÚshould_compute_logical_indexrë   s            €€€€€€€re   r'  Ú%_make_reduction_inner.<locals>.loader]  s:  ø€ Ü�?Ó#¤s¨;Ó'7Ó7Ð7Ð7ÞÜ�u“:¤ T£Ó*Ð*Ð*Ù'/Ó0¢x !˜1”X¡xˆEÐ0Ü�5‹zœS ›]Ó*Ð*Ð*Ø�Fœc %›j¬3¨Ó+?Ñ?Ñ@ˆ	Ü!ŸšÜ�˜%Ó ¤# k°?Ó"Cö
‰HˆCð !�c‹Nñ
ñ ˜YÓ'ˆö (Ù/>Ó?ª¨!”e—l’l 1–o©ˆFÐ?ð   ™ˆJÜ˜1œc &›kÖ*�Ø'¨-¸Ñ*:Ñ:¸V¹YÑF’
ñ +ð œ3Ÿ>š>¨*´e·k±kÓBÐCÐCàˆùò+ 1ùò @s   ÁE
Ã E)rv   r4  r™  rg  rf  r5  )rö   rÊ   r'   rµ   r†  r  rÉ   ro   r;   rk   rm   r?   r2   rã   rç   ÚBufferrs  Úis_transposedÚis_contiguousri   r½   r1  r2  rk  r  rn   r¼   )r¦   rÄ  r�  r¸   rL  r›  Ú
kept_sizesrs   rŠ  r'  rO  rŽ  r�  r‘  r’  r“  rë   s     `        @@@@@@re   Ú_make_reduction_innerr™  8  sÆ  þ€ ð ÑÜ�QÓˆØ�:‰:‹<€DÜ”cŠ?Ô3°AÓ<Ó=€Dà€JØ€HØ€MØ€KÜ”3�t“9ÖˆØ‹9Ø×Ñ˜qÔ!Ø× Ñ   a¡Ö)à�O‰O˜AÔØ×Ñ˜d 1™gÖ&ñ ð $)Ð àÐ.Ô.Ü�Ó Ó"Ü�a�L‰Lä�a—f‘fœk×*Ñ*Ø+/Ñ(Ü˜Ÿ™¤× 2Ñ 2×3Ñ3Ü�q—v‘vœrŸ}™}×-Ñ-´*¸Q¿V¹V¿[¹[Ì"Ï)É)×2TÑ2Tà—\‘\“^ˆFà×$Ñ$Ó&×D¨f×.BÑ.BÓ.DÔ*Dð )÷ó ö6 Ü˜“:ˆÛˆAÜŸ'™'Ÿ+™+ˆH‹Kò ð ˆà—=‘=“?€LÜØ�|‰|‹~Ø'×8¨1¯;©;«=Ø—+‘+“-ØØØ&ñð rg   c                ó$   ^ ^• SS S.UU 4S jjjnU$ )Nr·   c          	     óÈ   >• [        U UUUTTS9n[        R                  " STU S.UD6n[        UR                  R                  [        5      (       a  UR                  5         U$ )N)rÄ  r�  r¸   rL  r›  )r›  r3  rû   )r™  rA   ré   rk   rm   r�  )r¦   rÄ  r�  r¸   rÿ   r˜  rL  r›  s         €€re   ru  Úmake_reduction.<locals>.inner‹  sj   ø€ Ü&ØØØØØ"7Ø)ñ
ˆô ×!Ò!ÐX°ÈAÑXÐQWÑXˆÜØ�K‰K×ÑÜ÷
ñ 
ð �N‰NÔØˆrg   rÜ   rû   )r›  rL  ru  s   `` re   Úmake_reductionr�  Š  s   ù€ ð°T÷ ò ð" €Lrg   c               óÂ   • Ub  [        X5      n [        X5      n[        U R                  5       U R	                  5       4U R                  5       4U R                  5       US9$ )N)rv   ÚdtypesÚ	inner_fnsrë   rÄ  )rö   rh  r  rn   r¼   rk  rÊ   )r¦   rÄ  r¸   s      re   Ú_make_scan_innerr¡  Ÿ  sV   € ØÑÜ�QÓˆÜ˜Ó!€DäØ�|‰|‹~Ø—‘“ÐØ—=‘=“?Ð$Ø�Z‰Z‹\Øñð rg   r·   c               ó  ^• Ub  [        X5      n U R                  5       m[        X5      nU R                  5       nU[        R
                  [        R                  4;   a  [        U [        R                  5      n [        XU5      n[        U4S jU 5       5      n[        R                  " X`R                  5       U R                  5       S9n[        R                  " U[        UR                  5       5      5      n[        [!        XV5      U5      $ )Nc              3  ó.   >#   • U  H
  nTU   v •  M     g 7fr—   rû   ©r™   rs   rë   s     €re   r›   Úmean.<locals>.<genexpr>¸  ó   øé € Ð0ª4 a˜$˜qž'ª4ùrü   rB  )rö   rÊ   r†  r¼   r{   rn  rm  r=  Úsum_rP   r2   r9   rn   r8   ré   ri   Údiv)r¦   rÄ  Úkeepdimr¸   r/  Ú
sum_resultÚdenomrë   s          @re   rž  rž  ­  sÄ   ø€ àÑÜ�QÓˆØ�:‰:‹<€DÜ# AÓ,€Dà—;‘;“=€LØœŸ™¤u§~¡~Ð6Ó6Ü�QœŸ™Ó$ˆÜ�a˜wÓ'€JÜÔ0©4Ó0Ó0€EÜ×Ò e·;±;³=ÈÏÉËÑX€EÜ×Ò˜e¤T¨*×*=Ñ*=Ó*?Ó%@ÓA€EÜ”C˜
Ó*¨LÓ9Ð9rg   c                óF  ^
• Uc  SnU R                  5       m
[        X5      n[        XSS9nU(       a  UR                  5         [	        [        X5      5      n[        XaU5      n[        U
4S jU 5       5      nU(       a  [        R                  " X‚-
  S5      n[        R                  " X€R                  5       U R                  5       S9n[        R                  " U[!        UR                  5       5      5      n[#        Xx5      n	U(       d  U	4$ U(       a  UO
[%        XQ5      nX•4$ )Nr/   T)r©  c              3  ó.   >#   • U  H
  nTU   v •  M     g 7fr—   rû   r¤  s     €re   r›   Ú var_mean_sum_.<locals>.<genexpr>Ë  r¦  rü   r   rB  )rÊ   r†  rž  r�  Úsquarerà  r§  rP   r½   r"  r2   r9   r¼   rn   r8   ré   ri   r¨  r  )r¦   rÄ  Ú
correctionr©  Úreturn_meanÚx_meanÚdiffsrª  r«  Úx_varrë   s             @re   Úvar_mean_sum_rµ  ¾  sä   ø€ ØÑØˆ
à�:‰:‹<€DÜ# AÓ,€DÜ�! 4Ñ(€FÞØ�‰Ôä”3�q“>Ó"€EÜ�e 7Ó+€JäÔ0©4Ó0Ó0€EÞÜ—	’	˜%Ñ,¨aÓ0ˆÜ×Ò e·;±;³=ÈÏÉËÑX€EÜ×Ò˜e¤T¨*×*=Ñ*=Ó*?Ó%@ÓA€EÜ�
Ó"€EÞØˆxˆæ‰V¤G¨FÓ$9€FØˆ=Ðrg   c                óú   • [        X5      n[        XUS S S9nUS   n[        US   5      n[        U[        R
                  5      =(       a1    [        U5      [        R                  :  =(       a    [        U5      S:g  $ )N©rÄ  r�  r¸   rL  rf  r5  r/   )	r†  r™  rP   rk   r½   r½  rµ   r0   r>  )r¦   rÄ  r©  rÿ   rf  Úreduction_numels         re   Úuse_two_step_variancer¹  Ø  sx   € ä# AÓ,€DÜ"Ø	˜w¨dÈ$ñ€Fð �HÑ€FÜ# FÐ+=Ñ$>Ó?€Oä�?¤E§M¡MÓ2÷ 	'Ü�Ó ¤6×#EÑ#EÑE÷	'ä˜&Ó! QÑ&ðrg   c               ó  ^^^^^• Tc  Sm[        XUS S S9nUR                  S5      nUR                  S5        UR                  S5        [        R                  R                  " SU4SU R                  5       S.UD6u  pxn	UR                  5         U R                  5       mU R                  5       m[        X5      n[        U4S jU 5       5      mS	 mUUUU4S
 jn
[        U
5      " U5      nU(       a  UR                  5         X·4$ U4$ )Nr/   r·  rg  r4  r™  Úwelford_reduce)r   r›  r¸   c              3  ó.   >#   • U  H
  nTU   v •  M     g 7fr—   rû   r¤  s     €re   r›   Ú$var_mean_welford_.<locals>.<genexpr>þ  s   øé € Ð1ªD q˜4 ž7ªDùrü   c                ó  • [        U [        R                  5      (       aK  U R                  (       d:  [        R
                  " [        R                  " U [        R                  5      U5      $ [        R                  " X5      $ r—   )
rk   r½   r¾   Ú	is_numberrR   rö   r¡  r{   r¢  rÞ  rD  s     re   Úget_constant_or_index_exprÚ5var_mean_welford_.<locals>.get_constant_or_index_expr   sH   € Ü�aœŸ™×$Ñ$¨Q¯[¯[Ü—<’<¤§¢¨q´%·+±+Ó >ÀÓFÐFÜ�|Š|˜AÓ%Ð%rg   c                óŽ   >• T" TT5      nT" TT5      n[         R                  " ST5      nU [         R                  " X2U-
  5      -  $ rî  )rR   rÞ  r»  )rm   ÚcÚNÚzeror°  r¸   rÀ  Úrnumels       €€€€re   r±  Ú#var_mean_welford_.<locals>.scale_fn  sC   ø€ Ù& z°5Ó9ˆÙ& v¨uÓ5ˆÜ�|Š|˜A˜uÓ%ˆØ”c—k’k $¨A©Ó.Ñ.Ð.rg   rû   )r™  rù  r2   ÚWelfordReductionré   r¼   r�  rÊ   r†  rP   rw  )r¦   rÄ  r°  r©  r±  rÿ   r'  rž  Úm2r  r±  r‹  r¸   rÀ  rÆ  rë   s     `         @@@@re   Úvar_mean_welford_rÊ  è  sù   ü€ ØÑØˆ
ä"Ø	˜w¨dÈ$ñ€Fð �Z‰Z˜
Ó#€FØ
‡J�Jˆ{ÔØ
‡J�Jˆ{Ôä×%Ñ%×,Ò,ð Ø�)Ø'Ø�k‰k‹mñð ñ	�K€Dˆað ‡J�J„Là�K‰K‹M€EØ�:‰:‹<€DÜ# AÓ,€DÜÔ1©DÓ1Ó1€Fò&÷
/ð /ô ˜Ô
" 2Ó
&€CæØ�‰ŒØˆyÐØˆ6€Mrg   c               óø   ^• U R                  5       m[        T5      n[        XSS9n [        U UUUUS9n[	        XUS9(       a  [        S0 UD6O
[        S0 UD6n[        U4S jU 5       5      nU(       d  US   $ U$ )NFr²  )r¦   rÄ  r°  r©  r±  )rÄ  r©  c              3  ó:   >#   • U  H  n[        UTS S9v •  M     g7f)Fr²  N)rö   )r™   r¦   rã  s     €re   r›   Ú#var_mean_helper_.<locals>.<genexpr>#  s   øé € ÐFºv¸!”8˜A˜y¨uÖ5ºvùr*  r   rû   )r¼   r   rö   r  r¹  rµ  rÊ  rŸ   )	r¦   rÄ  r°  r©  r±  rÔ   rÿ   r8  rã  s	           @re   Úvar_mean_helper_rÎ    s‰   ø€ Ø—‘“€IÜ)¨)Ó4€MÜ�¨Ñ.€AÜØ
ØØØØñ€Fô ! °w×?ô 	Ñ˜ÒäÑ( Ñ(ð ô
 ÔF¹vÓFÓF€FÞ'ˆ6�!‰9Ð3¨VÐ3rg   )r°  r©  c               ó   • [        XX#SS9$ )NF©rÄ  r°  r©  r±  ©rÎ  ©r¦   rÄ  r°  r©  s       re   Úvar_rÓ  '  s   € äØ	 È%ñð rg   c               ó   • [        XX#SS9$ )NTrÐ  rÑ  rÒ  s       re   Úvar_meanrÕ  .  s   € äØ	 È$ñð rg   c                ó(  • US:  a"  [        [        R                  " U 5      U* U5      $ US:X  a  [        R                  " SU5      $ US:X  a  U $ [        XS-  U5      n[        R                  " X35      nUS-  S:X  a  [        R                  " X05      nU$ )Nr   r/   r-   )Úpow_recursiverR   rº  rÞ  rj  )r¦   r9  r¸   r˜  s       re   r×  r×  5  sƒ   € Øˆ1ƒuÜœSŸ^š^¨AÓ.°°°EÓ:Ð:ØˆAƒvÜ�|Š|˜A˜uÓ%Ð%ØˆAƒvØˆä˜1 1™f eÓ,€FÜ�WŠW�VÓ$€FØ	ˆA‰�!ƒ|Ü—’˜Ó#ˆØ€Mrg   c                ó.   • [         R                  " X5      $ r—   )rR   rß  ©rñ   r7  s     re   Ú
pow_nativerÚ  D  s   € ä�7Š7�1‹=Ðrg   )r  c                ó  ^ ^^• [        T[        5      (       a*  TR                  5       (       a  [        T [	        T5      5      $ [        T[        5      (       a  TS:X  a  [        T 5      $ [        T[        5      (       a  TS:X  a  [        T 5      $ [        S T T4 5       5      n[        U5      n[        T[        5      =(       a*    STs=:  =(       a    S:  Os  =(       d    U=(       a    TS:¬  nU(       aY  T R                  5       mU UU4S jn[        R                  " T R                  5       T R                  5       UT R                  5       S9$ [        T [        5      (       aA  T S:X  a  [!        TS5      $ T S	:X  a)  [#        TR                  5       5      (       a  [%        T5      $ U(       aN  [        T [        5      (       a  ['        T T5      $ [        T[        5      (       a  [)        T T5      $ [+        T T5      $ [-        T T5      $ )
Nr¯  r/   c              3  ó„   #   • U  H6  n[        U[        R                  5      (       d  M$  UR                  5       v •  M8     g 7fr—   )rk   r2   rC   r¼   r"  s     re   r›   Úpow.<locals>.<genexpr>\  s'   é € ÐNª 1´*¸QÄÇÁ×2M“�—‘—�ªùs
   ‚#A ©A iàÿÿÿé    r   c                óF   >• [        T" U 5      TTR                  5       5      $ r—   )r×  r¼   )r?  rñ   r7  r'  s    €€€re   r   Úpow.<locals>.fnf  s   ø€ Ü ¡¨£¨a°·±³Ó?Ð?rg   ri  r-   )rk   r=  r¿   rß  rµ   Úsqrtr�  rI  r    rk  r@   ré   rn   r¼   rÊ   r!   r'  r   Úexp2Úfallback_pow_scalarÚfallback_pow_tensor_scalarÚfallback_pow_tensor_tensorrÚ  )rñ   r7  r¸   Úis_integer_powÚembed_exponentr   r'  s   ``    @re   rß  rß  R  s�  ú€ ä�!”U×Ñ §¡§¡Ü�1”c˜!“f‹~ÐÜ	�A”u×	Ñ	 ! s£(Ü�A‹wˆÜ	�A”s×	Ñ	  Q£Ü�Q‹xˆô ÑN¨¨A©ÓNÓN€EÜ% eÓ,€Nô   ¤3Ó'÷ Øˆa�‹�"Œ×3˜×2¨A°©Fð ö Ø—‘“ˆ÷	@ô ×ÒØ—<‘<“>Ø—+‘+“-ØØ—:‘:“<ñ	
ð 	
ô �!”V×ÑØ�‹6Ü˜Q “?Ð"à�‹6”n Q§[¡[£]×3Ñ3Ü˜“7ˆNæä�aœ× Ñ Ü& q¨!Ó,Ð,Ü˜œ6×"Ñ"Ü-¨a°Ó3Ð3ä-¨a°Ó3Ð3ä�a˜ÓÐrg   c                óf  • [        U [        5      (       a  U R                  nOU n[        U[        5      (       a  UR                  n[        U[        R                  5      (       d™  [
        R                  " U R                  5       U R                  5       UR                  5       U R                  5       S9n[        U[        [        45      (       d   eUR                  n[        U[        R                  5      (       d   e[        U[        R                  5      (       av  UR                  5       (       da  UR                  5       (       dL  [        UR                  [        R                  5      (       d#  UR!                  5         UR                  Ul        U $ [        R"                  R%                  XUS9  U $ )Nri  ©Úunsafe_alias)rk   rC   rm   r2   rç   r@   ré   rn   r¼   rk  rÊ   r6   r<   Úis_input_bufferÚis_module_bufferÚ	NopKernelr�  rl  Úrealize_into)Úchangedr"  rê  Úchanged_datarc   s        re   rW  rW  ƒ  sC  € Ü�'œ9×%Ñ%Ø—|‘|‰àˆÜ�#”y×!Ñ!Ø�h‰hˆä�cœ2Ÿ=™=×)Ñ)ä×ÒØ×%Ñ%Ó'Ø×#Ñ#Ó%Ø—_‘_Ó&Ø×#Ñ#Ó%ñ	
ˆô ˜$¤¬:Ð 6×7Ñ7Ð7Ð7Ø�i‰iˆÜ˜#œrŸ}™}×-Ñ-Ð-Ð-ä�,¤§¡×.Ñ.Ø×$Ñ$×&Ñ&à×(Ñ(×*Ñ*Ü�l×'Ñ'¬¯©×6Ñ6ð 	�‰ŒØŸH™HˆÔØˆä×!Ñ!×.Ñ.Ø¨ð /ñ ð €Nrg   c                ó,   • [        U [        X5      5      $ r—   )rW  r'  )r¦   rÔ  s     re   rå  rå  ¨  s   € ä�Qœ	 !Ó0Ó1Ð1rg   c                óº   • XL a  U $ [        XR                  5       5      n[        XR                  5       5      n[	        XR                  5       5      n[        X5      $ r—   ©rÐ  rn   rö   r¼   r5  rÊ   rW  )rº  rX  rÎ  s      re   r„  r„  ­  sH   € à
‚zàˆ
Ü
�CŸ™Ó)Ó
*€CÜ
�3Ÿ™›Ó
(€CÜ
�—l‘l“nÓ
%€CÜ�SÓÐrg   c                ó.   • [         R                  " X5      $ r—   )rR   ÚfloordivrÙ  s     re   rõ  rõ  ¸  ó   € ä�<Š<˜ÓÐrg   c                ó.   • [         R                  " X5      $ r—   )rR   ÚtruncdivrÙ  s     re   rø  rø  ½  rö  rg   c                ót  • [        U 5      =(       a    [        U5      n[        U 5      =(       a    [        U5      nUS:X  a4  U(       a   S5       eU(       a  [        X5      $ [        [	        X5      5      $ US:X  a4  U(       a   S5       eU(       a  [        X5      $ [        [	        X5      5      $ [	        X5      $ )Nr0  z5floordiv operands can not be boolean at the same timer5  z5truncdiv operands can not be boolean at the same time)rÁ   rÄ   rõ  r0  r¨  rø  r5  )rñ   r7  Úrounding_modeÚboth_integerÚboth_booleans        re   Údiv_moderý  Â  s˜   € ä" 1Ó%×<¬/¸!Ó*<€LÜ" 1Ó%×<¬/¸!Ó*<€Lð ˜ÓÞÐXÐ!XÓXÐÞ!-Œx˜‹~ÐC´5¼¸Q»Ó3CÐCØ˜ÓÞÐXÐ!XÓXÐÞ!-Œx˜‹~ÐC´5¼¸Q»Ó3CÐCÜˆq‹9Ðrg   c                óÈ   • [        U 5      =(       a    [        U5      nU(       a  [        X5      $ [        [        R                  R
                  5      n[        U5      " X5      $ r—   )rÄ   Úlogical_andr>   rÄ  rj  rÔ  rw  )rñ   r7  Ú	both_boolr   s       re   rj  rj  Ò  sH   € ä Ó"×9¤°qÓ'9€IÞÜ˜1Ó Ð äœŸ™×*Ñ*Ó+ˆÜ˜bÔ! !Ó'Ð'rg   c                óº  • [        U [        R                  5      (       a  [        U R                  5      $ [        U [        R
                  5      (       a  [        U R                  5       5      $ [        U [        R                  5      (       a  U $ [        U [        R                  5      (       d  g[        R                  R                  R                  U R                  5       5      n[        R                  " U5         [         R"                  " [        R$                  SS5         U R&                  " U R)                  5       6 nSSS5        SSS5        [        W[        R                  R*                  R,                  5      (       d   e[        UR.                  [        R                  5      (       a  UR.                  $ g! , (       d  f       N�= f! , (       d  f       NŠ= f)z:Try convert an arbitrary IR node into an ir.Constant valueNÚallow_indexingT)rk   r2   r<   Úget_constant_valuerm   r6   r‹  r÷   ÚLoopsr{   Ú	_inductorÚops_handlerÚExtractConstantsHandlerrn   rS   Úset_ops_handlerr   ÚobjectrÙ  rg  Úinner_fn_argsÚvirtualizedÚOpsValuerõ   )r¦   r‹  rq   s      re   r  r  Ü  s1  € ô
 �!”R—]‘]×#Ñ#Ü! !§&¡&Ó)Ð)Ü�!”R—[‘[×!Ñ!Ü! !§-¡-£/Ó2Ð2Ü�!”R—[‘[×!Ñ!Øˆô �aœŸ™×"Ñ"Øä�o‰o×)Ñ)×AÑAÀ!Ç,Á,Ã.ÓQ€Gä	×Ò˜'Õ"Ü�Š”R×&Ñ&Ð(8¸$Õ?à�jŠj˜!Ÿ/™/Ó+Ð,ˆ÷ 	@÷ 	#ô
 �cœ5Ÿ?™?×6Ñ6×?Ñ?×@Ñ@Ð@Ð@Ü�#—)‘)œRŸ[™[×)Ñ)Ø�y‰yÐØ÷ 	@Õ?ú÷ 	#Õ"ús$   Ã;'GÄ"F;Å GÆ;
G		ÇGÇ
Gc                óv  • [        S X4 5       5      nU(       a  [        X5      $ [        U5      =nbs  U R                  5       R                  S:w  aU  UR
                  S:X  a+  [        R                  " [        S5      UR
                  5      nOSUR
                  -  n[        X5      $ S n[        U5      " X5      $ )Nc              3  ó\   #   • U  H"  n[        U5      =(       d    [        U5      v •  M$     g 7fr—   )rÄ   rÁ   r"  s     re   r›   Údiv_prim.<locals>.<genexpr>þ  s"   é € ÐOÊÀ1”o aÓ(×>¬O¸AÓ,>Ô>Êùs   ‚*,râ   r   Úinfræ  c                 ó(   • [         R                  " U 6 $ r—   )rR   rÂ  r  s    re   r   Údiv_prim.<locals>.fn  s   € Ü�{Š{˜DÐ!Ð!rg   )r$  rø  r  rn   ræ   rõ   ÚmathÚcopysignr=  rj  rw  )rñ   r7  Úis_integralr2  rº  r   s         re   r,  r,  ü  s�   € äÑOÈÉÓOÓO€KæÜ˜‹~Ðô & aÓ(Ð(ˆÑ5¸!¿,¹,».×:MÑ:MÐQVÓ:Vð �=‰=˜AÓÜŸš¤u¨U£|°W·]±]ÓC‰Jà˜wŸ}™}Ñ,ˆJÜ�1Ó!Ð!ò"ô ˜"Ô˜aÓ#Ð#rg   c                óN   • [        X4[        R                  S9u  p[        X5      $ r±  )rN  r   ÚINT_TO_FLOATr,  rÙ  s     re   r¨  r¨    s*   € ô Ø	
ˆÔ$C×$PÑ$Pñ�D€Aô �A‹>Ðrg   c                óz   • [        U 5      =(       d    [        U 5      nU(       a  S nOS n[        U5      " X5      $ )Nc                ó.   • [         R                  " X5      $ r—   )rR   ÚmodrÙ  s     re   r   Úfmod.<locals>.fn&  s   € Ü—7’7˜1“=Ð rg   c                ó.   • [         R                  " X5      $ r—   )rR   ÚfmodrÙ  s     re   r   r  +  s   € Ü—8’8˜A“>Ð!rg   )rÄ   rÁ   rw  )rñ   r7  r  r   s       re   r  r     s5   € ä! !Ó$×:¬¸Ó(:€Kæó	!ò
	"ô ˜"Ô˜aÓ#Ð#rg   c               óÂ   • [        U R                  5       5      (       d  [        U R                  5       5      (       a  Uc  [        R                  n[        SUS9nU" XX#S9$ )Nr$  rœ  r·   ©r    r¼   r   r{   r¢  r�  ©r¦   rÄ  r�  r¸   r   s        re   r§  r§  1  sM   € ô 	˜Ÿ™›×'Ñ'Ô+;¸A¿K¹K»M×+JÑ+JØ
‰-Ü—‘ˆä	˜°UÑ	;€BÙˆa�xÑ-Ð-rg   c                ó´  • [        U R                  5       5      (       d  [        U R                  5       5      (       a  Uc  [        R                  n[        U R                  5       5      S:X  a+  US;   d   eU=(       d    U R                  5       n[        XSS9$ S n[        XUS9n[        R                  R                  " S	0 UDSU0D6u  nUc
  [        XUS9$ U$ )
Nr   ©r   rW  Tr²  c                ó@   • U u  nUu  n[         R                  " X#5      4$ r—   )rR   r¢   ©Úa_tupleÚb_tuplerñ   r7  s       re   Ú
combine_fnÚcumsum.<locals>.combine_fnO  ó!   € Ø‰ˆØ‰ˆÜ—’˜“ÐÐrg   ©rÄ  r¸   r'  ©rÍ   r¸   rû   )r    r¼   r   r{   r¢  rÉ   rÊ   rö   r¡  r2   ÚScanré   Úfallback_cumsum©r¦   rÄ  r¸   r'  rÿ   r˜  s         re   Úcumsumr/  C  s¶   € ô 	˜Ÿ™›×'Ñ'Ô+;¸A¿K¹K»M×+JÑ+JØ
‰-Ü—‘ˆä
ˆ1�:‰:‹<Ó˜AÓØ�w‹ÐˆØ×&˜Ÿ™›ˆÜ˜ tÑ,Ð,ò ô
 ˜a°%Ñ8€FÜ—‘—’Ñ? Ñ?°JÒ?�I€VØ�~Ü˜q°%Ñ8Ð8Ø€Mrg   c                ó´  • [        U R                  5       5      (       d  [        U R                  5       5      (       a  Uc  [        R                  n[        U R                  5       5      S:X  a+  US;   d   eU=(       d    U R                  5       n[        XSS9$ S n[        XUS9n[        R                  R                  " S	0 UDSU0D6u  nUc
  [        XUS9$ U$ )
Nr   r"  Tr²  c                ó@   • U u  nUu  n[         R                  " X#5      4$ r—   )rR   rj  r$  s       re   r'  Úcumprod.<locals>.combine_fng  r)  rg   r*  r'  r+  rû   )r    r¼   r   r{   r¢  rÉ   rÊ   rö   r¡  r2   r,  ré   Úfallback_cumprodr.  s         re   Úcumprodr4  [  s¶   € ô 	˜Ÿ™›×'Ñ'Ô+;¸A¿K¹K»M×+JÑ+JØ
‰-Ü—‘ˆä
ˆ1�:‰:‹<Ó˜AÓØ�w‹ÐˆØ×&˜Ÿ™›ˆÜ˜ tÑ,Ð,ò ô
 ˜a°%Ñ8€FÜ—‘—’Ñ? Ñ?°JÒ?�I€VØ�~Ü °5Ñ9Ð9Ø€Mrg   c                ó  • S nU R                  5       n[        U R                  5       5      S:X  a  US;   d   e[        U 5      $ [	        XUS9n[
        R                  R                  " S0 UDSU0D6u  nUc	  [        XS9$ U$ )Nc           	     ó.  • U u  nUu  n[         R                  " X#5      n[         R                  " X#5      nXE:g  [         R                  " U5      ) -  n[         R                  " U[         R
                  " [         R                  " XE-
  5      5      U-   U5      4$ r—   )rR   r¼  r»  r%  r  Úlog1pÚexp)r%  r&  rñ   r7  Úmin_vÚmax_vr¬  s          re   Úlog_add_exp_helperÚ(logcumsumexp.<locals>.log_add_exp_helperu  ss   € Ø‰ˆØ‰ˆÜ—’˜AÓ!ˆÜ—’˜AÓ!ˆØ‘¤C§I¢I¨eÓ$4Ð#4Ñ5ˆÜ—	’	˜$¤§	¢	¬#¯'ª'°%±-Ó*@Ó AÀEÑ IÈ1ÓMÐOÐOrg   r   r"  r*  r'  r  rû   )	r¼   rÉ   rÊ   r�  r¡  r2   r,  ré   Úfallback_logcumsumexp)r¦   rÍ   r;  r¸   rÿ   r˜  s         re   Úlogcumsumexpr>  s  s{   € òPð �K‰K‹M€EÜ
ˆ1�:‰:‹<Ó˜AÓØ�g‹~Ðˆ~Ü�Q‹xˆä˜a°Ñ7€FÜ—‘—’ÑG ÑGÐ4FÒG�I€VØ�~Ü$ QÑ0Ð0Ø€Mrg   c                ó¾  ^• [        U R                  5       5      S:X  a+  TS;   d   e[        U 5      [        U [        R
                  S94$ U R                  5       n[        R                  " SUSS9n[        U TUS9nU[        R
                  4US'   U R                  5       U4S	 j4US
'   [        R                  R                  " S0 UDSU0D6u  pVUc
  [        U TS9$ XV4$ )Nr   r"  r·   r6  F©r¸   Úarg_break_ties_leftr*  rŸ  c                óT   >• [         R                  " U T   [        R                  5      $ r—   ©rR   r¡  r{   r¢  ©r?  rÄ  s    €re   rZ  Úcummax.<locals>.<lambda>˜  ó   ø€ ”C—N’N 3 t¡9¬e¯k©kÔ:rg   r   r'  r  rû   )rÉ   rÊ   r�  r´  r{   r¢  r¼   r2   Úget_reduction_combine_fnr¡  rk  r,  ré   Úfallback_cummax©r¦   rÄ  r¸   r'  rÿ   r  r  s    `     re   ÚcummaxrJ  ‰  óÑ   ø€ ä
ˆ1�:‰:‹<Ó˜AÓØ�w‹ÐˆÜ�Q‹xœ A¬U¯[©[Ñ9Ð9Ð9à�K‰K‹M€EÜ×,Ò,Ø˜°5ñ€Jô ˜a d°%Ñ8€FØœuŸ{™{Ð+€Fˆ8Ñà	�‰‹Ü:ð€Fˆ;Ñô —g‘g—n’nÑE vÑE¸*ÒE�O€FØ�~Ü˜q dÑ+Ð+Øˆ?Ðrg   c                ó¾  ^• [        U R                  5       5      S:X  a+  TS;   d   e[        U 5      [        U [        R
                  S94$ U R                  5       n[        R                  " SUSS9n[        U TUS9nU[        R
                  4US'   U R                  5       U4S	 j4US
'   [        R                  R                  " S0 UDSU0D6u  pVUc
  [        U TS9$ XV4$ )Nr   r"  r·   rˆ  Fr@  r*  rŸ  c                óT   >• [         R                  " U T   [        R                  5      $ r—   rC  rD  s    €re   rZ  Úcummin.<locals>.<lambda>¯  rF  rg   r   r'  r  rû   )rÉ   rÊ   r�  r´  r{   r¢  r¼   r2   rG  r¡  rk  r,  ré   Úfallback_cumminrI  s    `     re   ÚcumminrP     rK  rg   c               óÂ   • [        U R                  5       5      (       d  [        U R                  5       5      (       a  Uc  [        R                  n[        SUS9nU" XX#S9$ )Nr’  rœ  r·   r  r   s        re   r’  r’  ·  sM   € ô 	˜Ÿ™›×'Ñ'Ô+;¸A¿K¹K»M×+JÑ+JØ
‰-Ü—‘ˆä	˜°eÑ	<€BÙˆa�xÑ-Ð-rg   c                óV   • [        U [        R                  5      n [        S5      " XUS9$ )Nr%  ©rÄ  r�  )rö   r{   rÃ   r�  ©r¦   rÍ   r©  s      re   Ú
reduce_anyrU  Â  s$   € ä�”E—J‘JÓ€AÜ˜%Ô  °wÑ?Ð?rg   c                óF   • Ub  [        XUS9[        XUS94$ [        U S US9$ ©NrS  )Úreduce_amaxÚreduce_argmaxrT  s      re   Ú
reduce_maxrZ  È  ó6   € à
�ä˜¨gÑ6Ü˜!°Ñ8ð
ð 	
ô
 �q˜t¨gÑ6Ð6rg   c                óF   • Ub  [        XUS9[        XUS94$ [        U S US9$ rW  )Úreduce_aminÚreduce_argminrT  s      re   Ú
reduce_minr_  Ó  r[  rg   Úxor_sumr‚  r�  r6  rœ  rˆ  Ú
logical_or)rr  re  ©ÚstablerÍ   Ú
descendingc          
     ó�  • Uc  SnU R                  5       nU R                  5       n[        [        U5      U5      n[        U5      S:X  a'  [	        U 5      [        SU[        R                  U5      4$ [        U5      (       a  XB   OSn[        R                  R                  R                  U[        R                  " [        R                  5      R                  5      (       d
  [        XX#S9$ [!        USS[        R                  USS9nS/[        U5      -  n[        U5      (       a  XhU'   [#        Xx5      n[%        Xt5      n[&        R(                  R+                  UU R,                  UR,                  4U R/                  5       UR/                  5       4UUUUS9u  p—U	c
  [        XX#S9$ Uc   eU	[1        U[        R                  5      4$ )NFr   r/   rb  )rx  rz  r¸   rv   r™  )rv   rŸ  r   rë   rÄ  rc  rd  )rÊ   rn   r   rÉ   r�  rÕ  r{   r¢  rS   r]   rä   Ústatically_known_ltrÁ  Úint16r‚  Úsort_fallbackrš  rÅ  r5  r2   ÚSortré   r¸   rk  rö   )
r¦   rc  rÍ   rd  r<  rv   rs  r  Ú
view_shaper  s
             re   Úsort_stablerk  ï  s€  € à�~Øˆà�J‰J‹L€EØ�\‰\‹^€FÜ
œ3˜u›: sÓ
+€CÜ
ˆ5ƒz�QƒÜ�Q‹xœ˜q &¬%¯+©+°uÓ=Ð=Ð=ä  ŸZ™ZˆuŠz¨Q€HÜ�7‰7×Ñ×/Ñ/°¼%¿+º+ÄeÇkÁkÓ:R×:VÑ:V×WÑWÜ˜Q°3ÑNÐNäØ˜ ¬¯©¸VÐSXñ€Gð �”s˜5“zÑ!€JÜ
ˆ5‡z�zØ"�3‰Ü�7Ó'€GÜ�WÓ$€Gä—g‘g—n‘nØØ—‘˜Ÿ™Ð'Ø—=‘=“? G×$7Ñ$7Ó$9Ð:ØØØØð %ð �O€Fð �~Ü˜Q°3ÑNÐNàÑÐÐØ”8˜G¤U§[¡[Ó1Ð1Ð1rg   c                ó   • [        U SXS9$ )NFrb  )rk  )r¦   rÍ   rd  s      re   Úsortrm    s   € ä�q ¨CÑGÐGrg   c                ó6   • [        U U[        R                  US9$ )N©rÞ   rÐ   rt  )rÕ  r   r  )r`   rÞ   rt  s      re   Úregister_pointwise_numericrp    s!   € ÜØ
ØÜ;×HÑHØ'ñ	ð rg   c                ó\   • [        U R                  5        [        U [        R                  S9$ r±  )rO   rÔ  rÕ  r   r  r%  s    re   Ú register_pointwise_numeric_ldf64rr  %  s'   € Ü'¨¯©Ô4ÜØ
Ü;×HÑHñð rg   rþ  )rõ   c               ó¸  ^^^^^^	• [         R                  (       d  [        $ [        U UU[        R
                  S9mU R                  5       mUR                  5       mUR                  5       mTR                  =(       a    [        R                  R                  (       + m	UUUUU	U4S jn[        R                  " U R                  5       TUU R                  5       S9$ )aµ  
Computes self + value * tensor1 * tensor2 using FMA for better precision.

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

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

For floating-point types, we use mul_rn (round-to-nearest multiplication)
to force rounding of the product before the FMA. This prevents Triton's
compiler from fusing the multiplication with the FMA, matching eager's
rounding behavior.

When emulate_precision_casts is False, we return NotImplemented to use the
decomposition instead.
rŸ  c                ó  >• T" U 5      nT" U 5      nT	" U 5      nTS:X  a  T
(       a  [         R                  " X#U5      $ T
(       a  [         R                  " X#5      nO[         R                  " X#5      n[	        T[
        R                  5      (       a  [         R                  " TT5      nO[         R                  " TT5      nT
(       a  [         R                  " XTU5      $ [         R                  " U[         R                  " XT5      5      $ rô  )
rR   ÚfmaÚmul_rnrj  rk   r½   rÈ   r¡  rÞ  r¢   )r?  Úself_valÚt1_valÚt2_valÚt1_times_t2Ú
value_exprr¸   rt  Ú	t1_loaderÚ	t2_loaderÚuse_fmarõ   s         €€€€€€re   rg  Úaddcmul.<locals>.inner_fn\  s¿   ø€ Ù˜sÓ#ˆÙ˜3“ˆÙ˜3“ˆà�A‹:ž'Ü—7’7˜6¨8Ó4Ð4ö ô Ÿ*š* VÓ4‰KäŸ'š' &Ó1ˆKô �eœUŸ[™[×)Ñ)ÜŸš¨¨uÓ5‰JäŸš e¨UÓ3ˆJæä—7’7˜:°HÓ=Ð=ô —7’7˜8¤S§W¢W¨ZÓ%EÓFÐFrg   ri  )r0   rb  ÚNotImplementedrÖ   r   rH  rk  r¾  r{   ÚversionÚhipr@   ré   rn   rÊ   )
rG  Útensor1Útensor2rõ   rg  r¸   rt  r|  r}  r~  s
      ` @@@@@re   r¶  r¶  8  sµ   ý€ ô& ×)×)ÜÐäØØØÜ;×CÑCñ	€Eð ×"Ñ"Ó$€KØ×#Ñ#Ó%€IØ×#Ñ#Ó%€Ið ×%Ñ%×?¬e¯m©m×.?Ñ.?Ô*?€G÷Gò Gô< ×ÒØ�‰Ó ØØØ�}‰}‹ñ	ð rg   c                ó‚  ^• [         R                  (       d  [        $ [        [        R
                  R                  R                  5      S:H  =(       d<    [        R
                  R                  R                  [        ;   =(       d
    [        5       n[        [        XU5      5      nU4S jn[        U[        U 5      Xd5      $ )zÖ
Foreach version of addcmul with scalar value parameter.
Uses foreach_group_loop for consistent grouping behavior.

When emulate_precision_casts is False, we return NotImplemented to use the
decomposition instead.
r   c                ó   >• [        U ST06$ )Nrõ   )r¶  )rt   rõ   s    €re   r|  Ú)_foreach_addcmul_scalar.<locals>.apply_fn•  s   ø€ Ü˜Ð* EÑ*Ð*rg   )r0   rb  r€  rÉ   rS   r]   r^   r_   ra   r~  rf   rx   r  r  )rG  rƒ  r„  rõ   r€  r„  r|  s      `   re   Ú_foreach_addcmul_scalarrˆ  ‚  sŽ   ø€ ô ×)×)ÜÐô 	ŒA�G‰G× Ñ ×&Ñ&Ó'¨1Ñ,÷ 	,Ü�7‰7×Ñ×&Ñ&Ô*=Ñ=÷	,ä)Ó+ð ô  ¤ D°7Ó ;Ó<€Fõ+ô ˜f¤c¨$£i°ÓKÐKrg   Úlogical_not)re  )rÐ   r	  rL  Úidentity)r�  Úpointwise_overrides_datac              #  óV  ^#   • [         U   m[        U TR                  S 5      nUc  g U4S jn[        U[        R
                  R                  5      (       a:  UR                  5        H%  n[        X$5      nUTR                  U" U5      4v •  M'     g UTR                  U" U5      4v •  g 7f)Nc                ó6   >• TR                   c  [        U 5      $ g r—   )Útritonr¶  )r`   rm   s    €re   Úmake_triton_fallbackÚ6_get_pointwise_overrides.<locals>.make_triton_fallbackú  s   ø€ Ø�;‰;ÑÜ# BÓ'Ð'ð rg   )	r‹  r˜   rÞ   rk   r{   r|   r£   r¥   rÐ   )ÚnsrÞ   r`   r�  ÚolnamerÈ  rm   s         @re   Ú_get_pointwise_overridesr“  ô  s–   øé € Ü# DÑ)€DÜ	��T—Y‘Y Ó	%€BØ	�zØõ(ô �"”e—j‘j×1Ñ1×2Ñ2Ø—l‘l–nˆFÜ˜Ó$ˆBØ�d×.Ñ.Ñ0DÀRÓ0HÐHÔHò %ð �$×*Ñ*Ñ,@ÀÓ,DÐDÓDùs   ƒB&B)ro  c                ód   ^• U [         U'   [        R                  U 5        U4S jn[        X5        g )Nc            	     ó~   >• T" U 0 UD6n/ n[        U S   U5       H  u  pEUR                  [        XESS95        M      U$ )Nr   Tré  )r  ro   rW  )rt   rÿ   ÚresultsÚmut_resultsrÒ   r˜  Úoutplace_ops         €re   r   Ú$register_foreach_inplace.<locals>.fnF  sK   ø€ Ù˜tÐ. vÑ.ˆØˆÜ˜t A™w¨Ö0‰KˆCØ×Ñœy¨À4ÑHÖIñ 1ð Ðrg   )rZ   r~  r¢   r  )Úaten_opÚoutplace_aten_opr˜  r   s     ` re   Úregister_foreach_inplacerœ  B  s,   ø€ Ø07ÔÐ,Ñ-Ü×Ñ˜GÔ$õô ˜wÕ+rg   c                ó.   ^• [        U S S9U4S j5       nU$ )NrŸ  c                 ój   >• T" U 0 UD6n[        X S   R                  5       5      n[        U S   U5      $ rî  )rö   r¼   rW  )rt   rÿ   r˜  r˜  s      €re   r   Úregister_inplace.<locals>.fni  s:   ø€ á˜dÐ- fÑ-ˆÜ˜& q¡'×"3Ñ"3Ó"5Ó6ˆÜ˜˜a™ &Ó)Ð)rg   )r,  )rš  r˜  r   s    ` re   Úregister_inplacer   h  s#   ø€ Ü�w°DÑ9ô*ó :ð*ð
 €Irg   c                ó   • g r—   rû   r€  s      re   Úsym_constrain_ranger¢  ’  ó   € àrg   c                óÐ   • [         R                  R                  R                  S   n[	        U[
        R                  5      (       a  UR                  R                  $ [        U5      $ rh  ©
rS   r]   r^   ro  rk   r{   rw  rc   rx  rµ   ©rñ   rÍ   r"  s      re   r~  r~  —  óD   € ä
�'‰'×
Ñ
×
#Ñ
# EÑ
*€CÜ�#”u—|‘|×$Ñ$Ø�x‰x�}‰}Ðä�3‹xˆrg   c                óÐ   • [         R                  R                  R                  S   n[	        U[
        R                  5      (       a  UR                  R                  $ [        U5      $ rh  r¥  r¦  s      re   Ú
sym_strider©     r§  rg   c                ó"   • U R                  5       $ r—   )r  ©rñ   s    re   Ú	sym_numelr¬  ©  s   € à�;‰;‹=Ðrg   c                ó(   • [         R                  " U 6 $ r—   )r½   ÚAddr  s    re   Úsym_sumr¯  ²  s   € ä�9Š9�dÐÐrg   c                ó   • [        S5      e)NzHelpful for debuggingr�   )rG  rt   rÿ   s      re   Úfoobarr±  ·  s   € ä
Ð5Ó
6Ð6rg   c                ó8   • U R                  5         [        U 5      $ r—   )r�  r�  rÀ   s    re   Ú_realizer³  ¼  s   € à‡I�I„KÜ�‹8€Org   c                óR   • U R                  5         [        R                  " X5        U $ r—   )r�  r2   ÚResizeStorageBytes)ÚvariablerO  s     re   Úresize_storage_bytes_r·  Â  s!   € à×ÑÔÜ×Ò˜(Ô-Ø€Org   c                ó–   • U R                  5         UR                  5         [        R                  " [        R                  " X5      5      $ r—   )r�  rC   ré   r2   ÚSetSourceTensorKernel)rG  Úsource_tensors     re   Úset__source_tensorr»  É  s3   € à‡L�L„NØ×ÑÔÜ×ÒœB×4Ò4°TÓIÓJÐJrg   r„  c                óº   • XL a  U $ [        XR                  5       5      n[        XR                  5       5      n[	        XR                  5       5      n[        X5      $ r—   ró  )rº  rX  s     re   Ú
fsdp_copy_r½  Ò  sH   € àŠ:àˆJÜ˜Ÿ^™^Ó-Ó.ˆÜ�sŸM™M›OÓ,ˆÜ�SŸ,™,›.Ó)ˆÜ˜Ó"Ð"rg   c               ó  ^	^
^^• [        U [        5      (       d   e[        U[        [        45      (       d   eUc  [        R
                  nU[        R                  :X  a  [        SU 35      eU[        R                  :X  a  [        U5      S:X  d   eU[        R                  :X  a  [        U5      S:X  d   eU R                  5       m
U R                  5       nU R                  5       n[        U R                  [        R                   5      (       a  U R                  R#                  5       U l        [        R$                  " 5       (       ay  [        R&                  R(                  R*                  (       aP  [-        U5      (       a  [/        S5      mO6[1        U5      (       a!  [        R2                  " U5      R4                  mOSmOSm[6        R8                  R:                  R=                  T
S5      (       a  [?        UTX4S9$ [A        U T
/S	/5      nURC                  5       m	[        RD                  RG                  X5      n[        RH                  " XCX5      RK                  5       mU	U
UU4S
 jn[L        RN                  " XCU[        U5      S9nU$ )Nzunsupported memory format: r«   r¬   ÚnanTr   r   rD  r/   c                ó  >^• T" U 5      m[         R                  " T[        R                  5      n[         R                  " T[        R                  5      n[         R                  " X5      n[         R
                  " UUU4S jT5      $ )Nc                 ó   >• T" T /5      $ r—   rû   )Ú
flat_indexÚflat_loaders   €€re   rZ  Ú*resize.<locals>.inner_fn.<locals>.<lambda>  s   ø€ ©°Z°LÔ(Arg   )rR   r¡  r{   r¢  r¤  r¦  )	r?  Úflat_index_exprÚlimitr¬  rÂ  rÃ  Ú	old_numelÚout_indexerÚuninitialized_vals	       @€€€€re   rg  Úresize.<locals>.inner_fn  sX   ù€ Ù  Ó%ˆ
ÜŸ.š.¨´U·[±[ÓAˆÜ—’˜y¬%¯+©+Ó6ˆÜ�vŠv�oÓ-ˆÜ�zŠz˜$Õ AÐCTÓUÐUrg   ri  )(rk   rC   ri   rŸ   r{   Úcontiguous_formatÚpreserve_formatrÅ  Úchannels_lastrÉ   Úchannels_last_3dr  r¼   rJ  rm   r2   r6   r‹  rj  rP  ÚdeterministicÚfill_uninitialized_memoryr   r=  r    rÁ  r‚  rS   r]   rä   r€  rþ  rw  rk  rÙ  Ú stride_ordered_for_memory_formatrŽ  rÛ  r@   ré   )r¦   rë   rŽ  r¸   rv   Úx_flatÚ
out_striderg  rq   rÃ  rÇ  rÈ  rÉ  s            @@@@re   ÚresizerÔ  Ý  s
  û€ ä�aœ×#Ñ#Ð#Ð#Ü�dœT¤5˜M×*Ñ*Ð*Ð*àÑÜ×/Ñ/ˆØœ×-Ñ-Ó-ÜÐ8¸¸ÐHÓIÐIàœ×+Ñ+Ó+Ü�4‹y˜A‹~Ðˆ~Øœ×.Ñ.Ó.Ü�4‹y˜A‹~Ðˆ~à—‘“€IØ�K‰K‹M€EØ×"Ñ"Ó$€Fä�!—&‘&œ"Ÿ+™+×&Ñ&Ø—‘×#Ñ#Ó%ˆŒô 	×2Ò2×4Ñ4Ü�K‰K×%Ñ%×?×?ä˜%× Ñ Ü % e£ÑÜ˜e×$Ñ$Ü %§¢¨EÓ 2× 6Ñ 6Ñà $Ñð  Ðä‡w�w×Ñ×/Ñ/°	¸1×=Ñ=Ü�DÐ+°5ÑHÐHäØ	àð	
ð ð	
ó€Fð ×$Ñ$Ó&€KÜ×"Ñ"×CÑCÀDÓX€JÜ—.’. °ÓA×NÑNÓP€K÷Vð Vô ×
Ò
Ø¨X¼dÀ4»jñ€Cð €Jrg   )Úauto_functionalizedc                óê   • SSK Jn  UR                  U5      n[        R                  " U UU0 UEUES9  UR                  5        VVs0 s H  u  px[        U[        5      (       d  M  Xx_M      snn$ s  snnf )Nr   )Úkernel_side_table)Ú
kernel_idxÚgridÚtma_descriptor_metadataÚkernel_args)Ú*torch._higher_order_ops.triton_kernel_wrapr×  Úget_constant_argsr2   ÚUserDefinedTritonKernelr   rk   rC   )	rØ  Úconstant_args_idxrÙ  rÚ  rÿ   r×  Úconstant_argsr`  r"  s	            re   Útriton_kernel_wrap_rá  $  sl   € õ Mà%×7Ñ7Ð8IÓJ€MÜ×ÒØØØ 7Ø/�vÐ/ Ð/ò	ð &,§\¡\¤^ÔR¢^™˜´zÀ#Äy×7Q‹HˆCŠH¡^ÒRÐRùÓRs   ÁA/Á%A/c                ón  • [        S U /UQ 5       5      (       aY  Sn[        R                  R                  R                  R                  SS 5      =n(       a  U SU 3nU[        R                  l        [        R                  R                  XX#5      n[        [        [        R                  U5      5      $ )Nc              3  óf   #   • U  H'  n[        U[        5      =(       a    [        U5      v •  M)     g 7fr—   rT  r"  s     re   r›   Úcond.<locals>.<genexpr>?  s%   é € Ð
MÒ;L°aŒ:�aœÓ ×1¤Y¨q£\Ô1Ò;LùrV  z"control flow operator: torch.cond.rN  rO  )r%  rS   r]   r^   ro  rp  rT  r2   ÚConditionalré   ri   ÚmaprC   )ÚpredÚtrue_fnÚfalse_fnÚoperandsr“   rN  r˜  s          re   r’   r’   9  s•   € ô Ñ
M¸DÐ;LÀ8Ñ;LÓ
M×MÑMØ2ˆÜŸ'™'×.Ñ.×3Ñ3×7Ñ7¸ÀtÓLÐLˆ;ÕLØ�EÐ*¨;¨-Ð8ˆCØ,/Œ�‰Ô)ä�^‰^×"Ñ" 4°(ÓE€FÜ””I×$Ñ$ fÓ-Ó.Ð.rg   c                óÚ  • [         R                  (       dr  [        S X#-    5       5      (       aY  Sn[        R                  R
                  R                  R                  SS 5      =n(       a  U SU 3nU[        R                  l        [        R                  R                  XX#U5      n[        U[        5      (       d   e[        [        [        R                  R                   U5      5      $ )Nc              3  óf   #   • U  H'  n[        U[        5      =(       a    [        U5      v •  M)     g 7fr—   rT  r"  s     re   r›   Úwhile_loop.<locals>.<genexpr>M  s*   é € ð *â3ˆAô 	�1”fÓ×.¤)¨A£,Ô.Ú3ùrV  z(control flow operator: torch.while_loop.rN  rO  )r0   rS  r%  rS   r]   r^   ro  rp  rT  r2   Ú	WhileLoopré   rk   r   ri   ræ  Ú_maybe_wrap_as_tensor_box)Úcond_fnÚbody_fnÚcarried_inputsÚadditional_inputsÚstack_outputr“   rN  r˜  s           re   Ú
while_looprõ  I  sÁ   € ô ×!×!¤cñ *àÒ3ó*÷ 'ñ 'ð 9ˆÜŸ'™'×.Ñ.×3Ñ3×7Ñ7¸ÀtÓLÐLˆ;ÕLØ�EÐ*¨;¨-Ð8ˆCØ,/Œ�‰Ô)ä�\‰\× Ñ Ø˜.¸\ó€Fô �fœh×'Ñ'Ð'Ð'Ü””B—L‘L×:Ñ:¸FÓCÓDÐDrg   )rô  c                óŠ   • [         R                  R                  " U /UQ76 n[        [	        [
        R                  U5      5      $ r—   )r2   ÚInvokeSubgraphré   ri   ræ  rC   )Úsubgraph_fnÚ
identifierrê  r˜  s       re   Úinvoke_subgraphrú  b  s5   € ä×Ñ×%Ò% kÐ=°HÒ=€FÜ””I×$Ñ$ fÓ-Ó.Ð.rg   c                óf  • Sn[        U R                  R                  5       GHb  u  p4UR                  S:X  aA  U[        R                  R
                  ;  d   eX   [        R                  R
                  U'   MW  UR                  S:X  a\  [        R                  R                  U5      u  pV[        R                  R                  R                  [        R                  XEU5      nMÃ  U[        R                  R
                  ;  d   e[        R                  R                  n U[        R                  l        [        R                  R                  U5      [        R                  R
                  U'   U[        R                  l        GMe     Uc  [        S5      eU$ ! U[        R                  l        f = f)a  Process nodes from a FX graph by executing them through V.graph.

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

Nrž  r8  zNo output node found in graph)rj   r]   Únodesr`   rS   ÚenvÚfetch_args_kwargs_from_envr{   r   ÚInterpreterr8  r^   Úrun_noderÅ  )r¦  rt   r8  rs   rc   Úoutput_argsrÿ   Úsaved_current_nodes           re   Úprocess_subgraph_nodesr	  h  s0  € ð €Fä˜\×/Ñ/×5Ñ5×6‰ˆØ�7‰7�mÓ#ØœqŸw™wŸ{™{Ó*Ð*Ð*Ø $¡ŒA�G‰G�K‰K˜ÑÙØ�W‰W˜Ó Ü"#§'¡'×"DÑ"DÀTÓ"JÑˆKÜ—X‘X×)Ñ)×0Ñ0´·±¸$ÈVÓTŠFàœqŸw™wŸ{™{Ó*Ð*Ð*ä!"§¡×!5Ñ!5Ðð:Ø'+”—‘Ô$Ü$%§G¡G×$4Ñ$4°TÓ$:”—‘—‘˜DÑ!à'9”—‘×$ñ! 7ð$ �~ÜÐ:Ó;Ð;à€Møð (:”—‘Õ$ús   Ä AFÆF0)Úcontrol_depsc                ó  • / nU  HI  n[        U[        5      (       d  M  UR                  5         UR                  UR	                  5       5        MK     [
        R                  R                  R                  nSn[        U5      U-   [        U5      :X  d   e[        [
        R                  R                  5      n[        UR                  R                  R                  SS95      [        U5      :X  d   e[        UR                  [        U5      5      nUb  U (       d   e[
        R                  R                  US  HI  n	U H@  n
U	R                  nUc   e[
        R                  R                   U   R#                  U
5        MB     MK     U$ )a;  
Lower control_deps_op by ensuring dependencies are realized and tracking them.

The control_deps_op HOP makes dependencies explicit in the graph. During lowering:
1. Realize all additional dependencies to ensure they're computed
2. Execute the target operation normally
3. Track the dependencies for the scheduler
r-   rž  r%  N)rk   r:   r�  ro   r  rS   r]   r^   rt   rÉ   Ú
operationsr¦  Ú
find_nodesr	  ri   Úoperation_nameÚadditional_buffer_depsr¢   )Úadditional_depsrø  rt   Ú	dep_namesÚdepÚoriginal_argsÚ
arg_offsetÚoperation_lenr8  r`   Údep_nameÚop_names               re   Úcontrol_deps_op_loweringr	  �  sF  € ð €IÛˆÜ˜#œv×&Ñ&Ùà�‰ŒØ×Ñ˜Ÿ™›Ö(ñ ô —G‘G×(Ñ(×-Ñ-€MØ€JÜˆt‹9�zÑ!¤S¨Ó%7Ó7Ð7Ð7äœŸ™×*Ñ*Ó+€MÜˆ{×'Ñ'×-Ñ-×8Ñ8¸MÐ8ÐJÓKÌsÐSWËyÓXÐXÐXô $ K×$<Ñ$<¼dÀ4»jÓI€FàÑ¦/Ð1Ð1ô �g‰g× Ñ   Ó0ˆÛ!ˆHØ×'Ñ'ˆGØÑ&Ð&Ð&Ü�G‰G×*Ñ*¨7Ñ3×7Ñ7¸ÖAó "ñ 1ð €Mrg   )Úschemec               ó
  • S n[         R                  R                  R                  R	                  SS 5      nUc   e[        U R                  R                  R                  5       GH™  u  pVUR                  S:X  a!  X%   [         R                  R                  U'   M7  UR                  S:X  Ga  [         R                  R                  U5      u  px[        R                  " XxR                  5       5       H’  n	U	R                  5         UR                  (       a7  [         R                  R                   R#                  U	R%                  5       5        [         R                  R&                  R#                  U	R%                  5       5        M”     [(        R*                  R,                  R/                  [         R                  XgU5      nGM_  [         R                  R1                  U5      [         R                  R                  U'   GMœ     U$ )NÚquant_optionsrž  r8  )rS   r]   r^   ro  rp  rj   r¦  rü  r`   rý  rþ  r  r  r  r�  Úcodegen_low_precisionÚlow_precision_codegen_opsr¢   r�  Úinvoke_quant_opsr{   r   rÿ  r8  r 	  )
rø  r	  rê  r8  r	  rs   rc   rt   rÿ   r  s
             re   Úinvoke_quant_tracerr	  ¾  sW  € à€FÜ—G‘G×(Ñ(×-Ñ-×1Ñ1°/À4ÓH€MØÑ$Ð$Ð$ä˜[×5Ñ5×;Ñ;×AÑA×B‰ˆØ�7‰7�mÓ#Ø (¡ŒA�G‰G�K‰K˜ÑÙà�W‰W˜Ô ÜŸ7™7×=Ñ=¸dÓC‰LˆDä—_’_ T¯=©=«?Ö;�Ø—	‘	”à ×6×6Ü—G‘G×5Ñ5×9Ñ9¸!×:NÑ:NÓ:PÔQä—‘×(Ñ(×,Ñ,¨Q×-AÑ-AÓ-CÖDñ <ô —X‘X×)Ñ)×0Ñ0´·±¸$ÀfÓM‹Fä !§¡× 0Ñ 0°Ó 6ŒA�G‰G�K‰K˜Ôñ% Cð( €Mrg   c                óØ  ^
• SSK JnJn  [        U5      S:”  a  [	        S5      e[
        R                  " X5       Vs/ s H&  nU" UR                  5       UR                  5       S9PM(     nnU" X5      m
U
4S jn[        US   SS S9n[        S U 5       5      US	'   [        S
 U 5       5      US'   [        R                  R                  " SUSS.UD6n	U	S   c  [	        S5      eU	$ s  snf )Nr/   )ÚInputDescriptorÚlower_pointwise_subgraphr   zSUnable to generate code for associative_scan op, because there are lifted argumentsrD  c                óh   >• T" / [         R                  " U 5      Q[         R                  " U5      Q76 $ r—   )rm  r¢  )ÚlhsÚrhsÚlowered_combine_fns     €re   Úwrapped_combine_fnÚ,associative_scan.<locals>.wrapped_combine_fnì  s6   ø€ Ù!ð 
Ü×Ò Ó$ð
ä×Ò Ó$ò
ð 	
rg   r*  c              3  ó@   #   • U  H  oR                  5       v •  M     g 7fr—   )r¼   r"  s     re   r›   Ú#associative_scan.<locals>.<genexpr>ó  s   é € Ð7²B¨qŸ[™[Ÿ]˜]²Bùr  rŸ  c              3  ó@   #   • U  H  oR                  5       v •  M     g 7fr—   r—  r"  s     re   r›   r$	  ô  s   é € Ð<º°A§¡§ ºùr  r   F)r'  Úcan_fallback_to_atenz/Unable to generate code for associative_scan oprû   )r¥  r	  r	  rÉ   rÅ  r  r  r¼   rn   r¡  rŸ   r2   r,  ré   )r'  Úxsró  r	  r	  r¦   Úsubgraph_inputsr!	  rÿ   r˜  r 	  s             @re   Úassociative_scanr)	  Û  sþ   ø€ ÷ Mä
ÐÓ Ó!ÜØaó
ð 	
ô —’ Ô(óâ(ˆAñ 	˜aŸk™k›m°A·L±L³NÔCÙ(ð ð ñ 2°*ÓNÐõ
ô ˜b ™e¨!°4Ñ8€FÜÑ7±BÓ7Ó7€Fˆ8ÑÜÑ<¹Ó<Ó<€Fˆ;ÑÜ�W‰W�^Š^ð Ø%Ø"ñð ñ€Fð
 ˆa�yÑÜÐLÓMÐMØ€Mùò-s   ¼-C'c                ó   • g r—   rû   )Útokenss    re   Ú_sink_tokensr,	  ÿ  r£  rg   c                 ó   • g r—   rû   rû   rg   re   Ú_make_tokenr.	    r£  rg   c                óª  • SSK JnJn  U" U5      nUcá  U[        R                  R
                  R                  L aº  SSKJnJ	n  UR                  5       n	U	(       a›  U	R                  R                  [        R                  R
                  R                  5      n
U
(       aW  [        X§5      (       d   eU
R                  US   5      nU(       a*  [        U5      S:X  d   S5       e[!        [#        U5      5      n[        [$        R&                  R(                  5      nU[*        ;   a-  [*        U   " U0 UD6n[,        R.                  " [0        S U5        O<S n[,        R2                  " U[4        R6                  R8                  " U/UQ70 UD65      n[        [$        R&                  R(                  US 5      S:”  d   S	U S
35       eU(       aÅ  [$        R&                  R:                  R=                  U5      n[$        R&                  R(                  US  H^  nS Ul        U(       d  M  URA                  5       n[$        R&                  RB                  U   RE                  URA                  5       5        M`     W[$        R&                  R:                  U'    S n[,        R2                  " UX#45      u  nnU" UUU5      n[        URR                  5      S:X  a  X4$ [        URR                  5      S:X  a  X4$ U /UQ7$ ! [F         aU  n[I        U5      n[J        RM                  SUU5        [        U[N        [P        45      (       a  U /UQ7s SnA$ X4s SnA$ SnAff = f)zs
We lower the operator directly, and then we add StarDep dependencies to all
the newly created nodes in the graph.
r   )Ú_get_effectÚ_get_schemaN)ÚInvokeSubgraphCacheÚTracingContextr/   zMultiple effects NYIc                ó"   • U R                  5       $ r—   )r�  r«  s    re   rZ  Úwith_effects.<locals>.<lambda>*  s
   € °!·)±)´+rg   c                óp   • [        U [        R                  5      (       a  [        R                  " U 5      $ U $ r—   r„  rÀ   s    re   r…  Ú"with_effects.<locals>.wrap_tensors-  r‡  rg   zCNo operation nodes were generated when lowering effectful operator Ú.c                 ó   • gr»   rû   rû   rg   re   rZ  r5	  =  s   € ¨drg   c                óf  • [        U [        R                  5      (       a  U R                  5       $ [        U [        5      (       aU   U R
                  n[        US5      (       a5  [        UR
                  S5      (       a  UR
                  R                  5       $ U $ U $ ! [        [        4 a     U $ f = f)Nrm   Úget_example)
rk   r2   ÚTorchBindObjectÚ	get_valuerC   rm   rð   r;	  ÚAttributeErrorr�   )rñ   r’  s     re   Úconvert_ir_to_valueÚ)with_effects.<locals>.convert_ir_to_valueH  sž   € Ü˜!œR×/Ñ/×0Ñ0Ø—{‘{“}Ð$Ü˜Aœy×)Ñ)ðØŸf™f�GÜ˜w¨×/Ñ/´GØŸ™ m÷5ñ 5ð  'Ÿ|™|×7Ñ7Ó9Ð9ð �ØˆHøô	 'Ô(;Ð<ó Øà�ðús   ÁAB ÂB0Â/B0z5Failed to get schema for %s: %s. Assuming list output)*Útorch._higher_order_ops.effectsr0	  r1	  r{   rR   Úhigher_orderrú  Útorch._guardsr2	  r3	  Útry_getÚhop_dispatch_set_cacheÚ	get_cacherk   Úget_effectsrÉ   rI  r[  rS   r]   r	  rX   rm  rO  rC   rˆ  r2   r‰  ré   Úeffectful_opsrp  Úhas_side_effectsr  Úadditional_star_depsr¢   rÅ  r  rÂ  rÃ  rŸ   ri   Úreturns)Útokenr`   rt   rÿ   r0	  r1	  Úeffect_typer2	  r3	  Útracing_ctxÚinvoke_subgraph_cacheÚeffectsr	  r˜  r…  Úprev_effect_bufferÚnew_opr	  r?	  Úschema_argsÚschema_kwargsÚschemaÚeÚ	error_msgs                           re   Úwith_effectsrX	  	  sÛ  € ÷ Iñ ˜b“/€KØÑ˜r¤U§Y¡Y×%;Ñ%;×%KÑ%KÒKßEà$×,Ñ,Ó.ˆÞØ$/×$FÑ$F×$PÑ$PÜ—	‘	×&Ñ&×6Ñ6ó%Ð!ö %Ü!Ð"7×MÑMÐMÐMà/×;Ñ;¸DÀ¹GÓD�ÞÜ˜w›<¨1Ó,ÐDÐ.DÓDÐ,Ü"&¤t¨G£}Ó"5�Kô œŸ™×*Ñ*Ó+€Mð 
ŒYƒÜ˜2’ Ð/¨Ñ/ˆä×ÒœYÑ(=¸vÕFò	Jô —’Øœ"×+Ñ+×2Ò2°2ÐG¸ÒGÀÑGó
ˆô Œq�w‰w×!Ñ! - .Ð1Ó2°QÓ6ð Ø
MÈbÈTÐQRÐSóÐ6ö ÜŸW™W×2Ñ2×6Ñ6°{ÓCÐÜ—g‘g×(Ñ(¨¨Ó8ˆFá&2ˆFÔ#ß!Ð!Ø Ÿ/™/Ó+�Ü—‘×,Ñ,¨WÑ5×9Ñ9Ð:L×:UÑ:UÓ:WÖXñ 9ð ô 	
�‰×Ñ˜kÑ*ð #ò	ô$ &,§_¢_Ø $ ó&
Ñ"ˆ�]ñ ˜R ¨mÓ<ˆô ˆ6�>‰>Ó˜aÓØˆÐÜ	ˆV�^‰^Ó	 Ó	!ØˆÐàÐ˜ÑÐøô ó #Ü˜“Fˆ	Ü�‰ØCÀRÈô	
ô �fœu¤d˜m×,Ñ,ØÐ#˜FÑ#Õ#à�?Õ"ûð#ús+   Ê(K3 Ë3
MË=AMÌ?MÍMÍMÍM)Úregister_comm_loweringsÚregister_symm_mem_loweringsc                óh  • [        XSSSS9nUS   n[        R                  R                  R	                  [        U5      5      n[        R                  R                  " S0 UDSUS.D6u  pVUS:X  a\  [        R                  R                  R                  U[        R                  5      (       a  [        R                  " SU SUS	.UD6u  pxXx4$ [        R                  " [         R"                  " S
5      5        [%        XSS9n	[&        [(        R*                     " [-        X	5      5      n
[/        X¡SS9nX›4$ )zf
Lowering inductor_prims.prepare_softmax_online to compute max/sum in one pass if no split is needed.
TNr·  r5  Úonline_softmax_reduce)r›  r¸  r/   r-   )r3  Ú
num_outputÚreduction_hintzü
            Online softmax is disabled on the fly since Inductor decides to
            split the reduction. Cut an issue to PyTorch if this is an
            important use case and you want to speed it up with online
            softmax.
            )r�  rû   )r™  rS   r]   rä   ÚsimplifyrP   r2   rA   Ú
num_splitsÚstatically_known_geqr0   r>  r=   ré   r�  r�  ÚtextwrapÚdedentrX  rX   rÄ  r8  rà  r§  )r¦   rÍ   rÿ   r5  rÆ  ÚhintÚ	num_splitÚ
max_tensorÚ
sum_tensorrŸ  r8  Úxsums               re   Úprepare_softmax_onlineri	  w  s*  € ô
 #Ø	˜d¨$Àdñ€Fð Ð0Ñ1ÐÜ�W‰W×Ñ×&Ñ&¤}Ð5EÓ'FÓG€FÜ—l‘l×-Ò-ñ Ø
ðà.Øó�O€Dð �Aƒ~œ!Ÿ'™'×*Ñ*×?Ñ?Ø”×2Ñ2÷ñ ô "8×!>Ò!>ð "
Ø Q°tñ"
Ø?Eñ"
Ñˆ
ð Ð%Ð%ô 	�ŠÜ�OŠOðóô		
ô ˜1¨DÑ1ˆÜœŸ™Ò!¤# a£,Ó/ˆÜ�C tÑ,ˆØˆzÐrg   c                 óŽ   • [         R                  R                  5       =(       a!    [         R                  R                  5       S:¬  $ )z.Check if we're on SM100+ hardware (Blackwell).)r±   r   )r{   ÚcudaÚis_availableÚget_device_capabilityrû   rg   re   Ú_is_sm100_or_laterrn	  ¬  s,   € ä�:‰:×"Ñ"Ó$×V¬¯©×)IÑ)IÓ)KÈwÑ)VÐVrg   c           	     óô  • [        5       (       d  [        S5      eU R                  5       nU[        R                  [        R
                  [        R                  4;  a  [        SU 35      eU[        R                  :w  a  [        U [        R                  5      n [        R                  " [        R                  SS[        R                  SSS9n[        U5      " U 5      n[        U[        R                  5      $ )zå
Lowering for cvt_e8m0_rceil. Uses PTX cvt.rp.satfinite.ue8m0x2.f32 on SM100+.

The PTX instruction takes 2 float32 and outputs 2 e8m0 packed in uint16.
Currently we pass 0.0 as the second input and only use the low byte result.
zFcvt_e8m0_rceil requires SM100+ (Blackwell) for PTX instruction supportzAcvt_e8m0_rceil requires float32, float16, or bfloat16 input, got z)cvt.rp.satfinite.ue8m0x2.f32 $0, 0.0, $1;z=h,rTr/   )ÚasmÚconstraintsr¸   Úis_pureÚpack)rn	  r�   r¼   r{   ræ  rn  rm  rÞ  rö   r  r+  rR   Úinline_asm_elementwiseÚuint16rw  r   )rÌ   r¸   r   r˜  s       re   Úcvt_e8m0_rceil_loweringrv	  ±  sÉ   € ô ×ÑÜ!ØTó
ð 	
ð �M‰M‹O€EØ”U—]‘]¤E§M¡M´5·>±>ÐBÓBÜØOÐPUÈwÐWó
ð 	
ð
 ”—‘ÓÜ�sœEŸM™MÓ*ˆä	×	Ò	Ü×"Ñ"Ø7ØÜ�l‰lØØñ
€Bô ˜BÔ Ó$€FÜ�FœEŸK™KÓ(Ð(rg   )rŠ  )Úquantized_lowerings)Úmkldnn_lowerings)Újagged_loweringsc              #  óv  #   • [        U [        R                  R                  5      (       d   S5       e[        R                  U 5      n [        U 5      " [        U 5      5        Sv •  U(       a
  U[        U '   g[        R                  U 5        g! U(       a
  U[        U '   f [        R                  U 5        f = f7f)zR
A context manager to force fallback an op. Used in unit test
for FallbackKernel.
z+Only OpOverload to make the clean up easierN)	rk   r{   r|   r}   rX   rp  r,  r¶  rù  )r`   Úold_handlers     re   Úforce_fallbackr|	  î  sŒ   é € ô �bœ%Ÿ*™*×/Ñ/×0Ñ0ð Ø5óÐ0ô —-‘- Ó#€KðÜ˜"ÔÔ.¨rÓ2Ô3ÛæØ'ŒI�bŠMä�M‰M˜"Õøö Ø'ŒI�bŠMä�M‰M˜"Õüs   ‚AB9Á	B Á''B9Â(B6Â6B9r2  )rp   zIterable[Any]rÑ   z4defaultdict[tuple[Any, bool], list[tuple[int, Any]]])r   úCallable[..., Any]rÑ   zOptional[Callable[..., Any]])r�   ztorch._C.TagrÑ   z(Optional[Callable[..., tuple[Any, Any]]])r’   rÃ   r“   r  rÑ   ÚNone)r   z€Union[Collection[Union[torch._ops.OpOverload, torch._ops.OpOverloadPacket]], torch._ops.OpOverload, torch._ops.OpOverloadPacket]rÑ   zOptional[list[Any]])r   z9Union[torch._ops.OpOverloadPacket, torch._ops.OpOverload]r¨   zCallable[..., tuple[Any, Any]]rÑ   r~	  )r¸   zUnion[int, torch.dtype]rÑ   útorch.dtype)r¦   r	   rÑ   z,TypeGuard[Union[TensorBox, sympy.Expr, int]])r¦   r	   rÑ   z!TypeGuard[Union[TensorBox, bool]])rt   r	   rÐ   r   rÅ   rÃ   rÑ   r	  )r`   z>Union[Any, torch._ops.OpOverloadPacket, torch._ops.OpOverload]rß   r  rÑ   rÃ   )r¦   rC   rv   útorch.devicerÑ   rC   )rt   ú	list[Any]rÿ   zdict[str, Any]r  rÃ   rÐ   ú)Optional[ELEMENTWISE_TYPE_PROMOTION_KIND]r	  rÃ   rÑ   z tuple[list[Any], dict[str, Any]])rØ   r4  r  r}	  rÑ   r}	  )
r  r}	  r  rÃ   rÐ   r‚	  r	  rÃ   r(  rW   )rÐ   r‚	  rÑ   z.Callable[[Callable[_P, _T]], Callable[_P, _T]]rb  )NNNFN)F)r¦   rC   r¸   r	  rž  rÃ   )r¦   rC   r¸   r	  )r¦   rC   rv   r€	  )r¦   rC   rÙ  rC   r—   )r¦   rC   r  zSequence[sympy.Expr]rÑ   rC   )r   r   l            r/   Trò  )r‚  rC   rÈ  rC   rÊ  rC   rÄ  rµ   rÇ  rµ   rÆ  rµ   r¸   r	  rÑ   rC   )r‚  rC   rÈ  rC   rÊ  rC   rÄ  rµ   rÇ  rµ   rÆ  rµ   r¸   r	  rã  úOptional[torch.dtype]rÑ   rC   )r‚  rC   r¾  r=  r¿  rµ   rÇ  rµ   rÆ  rµ   r¸   r	  rÑ   rC   )r‚  rC   r¾  r=  r¿  rµ   rÇ  rµ   rÆ  rµ   r¸   r	  rã  rƒ	  rÑ   rC   )r‚  rC   r¾  rC   r¿  rC   rÇ  rµ   rÆ  rµ   r¸   r	  rÑ   rC   )r‚  rC   r¾  rC   r¿  rC   rÇ  rµ   rÆ  rµ   r¸   r	  rã  rƒ	  rÑ   rC   )r   r   r/   )rt  rµ   rA  rµ   rB  rµ   r…  )T)rw   ztorch.Tensor)rc   ztorch.fx.Node)NTF)rv   r€	  )rë   ú	list[int]rÜ  rC   r  r  rt  rµ   )
r  rµ   r  rµ   rë   r„	  rÜ  rC   rt  rµ   )r%  rC   rÑ   z.tuple[str, sympy.Expr, sympy.Expr, sympy.Expr])r%  rC   rÑ   ztuple[str, sympy.Expr])r:  rC   rG  rC   r,  rÃ   r-  rÃ   r.  úOptional[str]r/  úOptional[TensorBox]rÑ   rC   )r‚  rC   rL  rC   r,  rÃ   r-  rÃ   )rÍ   rµ   rC  rµ   )r   NNr/   )NNN)rW  FF)rÍ   rµ   )r²  r4  rÍ   rµ   r  r…	  rŠ  rÃ   )rÍ   rµ   r  r…	  )rÍ   rµ   rŠ  rÃ   )r-   F)r¸  ztuple[Optional[float], ...]rÙ  rµ   r°  rÃ   )rÈ  úOptional[float])rÇ  r‡	  rÈ  r‡	  )rÎ  r‡	  rÇ  r‡	  rÈ  r‡	  )r¦   rC   ræ  zSequence[int]rÔ  r=  rÑ   r†	  )rs   ú
sympy.Exprr  zUnion[sympy.Expr, int])rs   rˆ	  r  rˆ	  )rs   rˆ	  r  rˆ	  r  rˆ	  )Nræ  N)
r:  rC   r  ú"Sequence[Union[int, torch.SymInt]]rG  r‰	  rF  zxCallable[[Sequence[Union[int, torch.SymInt]], Sequence[Union[int, torch.SymInt]]], torch._inductor.virtualized.OpsValue]rÑ   rC   )Nr   r/   F)r   )NNNN)rû   r   FTN)r›  rT   rÜ   )r¦   r1  rÑ   zOptional[ir.Constant])rW  F)r`   ztorch._ops.OpOverloadPacket)r/   )rÑ   z3list[Union[ir.TensorBox, ir.ShapeAsConstantBuffer]])rø  úir.Subgraphrù  r  )r¦  ztorch.fx.GraphModulert   r�	  )rø  rŠ	  )r'  rŠ	  ró  ztuple[torch.Tensor]r3  (  Ú
__future__r   r*  rô  r  r  Úloggingr  rB  rº  rb	  r�  Úcollectionsr   Úcollections.abcr   r   r   r   Útypingr	   r
   r   r   r   r   r   Útyping_extensionsr   Úunittest.mockr   r½   r{   Ú$torch.ao.quantization.fx._decomposedÚtorch.fxÚtorch.utils._pytreerP  Ú_pytreerm  Útorch._dynamo.utilsr   Ú(torch._higher_order_ops.associative_scanr   rÜ  r   Ú"torch._library.fake_class_registryr   Útorch._library.utilsr   Útorch._prims_commonr   r   r   r   r   r   r   r   r   r    r!   Útorch.fx.experimental.sym_noder"   r#   rg  r$   r%   r&   Útorch.utils._ordered_setr'   Útorch.utils._sympy.functionsr(   r)   r*   r+   r,   Ú_dynamo.utilsr.   Ú r0   r1   r2   r3   Údecompositionr4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rH   rI   rJ   rK   rL   rM   rN   rO   rP   rQ   r  rR   rS   r  rT   rU   rV   ÚFALLBACK_ALLOW_LISTÚ	getLoggerrÔ  rÂ  rX   Ú__annotations__rY   r|   r}   r  rÄ  Útr_c10dr·  r¡   Ú_higher_order_opsr®  rb   r~  rZ   Úquantized_decomposedrf   rx   r�   r~   r”   r    r©   rw  r™  rÆ  rM  ÚbmmÚconvolutionÚconvolution_backwardrV  rZ  rˆ  rÛ  rÉ  rË  Ú_int_mmr   rÿ  rg  rû  r¢  rn  ræ  rä  Ú	complex32Ú	complex64rÃ   rm  r¶   r¹   rÁ   rÄ   rÖ   rÚ   rà   rí   r  r  r)  rH  r,  r:  rN  rw  r†  r  rö   r¸  r»  rÉ  rÅ  r¸   rÌ  rÐ  Ú
device_putrÒ  rÕ  r  rÖ  rê  rü  r   r  r  ÚaliasÚdetachÚdetach_ÚliftÚview_ofr  rð   r  r  r  r#  r%  r+  r-  r0  r3  r¹  r5  r5  r@  rB  rR  Ú_unsafe_viewÚreshaperU  Úslicer‡  r–  r±  Úquantize_per_channelrÍ  rÕ  r“   rØ  Ú_functional_assert_asyncrÛ  Údequantize_per_channelrã  Úquantize_per_tensorré  Údequantize_per_tensorrí  rÌ  rø  rü  r#  rS  rU  rY  ra  rf  rh  rj  rv  r;  rz  rh  r€  r¶  Úcacher‘  r—  rœ  r­  rÉ  rÎ  Úrngprimsrß  rá  ræ  Ú	bernoullirâ  rê  rí  Ú	lru_cacherñ  rô  rÑ  rú  r÷  rø  rÿ  rþ  rý  ÚrandintÚstreamsÚrecord_eventÚ
wait_eventÚforce_stride_orderr  rÜ  r  r  r  Úlookup_seedr  Úrandomr  r  r'  r*  rF  rç  r8  Ú	NO_OPMATHrR  rT  rˆ   r5  rZ  r†   rŠ   r‹  Ú_adaptive_avg_pool3dÚadaptive_max_pool3dÚ*_scaled_dot_product_attention_math_for_mpsÚuniformÚexponentialÚ_pdist_forwardÚsoft_margin_loss_backwardÚ_fused_rms_normÚxpurl	  Úembedding_dense_backwardÚmtiaÚ_is_compiledÚnative_layer_normÚ_cdist_forwardÚ_cdist_backwardÚ
_trilinearÚsegment_reduceÚ_segment_reduce_backwardÚhistcÚ	histogramÚbin_ctÚ_histogramdd_bin_edgesÚ_histogramdd_from_bin_ctsÚaddbmmÚ_addmm_activationÚ_grouped_mmÚ
_cudnn_rnnÚ_cudnn_rnn_backwardÚ
miopen_rnnÚmiopen_rnn_backwardÚ_embedding_bagÚ_embedding_bag_forward_onlyÚ_embedding_bag_backwardÚ*_embedding_bag_per_sample_weights_backwardÚ_fused_moving_avg_obs_fq_helperÚ*_fused_moving_avg_obs_fq_helper_functionalÚ max_pool3d_with_indices_backwardÚ_adaptive_avg_pool2d_backwardÚ_adaptive_avg_pool3d_backwardÚadaptive_max_pool2d_backwardÚadaptive_max_pool3d_backwardÚfractional_max_pool2d_backwardÚfractional_max_pool3d_backwardÚreplication_pad1d_backwardÚreplication_pad2d_backwardÚupsample_linear1d_backwardÚupsample_bicubic2d_backwardÚupsample_trilinear3d_backwardÚgrid_sampler_2d_backwardÚ_pdist_backwardrm  rc  ÚkthvalueÚtopkr  ÚmedianÚ	nanmedianr^  Úresize_Ú
resize_as_Ú_linalg_detÚlinalg_householder_productÚlinalg_inv_exÚlinalg_ldl_factor_exÚlinalg_ldl_solveÚ	linalg_luÚlinalg_lu_factor_exÚlinalg_lu_solveÚlinalg_matrix_expÚ	linalg_qrÚ_linalg_slogdetÚ_linalg_solve_exÚlinalg_solve_triangularÚ_linalg_svdÚ	lu_unpackÚormqrÚ_linalg_check_errorsÚlinalg_pinvÚatol_rtol_tensorÚ_linalg_eighÚtriangular_solveÚlinalg_cholesky_exÚcholesky_inverseÚcholesky_solveÚgeqrfÚ_fft_r2cÚnonzeroÚgcdÚ_thnn_fused_lstm_cellÚ_primsÚ	rng_primsÚrun_and_save_rng_stateÚrun_with_rng_stateÚgraphsafe_run_with_rng_stateÚmasked_scatterÚmasked_scatter_backwardr©  ÚangleÚ_efficientzerotensorÚ(_sparse_coo_tensor_with_dims_and_tensorsÚ	to_sparseÚ
_to_sparserË   rÛ  r{  ry  Ú#_scaled_dot_product_flash_attentionÚ	quantizedÚ,_scaled_dot_product_flash_attention_backwardÚ#_scaled_dot_product_cudnn_attentionÚ,_scaled_dot_product_cudnn_attention_backwardÚ+_scaled_dot_product_flash_attention_for_cpuÚ4_scaled_dot_product_flash_attention_for_cpu_backwardÚ0_scaled_dot_product_fused_attention_overrideableÚ9_scaled_dot_product_fused_attention_overrideable_backwardÚ_flash_attention_forwardÚ_flash_attention_backwardÚ_efficient_attention_forwardÚ_efficient_attention_backwardÚindex_reduceÚrepeat_interleaveÚ_weight_norm_interface_backwardrž  r�  r“  rª  rš  r   rª  r¬  Úscalar_tensorrÀ  Ú
LongTensorrÂ  rÈ  rÊ  rÌ  rÕ  r'  rÙ  rN  rØ  r  r´  rÈ  Ú
zeros_likerí  rñ  râ  rø  rü  rþ  r  r  r  r2  r5  r4  rC  r?  rG  rI  rK  rV  rQ  r[  rD  rz  Úfallback__unsafe_masked_indexr~  Ú,fallback__unsafe_masked_index_put_accumulaterd  r†  ro  rŽ  rˆ  r˜  r–  rœ  r“  r¼  rÁ  rÄ  rÏ  rÑ  r¹  rØ  rî  r$  r÷  rø  r  r  r  r!  r'  r;  r?  rK  rO  rQ  r€  r˜  r   r¯  r¶  rÍ  rÇ  rá  rß  rò  rø  rû  rõ  r  r  Ú
avg_pool1dr)  r  rH  rƒ  r~  r†  r™  r�  r¡  rž  rµ  r¹  rÊ  rÎ  r‹  rÓ  rÕ  r×  rÚ  rß  ÚTensor_Tensorrå  r¸  rã  ÚTensor_Scalarrä  rW  rå  r„  rõ  rø  r¨  rý  rj  r  r,  Útrue_divider  r$  r§  r/  r-  r4  r3  r>  r=  rJ  rH  rP  rO  r’  r%  rU  r‚  rZ  r�  r_  r`  rŸ  rX  r   r]  r6  rY  rˆ  r^  r¢   rh  rk  rp  rr  Úrsqrtr8  râ  Úexpm1Úrelur~  rá  r¯  rà  r¶  rˆ  r·  ÚcosÚsinÚabsÚbitwise_andÚbitwise_left_shiftÚbitwise_notÚ
bitwise_orÚbitwise_right_shiftÚbitwise_xorÚlgammaÚerfÚspecial_erfr7  ÚtanÚtanhrÿ  r‰  ra  Úlogical_xorr»  r¼  Ú	clamp_minÚ	clamp_maxÚnegrº  Ú	remainderÚsignÚsignbitÚ	_neg_viewÚler¤  r£  r²  r�  ÚneÚcoshÚsinhÚacosÚacoshÚasinÚasinhÚatan2ÚatanÚatanhr  ÚerfcÚerfinvÚhypotÚlog10Úlog2Ú	nextafterÚcodegen.commonr�  r‹  r“  rÞ   r`   rÐ   rt  Ú_foreach_addÚListÚforeach_add_listÚforeach_add_scalarÚ_foreach_mulÚforeach_mul_listÚforeach_mul_scalarÚ_foreach_subÚ_foreach_negÚ_foreach_absÚ_foreach_powÚScalarAndTensorÚ_foreach_divÚforeach_div_listÚforeach_div_scalarÚ_foreach_sqrtÚ_foreach_rsqrtÚ_foreach_maximumÚ_foreach_minimumÚ_foreach_clamp_minÚ_foreach_clamp_maxÚ_foreach_reciprocalÚ_foreach_signÚ_foreach_copyÚforeach_copyrœ  Ú_foreach_add_Ú_foreach_mul_Ú_foreach_div_Ú_foreach_copy_r   Úadd_Úbitwise_and_Úbitwise_left_shift_Úbitwise_not_Úbitwise_or_Úbitwise_right_shift_Úbitwise_xor_Úmul_Údiv_ÚTensor_modeÚlogical_and_Úlogical_not_Úlogical_or_Úlogical_xor_Úsub_Úrelu_Úsigmoid_Ú__and__Ú
__lshift__Ú__or__Ú
__rshift__Ú__xor__Ú__iand__Ú__ilshift__Ú__ior__Ú__irshift__Ú__ixor__r¢  r~  rµ   r©  r¬  r   ÚmethodÚfuncr¯  r±  Ú_inductor_testr�  r³  rß  r·  Úset_Úsource_Tensorr»  Úfsdpr½  rÔ  Ú*torch._higher_order_ops.auto_functionalizerÕ  rá  rB	  r’   rõ  Úwhile_loop_stack_outputr+  rú  r	  Ú.torch._inductor.fx_passes.control_dependenciesr	  r	  Úinvoke_quantr	  r)	  r,	  r.	  rX	  Úcomm_loweringrY	  rZ	  ri	  rn	  Úcvt_e8m0_rceilrv	  rŠ  rw	  Úregister_quantized_opsÚregister_woq_mm_opsrx	  Úregister_onednn_fusion_opsry	  Úregister_jagged_opsÚcontextmanagerr|	  rû   rg   re   Ú<module>rµ
     s†9  ðæ "ã Û Û Û Û Û Û Û 	Û Û Ý #ß DÓ Dß P× PÑ PÝ 'Ý ã ã Û +Û ß $Ð $Ý (Ý HÝ UÝ ?Ý :÷÷ ÷ ñ ÷ M÷ñ õ
 0÷õ õ -ß 8Ó 8ß =÷÷ ÷ ÷ ó ÷$÷ ÷ ó ÷  ö Ý*ñ ˆTƒ]€Ùˆtƒ_€ñ !à ØðóÐ ð ×Ò˜Ó!€ØFH€	ÐCÓ Hð ð ð ó ð �u—z’z×,Ò,Ò-Ó/€	Ø‡y�y‡~‚~€Ø
�)‰)×
Ò
€Ø�	‰	�Š€Ø" 5§:¢:×#8Ò#8Ò9Ó;Ð Ø˜Ÿš×.Ò.Ò/Ø
×Ò×)Ò)Ð*ó€ð
 ! §¢×!6Ò!6Ò7Ó9Ð ØNPÐ ÐKÓ PØ—y‘y×5Ò5Ð õðØðà9õõ0ðBØ	ðBà-õBõFð
ð	ðð õð&3ØAð3à.ð3ð 
õ3ñ à�ŠØ×ÒØ�ŠØ× Ò Ø�ŠØ×ÒØ×!Ò!Ø×$Ò$Ø×$Ò$Ø×-Ò-Ø�ŠØ×ÒØ×&Ò&Ø�Šðôð, ‡{‚{Ø‡z‚zØ‡{‚{Ø‡{‚{Ø‡{‚{Ø‡}‚}Ø‡}‚}Ø‡}‚}Ø‡‚Ø‡‚Ø�ŠØ�
Š
Ø�Šñ€õ.õ"õ#ð "'ñCØðCà8ðCð ðCð ö	Cò(ð ØFðØSVðà	õõð(OØ
ðOàðOð ðOð Cð	Oð
  ðOð &õOðdØ"ðØ/Aðàõð42à!ð2ð ð2ð Cð	2ð
  ð2ð Lõ2ðn ð 	(×/Ò/ØØðððð 4öò,#õ42ðn ØØ $ØØõVõr$òN÷@Eð Eñ �5×*Ò*×7Ò7ÈTÑRñ)ó Sð)ñX �5×-Ò-À4ÑHô)ó Ið)ð @E÷ 5ð 5ñ( �4—9’9—?’?¸Ñ=ô&ó >ð&ð ;@Èe÷ Kð Kñ �5×#Ò#¸Ñ>÷Fó ?ðFð 
ØØ7×?Ò?ØØØ $ØØô*ñZ $ØØ7×DÒDØòñ �4—:’:¨À4ÑHôó Iðò>ñ> Ô ð õñ �4—:’:¨ÀDÑIñó Jðñ0 �4×)Ò)°UÐPTÑUñó Vðñ. �D—J’J §¢¨T¯\ª\¸4¿9º9ÀeÇmÂmÐTÓUñó Vðñ ˆ4�×ÑÙ�d—o’oÔ& sÔ+ñ �4—<’<°TÑ:ôBó ;ðBñ, �4×$Ò$¸$Ñ?ô"ó @ð"ñ �D—M’M�?Ó#ôó $ðñ �4—:’:ÓñCó ðCñ �4—:’:ÓñCó ðCñ �4—9’9Óñ!ó ð!ñ �4—:’:Óñ!ó ð!ñ �4—:’:×%Ò%Ó&ñ%ó 'ð%ñ �4—:’:Óñ!ó ð!ñ �4—;’;°DÑ9ñ>ó :ð>ñ4 �5×)Ò)¸tÑDñ
ó Eð
ñ �4—>’>°tÑ<ñ#ó =ð#ñ �4—;’;Óñ1ó  ð1ñh �4×$Ò$¸$Ñ?Ù�4—9’9°$Ñ7Ù�4—<’<°TÑ:ô1ó ;ó 8ó @ð1ñ �4—<’<°TÑ:ñ>ó ;ð>ñ �4—:’:°4Ñ8ôuEó 9ðuEñp �4—?’?¸Ñ=ôJó >ðJñ8 �4×#Ò#¸Ñ>ôó ?ðñ �4×'Ò'¸TÑBôó Cðõ
BñJ Ð'×<Ò<ÐRVÑWð/Øð/àð/ð ð/ð ð	/ð
 ð/ð ð/ð ð/ð ô/ó Xð/òdñ$ �4×%Ò%×)Ò)Ó*ñ$ó +ð$ñ �4×0Ò0×4Ò4Ó5ñ$ó 6ð$ñ Ø×/Ò/ÀTñð (,ñ/Øð/àð/ð ð/ð ð	/ð
 ð/ð ð/ð ð/ð %ð/ð õ/óð/ñd Ø×,Ò,×4Ò4È$ñð!Øð!àð!ð ð!ð ð	!ð
 ð!ð ð!ð ô!óð!ñH Ø×.Ò.×6Ò6ÈDñð (,ñ!Øð!àð!ð ð!ð ð	!ð
 ð!ð ð!ð %ð!ð õ!óð!ñH Ø×,Ò,×3Ò3Èñð*Øð*àð*ð ð*ð ð	*ð
 ð*ð ð*ð ô*óð*ñZ Ø×.Ò.×5Ò5È4ñð (,ñ,Øð,àð,ð ð,ð ð	,ð
 ð,ð ð,ð %ð,ð õ,óð,ñ^ �4—8’8Óôy:ó ðy:ñx �4—=’=°dÑ;÷3Eó <ñ3Eñl �4×%Ò%¸4Ñ@÷6ó Añ6ñ �4×(Ò(¸dÑC÷ó Dññ �4—;’;°DÑ9ñ=Có :ñ=Cñ@ �4—:’:°4Ñ8ôó 9ññ4 �4×(Ò(¸dÑCô ó Dñ ñ �4—;’;°DÑ9ôó :ññ �4—;’;°DÑ9ñDó :ñDñ8 �4—>’>°tÑ<ñó =ññ �4—?’?¸Ñ=ñó >ñöñ �4—8’8Óôó ñöð$ ‡‚ñó ñ÷ñ ÷D
3ñ 
3÷%6ñ %6öP7Nót	,ñ �5—9‘9×%Ò%×1Ò1ÀtÑLñ#+ó Mñ#+ñL �4×&Ò&¸DÑAñGó BñGñ �4—?’?¸Ñ=ñó >ññ �4—>’>×#Ò#¸Ñ>ñ'ó ?ñ'ñ �4—<’<Ó ñó !ñð ×Ó�QÓñBó ñBó/ò
 )¨¯ª×):Ò):Ó;Ñ Ú*¨4¯9ª9×+>Ò+>Ó?Ñ Ú)¨$¯*ª*×*<Ò*<Ó=Ñ Ú+¨D¯JªJ×,@Ò,@ÓAÑ Ú ˆd�lŠlÔ ò ˆe�i‰i×Ò×,Ò,×4Ò4Ô 5Ú ˆe�i‰i×Ò×*Ò*×2Ò2Ô 3ñ �4—9’9ÓñJó ñJñ �4—:’:ÓñJó ñJñ �>×4Ò4È$ÑOñLó PñLñ
 �>×&Ò&¸DÑAôKó BñKñ �>×'Ò'¸TÑBñJó CñJñ
 �>×-Ò-À4ÑHñ	ó Iñ	ñ �>×(Ò(¸dÑCØRS÷ ó Dññ6 �>×)Ò)¸tÑDàLMñØ	ðØðØ(ðØ09ðØFIõó Eñö8ö .ñ �4×$Ò$×+Ò+ÀÑFð
 ØØØ"&ñ^Øð^à
ð^ð ð	^ð
 ð^ð ð^ð  ð^ð õ^ó Gñ^ñB Ø‡N‚N×ÒÐ/N×/XÒ/Xñð Øñ7Øð7àð7ð ð	7ð
 õ7óñ7ótóóóóó óó$FòT ˆd×'Ò'Ô (Ú ˆd×&Ò&Ô 'Ú ˆd×=Ò=Ô >ò ˆd�lŠl Ò 'Ú ˆd×Ò×&Ò&¨UÒ 3Ú ˆd×!Ò!Ñ#5Ô 6Ú ˆd×,Ò,°5Ò 9Ú ˆd×"Ò"¨Ò /Ø‡9‚9×Ò×ÑÚØ×%Ò%¨Eòð 	‡:‚:×Ò×ÑÚØ×Ò Uòò
 ˆd×!Ò!Ô "Ú ˆd×"Ò"Ô #ò ˆd�oŠoÔ ò ˆd×!Ò!×)Ò)Ô *Ú ˆd×+Ò+×3Ò3Ô 4ò ˆd�jŠjÔ Ú ˆd�nŠn×#Ò#Ô $Ú ˆd×)Ò)×1Ò1Ô 2Ú ˆd×,Ò,×4Ò4Ô 5ò ˆd�kŠkÔ Ú ˆd×$Ò$¨5Ò 1â ˆd×Ò¡Ô .ò ˆd×'Ò'Ñ)@Ô AÚ ˆd�oŠo™}Ô -Ú ˆd×&Ò&Ñ(:Ô ;Ú ˆd�oŠo™}Ô -Ú ˆd×&Ò&Ñ(:Ô ;ò ˆd×!Ò!Ñ#5Ô 6Ú ˆd×.Ò.Ñ0BÔ CÚ ˆd×*Ò*Ô +Ú ˆd×=Ò=Ô >Ú ˆd×=Ò=Ô >Ú ˆd×2Ò2Ô 3Ú ˆd×=Ò=Ô >ò ˆd×3Ò3Ô 4Ú ˆd×0Ò0±-Ô @Ú ˆd×0Ò0Ô 1Ú ˆd×/Ò/Ô 0Ú ˆd×/Ò/Ô 0Ú ˆd×1Ò1Ô 2Ú ˆd×1Ò1Ô 2Ú ˆd×-Ò-Ô .Ú ˆd×-Ò-Ô .Ú ˆd×-Ò-Ô .Ú ˆd×.Ò.Ñ0BÔ CÚ ˆd×0Ò0Ô 1Ú ˆd×+Ò+Ô ,Ú ˆd×"Ò"Ñ$6Ô 7ò ˆd�iŠiÔ Ú ˆd�iŠi×ÒÔ Ú ˆd�mŠmÔ Ú ˆd�iŠiÔ Ú ˆd�iŠiÔ Ú ˆd�kŠkÔ Ú ˆd�nŠnÔ Ú ˆd�mŠmÔ â ˆd�lŠlÔ Ú ˆd�oŠoÔ ò ˆd×ÒÔ Ú ˆd×-Ò-Ô .Ú ˆd× Ò Ô !Ú ˆd×'Ò'Ô (Ú ˆd×#Ò#Ô $Ú ˆd�nŠnÔ Ú ˆd×&Ò&Ô 'Ú ˆd×"Ò"Ô #Ú ˆd×$Ò$Ô %Ú ˆd�nŠnÔ Ú ˆd×"Ò"Ô #Ú ˆd×#Ò#Ô $Ú ˆd×*Ò*Ô +Ú ˆd×ÒÔ Ú ˆd�nŠnÔ Ú ˆd�jŠjÔ Ú ˆd×'Ò'Ô (Ú ˆd×Ò×/Ò/Ô 0Ú ˆd×ÒÔ  Ú ˆd×#Ò#Ô $Ú ˆd×%Ò%Ô &Ú ˆd×#Ò#Ô $Ú ˆd×!Ò!Ô "Ú ˆd�jŠjÔ Ú ˆd�mŠmÔ ò ˆd�lŠl×"Ò"Ô #ò ˆd�hŠh×Ò UÒ +Ú ˆd×(Ò(©-Ô 8Ú ˆe�lŠl×$Ò$×;Ò;Ô <Ú ˆe�lŠl×$Ò$×7Ò7Ô 8Ú ˆe�lŠl×$Ò$×AÒAÔ Bò
 ˆd×!Ò!Ô "Ú ˆd×*Ò*Ô +ò ˆd×"Ò"Ñ$6Ô 7Ú ˆd�jŠjÔ ò ˆd×'Ò'Ô (ò ˆd×;Ò;Ô <Ú ˆd�nŠnÔ Ú ˆd�oŠoÔ ò ˆd�jŠj×ÒÔ ò Ø×0Ò0×8Ò8ÙØ	òò
 Ø×9Ò9×AÒAÙØ	òò
 Ø×,Ò,×4Ò4ÙØ	òò
 Ø×,Ò,×6Ò6Ø	òò Ø×5Ò5×=Ò=ÙØ	òò
 Ø×,Ò,×4Ò4ÙØ	òò
 Ø×5Ò5×=Ò=ÙØ	òò
 Ø×4Ò4×<Ò<ÙØ	òò
 Ø×=Ò=×EÒEÙØ	òò
 Ø×9Ò9×AÒAÙØ	òò
 Ø×BÒB×JÒJÙØ	òò
 ˆd×+Ò+×3Ò3±_Ô EÚ ˆd×+Ò+×5Ò5Ô 6Ú ˆd×,Ò,×4Ò4±oÔ FÚ ˆd×/Ò/×7Ò7¹Ô IÚ ˆd×0Ò0×8Ò8¹/Ô Jò ˆd×ÒÔ  Ú ˆd×$Ò$×+Ò+¸TÒ Bâ ˆd×2Ò2×:Ò:Ñ<NÔ Oñ
 �4—9’9°$Ñ7ôó 8ññ �4—:’:ÓØ"ô ó ñóñ* ˆ4Ð"×#Ñ#Ù�d×*Ò*Ô+©EÔ2ñ �5—:’:Óñó ññ( �4×&Ò&¸DÑAô ó Bñ ñF �4×%Ò%¸4Ñ@ôAó AñAóHñ �E—L’L $×"4Ò"4Ð5Ó6Ø t°DÀUô 5ó 7ð5ñp �5—?’?Ó#ô4ó $ñ4ñ �5×#Ò#Ó$ñ+ó %ñ+ñ �4×+Ò+Ó,ñ)"ó -ñ)"ñX �4×&Ò&Ó'ñó (ññ �4×/Ò/Ó0à%)ñØ59À$õó 1ñóó<Kóñ8 �E—K’K §¢Ð,Ó-ð Ø
ØØØØôó .ñó$ó.>ñ ˜tŸšÔ/Ò0BÁ5Ó0IÓJ�
ÚÒ1°!Ó4Ó5�	ÚÒ 2°1Ó 5Ó6�
óñ  �4—>’>Ó"Ø $¨T¸$È4ô ó #ññ �4×%Ò%Ó&à¨°TÀdôó 'ññ@ �4×)Ò)Ó*à"¨4¸Èôó +ññ" �5×%Ò%×-Ò-Ó.ñAó /ñAñ �E—J’J §	¢	Ð*Ó+ñ:ó ,ñ:ñ
 �4—;’;°DÑ9ô!ó :ñ!ñH �4—>’>°tÑ<ôó =ñóB#ðF öFóRö"1ñJ �4—:’:°4Ñ8ñ
ó 9ñ
ñ �4×%Ò%¸4Ñ@ñ/ó Añ/ñ �4—>’>°tÑ<ôó =ññ �4×)Ò)Ó*ôó +ñó;óñ. �4—?’?¸Ñ=ôó >ññ �>×4Ò4È$ÑOôó Pñötòn !1Ø×Ò×%Ò%¸5ñ!Ñ ò 0@Ø×,Ò,×4Ò4È%ñ0Ñ ,ñ
 �4×,Ò,À$ÑGñó Hññ, �4×;Ò;ÐQUÑVñ	Pó Wñ	Pð ñ1ó ñ1ñ �4×*Ò*ÀÑEôó Fññ �4—<’<°TÑ:ô9ó ;ñ9ð !ØñØ&ðð 
ðð ðð ÷ñD �4—=’=°dÑ;ØDH÷ :ó <ñ:ñ" �4×#Ò#¸Ñ>ô3ó ?ñ3ñ �4×$Ò$¸$Ñ?ô6ó @ñ6ñ �4×&Ò&¸DÑAôPó BñPñ �4×'Ò'¸TÑBØPT÷ qó Cñqðp Øñ,ð *ð,ð ð	,ð
 ÷,ñ^ �4×*Ò*×2Ò2Ó3÷>ó 4ñ>ñ �4×1Ò1×9Ò9Ó:÷Jó ;ñJñ �4×*Ò*×2Ò2Ó3àRVñIØ-ðIØ@OõIó 4ðIñ �4×1Ò1×9Ò9Ó:àRVñUØ-ðUØ@OõUó ;ðUñ �4×*Ò*×2Ò2Ó3ð !%Ø $Ø $ñSð ðSð ð	Sð
 õSó 4ñSñ �4×1Ò1×9Ò9Ó:ð !%Ø $Ø $ñ	ð ð	ð ð		ð
 õ	ó ;ñ	ó7ñ �5—9’9×$Ò$Ó%ñó &ñð*\Øð\Ø(ð\Ø6;ð\àö\ñ~ �4×'Ò'¸TÑBô4ó Cñ4önööð :>öð@ MQö ó<ð JNö@ó:HñV �5×:Ò:ÐPTÑUð ô5ó Vñ5ðDØðà3ðð 3ððð	ð öñ> Ø	×1Ò1Àtññóñó$ñ< �4×/Ò/ÀTÑJð ØØØô
ó Kð
ñ �4×/Ò/ÀTÑJð ØØØô
ó Kð
ò -=Ø×)Ò)×1Ò1Øñ-Ñ )ñ �4×8Ò8ÈdÑSòNó TðN÷bô8Bô&ôR2òj  0Ø×Ò×%Ò%¸5ñ Ñ ñ
 �4×,Ò,Ó-òBó .ñBòJ  0Ø×Ò×$Ò$¸%ñ Ñ ñ
 �4×+Ò+Ó,òNó -ñNôb)ñX �4×-Ò-Ó.òVó /ñVñ �4×-Ò-Ó.òVó /ñVôAñH �4×3Ò3×;Ò;Ó<àBFõ.ó =ñ.ñb �4—?’?¸Ñ=ð ØØØØõó >ðñ* �4—?’?¸Ñ=ð ØØØØõó >ñò, �T—_’_×,Ò,À%ÑHÚ�T—_’_×,Ò,À%ÑHÚ�T—_’_×,Ò,À%ÑHðÑ ôA#òH  0Ø×Ò×$Ò$¸%ñ Ñ ñ
 �4×+Ò+ÀÑFð õbó GðbòJ  0Ø×Ò×$Ò$¸%ñ Ñ ñ
 �4×+Ò+ÀÑFð õDó GñDôNð& HL÷Oð O÷dò ô*ñ �4—9’9Óñ:¨t÷ :ó ñ:ô ô4ô (ôV4ñ( �D—H’H˜eŸišiÐ(Ó)ñ T°5÷ ó *ññ �4—=’=Ó!ñ¨°u÷ ó "ñôð òó ñò .Ø‡H‚H×Ò°ñÑ ò ' t§x¢x§¢ÈEÑRÑ Ú-Ø‡H‚H×Ò°ñÑ ñ
 �4—8’8 tÒ,ò-ó -ñ-÷`"ñJ �4—:’:Óò2ó ñ2ñ �4—:’:°4Ñ8õó 9ñð òó ñð òó ññ �4—8’8 tÒ,õó -ññ �D—H’H�:¨Ò.ò(ó /ñ(÷ñ@ �E—I’I�;¨$Ò/ò$ó 0ñ$ñ. Ø	×Ò�t—x’x—’Ð'ØØ7×DÒDñò
óñ
ñ �D—I’I˜uŸzšzÐ*°dÒ;ò$ó <ñ$ñ  �D—H’H˜eŸišiÐ(Ó)ñ.°÷ .ó *ñ.ò # 4§;¢;×#6Ò#6Ó7�Ú# D§L¢L×$8Ò$8Ó9Ñ Ú(¨×):Ò):×)BÒ)BÓCÑ Ú" 4§;¢;×#6Ò#6Ó7�Ú" 4§;¢;×#6Ò#6Ó7�ñ �4—;’;Óõó  ññ. �4—<’<Ó õó !ññ. �4×$Ò$Ó%òó &ññ* �4—;’;°DÑ9õó :ññ, �4—;’;°DÑ9õó :ññ, �4—9’9Óñ.°÷ .ó ñ.ñ �4—8’8Óõ@ó ñ@ñ
 �4—8’8°Ñ6õ7ó 7ñ7ñ �4—8’8°Ñ6õ7ó 7ñ7ñ �%—-’-Ô  ¢±	Ó!:Ô ;Ù §	¢	Ô*ª>¹%Ó+@ÓA�Ù §	¢	Ô*ª>¹%Ó+@ÓA�Ù! $§+¢+Ô.Ú‘8°5·;²;Ò?ó�ñ " $§+¢+Ô.Ú‘8°5·;²;Ò?ó�ñ Ø‡H‚H˜$¹Lò�ò ! §¢×!1Ò!1ÀuÑM�ñ �4—9’9×#Ò#¸Ñ>Ø! r°eö $2ó ?ñ$2ñN �4—9’9×$Ò$¸$Ñ?õHó @ñH÷÷ò 	# 4§:¢:Ó.�Ú& t§x¢xÓ0�Ú! $§)¢)Ó,�Ú" 4§:¢:Ó.�Ù˜$Ÿ)š)Ó$�Ú
*¨4¯<ª<Ó
8�Ú'¨¯	ª	Ó2�Ù	˜DŸKšKÓ	(�Ù˜Ÿš¨tÒ4�ñ �4—<’<¨4Ò0Ø-.ö Fó 1ñF÷RLñ2 ˜4×0Ò0×7Ò7Ñ9PÔ Qò ! §¢Ô *Ú   §¢Ô *Ù˜ŸšÓ"�Ù  ×!1Ò!1Ó2�Ù'¨×(?Ò(?Ó@Ñ Ù Ø×Ò±-ò�ñ   §¢Ó0�
Ù(¨×)AÒ)AÓBÑ Ù  ×!1Ò!1Ó2�Ú ˜4Ÿ;š;Ô 'Ú  §¢Ó*�Ù Ø×ÒÐ*I×*VÒ*Vòáôò ˜4Ÿ:š:Ô &Ú ˜4Ÿ8š8Ô $Ú ˜4Ÿ9š9Ô %Ú   §¡Ô *Ù Ø×ÒØØØŸ*š*ò	�ñ !Ø×ÒØØØŸ*š*ò	�ñ  Ø‡O‚OØØØŸ*š*ò	�
ñ !Ø×ÒØØØŸ*š*ò	�ñ ˜TŸ\š\Ó
*�Ù
˜TŸ\š\Ó
*�Ù �$—.’.Ô !¡'Ô *Ù �$—.’.Ô !¡'Ô *Ù˜ŸšÓ"�Ù˜ŸšÓ"�Ú'¨¯ªÓ8�
Ù �4—>’>Ô "Ù˜$Ÿ)š)ÁÒL�Ù �4—9’9Ô Ù �4—<’<°u·z²zÓ Bá �$—.’.Ô !¡#Ô &á �4—7’7°%·*²*Ó =Ù �4—7’7°%·*²*Ó =Ù �4—7’7°%·*²*Ó =Ù˜Ÿš°u·z²zÒB�Ù �4—7’7°%·*²*Ó =Ù �4—7’7°%·*²*Ó =â ˜4Ÿ9š9Ô %Ú ˜4Ÿ9š9Ô %Ú ˜4Ÿ9š9Ô %Ú ˜4Ÿ:š:Ô &Ú ˜4Ÿ9š9Ô %Ú ˜4Ÿ:š:Ô &Ú ˜4Ÿ:š:Ô &Ú ˜4Ÿ9š9Ô %Ú ˜4Ÿ:š:Ô &Ú ˜4Ÿ=š=Ô )Ú ˜4Ÿ9š9Ô %Ú ˜4Ÿ;š;Ô 'Ú ˜4Ÿ:š:Ô &Ú ˜4Ÿ:š:Ô &Ú ˜4Ÿ9š9Ô %Ú ˜4Ÿ>š>Ô *ç DÕ DôEô$ %�DÚ4LØ‰dö5Ñ0‰Ñ¡ñ 	ÙÙÙ 3Ù+õ		
ñ5ò 5MØ‰tö5Ñ0‰Ñ¡ñ 	ÙÙÙ 3Ù+õ		
ó5ñ %ñ, .Ø×Ò×Ò™C¨TòÑ ñ 0Ø×Ò×Ò™c¨tòÑ ñ ˜4×,Ò,×3Ò3±SÀdÓ KÙ-¨d×.?Ò.?×.DÒ.DÁcÓJÑ Ù ˜4×,Ò,×3Ò3±SÔ 9Ù/°×0AÒ0A×0HÒ0HÉ#ÓNÑ Ù ˜4×,Ò,×1Ò1±3Ô 7Ù ˜4×,Ò,×3Ò3±SÔ 9Ù ˜4×,Ò,×4Ò4±cÔ :Ù ˜4×,Ò,×4Ò4±cÔ :Ù ˜4×,Ò,×3Ò3±SÔ 9Ù ˜4×,Ò,×1Ò1±3Ô 7Ù ˜4×,Ò,×<Ò<¹cÔ BÙ-¨d×.?Ò.?×.DÒ.DÁcÓJÑ Ù ˜4×,Ò,×3Ò3±SÔ 9Ù/°×0AÒ0A×0HÒ0HÉ#ÓNÑ Ù ˜4×-Ò-©tÔ 4Ù ˜4×.Ò.±Ô 6Ù ˜4×0Ò0×5Ò5±wÔ ?Ù ˜4×0Ò0×7Ò7¹Ô AÙ ˜4×0Ò0×5Ò5±wÔ ?Ù ˜4×0Ò0×7Ò7¹Ô AÙ ˜4×2Ò2×7Ò7¹Ô AÙ ˜4×2Ò2×9Ò9¹7Ô CÙ ˜4×2Ò2×7Ò7¹Ô AÙ ˜4×2Ò2×9Ò9¹7Ô CÙ ˜4×3Ò3±ZÔ @Ù ˜4×-Ò-©tÔ 4Ù)¨$×*<Ò*<¹dÓC�ô,ò Ø×Ò×Ò˜T×.Ò.×3Ò3Ñ5Eôò Ø×Ò×Ò˜t×0Ò0×7Ò7Ñ9Kôò Ø×Ò×Ò˜T×.Ò.×3Ò3Ñ5Eôò Ø×Ò×Ò˜t×0Ò0×7Ò7Ñ9Kôò Ø×Ò×Ò˜T×.Ò.×3Ò3Ñ5Eôò Ø×Ò×Ò˜t×0Ò0×7Ò7Ñ9Kôò Ø×Ò×Ò ×!3Ò!3×!;Ò!;¹\ôô
ò �—’™CÔ  Ú �×"Ò"¡KÔ 0Ú �×)Ò)Ñ+=Ô >Ú �×"Ò"¡KÔ 0Ú �×!Ò!¡:Ô .Ú �×*Ò*Ñ,?Ô @Ú �×"Ò"¡KÔ 0Ú �—’™CÔ  Ú �—’×!Ò!¡3Ô 'Ú �—’×&Ò&©Ô 1Ú �×"Ò"¡KÔ 0Ú �×"Ò"¡KÔ 0Ú �×!Ò!¡:Ô .Ú �×"Ò"¡KÔ 0Ú �—’™CÔ  Ú �—’™TÔ "Ú �—’¡Ô (ñ �$—,’,Ô ¡Ô ,Ù �$—/’/Ô "Ñ#5Ô 6Ù �$—+’+Ô ™zÔ *Ù �$—/’/Ô "Ñ#6Ô 7Ù �$—,’,Ô ¡Ô ,â �—’ §¢Ô -Ú �×!Ò! 4§?¢?Ô 3Ú �—’˜tŸ{š{Ô +Ú �×!Ò! 4§?¢?Ô 3Ú �—’ §¢Ô -ñ �4×+Ò+Ó,õó -ññ �4—=’=×$Ò$Ó%òó &ññ �4—?’?×&Ò&Ó'òó (ññ �4—>’>Ó"òó #ñð "×'Ó'Ö)�L�F‰DÙÑ(©Ó0Ô1±$Ö7ñ *ñ �5—=’=Ó!òó "ññ �4—<’<Ó ò7ó !ñ7ñ �5—9‘9×+Ò+×3Ò3Ó4òó 5ññ
 �5—9‘9×%Ò%×;Ò;Ó<òó =ññ �5—9‘9—>’>×&Ò&×4Ò4Ó5òKó 6ñKñ ˆ5�9‰9�>Š>™7×#Ñ#á�u—y‘y—~’~×+Ò+×3Ò3Ó4ò#ó 5ñ#ñ �5—9‘9—>’>×(Ò(Ó)Ø%)õ =ó *ñ=÷@ KÑ Jò Ñ!Ô "ñ Ð1Ó2òSó 3ñSñ( �5—9‘9×)Ò)×.Ò.ÀDÑIð/à8õ/ó Jñ/ñ �5—9‘9×)Ò)×4Ò4È$ÑOõEó PñEñ& Ø	‡I�I×Ò×2Ò2Èòà×Ó‘J¨TÒ2ô4ñ
 �5—9‘9×)Ò)×9Ò9ÈtÑTõ/ó Uñ/÷
 ÷H HÑ Gñ ‘<°TÑ:ò+ó ;ñ+ñ\ �5×*Ò*×7Ò7ÈTÑRØDH÷ ñ ó Sññ8 Ð&¸DÑAð Øð Ø4Gõ ó Bñ ñF �5—9‘9—?’?×/Ò/×7Ò7Ó8òó 9ññ �5—9‘9—?’?×.Ò.×6Ò6Ó7òó 8ññ �5—9‘9×)Ò)×6Ò6ÈDÑQòc ó Rñc ÷L PÕ Oò Ô Ú Ô ñ �>×8Ò8ÈdÑSò1ó Tñ1ôhWñ
 �>×0Ò0ÀdÑKò")ó Lñ")÷L Ð ñ ‘Ô ç !Ð !ñ × *Ó *Ô ,Ù × 'Ó 'Ô )ç Ð ñ × +Ó +Ô -ç Ð ñ × $Ó $Ô &ð ×Òõó òrg   