Ë
    g^(hþ€ ã                  óêo  — U d dl mZ d dlZd dlZd dlZd dlZd dlZd dlZd dlZd dl	Z	d dl
Z
d dlZd dlmZ d dlmZmZ d dlmZmZmZmZmZmZmZ d dlmZ d dlmZ d dlZd dlZd dlZd dl Zd dl!m"c m#Z$ d dl%m&Z& d d	l'm(Z( d d
l)m*Z* d dl+m,Z,m-Z-m.Z.m/Z/m0Z0m1Z1m2Z2m3Z3m4Z4m5Z5m6Z6 d dl7m8Z8m9Z9 d dl:m;Z; d dl<m=Z=m>Z>m?Z?m@Z@mAZA ddlBmCZC ddlDmEZEmFZFmGZGmHZH ddlImJZJmKZK ddlGmLZLmMZMmNZNmOZOmPZPmQZQmRZRmSZSmTZTmUZUmVZVmWZWmXZXmYZY ddl"mZZZm[Z[m\Z\m]Z]m^Z^m_Z_m`Z`maZambZbmcZcmdZd ddlemfZfmgZg erddlhmiZi  ed«      Zj ed«      Zk e;ddg«      Zl ejÚ                  en«      Zoi Zpdeqd<   i Zrdeqd<    e;ejæ                  jè                     «       ZuejÌ                  jì                  ZvejÌ                  jî                  ZwejÌ                  jð                  Zx e;ejæ                  jè                     «       Zy e;ejæ                  jè                     ejô                  jö                  g«      Z| e;ejæ                  jè                     «       Z}i Z~d eqd!<   ejÌ                  jþ                  Zd"„ Z€�dVd#„Z��dWd$„Z‚d%„ Zƒd&„ Z„d'„ Z…d(„ Z† e…ev�j                  ev�j                  ev�j                  ev�j                  ev�j                  ev�j                  ev�j                  ev�j                  ev�j                  ev�j                   ev�j"                  ev�j$                  ev�j&                  g«       e�j(                  e�j*                  e�j,                  e�j.                  e�j0                  e�j2                  e�j4                  e�j6                  e�j8                  e�j:                  e�j8                  e�j<                  e�j>                  d)œZ �dXd*„Z¡d+„ Z¢d,„ Z£�dYd-„Z¤d.„ Z¥d/„ Z¦	 	 	 	 	 	 	 	 	 	 	 	 �dZd0„Z§d1„ Z¨	 	 �d[d2„Z©d3e1�jT                  d3f	 	 	 �d\d4„Z«d5„ Z¬�d]d6„Z­	 	 	 	 	 	 �d^d7„Z®�d_d8„Z¯�d_�d`d9„Z° e«ejô                  jö                  d¬:«      d;„ «       Z{ e«ex�jb                  d¬:«      �d`d<„«       Z²d3d=œ�d`d>„Z³ e«ev�jh                  �jj                  d¬:«      �d`d?„«       Z¶d3d3d@œ�dadA„Z· e«ex�jp                  d¬:«      �d_�dadB„«       Z¹ddCe1�jT                  d3ddd3d3df	dD„ZºdE„ Z» e»«        	 �d_dF„Z¼ e«ev�jz                  d3d¬G«      dH„ «       Z½ e«ev�j|                  d3d¬G«      dI„ «       Z¾ e«ev�j~                  ev�j€                  ev�j‚                  ev�j„                  ex�j†                  g«      dJ„ «       ZÄ eÅevdK«      r  e«ev�jŒ                  «      eÄ«        e«ev�jŽ                  d¬:«      �dbdL„«       ZÇ e«ev�j�                  d¬:«      �dbdM„«       ZÈ e«ev�j’                  g«      �dbdN„«       ZÉ e«ev�j”                  «      dO„ «       ZÊ e«ev�j–                  «      dP„ «       ZË e«ev�j˜                  «      dQ„ «       ZÌ e«ev�jš                  «      dR„ «       ZÍ e«ev�jœ                  �jž                  «      dS„ «       ZÎ e«ev�j                   «      dT„ «       ZÐ e«ev�j¢                  d¬:«      dU„ «       ZÑ e«ex�j¤                  d¬:«      dV„ «       ZÒ e«ev�j¦                  d¬:«      dW„ «       ZÓ e«ev�j¨                  «      dX„ «       ZÔ e«ev�jª                  d¬:«       e«ev�jh                  d¬:«       e«ev�j¬                  d¬:«      dY„ «       «       «       Z´ e«ev�j®                  d¬:«      dZ„ «       Z× e«ev�j°                  d¬:«      �dcd[„«       ZÙ e«ev�j                  d¬:«      �dbd\„«       Z‡ e«ev�j´                  d¬:«      �dbd]„«       ZÚ e«ev�j                  d¬:«      �dbd^„«       Zˆ�ddd_„ZÛ e«e�j¸                  d¬:«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �ded`„«       ZÝ e«e�j¼                  d¬:«      ddaœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dfdb„«       Zß e«e�jÀ                  �jž                  d¬:«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dgdc„«       Zá e«e�jÄ                  �jž                  d¬:«      ddaœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dhdd„«       Zã e«e�jÀ                  �jÈ                  d¬:«      	 	 	 	 	 	 	 	 	 	 	 	 	 	 �dide„«       Zå e«e�jÄ                  �jÈ                  d¬:«      ddaœ	 	 	 	 	 	 	 	 	 	 	 	 	 	 	 �djdf„«       Zæ e«ev�jÎ                  «      �dddg„«       Zç e«ev�jÐ                  d¬:«      �dk�dldh„«       Zè e«ev�jÒ                  d¬:«      �dk�dldi„«       Zé e«ev�jÔ                  d¬:«      �dk�dldj„«       Zê e«ev�jÖ                  d¬:«      dk„ «       Zë e«ev�jØ                  d¬:«      �dddl„«       Zì e«ev�jÚ                  d¬:«      �dddm„«       Zí e«ev�jÜ                  d¬:«      �dddn„«       Zî e«ev�jÞ                  d¬:«      do„ «       Zï e«ev�jà                  d¬:«      dp„ «       Zð e«ev�jâ                  d¬:«      dq„ «       Zñ�dddr„Zò e«ev�jæ                  «      �dmdt„«       Zó�dndu„Zô e�jê                  d«      dv„ «       Zö�d]�dodw„Z÷�d]�dodx„Zø�dn�dpdy„Zù�dqdz„Zúd{„ Zû e«ejÌ                  �jø                  �jú                  d¬:«      d|„ «       Zý e«ev�jü                  d¬:«      d}„ «       Zþ e«ev�jþ                  d¬:«      d~„ «       Zÿ e«ev�j                   �j                  d¬:«      d„ «       �Z e«ev�j                  «      d€„ «       �Z e�jê                  d«      d�„ «       �Zd‚„ �Z eôev�j                  �jž                  «      �Z eôev�j                  �j                  «      �Z	 eôev�j                  �jž                  «      �Z eôev�j                  �j                  «      �Z eúev�j                  «        e«ev�j                  «      dƒ„ «       �Z e«ev�j                  «      d„„ «       �Z
 e«eF�j                  d¬:«      d…„ «       �Z e«eF�j                   d¬:«      �drd†„«       �Z e«eF�j$                  d¬:«      d‡„ «       �Z e«eF�j(                  d¬:«      dˆ„ «       �Z e«eF�j,                  d¬:«      d d‰œ�dsdŠ„«       �Z e«eF�j                  d¬:«      d d‰œ	 	 	 	 	 	 	 	 	 �dtd‹„«       �Z�dudŒ„�Z�dvd�„�Z e«ev�j6                  �j8                  d¬:«      d3d3dddŽœ	 	 	 	 	 	 	 	 	 	 	 	 	 �dwd�„«       �Z e«ev�j:                  d¬:«      d3d3d�œ	 	 	 	 	 	 	 �dxd‘„«       �Zd’„ �Zd“„ �Zd”„ �Z d•„ �Z!d–„ �Z"d—„ �Z# eúev�jH                  «        eúev�jJ                  «        eúev�jL                  «        eúev�jN                  «        eúev�jP                  d3¬˜«        eúev�jR                  �jž                  d3¬˜«        eúev�jT                  «        eúev�jV                  d3¬˜«        eúev�jX                  «        eúev�jZ                  «        eúev�j\                  «        eúev�j^                  �jž                  «        eúev�j`                  �jž                  «        eúev�jb                  «        eúev�jd                  �jf                  «        eúev�jh                  �jž                  «        eúev�jj                  �jž                  «        eúev�jl                  «        eúev�jn                  d3¬˜«        eúev�j                  �e"«        eúev�jp                  �e«        eúev�jr                  �e«        eúev�jt                  �e«        eúev�jv                  �e«        eúev�jx                  «        eúev�jz                  «        eúev�jz                  «        eúev�j|                  «        eúev�j~                  «        eúev�j€                  «        eúev�j‚                  �e«        eúev�j„                  «        eúev�j†                  «        eúev�jˆ                  «        eúev�jŠ                  «        eúev�jŒ                  «        eúev�jŽ                  «        eúev�j�                  «        eúev�j’                  «        eúev�j”                  �e«        eúev�j–                  «        eúev�j˜                  �e«        eúev�jš                  «        eúev�jœ                  «        eúev�jœ                  �jž                  «        eúev�j                   «        eúev�j¢                  «        eúev�j¤                  «        eúev�j¦                  «        eúev�j¨                  «        eúev�jª                  «        eúev�j¬                  «        eúev�j®                  «        eúev�j°                  «        eúev�j²                  «        eúev�j´                  «        eúev�j¶                  «        eúev�j¸                  «        eúev�jº                  «        eúev�j¼                  «        eúev�j¾                  «        eúev�jÀ                  «        eúev�jÂ                  «        eúev�jÄ                  «        eúev�jÆ                  «        eúev�jÈ                  «        eúev�jÊ                  «        eúev�jÌ                  «        eúev�jÎ                  «        eúev�jÐ                  «        eúev�jÒ                  �jÔ                  «        eúev�jÖ                  «        eúev�jØ                  «        eúev�jÚ                  «        eúev�jÜ                  «        eúev�jÞ                  «        eúev�jà                  «        eúev�jâ                  «        eúev�jä                  �jž                  «        eúev�jæ                  �jž                  d3¬˜«        eúev�jè                  �e«        eúe�jê                  �jì                  �jî                  «        eúe�jê                  �jì                  �jð                  «        eúe�jê                  �jì                  �jò                  «        eúev�jô                  «        eúev�jö                  «        eúev�jø                  �e«        eúev�jú                  «        eúev�jü                  «        eúev�jþ                  «        eúev�j                   «        eúev�j                  «        eúev�j                  �j                  «        eúev�j                  �jž                  �e#d3¬˜«        eúev�j
                  �jž                  �e#d3¬˜«        eúev�j                  �jž                  �e#d3¬˜«        eúev�j                  �jž                  �e#d3¬˜«        eúev�j                  �jž                  �e#d3¬˜«        eúev�j                  �jž                  �e#d3¬˜«        eúev�j                  �jž                  �e#d3¬˜«        eúev�j                  �jž                  �e#d3¬˜«        eúev�j                  �jž                  �e#d3¬˜«        eúev�j                  �jž                  �e#d3¬˜«        eúev�j                  �jž                  �e#«        eúev�j                  �jž                  �e#«        eúev�j                   �jž                  �e#«        eúev�j"                  �jž                  �e#«        eúev�j$                  «        e«ev�j&                  d¬:«      �d_d™„«       �Z“ e«ev�j(                  «      ddšœd›„«       �Z”dœ„ �Z• eÅevd�«      r  e«ev�j,                  «      �e”«        e«ex�j.                  «      dž„ «       �Z— e«ev�j0                  d¬:«      �dydŸ„«       �Z˜ e«ev�j2                  d¬:«      �dzd „«       �Z™d¡„ �Zš e«e�jÈ                  ev�j6                  g«      dddd3d¢œd£„«       Zä e«e�j8                  «      �d]d¤„«       �Zœ e«e�j:                  «      d¥„ «       �Zž e«ev�j>                  «      d¦„ «       �ZŸ e«ev�j@                  «      d§„ «       �Z  e«ev�jB                  «      	 �d{ddd¨œd©„«       �Z¡dª„ �Z¢ e«ev�jF                  d¬:«      d«„ «       �Z£d¬„ �Z¤ e«e�jJ                  ev�jJ                  g«      ddddddd­œd®„«       �Z¥d¯„ �Z¦d°„ �Z§  e«ev�jP                  «       �e¦�e¥«      «      �Z¨ �e¦ �e¤d«      «      �Z© �e¦ �e¤d «      «      �Zªd±„ �Z« e«ev�jX                  «      ddddd²œd³„«       �Z¬ e«ev�jZ                  «      ddddd²œd´„«       �Z­ e«ev�j\                  «      ddddd²œdµ„«       �Z® e«ex�j^                  �jž                  «      d¶„ «       �Z¯ e«e�j`                  ev�j`                  g«      d·„ «       �Z° e«ev�jb                  d¬:«      �d_d¸„«       �Z± e«ev�jd                  d¬:«      �d|d¹„«       �Z²dº„ �Z³	 �dnd»„�Z´d¼„ �Zµ�dnd½„�Z¶ e«ev�jn                  d¬:«      d¾„ «       �Z· e«ev�jp                  d¬:«      d¿„ «       �Z¸ e«ev�jr                  «      �d_dÀ„«       �Z¹ e«ev�jt                  «      �d_dÁ„«       �ZºdÂ„ �Z»dÃ„ �Z¼ e«ev�jz                  d¬:«      �d_dÄ„«       �Z½ e«eF�j|                  d¬:«      �d_dÅ„«       �Z¾�d_dÆ„�Z¿ eôev�j€                  �jž                  d3¬Ç«      �ZÁ eôev�j„                  �jž                  d3¬Ç«      �ZÃ e«ev�j€                  d¬:«      dÈ„ «       �ZÀ e«ev�j„                  d¬:«      dÉ„ «       �ZÂe®dÊ„ «       �ZÄ e«ev�jŠ                  d¬:«      �dbdË„«       �ZÅ e«ev�jŒ                  d¬:«      �d}dÌ„«       �ZÆddCdÍœ	 	 	 	 	 	 	 �d~dÎ„�ZÇ e«ev�j�                  d¬:«      ddÏœ�ddÐ„«       �ZÈ e«ev�j’                  d¬:«      �d}dÑ„«       �ZÉ e«ev�j”                  d¬:«      �d}dÒ„«       �ZÊ e«ev�j–                  d¬:«      �d}dÓ„«       �ZË e«ev�j˜                  d¬:«      dCdÔœ�d€dÕ„«       �ZÌ	 	 �d�	 	 	 	 	 �d‚dÖ„�ZÍ e«ev�jœ                  �jž                  «      �db�dƒd×„«       �ZÎ e«ev�jž                  �jž                  «      �db�dƒdØ„«       �ZÏ e«ev�j"                  �jž                  «      	 �d]	 	 	 �d„dÙ„«       Z‘ e«ev�j$                  �jž                  «      	 �d]	 	 	 �d„dÚ„«       Z’ e«ev�j                   �jž                  «      	 	 	 �d{	 	 	 	 	 �d…dÛ„«       �ZÐ e«ev�j¢                  �jž                  «      	 	 	 �d{	 	 	 	 	 �d…dÜ„«       �ZÑdÝ„ �ZÒ e«ex�j¦                  �jž                  «      dÞ„ «       �ZÓ	 	 	 	 	 	 	 	 �d†dß„�ZÔ e«ev�jª                  d¬:«      �dddà„«       �ZÕ�d‡dá„�ZÖ�dˆdâ„�Z×�d‰dã„�ZØ	 �dŠdä„�ZÙdå„ �ZÚdæ„ �ZÛddçœdè„�ZÜ	 �d_dé„�ZÝ e«ex�j¼                  d¬:«      	 �d_dê„«       �ZÞ e«ex�j¾                  d¬:«      dë„ «       �Zß eôev�j                  �jž                  d3¬Ç«      �Zà e«ev�j                  d¬:«      	 	 	 	 �d‹dì„«       ZŽ eôev�j                  �jž                  d3¬Ç«      �Zá e«ev�j                  d¬:«      dí„ «       Z��dŒdî„�Zâdï„ �Zãdð„ �Zädñ„ �Zå eôev�jÌ                  �jž                  d3¬Ç«      �Zç e«ev�jÌ                  «      dò„ «       �Zæ eôev�jÐ                  �jž                  d3¬Ç«      �Zé e«ev�jÐ                  «      dó„ «       �Zè eôev�jÔ                  �jž                  d3¬Ç«      �Zëdô„ �Zì e«ev�jÔ                  «      dõ„ «       �Zê e«ev�jÚ                  �jž                  «      	 �d�dö„«       �Zí eôev�j                  �jž                  d3¬Ç«      �Zî eôev�jÞ                  �jž                  d3¬Ç«      �Zð e«ev�j                  d¬:«      	 	 	 	 	 �dŽd÷„«       Z‰ e«ev�jÞ                  d¬:«      	 	 	 	 	 �dŽdø„«       �Zïdù„ �Zñ eôev�j                  �jž                  d3¬Ç«      �Zò e«ev�j                  d¬:«      	 �dbdú„«       ZŠ eôev�jæ                  �jž                  d3¬Ç«      �Zô e«ev�jæ                  d¬:«      	 �dbdû„«       �Zódü„ �Zõdý„ �Zö�db�d�dþ„�Z÷dÿ„ �Zø e«ev�jò                  «      �d�d�d œ�d„«       �Zù�d„ �Zú�d„ �Zû�d„ �Zü�d„ �Zý e«ev�jü                  ex�jü                  g«      �dbdd3�dœ�d„«       �Zÿ e«ev�j                   «      �dbdd3�dœ�d„«       �Z �d	„ �Ze®�d
„ «       �Z eôev�j                  �j                  d3¬Ç«      �Z eôev�j                  �j                  d3¬Ç«      �Z eôev�j                  �j                  d3¬Ç«      �Z	 e«ev�j                  dC�¬«      �d„ «       �Z�d_�d„�Z
 e«ev�j                  «      �d„ «       �Z e«ev�j                  d¬:«      �d_�d„«       �Ze®�d„ «       �Ze®�d„ «       �Z e«ev�j                  dC�¬«      �db�d„«       �Z e«ev�j"                  gdC�¬«      �d„ «       �Z�d‘�d„�Z e«ex�j                  gdC�¬«      �d„ «       �Z e«ev�j(                  ev�j                  �j8                  gdCe1�j*                  ¬G«      �d„ «       �Z e«ev�j,                  ex�j,                  gdC�¬«      �d„ «       �Z e«ev�j.                  ex�j.                  g«      �d�d�d œ�d„«       �Z eôev�j2                  �jž                  «      �Z eôev�j6                  �jž                  «      �Z eôev�j:                  �jž                  «      �Z eôev�j>                  �jž                  «      �Z  eôev�jB                  �jž                  «      �Z" e«ev�j2                  «      �d]�d„«       �Z e«ev�j6                  «      �d]�d„«       �Z e«ev�j:                  «      �d„ «       �Z e«ev�j>                  d¬:«      �db�d„«       �Z e«ev�jB                  d¬:«      �db�d„«       �Z! e«ev�jF                  «      �d�d�d œ�d„«       �Z# e«ev�jH                  «      �d��d„«       �Z% e«ev�jL                  d¬:«      �d��d „«       �Z' e«ev�jP                  d¬:«      �d��d!„«       �Z)  e«ex�jT                  «       �e÷�d"«      «         e«ev�jV                  «       �e÷�d#«      «      �Z,  e«ev�jZ                  «       �e÷�d$«      «      �Z.  e«ev�j^                  «       �e÷�d%e�j0                  �¬&«      «      �Z0  e«ev�jb                  «       �e÷�d'e�j0                  �¬&«      «      �Z2 eºev�jf                  dC�d(�¬)«      �Z3 eôev�jœ                  �jž                  d3¬Ç«      �Z4 e«ev�jœ                  �jž                  d¬:«      ddsd3�d*œ�d+„«       �Z5 e«ev�jœ                  �jž                  d¬:«      �d’�d,„«       �ZN�d]�d-„�Z6�d.„ �Z7 �e6ev�jp                  «      �Z8 �e7ev�jr                  «      �Z9 �e6ev�jt                  «      �Z: �e6ev�jv                  «      �Z; eºev�jx                  «      �Z< �e7ev�jz                  «      �Z= �e7ev�j|                  «      �Z> eºev�j~                  «      �Z? eºev�j€                  dC�¬/«      �Z@ �e7ev�j‚                  «        �e7ev�j„                  «        eºev�j†                  «      �ZC eºev�jˆ                  «      �ZD eºev�jŠ                  «      �ZE eºev�jŒ                  �d0�¬1«      �ZF eºev�jŽ                  «      �ZG eºev�j�                  «      �ZH eºev�j’                  «      �ZI �e6ev�j”                  «        �e6ev�j–                  «      �ZK  e«ev�j˜                  e1�j*                  ¬:«      �eK«        �e6ev�jš                  «        �e6ev�jœ                  «        �e6ev�jž                  «        �e7evjÞ                  «        eºev�j                   ddCe�j<                  �¬2«      �ZP eºev�j¢                  ddCe�j<                  �¬2«      �ZQ eºev�j¤                  ddCe�j<                  �¬2«      �ZR eºev�j¦                  ddCe�j<                  �¬2«      �ZS eºev�j¨                  «      �ZT eºev�jª                  «      �ZU  e«ev�j¬                  «      �eT«         e«ev�j®                  «      �eU«        eºev�j°                  «      �ZX eºev�j†                  «      �ZC �e6ev�j²                  «      �ZY eºev�j´                  «        eºev�j¶                  �d3�¬1«      �Z[ eºev�j˜                  «        eºev�j¸                  e�j<                  �¬&«         e«ev�jº                  «      �eX«        eºev�j¼                  e�j<                  �¬&«        eºev�j¾                  e�j<                  �¬&«        eºev�jÀ                  e�j<                  �¬&«        eºev�jÂ                  e�j<                  �¬&«      �Za eºev�jÄ                  e�j<                  �¬&«        eºev�jÆ                  e�j<                  �¬&«        �e6ev�jÈ                  «        �e6ev�jÊ                  «        �e6ev�jÌ                  «        �e6ev�jÎ                  «        �e6ev�jÐ                  «        �e6ev�jÒ                  «        �e6ev�jÔ                  «        �e6ev�jÖ                  «        �e6ev�jØ                  «        �e6ev�jÚ                  «        �e6ev�jÜ                  «        �e6ev�jÞ                  «        �e6ev�jà                  «        �e6ev�jâ                  «        �e6ev�jä                  «        �e6ev�jæ                  «       d�d4�lt�mu�Zu�mv�Zv �d5„ �Zw�evD ]S  �Zx �ewev�ex«      D ]  \  �Zy�Zz�Z{ eº�ey�ex�ez�e{�¬6«       Œ  �ewex�ex«      D ]  \  �Zy�Zz�Z{ eº�ey�ex�ez�e{�¬6«       Œ ŒU  e¼ev�jø                  �jú                  �e3dC�¬/«      �Z~ e¼ev�jø                  �j                  �e3dC�¬/«      �Z e¼ev�jø                  �j8                  �e3dC�¬/«        e¼ev�j                   �jú                  �e«      �Z� e¼ev�j                   �j8                  �e«        e¼ev�j                   �j                  �e«      �Z‚ e¼ev�j                  �jú                  �e@«        e¼ev�j                  �j                  �e@«        e¼ev�j                  �jž                  �eX«        e¼ev�j
                  �jž                  �eC«        e¼ev�j                  �j                  �e«        e¼ev�j                  �jú                  �e«        e¼ev�j                  �j                  �e«        e¼ev�j                  �jú                  �e«      �Z‰ e¼ev�j                  �j8                  �e«        e¼ev�j                  �j                  �e«      �ZŠ e¼ev�j                  �e>«        e¼ev�j                  �e8«        e¼ev�j                  �jú                  �eT«        e¼ev�j                  �j                  �eT«        e¼ev�j                  �jú                  �eU«        e¼ev�j                  �j                  �eU«        e¼ev�j                  �jú                  �eT«        e¼ev�j                  �j                  �eT«        e¼ev�j                   �jú                  �eU«        e¼ev�j                   �j                  �eU«        e¼ev�j"                  �eY«        e¼ev�j$                  �e[«        e¼ev�j&                  �e“«       �d7„ �Z” �e”ev�j*                  �jú                  ev�jø                  �jú                  �e~«        �e”ev�j*                  �j                  ev�jø                  �j                  �e«        �e”ev�j,                  �jú                  ev�j                   �jú                  �e�«        �e”ev�j,                  �j                  ev�j                   �j                  �e‚«        �e”ev�j.                  �jú                  ev�j                  �jú                  �e‰«        �e”ev�j.                  �j                  ev�j                  �j                  �eŠ«       �d8„ �Z˜ �e˜ev�j2                  �e3«        �e˜ev�j4                  �eD«        �e˜ev�j6                  �eE«        �e˜ev�j8                  �eF«        �e˜ev�j:                  �eG«        �e˜ev�j<                  �eH«        �e˜ev�j>                  �eI«        �e˜ev�j@                  �e«        �e˜ev�jB                  �j8                  �e«        �e˜ev�jB                  �jD                  �e«        �e˜ev�jF                  �eP«        �e˜ev�jH                  �eQ«        �e˜ev�jJ                  �eR«        �e˜ev�jL                  �eS«        �e˜ev�jN                  �e@«        �e˜ev�jP                  �e<«        �e˜ev�jR                  �e=«         e«ev�jT                  «      �eD«         e«ev�jV                  «      �eE«         e«ev�jX                  «      �eG«         e«ev�jZ                  «      �eH«         e«ev�j\                  «      �eI«        �e˜ev�j^                  ev�jT                  «        �e˜ev�j`                  ev�jV                  «        �e˜ev�jb                  ev�jX                  «        �e˜ev�jd                  ev�jZ                  «        �e˜ev�jf                  ev�j\                  «        e«ev�jh                  «      �d]�d9„«       �Z´ e«ev�jj                  �jl                  «      �d:„ «       �Zµ e«ev�jn                  �jl                  «      �d;„ «       �Z· e«ev�jp                  «      �d<„ «       �Z¸ e8�jr                  «       D ]  \  �Zº�Z»  e« e9�eº«      «      �e»«       Œ  e«e�jx                  «      �d=„ «       �Z¼ e«ev�j                  «      �d>„ «       �Z½ e«ejÌ                  �j|                  �j~                  «      �d?„ «       �ZÀ e«ejÌ                  �j‚                  �j„                  «      �d@„ «       �ZÂ e«ejÌ                  jì                  �j†                  �jˆ                  «      �dA„ «       �ZÅ eÅejÌ                  �jŒ                  �dB«      r; e«ejÌ                  �jŒ                  �j                  �jž                  «      �dC„ «       �ZÇ e«ejÌ                  jì                  �j�                  «      ddšœ�dD„«       �ZÈd �dE�lÉ�mÊ�ZÊ  eú�eÊ«        e«e*«      �dF„ «       �ZË e«ejÌ                  �j˜                  �jš                  d¬:«      �dG„ «       �ZÍ e«ejÌ                  �j˜                  �jœ                  d¬:«      �dH„ «       �ZÎ e«ejÌ                  �j˜                  �jž                  d¬:«      �d“�dI„«       �ZÏ e«ejô                  �j                   d¬:«      d�dJœ�d”�dK„«       �ZÑ e«e(d¬:«      	 	 	 	 �d•�dL„«       �ZÒ e«ejÌ                  jð                  �j¦                  �jž                  «      �dM„ «       �ZÓ e«ejÌ                  �j˜                  �j¨                  d¬:«      �dN„ «       �ZÔd�dO�lÕ�mÖ�ZÖ  �eÖ«         e«eF�j®                  d¬:«      �dP„ «       �Z×d�dQlD�mØ�ZØ  eC�eØ«       d�dRlD�mÙ�ZÙ  �eÙ�j´                  «         �eÙ�j¶                  «        d�dSlD�mÜ�ZÜ  �eÜ�jº                  «        d�dTlD�mÞ�ZÞ  �eÞ�j¾                  «        e�jÀ                  �d–�dU„«       �Záy(—  é    )ÚannotationsN)Údefaultdict)ÚIterableÚSequence)ÚAnyÚCallableÚcastÚOptionalÚTYPE_CHECKINGÚTypeVarÚUnion)Ú	ParamSpec)Úpatch)Úcounters)Úassociative_scan_op)Útriton_kernel_wrapper_mutation)Ú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)Ú
OrderedSet)ÚCeilDivÚFloorDivÚIdentityÚ
IntTrueDivÚModularIndexingé   )Úimport_submoduleé   )ÚconfigÚinductor_primsÚirÚtest_operators)ÚdecompositionsÚget_decompositions)Ú	DtypeViewÚ
ExpandViewÚIndexingConstantÚIRNodeÚ	is_tritonÚ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Úsympy_productÚuse_scatter_fallback)ÚopsÚV)ÚReductionTypeÚ_TÚ_Pztorchvision::roi_alignzaten::index_addz8dict[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                 óÀ   — t         j                  j                  j                  D ]7  } | j                  D ]&  }|j                  dk(  r|j
                  t        v rŒ%  y Œ9 y)NÚcall_functionTF)rI   ÚgraphÚcurrent_nodeÚusersÚopÚtargetÚforeach_ops)ÚnodeÚusers     úV/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/torch/_inductor/lowering.pyÚcur_node_has_non_foreach_usersr[   |   sS   € Ü—‘×$Ñ$×*Ñ*ò ˆØ—J‘Jò 	ˆDØ—G‘G˜Ò.°D·K±KÄ;Ò4NÚñ	ðð
 ó    c                óf  — t        t        «      }d}t        | «      D ]‘  \  }}t        |t        «      sd}|f}t        |Ž  xs t        j                  }d }|D ].  }t        |t        «      sŒ|j                  j                  «       } n |€J d«       ‚|r|\  }|||f   j                  ||f«       Œ“ |S )NFTz.foreach op should have at least one tensor arg)r   ÚlistÚ	enumerateÚ
isinstancer   r?   r)   Ú#combo_kernel_foreach_dynamic_shapesr:   ÚdataÚ
get_deviceÚappend)Ú	arg_pairsÚoutÚunpack_argsÚiÚargsÚuse_foreachÚdeviceÚts           rZ   Úgroup_foreach_argsrm   ˆ   sÐ   € Ü
”dÓ
€CØ€KÜ˜YÓ'ò 5‰ˆˆ4Ü˜$¤Ô)ØˆKØ�7ˆDä˜DÐ!Ð!ÒO¤V×%OÑ%Oð 	ð ˆØò 	ˆAÜ˜!œYÕ'ØŸ™×*Ñ*Ó,�Ùð	ð Ð!ÐSÐ#SÓSÐ!ÙØ‰GˆTØˆV�[Ð!Ñ"×)Ñ)¨1¨d¨)Õ4ð5ð  €Jr\   c                óÄ   ‡ — t        ‰ t        j                  j                  «      sy‰ t        v r	t        ‰    S ‰ t
        v r
dt        ‰ <   yˆ fd„}t        ‰ «      } ||«      S )zHGet layout constraints. Returns None if there are no layout constraints.Nc                óø   •— | t         j                  j                  j                  u rt        t
        ‰<   t
        ‰   S | t         j                  j                  j                  u r
d t
        ‰<   y t        d| › �«      ‚)NzUnknown layout constraint tag: )ÚtorchÚ_CÚTagÚneeds_fixed_stride_orderÚconstrain_to_fx_stridesrN   Úflexible_layoutÚAssertionError)ÚtagÚfns    €rZ   Úhandle_layout_constraint_tagz>maybe_layout_constraints.<locals>.handle_layout_constraint_tag«   sf   ø€ Ø”%—(‘(—,‘,×7Ñ7Ñ7Ü,CÔ% bÑ)Ü,¨RÑ0Ð0Ø”E—H‘H—L‘L×0Ñ0Ñ0Ø,0Ô% bÑ)Øä Ð#BÀ3À%Ð!HÓIÐIr\   )r`   rp   Ú_opsÚ
OpOverloadrN   rM   Úget_layout_constraint_tag)rx   ry   rw   s   `  rZ   Úmaybe_layout_constraintsr}   ž   s`   ø€ ä�bœ%Ÿ*™*×/Ñ/Ô0àØ	Ô&Ñ&Ü(¨Ñ,Ð,à	ŒY�Ø(,Ô! "Ñ%ØôJô $ BÓ
'€CÙ'¨Ó,Ð,r\   c                óÂ  — t         j                  j                  j                  t         j                  j                  j                  g}|D ]  }|| j
                  v sŒ|c S  t         j                  j                  j                  | «      r$t         j                  j                  j                  S t        t         j                  j                  t        j                  «      S ©N)rp   rq   rr   rs   ru   ÚtagsÚ_libraryÚutilsÚ
is_builtinÚgetattrr)   Ú#custom_op_default_layout_constraint)rx   Útags_by_priorityrw   s      rZ   r|   r|   ¹   s–   € ä�‰�‰×-Ñ-Ü�‰�‰×$Ñ$ðÐð  ò ˆØ�"—'‘'Š>ØŠJðô ‡~�~×Ñ×&Ñ& rÔ*Ü�x‰x�|‰|×+Ñ+Ð+Ü”5—8‘8—<‘<¤×!KÑ!KÓLÐLr\   c                ó$   — | st        d|› �«      ‚y )Nzinductor does not support ©ÚNotImplementedError)ÚcondÚmsgs     rZ   Ú
assert_nyirŒ   Æ   s   € ÙÜ!Ð$>¸s¸eÐ"DÓEÐEð r\   c                óN  ‡ — t        ‰ t        t        t        t        f«      r‰ D �cg c]  }t        |«      ‘Œ c}S t        j                  ‰ «       t        ‰ t        j                  j                  «      r-t        j                  ˆ fd„‰ j                  «       D «       «       y y c c}w )Nc              3  ó6   •K  — | ]  }t        ‰|«      –— Œ y ­wr   )r„   )Ú.0Úoverloadrx   s     €rZ   ú	<genexpr>z,add_needs_realized_inputs.<locals>.<genexpr>Ð   s   øè ø€ ò %
Ø&.ŒG�B˜×!ñ%
ùó   ƒ)r`   r^   ÚsetÚtupler    Úadd_needs_realized_inputsÚneeds_realized_inputsÚaddrp   rz   ÚOpOverloadPacketÚupdateÚ	overloads)rx   Úxs   ` rZ   r•   r•   Ë   sz   ø€ Ü�"”tœS¤%¬Ð4Ô5Ø68Ö9°Ô)¨!Õ,Ò9Ð9Ü×Ñ˜bÔ!Ü�"”e—j‘j×1Ñ1Ô2Ü×$Ñ$ó %
Ø24·,±,³.ô%
õ 	
ð 3ùò :s   ¦B"c                ó°   — t        | t        j                  j                  «      r)| j	                  «       D ]  }|t
        t        | |«      <   Œ y |t
        | <   y r   )r`   rp   rz   r˜   rš   rN   r„   )rx   Ú
constraintr�   s      rZ   Úadd_layout_constraintrž   Õ   sL   € Ü�"”e—j‘j×1Ñ1Ô2ØŸ™›ò 	JˆHØ?IÔ%¤g¨b°(Ó&;Ò<ñ	Jð )3Ô! "Ò%r\   )r   r(   r&   é   é   é   é   é   é   é	   é
   é   é   c                ób   — t        | t        «      s| S | t        v sJ d| › d�«       ‚t        |    } | S )Nzid z missing from DTYPE_ID_LOOKUP)r`   ÚintÚDTYPE_ID_LOOKUP©Údtypes    rZ   Údecode_dtyper®     s=   € Ü�eœSÔ!ØˆØ”OÑ#ÐO s¨5¨'Ð1NÐ%OÓOÐ#Ü˜EÑ"€EØ€Lr\   c                óú   — t        | t        «      r4t        | j                  «       «      xs t	        | j                  «       «      S t        | t
        j                  «      r| j                  du S t        | t        «      S )NT)	r`   r:   r   Ú	get_dtyper   ÚsympyÚExprÚ
is_integerrª   ©r›   s    rZ   Úis_integer_typerµ     sX   € Ü�!”YÔÜ §¡£Ó.ÒQÔ2BÀ1Ç;Á;Ã=Ó2QÐQÜ	�A”u—z‘zÔ	"Ø�|‰|˜tÐ#Ð#ä˜!œSÓ!Ð!r\   c                ót   — t        | t        «      rt        | j                  «       «      S t        | t        «      S r   )r`   r:   r   r°   Úboolr´   s    rZ   Úis_boolean_typer¸     s*   € Ü�!”YÔÜ §¡£Ó.Ð.ä˜!œTÓ"Ð"r\   c                ó\   — d„ }|D �cg c]
  } ||«      ‘Œ }}t        |d| iŽ\  }}|S c c}w )Nc                óÊ   — t        | t        t        j                  f«      r| S t	        | j                  «       «      }t        j                  dg|z  | j                  «       ¬«      S )Nr(   r¬   )	r`   r   r±   ÚBasicÚlenÚget_sizerp   Úzerosr°   )ÚinpÚdims     rZ   Úconstruct_inputz+get_promoted_dtype.<locals>.construct_input!  sG   € Ü�cœF¤E§K¡KÐ0Ô1ØˆJä�c—l‘l“nÓ%ˆCä—;‘; ˜s S™y°·±³Ô@Ð@r\   Útype_promotion_kind)r   )rÂ   ri   rÁ   ÚargÚinpsÚ_r­   s          rZ   Úget_promoted_dtyperÆ      s@   € òAð -1Ö1 S‰O˜CÕ Ð1€DÐ1Ü! 4ÐQÐ=PÑQ�H€A€uØ€Lùò 2s   ˆ)c                ó0  — t        | t        t        f«      s| g} nt        | «      } t        | «      D ]b  }t        |t        j                  j
                  «      sŒ(|j                  «       D ](  }t        ||«      }|t        vsŒ| j                  |«       Œ* Œd | S r   )
r`   r^   r”   rp   rz   r˜   rš   r„   rM   rd   )Úaten_fnrx   r�   Úother_fns       rZ   Úget_overloadsrÊ   .  sƒ   € Ü�g¤¤e˜}Ô-Ø�)‰ä�w“-ˆä�7‹mò -ˆÜ�bœ%Ÿ*™*×5Ñ5Õ6ØŸL™L›Nò -�Ü" 2 xÓ0�Ø¤9Ò,Ø—N‘N 8Õ,ñ-ð-ð €Nr\   c                óÔ   — t        | t        j                  j                  «      r|| j                  v S t        | t        j                  j
                  «      r|| j                  «       v S y©NF)r`   rp   rz   r˜   Ú_qualified_op_namer{   Úname)rU   Ú	namespaces     rZ   Úin_namespacerÐ   >  sO   € Ü�"”e—j‘j×1Ñ1Ô2Ø˜B×1Ñ1Ð1Ð1Ü	�BœŸ
™
×-Ñ-Ô	.Ø˜BŸG™G›IÐ%Ð%Ør\   c           	     óV  ‡ ‡‡‡— t        ‰ «      D ��cg c]  \  }}t        |t        «      sŒ|‘Œ }}}‰j                  «       D ��	cg c]  \  }}	t        |	t        «      sŒ|‘Œ }
}}	|s|
s‰ ‰fS |s|rå|rt        j
                  Šnl‰ D �cg c]0  }t        |t        t        j                  f«      st        |d«      r|‘Œ2 }}|j                  d„ ‰j                  «       D «       «       t        |d|iŽŠ|r‰ |d      n‰|
d      j                  «       Šˆˆfd„}‰ D �cg c]
  } ||«      ‘Œ c}Š ‰j                  «       D ��	ci c]  \  }}	| ||	«      “Œ c}	}Š|�r1t        t        t!        j"                  ˆ fd„|D «       ˆfd„|
D «       «      «      Ž }t        |d   j%                  «       «      }t'        ||d t)        |«       «      D ]
  \  }}|‰ |<   Œ t'        |
|t)        |«      d  «      D ]
  \  }}|‰|<   Œ t+        t)        ‰ «      «      D ]<  }t        ‰ |   t,        j.                  «      sŒ!t1        j2                  ‰ |   |«      ‰ |<   Œ> ‰D ]<  }t        ‰|   t,        j.                  «      sŒ!t1        j2                  ‰|   |«      ‰|<   Œ> ‰ ‰fS c c}}w c c}	}w c c}w c c}w c c}	}w )Nr­   c              3  ó:   K  — | ]  }t        |d «      sŒ|–— Œ y­w)r­   N)Úhasattr)r�   Úas     rZ   r‘   z!transform_args.<locals>.<genexpr>^  s   è ø€ Ò!T¨ÄÈÈ7Õ@S¤!Ñ!Tùs   ‚”rÂ   r   c                ó¸   •— t        | t        «      rt        | ‰«      S t        | t        j                  «      r"t        j                  | j
                  ‰‰¬«      S | S )N©Úvaluer­   rk   )r`   r:   Úto_dtyper+   ÚConstantr×   )rÃ   rk   r­   s    €€rZ   Úpromoteztransform_args.<locals>.promotei  sD   ø€ Ü˜#œyÔ)Ü  UÓ+Ð+Ü˜C¤§¡Ô-Ü—{‘{¨¯©¸%ÈÔOÐOà�
r\   c              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wr   © )r�   rh   ri   s     €rZ   r‘   z!transform_args.<locals>.<genexpr>x  s   øè ø€ Ò3 �T˜!•WÑ3ùó   ƒc              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wr   rÜ   )r�   ÚkÚkwargss     €rZ   r‘   z!transform_args.<locals>.<genexpr>y  s   øè ø€ Ò7 1�V˜A•YÑ7ùrÝ   )r_   r`   r:   Úitemsrp   r·   r   r±   r»   rÓ   ÚextendÚvaluesrÆ   rc   Úbroadcast_tensorsr^   Ú	itertoolsÚchainr½   Úzipr¼   Úranger+   rÙ   r0   Úcreate)ri   rà   Ú	broadcastrÂ   Úconvert_input_to_boolrh   r›   Úargs_indicesrß   ÚvÚkwargs_indicesrÔ   Úpromoting_argsrÚ   ÚbroadcastedÚsizerk   r­   s   ``              @@rZ   Útransform_argsrò   F  s‘  û€ ô #,¨D£/×N™$˜!˜Q´ZÀÄ9Õ5M’AÐN€LÑNØ$*§L¡L£N×O™D˜A˜q´jÀÄIÕ6N’aÐO€NÑOá¡Ø�Vˆ|ÐáÑ3Ù Ü—J‘J‰Eð
 öàÜ˜a¤&¬%¯+©+Ð!6Ô7¼7À1ÀgÔ;Nò ðˆNð ð ×!Ñ!Ñ!T¨V¯]©]«_Ô!TÔTÜ&Øðà$7ñˆEñ &2ˆD�˜a‘Ò!°v¸nÈQÑ>OÑ7Pß
‰*‹,ð 	õ
	ð %)Ö)˜q‘˜•
Ò)ˆØ,2¯L©L«N×;¡D A q�!‘W˜Q“Z‘-Ó;ˆâÜ'ÜÜ—‘Û3 lÔ3Û7¨Ô7óóð
ˆô �K ‘N×+Ñ+Ó-Ó.ˆä˜ kÐ2E´C¸Ó4EÐ&FÓGò 	‰DˆAˆqØˆD�ŠGð	ä˜¨´C¸Ó4EÐ4GÐ(HÓIò 	‰DˆAˆqØˆF�1ŠIð	ô ”s˜4“yÓ!ò 	;ˆAÜ˜$˜q™'¤2§;¡;Õ/Ü$×+Ñ+¨D°©G°TÓ:��Q’ð	;ð ò 	?ˆAÜ˜& ™)¤R§[¡[Õ1Ü&×-Ñ-¨f°Q©i¸Ó>��q’	ð	?ð �ˆ<Ðùó} OùÛOùòùò2 *ùÛ;s(   “J¬JÁJÁJÂ	5JÄJ Å J%c                óÔ   ‡— t        j                  ‰«      ˆfd„«       }t        | «      }t        j	                  |«       t
        j	                  t        j                  ||«      «       |S )a¯  
    Add a foreach lowering to lowerings dict.

    Arguments:
        aten_fn: torch.ops.aten.* fn we are lowering
        decomp_fn: alternate implementation on our IR
        broadcast: True to apply broadcasting to tensor inputs
        type_promotion_kind: kind of type promotion applied to tensor inputs, `None` means no type promotion
        convert_input_to_bool: some logical ops require inputs are converted to bool
    c                 óN   •— t        | «      dk  sJ ‚ ‰| i |¤Ž}t        |«       |S )Nr&   )r¼   r;   )ri   rà   rf   Ú	decomp_fns      €rZ   Úwrappedz+_register_foreach_lowering.<locals>.wrappedš  s/   ø€ ä�4‹y˜AŠ~Ðˆ~Ù˜Ð( Ñ(ˆÜ�CÔØˆ
r\   )Ú	functoolsÚwrapsrÊ   rW   r™   rM   ÚdictÚfromkeys)rÈ   rõ   rö   Úaten_fnss    `  rZ   Ú_register_foreach_loweringrü   Ž  sX   ø€ ô ‡_�_�YÓóó  ðô ˜WÓ%€HÜ×Ñ�xÔ Ü×Ñ”T—]‘] 8¨WÓ5Ô6Ø€Nr\   c                óº   ‡ ‡‡‡‡— t        j                  ‰«      ˆ ˆˆˆˆfd„«       }t        ‰ «      Š t        j	                  t
        j                  ‰ |«      «       |S )a¦  
    Add a lowering to lowerings dict

    Arguments:
        aten_fn: torch.ops.aten.* fn we are lowering
        decomp_fn: alternate implementation on our IR
        broadcast: True to apply broadcasting to tensor inputs
        type_promotion_kind: kind of type promotion applied to tensor inputs, `None` means no type promotion
        convert_input_to_bool: some logical ops require inputs are converted to bool
    c                 ól  •— t        | «      } t        |«      }d}t        | «      dk(  r)t        | d   t         t        f«      rd}t        | d   «      } t        d„ ‰D «       «      s't        d„ |j                  «       D «       «      rJ d«       ‚t        | |‰‰‰«      \  } }|r| g}  ‰| i |¤Ž}t        |«       |S )NFr(   r   Tc              3  óH   K  — | ]  }|t         v xs t        |d «      –— Œ y­w)Ú_c10d_functionalN)Ú	fallbacksrÐ   )r�   rx   s     rZ   r‘   z6_register_lowering.<locals>.wrapped.<locals>.<genexpr>Ã  s)   è ø€ ò 
ØJLˆR”9ˆ_ÒD¤¨RÐ1CÓ DÓDñ
ùs   ‚ "c              3  ó&   K  — | ]	  }|d k(  –— Œ y­w)rf   NrÜ   ©r�   r›   s     rZ   r‘   z6_register_lowering.<locals>.wrapped.<locals>.<genexpr>Ç  s   è ø€ Ò=¨!˜1 �:Ñ=ùó   ‚zout= ops aren't yet supported)
r^   rù   r¼   r`   r”   ÚallÚanyÚkeysrò   r;   )	ri   rà   Úunpackedrf   rÈ   rê   rë   rõ   rÂ   s	       €€€€€rZ   rö   z#_register_lowering.<locals>.wrapped¹  sÈ   ø€ ä˜t›*ˆÜ!% f£ˆØˆäˆt‹9˜Š>œj¨¨a©´4¼°-Ô@ØˆHÜ˜˜Q™“=ˆDäñ 
ØPWô
ô 
ô Ñ=¨v¯{©{«}Ô=Ô=ð Ø/óÐ=ô &Ø�&˜)Ð%8Ð:Oó
‰ˆˆfñ Ø�6ˆDá˜Ð( Ñ(ˆÜ�CÔàˆ
r\   )r÷   rø   rÊ   rM   r™   rù   rú   )rÈ   rõ   rê   rÂ   rë   rö   s   ````` rZ   Ú_register_loweringr	  §  sJ   ü€ ô$ ‡_�_�YÓ÷ó  ðô: ˜GÓ$€Gä×Ñ”T—]‘] 7¨GÓ4Ô5Ø€Nr\   Fc                ó>   — t        j                  t        | |||¬«      S )z+
    Shim to support decorator syntax.
    ©rê   rÂ   rë   )r÷   Úpartialr	  )rÈ   rê   rÂ   rë   s       rZ   Úregister_loweringr  Ý  s&   € ô ×ÑÜØØØ/Ø3ôð r\   c                óp  — g }t        j                  t        | «      t        |«      t        j                  j
                  ¬«      D �][  \  }}t        j                  j                  j                  j                  t        j                  |d«      d¬«      r|j                  |«       Œbt        j                  j                  j                  j                  t        j                  |d«      d¬«      r|j                  |«       Œ½t        j                  j                  j                  ||«       t        t        j                  |«      j                   «      t        t        j                  |«      j                   «      k  r|j                  |«       �ŒK|j                  |«       �Œ^ t#        t        |«      «      S )zŸ
    Broadcasting logic based on symbolic shapes.

    We give the shapes 0 and 1 concrete values, while all other shapes
    are symbolic sympy formulas.
    )Ú	fillvaluer(   T©Úsize_oblivious)rå   Úzip_longestÚreversedr±   ÚSÚOnerI   rR   ÚsizevarsÚ	shape_envÚevaluate_exprÚEqrd   Úguard_equalsr¼   ÚexpandÚfree_symbolsr”   )rÔ   ÚbÚoutputr›   Úys        rZ   Úbroadcast_symbolic_shapesr   ñ  s-  € ð €FÜ×%Ñ%¤h¨q£k´8¸A³;Ì%Ï'É'Ï+É+ÔVó !‰ˆˆ1Ü�7‰7×Ñ×%Ñ%×3Ñ3Ü�H‰H�Q˜‹N¨4ð 4ô 
ð �M‰M˜!ÕÜ�W‰W×Ñ×'Ñ'×5Ñ5Ü�H‰H�Q˜‹N¨4ð 6ô 
ð �M‰M˜!Õä�G‰G×Ñ×)Ñ)¨!¨QÔ/Ü”5—<‘< “?×/Ñ/Ó0´3´u·|±|ÀA³×7SÑ7SÓ3TÒTØ—‘˜aÖ à—‘˜aÖ ð!ô ”˜&Ó!Ó"Ð"r\   c                óV  ‡— |�	|�J d«       ‚|€|€t         j                  }t        d„ | D «       «      s| S t        d„ | D «       «      r*|xs t	        | d|iŽŠˆfd„}| D �cg c]
  } ||«      ‘Œ c}S t        d„ | D «       «      }g }| D �]  }t        |t        t        f«      ro|j                  t        j                  t        j                  ||j                  «       |j                  «       ¬«      t!        |j#                  «       «      «      «       Œ‰t        |t$        j&                  «      rf|j                  t        j                  t)        ||j                  «       |j                  «       ¬«      t!        |j#                  «       «      «      «       �Œ	|j                  |«       �Œ |S c c}w )	NzEonly one of override_return_dtype or type_promotion_kind may be givenc              3  óf   K  — | ])  }t        |t        j                  t        t        f«      –— Œ+ y ­wr   )r`   r±   r»   rª   Úfloatr  s     rZ   r‘   z$promote_constants.<locals>.<genexpr>  s"   è ø€ ÒH¸AŒz˜!œeŸk™k¬3´Ð6×7ÑHùó   ‚/1c              3  óf   K  — | ])  }t        |t        t        t        j                  f«      –— Œ+ y ­wr   )r`   rª   r#  r±   r»   r  s     rZ   r‘   z$promote_constants.<locals>.<genexpr>  s"   è ø€ Ò
D¸Œ:�aœ#œu¤e§k¡kÐ2×3Ñ
Dùr$  rÂ   c                ó¼   •— t        | t        j                  «      r!t        j                  | ‰t        d «      ¬«      S t        j                  | ‰t        d «      ¬«      S )N©Úindexr­   rk   rÖ   )r`   r±   r»   r+   r1   r>   rÙ   ©r›   r­   s    €rZ   Ú
const_funcz%promote_constants.<locals>.const_func  sJ   ø€ Ü˜!œUŸ[™[Ô)Ü×*Ñ*Ø 5´¸tÓ1Dôð ô —{‘{¨°%ÄÈdÓ@SÔTÐTr\   c              3  ól   K  — | ],  }t        |t        t        t        j                  f«      sŒ)|–— Œ. y ­wr   )r`   r:   r0   r+   rÙ   r  s     rZ   r‘   z$promote_constants.<locals>.<genexpr>#  s$   è ø€ ÒW�A¤:¨a´)¼ZÌÏÉÐ1UÕ#VŒaÑWùs   ‚*4­4rÖ   r'  )r   ÚDEFAULTr  r  rÆ   Únextr`   rª   r#  rd   r0   ré   r+   rÙ   r°   Úget_device_or_errorr^   r½   r±   r»   r1   )ÚinputsÚoverride_return_dtyperÂ   r*  r›   Úexrf   r­   s          @rZ   Úpromote_constantsr2    sƒ  ø€ Ø Ð(Ð,?Ð,Gð ØOóÐGð Ð$Ð)<Ð)DÜ=×EÑEÐäÑHÀÔHÔHØˆÜ
Ñ
D¸VÔ
DÔDØ%ò 
Ô);Øð*
Ø)<ñ*
ˆô	Uð (.Ö. !‘
˜1•Ò.Ð.Ü	ÑW˜ÔWÓ	W€BØ
€CØó ˆÜ�aœ#œu˜Ô&Ø�J‰JÜ×!Ñ!Ü—K‘KØ r§|¡|£~¸b×>TÑ>TÓ>Vôô ˜Ÿ™›Ó'ó	õô ˜œ5Ÿ;™;Ô'Ø�J‰JÜ×!Ñ!Ü$Ø r§|¡|£~¸b×>TÑ>TÓ>Vôô ˜Ÿ™›Ó'ó	öð �J‰J�qŽMð)ð, €Jùò3 /s   ÁF&c           	     ó2   ‡ ‡‡‡‡‡‡— d dœdˆˆ ˆˆˆˆˆfd„}|S )N©Úalphac           
     óð  •‡‡‡‡	‡
‡‡— ‰�t        d„ ‰D «       «      r	‰rJ ‚ ‰‰Ž S t        ‰‰«      Š‰r%| �'| dk7  r"t        ‰«      Št        ‰d   | «      ‰d<   n| �J ‚‰D �cg c]  }|j	                  «       ‘Œ c}Š
‰d   j                  «       Š‰xs ‰d   j                  «       Št        t        ‰d   j                  «       «      j                  «      Š	‰dd  D ]`  }t        |t        j                  «      rŒt        ‰«      t        |j                  «       «      k(  rŒDJ d‰› d‰› d|j                  «       › �«       ‚ t        j                   t        j"                  fŠt$        j&                  d uxr� t)        t$        j&                  dd «      d uxrb t$        j&                  j*                  j,                  d uxr: t$        j&                  j*                  j,                  j/                  dd	«      xr ‰‰v Šˆˆˆˆˆ	ˆ
ˆˆˆˆf
d
„}‰sSd }‰D ]7  }t        |j                  «       j                  «      sŒ'|j                  «       } n |s‰d   j                  «       }‰xs }t1        j2                  |‰|‰¬«      S c c}w )Nc              3  óV   K  — | ]!  }t        |t        «      xr t        |«      –— Œ# y ­wr   ©r`   r2   r3   )r�   r¿   s     rZ   r‘   z0make_pointwise.<locals>.inner.<locals>.<genexpr>H  s(   è ø€ ò /
Ø;>ŒJ�sœFÓ#Ò6¬	°#«Ó6ñ/
ùó   ‚')r(   éÿÿÿÿr   zndim mismatch ú rS   Úlow_precision_pointwise_barrierFc                ót  •
— t        | «      t        ‰«      k(  sJ d| › d‰› �«       ‚‰t        j                  k(  r‰� ‰‰D �cg c]
  } || «      ‘Œ c}Ž S ‰r.‰r,‰t        j                  k(  r ‰‰D �cg c]
  } || «      ‘Œ c}Ž S g }t	        ‰«      D ]e  \  }} || «      }‰
|   j                  «       }‰r2|‰v r.t        j                  ||d¬«      }t        j                  ||«      }|j                  |«       Œg  ‰	|Ž }‰r.t        j                  |‰d¬«      }t        j                  |‰«      S |S c c}w c c}w )Nzwrong ndim r;  F)Úuse_compute_types)	r¼   rp   r·   Úfloat64r_   r°   rH   rØ   rd   )r(  ÚloadÚinputs_loadedÚ	inp_indexrf   Ú	inp_dtypeÚdowncastr­   Úemulate_precision_castsrx   r/  Úis_gpu_deviceÚloadersÚ	low_pr_fpÚoverride_fn_when_gpu_float64Úoverride_fn_when_input_boolÚrangess          €€€€€€€€€€rZ   Úinner_fnz/make_pointwise.<locals>.inner.<locals>.inner_fnk  s<  ø€ Ü�u“:¤ V£Ò,ÐL°¸E¸7À!ÀFÀ8Ð.LÓLÐ,ØœŸ
™
Ò"Ð'BÐ'NÙ2ÈWÖ4UÀT±T¸%µ[Ò4UÐVÐVá,Ù!ØœUŸ]™]Ò*á3ÈgÖ5VÀd±d¸5µkÒ5VÐWÐWà "�Ü'0°Ó'9ò .‘O�I˜tÙ˜u›+�CØ & yÑ 1× ;Ñ ;Ó =�IÙ.°9À	Ñ3IÜ#&§<¡<°°YÐRWÔ#X˜Ü!Ÿl™l¨8°YÓ?˜Ø!×(Ñ(¨Õ-ð.ñ ˜-Ð(�Ù*ô  #Ÿ|™|¨C°È%ÔP�HÜŸ<™<¨°%Ó8Ð8Ø�
ùò/ 5Vùò 6Ws   ÁD0Á1D5©rk   r­   rL  rK  )r  r2  r^   ÚmulÚmake_loaderr½   r°   r@   r>   rc   Útyper`   r+   ÚBaseConstantr¼   rp   Úbfloat16Úfloat16rI   rR   r„   rS   ÚmetaÚgetr7   ré   )r5  r/  r›   ÚotherrL  rk   rh   r­   rE  rF  rG  rH  rK  Úallow_alpharx   Úoverride_devicerI  rJ  r0  Útriton_fallbacks    `     @@@@@@€€€€€€€rZ   Úinnerzmake_pointwise.<locals>.innerG  sf  ÿ€ ØÐ&¬3ñ /
ØBHô/
ô ,
ñ #Ð"�?Ù" FÐ+Ð+ä" 6Ð+@ÓAˆÙØÐ  U¨a¢ZÜ˜f›�Ü  ¨¡¨UÓ3��r’
à�=Ð �=Ø,2Ö3 q�1—=‘=•?Ò3ˆØ˜‘×#Ñ#Ó%ˆØ%Ò>¨°©×)<Ñ)<Ó)>ˆÜœ}¨V°A©Y×-AÑ-AÓ-CÓD×IÑIÓJˆà˜A˜B�Zò 	AˆEÜ˜e¤R§_¡_Õ5¼¸V»ÌØ—‘Ó óIó :ð Aà ˜t 1 V H¨A¨e¯n©nÓ.>Ð-?Ð@óAð ð	Aô —^‘^¤U§]¡]Ð3ˆ	ä�G‰G˜4Ðò #ÜœŸ™ °Ó6¸dÐBò#ä—‘×$Ñ$×)Ñ)°Ð5ò#ô —‘×$Ñ$×)Ñ)×-Ñ-Ð.OÐQVÓWò#ð ˜Ð"ð 	 ÷	õ 	ñ8 ØˆFØò �Ü˜!Ÿ,™,›.×-Ñ-Õ.ØŸ\™\›^�FÙðñ Ø ™×-Ñ-Ó/�à Ò* Fˆä×ÑØØØØô	
ð 	
ùò{ 4s   Á!I3)r/  r:   rÜ   )rx   r0  rX  rJ  rI  rW  rY  rZ  s   ``````` rZ   Úmake_pointwiser[  >  s   þ€ ð )-÷ P
õ P
ðd €Lr\   c                ó   ‡ ‡— ddœdˆˆ fd„}|S )Nr(   r4  c                óº  •— t        t        j                  j                  j                  «      dk(  xs6 t        j                  j                  j
                  t        v xs
 t        «       }d }|D ]  }t        |t        t        f«      sŒ|} n |€J d«       ‚g }|D ]H  }t        |t        t        f«      s|j                  |gt        |«      z  «       Œ8|j                  |«       ŒJ t        t        |Ž «      }d gt        |«      z  }|j                  «       D ]¯  \  \  }}	}
g }|
D ]~  \  }}‰r	 ‰|d| iŽ}n ‰|Ž }|||<   t        j                  j                  |t         j"                  «      sŒJ|	sŒM|sŒP|j%                  «        |j                  |j'                  «       «       Œ€ |sŒ‘t        j                  j)                  |«       Œ± t+        d„ |D «       «      sJ ‚|S )Nr   z1at least one input must be a list to a foreach opr5  c              3  ó$   K  — | ]  }|d u–— Œ
 y ­wr   rÜ   r  s     rZ   r‘   z8make_foreach_pointwise.<locals>.inner.<locals>.<genexpr>Ð  s   è ø€ Ò2 Q�1˜D”=Ñ2ùó   ‚)r¼   rI   rR   rS   rT   rV   Úinplace_foreach_opsr[   r`   r^   r”   rd   rm   rç   rá   Úhas_featureÚBackendFeatureÚFOREACHÚrealizeÚget_operation_nameÚregister_operation_listr  )r5  r/  Úrealize_outputsÚa_list_inputÚinputÚbroadcast_inputsÚgroupsÚoutputsrk   rj   ÚgroupÚoperation_listÚ
output_indri   r  rW  Úpw_fns                  €€rZ   rZ  z%make_foreach_pointwise.<locals>.inner�  sÞ  ø€ ä”—‘×$Ñ$×*Ñ*Ó+¨qÑ0ò 0Ü�w‰w×#Ñ#×*Ñ*Ô.AÐAò0ä-Ó/ð 	ð ˆØò 	ˆEÜ˜%¤$¬ Õ/Ø$�Ùð	ð Ð'ð 	
Ø?ó	
Ð'ð
 ÐØò 	/ˆEÜ˜e¤d¬E ]Ô3Ø ×'Ñ'¨¨´#°lÓ2CÑ(CÕDà ×'Ñ'¨Õ.ð		/ô $¤CÐ)9Ð$:Ó;ˆà�&œ3˜|Ó,Ñ,ˆØ,2¯L©L«Nò 	@Ñ(Ñ!ˆV�[ 5Ø(*ˆNð òGñ ØØáÙ" DÐ6°Ñ6‘Fá" D˜\�Fà&,�˜
Ñ#ô —G‘G×'Ñ'¨´×0FÑ0FÕGÚ#Ú'à—N‘NÔ$Ø"×)Ñ)¨&×*CÑ*CÓ*EÕFð#Gò& Ü—‘×/Ñ/°Õ?ð-	@ô0 Ñ2¨'Ô2Ô2Ð2Ð2Øˆr\   )r/  zlist[list[TensorBox]]rÜ   )rp  rW  rZ  s   `` rZ   Úmake_foreach_pointwiserq  œ  s   ù€ Ø45÷ 4ð 4ðl €Lr\   c                ó€   ‡‡— | j                  «       Š‰‰k(  r|rt        | «      S | S ˆˆfd„} t        |‰¬«      | «      S )Nc                ó4   •— t        j                  | ‰‰¬«      S )N)Ú	src_dtype)rH   rØ   )r›   r­   rt  s    €€rZ   Ú	_to_dtypezto_dtype.<locals>._to_dtypeÛ  s   ø€ Ü�|‰|˜A˜u°	Ô:Ð:r\   ©r0  )r°   Úcloner[  )r›   r­   Úcopyru  rt  s    `  @rZ   rØ   rØ   Ö  sC   ù€ Ø—‘“€IØ�EÒÙŒu�Q‹xÐ& QÐ&õ;ð BŒ>˜)¸5ÔAÀ!ÓDÐDr\   ©rÂ   c                óª  — ddl m} |}| j                  } ||t        j                  ¬«      }t        j
                  |«      5   |j                  |Ž  ddd«       |j                  }|sJ ‚t        |«      }dgt        |«      z  }	|j                  «       D ]œ  \  \  }
}}g }|D ]k  \  }}||	|<   t        j                  j                  |
t        j                  «      sŒ:|sŒ=|j                  «        |j                  |j!                  «       «       Œm |sŒ~t        j                  j#                  |«       Œž t%        d„ |	D «       «      sJ ‚|	S # 1 sw Y   ŒøxY w)aI  
    This lowers an invocation of foreach_map
    The way this works is that an arbitrary N-arg func is provided by the user, looped over by the
    polyfill with the same semantics as a foreach op (a loop applying an n-ary function to n args)
    and then traced into a subgraph by dynamo.
    This code allows us to inline the subgraph into the main graph lowering using the PontwiseSubgraphLowering.
    The graph outputs represent the vertically fused sequence of ops, and then register_operation_list
    below registers the buffers as horizontally fuseable in the scheduler.
    r(   )ÚPointwiseSubgraphLowering)Úroot_graph_loweringNc              3  ó$   K  — | ]  }|d u–— Œ
 y ­wr   rÜ   r  s     rZ   r‘   z_foreach_map.<locals>.<genexpr>
  s   è ø€ Ò. ˆq˜Œ}Ñ.ùr_  )Úsubgraph_loweringr{  Úgraph_modulerI   rR   Úset_graph_handlerÚrunÚgraph_outputsrm   r¼   rá   ra  rb  rc  rd  rd   re  rf  r  )Úsubgraphri   rà   r{  r/  ÚgmÚpw_subgraphÚsub_outputsrk  rl  rk   rj   rm  rn  ro  r  s                   rZ   Ú_foreach_mapr‡  á  sA  € õ =à€Fà	×	Ñ	€BÙ+¨BÄAÇGÁGÔL€KÜ	
×	Ñ	˜[Ó	)ñ !Øˆ�‰˜Ñ ÷!ð ×+Ñ+€KáÐˆ;Ü Ó,€Fàˆf”s˜;Ó'Ñ'€GØ(.¯©«ò <Ñ$Ñˆ�˜uØ$&ˆð ò	Cñ 
ØØà"(ˆG�JÑä�w‰w×"Ñ" 6¬>×+AÑ+AÕBÂ{Ø—‘Ô Ø×%Ñ% f×&?Ñ&?Ó&AÕBð	Cò Ü�G‰G×+Ñ+¨NÕ;ð<ô Ñ. gÔ.Ô.Ð.Ð.Ø€N÷3!ð !ús   ÁE	Å	Ec                ó@  — |j                   s| j                  «       j                   rk| j                  «       r/t        | |¬«      }t        j
                  j                  || «       |S  t        t        j                  j                  d¬«      | |«      S t        | |d¬«      S )Nr¬   F©Úadd_to_fallback_setT©rx  )Ú
is_complexr°   r½   Ú
empty_liker+   ÚInplaceCopyFallbackré   Úfallback_handlerÚprimsÚconvert_element_typeÚdefaultrØ   )r›   r­   Údsts      rZ   Ú_convert_element_typer”    s‰   € à×Ò˜1Ÿ;™;›=×3Ò3Ø�:‰:Œ<ô ˜Q eÔ,ˆCÜ×"Ñ"×)Ñ)¨#¨qÔ1ØˆJðÔ#Ü×*Ñ*×2Ñ2Èôà�óð ô �A�u 4Ô(Ð(r\   r‹  c               ó  — | j                  «       }||k(  r|rt        | «      S | S d„ } ||«      } ||«      }||k7  r* t        t        j                  j
                  «      | |«      S t        t        j                  | |«      «      S )Nc                ó–   — | j                   rt        j                  | «      j                  S t        j                  | «      j                  S r   )Úis_floating_pointrp   ÚfinfoÚbitsÚiinfor¬   s    rZ   Ú_get_primitive_bitwidthz1to_dtype_bitcast.<locals>._get_primitive_bitwidth#  s5   € Ø×"Ò"Ü—;‘;˜uÓ%×*Ñ*Ð*ä—;‘;˜uÓ%×*Ñ*Ð*r\   )	r°   rw  r�  ÚatenÚviewr­   r:   r/   ré   )r›   r­   rx  Úx_dtyper›  Úsrc_bitsÚdst_bitss          rZ   Úto_dtype_bitcastr¡    s~   € Ø�k‰k‹m€GØ�%ÒÙŒu�Q‹xÐ& QÐ&ò+ñ ' wÓ/€HÙ& uÓ-€HØ�8Òà0Ô¤§	¡	§¡Ó0°°EÓ:Ð:äœ×)Ñ)¨!¨UÓ3Ó4Ð4r\   c                ó&  — |j                   s| j                  «       j                   r`t        j                  t        j
                  j                  t        j                  j                  j                  j                  | |«      «      S t        | |«      S r   )rŒ  r°   r:   ré   r+   ÚComplexViewrp   rH   rœ  r�  r­   r¡  r)  s     rZ   Ú_view_dtyper¤  2  se   € à×Ò˜1Ÿ;™;›=×3Ò3Ü×ÑÜ�N‰N×!Ñ!¤%§)¡)§.¡.×"5Ñ"5×";Ñ";¸QÀÓFó
ð 	
ô ˜A˜uÓ%Ð%r\   ©rx  Únon_blockingc               óÄ   — t        |«      }| j                  «       |k(  r|rt        | «      S | S t        j                  t
        j                  j	                  | ||«      «      S r   )r>   rc   rw  r:   ré   r+   Ú
DeviceCopy)r›   rk   rx  r¦  s       rZ   Ú	to_devicer©  ;  sO   € Ü˜6Ó"€FØ‡|�|ƒ~˜ÒÙŒu�Q‹xÐ& QÐ&Ü×ÑœBŸM™M×0Ñ0°°F¸LÓIÓJÐJr\   c                ó    — t        | |d|¬«      S )NTr¥  )r©  )r›   rk   r¦  s      rZ   Ú_device_putr«  B  s   € ä�Q˜ T¸ÔEÐEr\   Tc
                óh  — |xs | j                   }t        |«      }
|rt        d|z   «      }t        d|z   ||«       t        |||«       |�t        |«      }t        |
|||rnd||	¬«      }
 t	        | |||¬«      |
«      }
t        t        |«      r" t	        t        t        |«      d|¬«      |
«       |
S )z3A pointwise function that maps ops.{name} to inputsÚ
libdevice_N)r0  rJ  rI  rW  rY  r  )rÂ   rë   )Ú__name__r5   rE   r[  r  rÓ   r�  r„   )rÈ   rÎ   rê   rÂ   rë   r0  rJ  rW  Úuse_libdevice_for_f64rY  rx   Úfn_libdevices               rZ   Úregister_pointwiser±  G  sí   € ð Ò#�7×#Ñ#€DÜ	�TÓ	€BÙÜ" <°$Ñ#6Ó7ˆÜ+Ø˜4ÑÐ!4Ð6Kô	
ô (ØÐ!Ð#8ôð #Ð.Ü&1Ð2MÓ&NÐ#ä	Ø
Ø3Ø$?Ù5J¡\ÐPTØØ'ô
€Bð
Ô	ØØØ/Ø3ô	
ð
 	ó

€Bô Œu�dÔð	
ÔÜ”E˜4Ó Ø $Ø"7ô	
ð ô		ð
 €Ir\   c                 ó.  ‡‡— d} t        d«      Šˆfd„}ˆfd„}t        |«      t        |t        j                  ¬«      gŠˆfd„} t	        t
        j                  «      |«      }t        t        | «      r! t	        t        t        | «      d¬«      |«       |S )z2A pointwise function that maps ops.frexp to inputsÚfrexpc                 ó   •—  ‰| i |¤Žd   S ©Nr   rÜ   ©ri   rà   r³  s     €rZ   Úfrexp0zregister_frexp.<locals>.frexp0€  ó   ø€ Ù�dÐ%˜fÑ% aÑ(Ð(r\   c                 ó   •—  ‰| i |¤Žd   S ©Nr(   rÜ   r¶  s     €rZ   Úfrexp1zregister_frexp.<locals>.frexp1ƒ  r¸  r\   rv  c                 ó0   •—  ‰d   | i |¤Ž ‰d   | i |¤ŽfS ©Nr   r(   rÜ   )ri   rà   Úpw_fnss     €rZ   rx   zregister_frexp.<locals>.fn‹  s.   ø€ Øˆv�a‰y˜$Ð) &Ñ)¨9¨6°!©9°dÐ+E¸fÑ+EÐEÐEr\   Nry  )
r5   r[  rp   Úint32r  rœ  r³  rÓ   r�  r„   )rÎ   r·  r»  rx   r³  r¾  s       @@rZ   Úregister_frexprÀ  {  s–   ù€ à€DÜ˜Ó €Eô)ô)ô 	�vÓÜ�v´U·[±[ÔAð€Fô
Fð
Ô	Ü�
‰
ó
àó

€Bô Œu�dÔð	
ÔÜ”E˜4Ó Ø $ô	
ð ô	ð €Ir\   c                ó8   — t        ||¬«      }t        | |«      }|S )N©rW  )rq  rü   )rÈ   Úpointwise_lowering_fnrW  rx   s       rZ   Úregister_foreach_pointwiserÄ  �  s"   € ô
 
 Ð 5À;Ô	O€BÜ	# G¨RÓ	0€BØ€Ir\   )rê   rÂ   c           
     ó  — d„ }t        |t        t        f«      r t        |«      |«      }t        |t        t        f«      r t        |«      |«      }| ||g}t	        |d   |d   t
        j                  ¬«      }t        |«      D ��cg c]  \  }}t        |t        «      sŒ|‘Œ }}}t        |t        |D �cg c]  }||   ‘Œ	 c}Ž «      D ]
  \  }}|||<   Œ t        t        |«      «      D ]Y  }t        ||   t        j                  «      sŒ!t        j                   ||   t#        ||d      j%                  «       «      «      ||<   Œ[  t'        ||¬«      |d   t)        |d   |«      t)        |d   |«      «      S c c}}w c c}w )Nc                 ó&   — t        j                  | Ž S r   )rH   Úwhere©ri   s    rZ   rx   zwhere.<locals>.fn©  s   € Ü�y‰y˜$ÐÐr\   r(   r&   ry  r   rv  )r`   r#  rª   Úconstant_likerÆ   r   r,  r_   r:   rç   rä   rè   r¼   r+   rÙ   r0   ré   r^   r½   r[  rØ   )	rŠ   rÔ   r  rx   ri   r­   rh   r›   Úindicess	            rZ   rÇ  rÇ  §  so  € ò ô �!”eœS�\Ô"ØŒM˜!Ó˜QÓˆÜ�!”eœS�\Ô"ØŒM˜!Ó˜QÓˆà�!�Qˆ<€DÜØˆQ‰��a‘Ô.M×.UÑ.Uô€Eô ' t›_×I‘T�Q˜´
¸1¼iÕ0HŠqÐI€GÑIÜ�GÔ.À'Ö0J¸Q°°a³Ò0JÐKÓLò ‰ˆˆ1ØˆˆQŠðä”3�t“9Óò TˆÜ�d˜1‘gœrŸ{™{Õ+Ü ×'Ñ'¨¨Q©´°d¸7À1¹:Ñ6F×6OÑ6OÓ6QÓ1RÓSˆD�ŠGðTð ;Œ>˜"°EÔ:ØˆQ‰”˜$˜q™' 5Ó)¬8°D¸±G¸UÓ+Cóð ùó JùÚ0Js   ÂE9Â E9Â6E?c                 ó´  — t        | «      dk(  r$t        | d   t        t        f«      rt	        | d   Ž S t        j                  t        | D �cg c]  }|j                  «       ‘Œ c}g «      }g }| D ]b  }|j                  «       }t        |«      t        |«      k7  st        d„ t        ||«      D «       «      rt        ||«      }|j                  |«       Œd |S c c}w )Nr(   r   c              3  ó~  K  — | �]4  \  }}t         j                  j                  j                  j	                  t        j                  |d «      d¬«      xrJ t         j                  j                  j                  j	                  t        j                  |d «      d¬«       xs• t         j                  j                  j                  j	                  t        j                  |d «      d¬«       xrI t         j                  j                  j                  j	                  t        j                  |d «      d¬«      –— �Œ7 y­w)r(   Tr  N)rI   rR   r  r  r  r±   r  ©r�   rÔ   r  s      rZ   r‘   z$broadcast_tensors.<locals>.<genexpr>Ê  s
  è ø€ ó ,
ñ& ��1ô! —G‘G×$Ñ$×.Ñ.×<Ñ<ÜŸ™  A›°tð =ó ò ô ŸG™G×,Ñ,×6Ñ6×DÑDÜŸ™  A›°tð Eó ð ò	ô Ÿ™×(Ñ(×2Ñ2×@Ñ@ÜŸ™  A›°tð Aó ð ò ô Ÿ™×(Ñ(×2Ñ2×@Ñ@ÜŸ™  A›°tð Aó ôñ,
ùs   ‚D;D=)r¼   r`   r^   r”   rä   r÷   Úreducer   r½   r  rç   r  rd   )r/  r›   rV   rl  Úsizess        rZ   rä   rä   À  sË   € ä
ˆ6ƒ{�aÒœJ v¨a¡y´4¼°-Ô@Ü  &¨¡)Ð,Ð,Ü(×/Ñ/Ü!¸&Ö#A°Q A§J¡J¥LÒ#AÀ2ó €Fð €GØò ˆØ—
‘
“ˆÜˆu‹:œ˜V›Ò$¬ñ ,
ô& ˜E 6Ó*ô',
ô )
ô* �q˜&Ó!ˆAØ�‰�qÕð1ð2 €Nùò9 $Bs   ÁC
c                ó   — | S r   rÜ   r´   s    rZ   ÚnoprÑ  ä  s   € à€Hr\   Ú
lift_freshc                óä  — t        | t        «      sJ ‚|€(t        t        j                  | j                  «      «      S t        |t
        t        j                  f«      r)t        j                  j                  j                  |«      nt        d„ |D «       «      }t        t        | j                  «       «      |«      }t!        t        |t        «      s|fn|«      }g }t#        | j                  «       «      D ]Z  \  }}||v r@t        j                  j                  j%                  t        j&                  |d«      d¬«      rŒJ|j)                  |«       Œ\ || j                  «       k7  rt+        | |«      S | S )Nc              3  ón   K  — | ]-  }t         j                  j                  j                  |«      –— Œ/ y ­wr   )rI   rR   r  Úevaluate_static_shape©r�   Úds     rZ   r‘   zsqueeze.<locals>.<genexpr>ö  s%   è ø€ ÒJÀ”1—7‘7×#Ñ#×9Ñ9¸!×<ÑJùs   ‚35r(   Tr  )r`   r:   r9   ré   rb   rª   r±   r²   rI   rR   r  rÕ  r”   r   r¼   r½   r    r_   r  r  rd   r�  )r›   rÀ   ÚdimsÚ	new_shaper×  Úss         rZ   ÚsqueezerÛ  í  s#  € ä�aœÔ#Ð#Ð#Ø
€{Üœ×+Ñ+¨A¯F©FÓ3Ó4Ð4ô �cœC¤§¡Ð,Ô-ô 	
�‰×Ñ×.Ñ.¨sÔ3äÑJÀcÔJÓJð ô
 œC §
¡
£Ó-¨sÓ
3€CÜ¤J¨s´EÔ$:�s‘fÀÓD€Dà€IÜ˜!Ÿ*™*›,Ó'ò  ‰ˆˆ1à�‰IÜ—‘× Ñ ×.Ñ.¬u¯x©x¸¸1«~ÈdÐ.ÕSà×Ñ˜QÕð ð "+¨a¯j©j«lÒ!:Œ4��9ÓÐAÀÐAr\   c                ó,   — t        t        | |«      «      S r   )rw  rÛ  )r›   rÀ   s     rZ   Úsqueeze_copyrÝ    s   € ä”˜˜C“Ó!Ð!r\   c                óˆ   — t        | |«      }t        | t        «      sJ ‚t        |t        «      sJ ‚|j                  | _        | S r   )rÛ  r`   r:   rb   ©r›   rÀ   Úvals      rZ   Úsqueeze_rá    s=   € ä
�!�S‹/€CÜ�aœÔ#Ð#Ð#Ü�cœ9Ô%Ð%Ð%Ø�X‰X€A„FØ€Hr\   c                ó¨   — t        | «      rt        | dt        j                  ¬«      S t	        d«      } t        |t        j                  ¬«      | «      S )NFr¬   Úisinfrv  ©rµ   Ú	full_likerp   r·   r5   r[  ©r›   rx   s     rZ   rã  rã    ó?   € ä�qÔÜ˜˜E¬¯©Ô4Ð4Ü	�WÓ	€BØ?Œ>˜"´E·J±JÔ?ÀÓBÐBr\   c                ó¨   — t        | «      rt        | dt        j                  ¬«      S t	        d«      } t        |t        j                  ¬«      | «      S )NFr¬   Úisnanrv  rä  ræ  s     rZ   ré  ré    rç  r\   c                óf   — t        | «      rt        | «      S t        d«      } t        |«      | «      S )NÚceil©rµ   rw  r5   r[  ræ  s     rZ   rë  rë  %  s/   € ä�qÔÜ�Q‹xˆÜ	�VÓ	€BØŒ>˜"Ó˜aÓ Ð r\   c                óf   — t        | «      rt        | «      S t        d«      } t        |«      | «      S )NÚfloorrì  ræ  s     rZ   rî  rî  -  ó/   € ä�qÔÜ�Q‹xˆÜ	�WÓ	€BØŒ>˜"Ó˜aÓ Ð r\   c                óf   — t        | «      rt        | «      S t        d«      } t        |«      | «      S )NÚroundrì  ræ  s     rZ   rñ  rñ  5  s/   € ä�qÔÜ�Q‹xˆä˜Ó!ˆØ!Œ~˜bÓ! !Ó$Ð$r\   c                óf   — t        | «      rt        | «      S t        d«      } t        |«      | «      S )NÚtruncrì  ræ  s     rZ   ró  ró  >  rï  r\   c                óð  — ddl m} t        | g«      \  } t        | t        j
                  «      rt        j                  | t        |«      «      S t        | t        «      sJ ‚t        |t        t        f«      sJ ‚t        | j                  «       «      t        |«      k(  r| S  || j                  «       «      s‘t        j                  j                  j                  t!        | j                  «       «      «      }|dkD  rL ||«      sD| j#                  t        j                  j                  j                  t!        |«      «      |z  «       t        t        j                  | j$                  t        |«      «      «      S )Nr   )Úfree_unbacked_symbols)Ú%torch.fx.experimental.symbolic_shapesrõ  r2  r`   r+   rQ  r0   ré   r”   r:   r^   r½   rI   rR   r  Ú	size_hintrF   Ú
mark_reuserb   )r›   rÏ  rõ  Úx_size_products       rZ   r  r  F  s  € åKä˜a˜SÓ!�D€QÜ�!”R—_‘_Ô%Ü× Ñ  ¤E¨%£LÓ1Ð1Ü�aœÔ#Ð#Ð#Ü�eœd¤E˜]Ô+Ð+Ð+ÜˆQ�Z‰Z‹\Óœe E›lÒ*Øˆá  §¡£Ô.ÜŸ™×)Ñ)×3Ñ3´MÀ!Ç*Á*Ã,Ó4OÓPˆð
 ˜AÒÑ&;¸EÔ&Bà�L‰LÜ—‘× Ñ ×*Ñ*¬=¸Ó+?Ó@ÀNÑRôô ”Z×&Ñ& q§v¡v¬u°U«|Ó<Ó=Ð=r\   c                ó–   — t        |«      }|D ]  }d||<   Œ	 | }t        |«      D ]  \  }}|dk7  sŒt        ||«      }Œ t        ||«      S ©Nr:  )r^   r_   Ú	unsqueezer  )rÔ   ÚshapeÚbroadcast_dimensionsrÚ  Úbroadcast_dimensionrí   Úidxr›   s           rZ   Úbroadcast_in_dimr  `  sf   € äˆU‹€AØ3ò $ÐØ!#ˆÐ
Òð$ð 	
€AÜ˜A“,ò "‰ˆˆQØ�‹7Ü˜!˜SÓ!‰Að"ô �!�UÓÐr\   c                ó6   — t        | |j                  «       «      S r   )r  r½   )r›   r  s     rZ   Ú	expand_asr  n  s   € ä�!�Q—Z‘Z“\Ó"Ð"r\   c                ó>  ‡‡‡— t        | j                  «       «      Št        ‰«      t        ‰«      kD  rKt        j                  j
                  gt        ‰«      t        ‰«      z
  z  ‰z   Št        | t        ‰«      «      } t        ‰«      t        | j                  «       «      k(  sJ ‚t        | j                  «       «      }d}t        t        ‰«      «      D ]  }‰|   dk(  rd}||   ‰|   z  ||<   Œ |r*t        || j                  «       | j                  «       ¬«      S t        d„ t        ‰‰«      D «       «      rt        t        | |«      «      S ˆˆˆfd„}t        j                   j"                  j%                  t'        ‰«      «      }|dkD  rD| j)                  t        j                   j"                  j%                  t'        |«      «      |z  «       | j+                  «       Št-        j.                  | j                  «       | j                  «       |t        |«      ¬«      S )NFr   T©r­   rk   c              3  ó:   K  — | ]  \  }}|d k(  xs |d k(  –— Œ y­w©r(   NrÜ   rÍ  s      rZ   r‘   zrepeat.<locals>.<genexpr>…  s$   è ø€ Ò
A¡$ ! QˆA�‰FÒ�a˜1‘fÓÑ
Aùs   ‚c                ó  •— t        | «      t        ‰«      k(  sJ ‚t        | «      } t        t        ‰«      «      D ]G  }‰|   dk7  sŒ‰|   dk(  rt        j                  j
                  | |<   Œ2t        | |   d‰|   «      | |<   ŒI  ‰| «      S rº  )r¼   r^   rè   r±   r  ÚZeror%   )r(  rh   Úold_sizeÚrepeatsÚx_loaders     €€€rZ   rL  zrepeat.<locals>.inner_fnŠ  sŠ   ø€ Ü�5‹zœS ›\Ò)Ð)Ð)Ü�U“ˆÜ”s˜7“|Ó$ò 	IˆAØ�q‰z˜Q‹Ø˜A‘; !Ò#Ü$Ÿw™wŸ|™|�E˜!’Hä.¨u°Q©x¸¸HÀQ¹KÓH�E˜!’Hð	Iñ ˜‹Ðr\   rM  )r^   r½   r¼   r±   r  r  r�  rè   Úemptyr°   rc   r  rç   rw  r  rI   rR   r  r÷  rF   rø  rO  r7   ré   )	r›   r  Únew_sizeÚzero_tensorrh   rL  Úold_size_productr
  r  s	    `     @@rZ   Úrepeatr  s  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Ø˜q‘k G¨A¡JÑ.ˆ�Šð/ñ
 Ü�X Q§[¡[£]¸1¿<¹<»>ÔJÐJÜ
Ñ
A¬#¨g°xÓ*@Ô
AÔAÜ”V˜A˜xÓ(Ó)Ð)ö	ô —w‘w×'Ñ'×1Ñ1´-ÀÓ2IÓJÐØ˜!Òà	�‰Ü�G‰G×Ñ×&Ñ&¤}°XÓ'>Ó?ÐCSÑSô	
ð �}‰}‹€HÜ×ÑØ�|‰|‹~Ø�k‰k‹mØÜ�H‹~ô	ð r\   c                ó¨   — t        | t        «      sJ ‚t        |t        t        f«      sJ ‚t        t	        j
                  | j                  |«      «      S r   )r`   r:   r^   r”   r<   ré   rb   )r›   rÏ  s     rZ   r�  r�  ¥  sB   € ô �aœÔ#Ð#Ð#Ü�eœd¤E˜]Ô+Ð+Ð+Ü”T—[‘[ §¡¨Ó/Ó0Ð0r\   c                óº   — t        | t        «      sJ ‚t        |t        t        f«      sJ ‚t        t	        j
                  | j                  t        |«      «      «      S r   )r`   r:   r^   r”   r6   ré   rb   )r›   rØ  s     rZ   Úpermuter  ®  sF   € ä�aœÔ#Ð#Ð#Ü�dœT¤5˜MÔ*Ð*Ð*Ü”[×'Ñ'¨¯©´°d³Ó<Ó=Ð=r\   c           
     ó°   — t        | t        «      sJ ‚t        | |d«      }t        t        j                  j                  | j                  |||||¬«      «      S )Nr   ©Úclamp)r`   r:   Ú_validate_dimr+   Ú	SliceViewré   rb   )r›   rÀ   ÚstartÚendÚstepr  s         rZ   Úslice_r  µ  sK   € ä�aœÔ#Ð#Ð#Ü
˜˜3 Ó
"€CÜ”R—\‘\×(Ñ(¨¯©°°e¸SÀ$ÈeÐ(ÓTÓUÐUr\   c                ó–  — t        | t        «      r>t        | j                  t        j                  «      r| j                  j                  «       } | j                  «        t        j                  | «      st        d| › d�«      ‚t        j                  | «      \  }}t        j                  |j                  |j                  |D �cg c]  }t        j                  |«      ‘Œ c}|D �cg c]  }t        j                  |«      ‘Œ c}t        j                  |xs d«      «      }t        t        j                  ||¬«      «      S c c}w c c}w )Nzunrealized as_strided(z, ...)r   ©rb   Úlayout)r`   r:   rb   r+   ÚBaseViewÚunwrap_viewrd  Úis_storage_and_layoutr‰   Úas_storage_and_layoutÚFixedLayoutrk   r­   r±   r  ÚReinterpretView)r›   rñ   ÚstrideÚstorage_offsetÚstorageÚ
old_layoutrÚ  Ú
new_layouts           rZ   Ú
as_stridedr,  ¼  sï   € ä�!”YÔ¤J¨q¯v©v´r·{±{Ô$Cà�F‰F×ÑÓ ˆØ‡I�I„KÜ×#Ñ# AÔ&Ü!Ð$:¸1¸#¸VÐ"DÓEÐEÜ×2Ñ2°1Ó5Ñ€GˆZÜ—‘Ø×ÑØ×ÑØ"&Ö'˜QŒ�‰�a�Ò'Ø"(Ö)˜QŒ�‰�a�Ò)Ü�‰�^Ò( qÓ)ó€Jô ”R×'Ñ'¨W¸ZÔHÓIÐIùò	 	(ùÚ)s   ÃEÃ&Ec                ód   — t        | t        «      sJ ‚t        | |||«      j                  | _        | S r   )r`   r:   r,  rb   )r›   rñ   r'  r(  s       rZ   Úas_strided_r.  Ï  s/   € ä�aœÔ#Ð#Ð#Ü˜˜4 ¨Ó8×=Ñ=€A„FØ€Hr\   c                ó4   — t        | |||«      }t        |«      S r   )r,  rw  )r›   rñ   r'  r(  Úresults        rZ   Úas_strided_copyr1  Ö  s   € ä˜˜4 ¨Ó8€FÜ�‹=Ðr\   c                ó˜  ‡ ‡‡‡— g Šd}‰ D ]1  }‰j                  |||j                  «       ‰   z   f«       ‰d   d   }Œ3 ‰ D �cg c]  }|j                  «       ‘Œ c}Šˆˆ ˆˆfd„}t        ‰ d   j                  «       «      }‰d   d   |‰<   t	        j
                  ‰ d   j                  «       ‰ d   j                  «       ||¬«      S c c}w )Nr   r:  c           	     ó�  •‡
‡— t        j                  | ‰   t        j                  «      }g }g }t	        t        ‰«      «      D �]?  Š
‰
dk(  r$t        j                  dt        j                  «      n)t        j                  ‰‰
   d   t        j                  «      }t        j                  ‰‰
   d   t        j                  «      }t        j                  ||«      }t        j                  ||«      }‰
dk(  r|}n*‰
t        ‰«      dz
  k(  r|}nt        j                  ||«      }|j                  |«       t        | «      Št        ‰‰   ‰‰
   d   z
  «      ‰‰<   |j                  t        j                  |ˆ
ˆˆfd„d«      «       �ŒB |d   }	t	        t        ‰«      dz
  dd«      D ]  Š
t        j                  |‰
   |‰
   |	«      }	Œ! |	S )Nr   r(   c                 ó   •—  ‰‰    ‰«      S r   rÜ   )rh   Úidx_loadÚinputs_loaderss   €€€rZ   ú<lambda>z1pointwise_cat.<locals>.inner_fn.<locals>.<lambda>  s   ø€ Ð-˜N¨1Ñ-¨hÓ7€ r\   ç        r:  r&   )rH   Ú
index_exprrp   Úint64rè   r¼   ÚconstantÚgeÚltÚand_rd   r^   r#   ÚmaskedrÇ  )r   Úidx_dimÚmasksÚmasked_loadsr  r  Ú
start_condÚend_condÚmaskÚnext_valrh   r5  rÀ   r/  r6  Úinputs_rangess             @@€€€€rZ   rL  z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 sÓ+ˆHØ�AŠvØ‘Ø”c˜&“k A‘oÒ%Ø!‘ä—x‘x 
¨HÓ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ð	ð ˆr\   rM  )rd   r½   rO  r^   r7   ré   rc   r°   )r/  rÀ   Úprev_endr¿   rL  r  r6  rG  s   ``    @@rZ   Úpointwise_catrI  Ü  sØ   û€ à9;€MØ€HØò )ˆØ×Ñ˜h¨°3·<±<³>À#Ñ3FÑ(FÐGÔHØ  Ñ$ RÑ(‰ð)ð 4:Ö:¨C�c—o‘oÕ'Ò:€N÷.ô` �F˜1‘I×&Ñ&Ó(Ó)€HØ! "Ñ% bÑ)€HˆS�Mä×ÑØ�a‰y×#Ñ#Ó%Ø�Q‰i×!Ñ!Ó#ØØô	ð ùòk ;s   ÁCc           	     óæ  ‡‡‡‡‡‡‡‡	‡
— t        ‰j                  «       «      dk(  sJ d«       ‚t        ‰j                  «       «      dk(  sJ d«       ‚| j                  «       t        j                  k(  rt        | t        j                  «      } | j                  «       t        j                  k(  sJ d| j                  «       › �«       ‚‰t        | j                  «       «      k  s!J dt        | j                  «       «      › �«       ‚| j                  «       Š‰j                  «       Š	‰j                  «       Š
ˆˆˆˆˆˆˆ	ˆˆ
f	d„}t        j                  | j                  «       ‰|| j                  «       ¬«      S )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                ób  •	— | ‰
   f} ‰| «      } ‰|«      } ‰|«      }t        ‰‰t        j                  ¬«      \  }}‰j                  t        j                  k7  r$t	        j
                  |t        j                  «      }‰j                  t        j                  k7  r$t	        j
                  |t        j                  «      }t	        j                  |«      }t	        j                  ||z  «      |z   }t	        j                  |t	        j                  ||«      «      }	t	        j
                  |	‰«      S ©Nr¬   )Ú_create_constantsrp   Úfloat32r­   rH   rØ   r¿  Ú
reciprocalrñ  ÚmaximumÚminimum)r   Úchannel_idxri  ÚscaleÚ
zero_pointÚqminÚqmaxÚ	inv_scalerà  ÚclampedÚaxisr­   Úinput_loaderÚ	quant_maxÚ	quant_minÚscalesÚscales_loaderÚzero_pointsÚzero_points_loaders             €€€€€€€€€rZ   rL  z;quantized_decomposed_quantize_per_channel.<locals>.inner_fn;  sÞ   ø€ Ø˜4‘y�lˆá˜SÓ!ˆÙ˜kÓ*ˆÙ'¨Ó4ˆ
Ü& y°)Ä5Ç=Á=ÔQ‰
ˆˆdà�<‰<œ5Ÿ=™=Ò(Ü—L‘L ¬¯©Ó6ˆEØ×Ñ¤§¡Ò+ÜŸ™ j´%·+±+Ó>ˆJÜ—N‘N 5Ó)ˆ	Ü�i‰i˜ 	Ñ)Ó*¨ZÑ7ˆÜ—+‘+˜d¤C§K¡K°°cÓ$:Ó;ˆÜ�|‰|˜G UÓ+Ð+r\   rM  )r¼   r½   r°   rp   rR  rØ   rR  rO  r7   ré   rc   )ri  ra  rc  r]  r`  r_  r­   rL  r^  rb  rd  s    `````` @@@rZ   Ú)quantized_decomposed_quantize_per_channelre  !  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Ð÷,ô ,ô" ×ÑØ×ÑÓ!ØØØ�~‰~Óô	ð r\   )Ú	out_dtypec               óv  ‡‡‡‡‡	‡
‡— t        ‰j                  «       «      dk(  sJ d«       ‚t        ‰j                  «       «      dk(  sJ d«       ‚| j                  «       |k(  sJ d|› d| j                  «       › �«       ‚‰t        | j                  «       «      k  s!J dt        | j                  «       «      › �«       ‚‰€t        j                  Š| j                  «       Š	‰j                  «       Š
‰j                  «       Šˆˆ	ˆˆˆ
ˆˆfd„}t        j                  | j                  «       ‰|| j                  «       ¬«      S )	Nr(   rK  rL  úExpecting input to have dtype ú, but got dtype: rN  c                óê  •— | ‰   f} ‰| «      } ‰
|«      } ‰|«      }‰	j                   t        j                  k7  r$t        j                  |t        j                  «      }‰j                   t        j                  k7  r$t        j                  |t        j                  «      }t        j
                  t        j                  |t        j                  «      |«      |z  }t        j                  |‰«      }|S r   )r­   rp   rR  rH   rØ   Úsub)r   rV  ri  rW  rX  rà  r]  r^  rf  ra  rb  rc  rd  s         €€€€€€€rZ   rL  z=quantized_decomposed_dequantize_per_channel.<locals>.inner_fnr  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 	Ó*ˆØˆ
r\   rM  ©	r¼   r½   r°   rp   rR  rO  r7   ré   rc   )ri  ra  rc  r]  r`  r_  r­   rf  rL  r^  rb  rd  s    ```   ` @@@rZ   Ú+quantized_decomposed_dequantize_per_channelrm  T  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Ð÷ò ô ×ÑØ×ÑÓ!ØØØ�~‰~Óô	ð r\   c                óÜ  ‡‡‡‡— | j                  «       t        j                  k(  rt        | t        j                  «      } | j                  «       t        j                  k(  sJ d| j                  «       › �«       ‚| j                  «       Šˆˆˆˆfd„}t        j                  | j                  «       ‰t        j                  |t        |«      t        |«      ¬«      | j                  «       ¬«      S )NrM  c                óL  •—  ‰
| «      }t        d|z  |t        j                  ¬«      \  }}t        j                  ||z  «      |z   }t        ‰‰t        j                  ¬«      \  }}t        j
                  t        j                  ||«      |«      }t        j                  |‰	«      S )Nç      ð?r¬   )rQ  rp   rR  rH   rñ  rU  rT  rØ   )r   rW  rX  ri  r[  rà  rY  rZ  r\  r­   r^  r_  r`  s            €€€€rZ   rL  zBquantized_decomposed_quantize_per_tensor_default.<locals>.inner_fnœ  s‡   ø€ Ù˜SÓ!ˆÜ 1Ø�%‰K˜¬5¯=©=ô!
Ñˆ	�:ô �i‰i˜ 	Ñ)Ó*¨ZÑ7ˆÜ& y°)Ä5Ç=Á=ÔQ‰
ˆˆdÜ—+‘+œcŸk™k¨#¨tÓ4°dÓ;ˆÜ�|‰|˜G UÓ+Ð+r\   ©rW  rX  rM  )r°   rp   rR  rØ   rR  rO  r7   ré   rc   r÷   r  r#  rª   r½   )ri  rW  rX  r`  r_  r­   rL  r^  s      ``` @rZ   Ú0quantized_decomposed_quantize_per_tensor_defaultrr  ‰  s¼   û€ ð ‡�ÓœEŸN™NÒ*Ü˜¤§¡Ó.ˆØ�?‰?Ó¤§¡Ò-ð Ø
FÀuÇÁÓGXÐFYÐZóÐ-ð ×$Ñ$Ó&€L÷,ô ×ÑØ×ÑÓ!ØÜ×"Ñ"ØœE %›L´S¸³_ô
ð �~‰~Óôð r\   c               ól  ‡‡— | j                  «       |k(  sJ d|› d| j                  «       › �«       ‚‰€t        j                  Š| j                  «       Šˆˆfd„}t	        j
                  | j                  «       ‰t        j                  |t        |«      t        |«      ¬«      | j                  «       ¬«      S )Nrh  ri  c                óø   •—  ‰| «      }t        ||t        j                  ¬«      \  }}t        j                  t        j
                  |t        j                  «      |«      |z  }t        j
                  |‰«      }|S rP  )rQ  rp   rR  rH   rk  rØ   )r   rW  rX  ri  rà  r^  rf  s        €€rZ   rL  zDquantized_decomposed_dequantize_per_tensor_default.<locals>.inner_fnÆ  s]   ø€ Ù˜SÓ!ˆÜ-¨e°ZÄuÇ}Á}ÔUÑˆˆzÜ�g‰g”c—l‘l 5¬%¯-©-Ó8¸*ÓEÈÑMˆÜ�l‰l˜3 	Ó*ˆØˆ
r\   rq  rM  )r°   rp   rR  rO  r7   ré   rc   r÷   r  r#  rª   r½   )	ri  rW  rX  r`  r_  r­   rf  rL  r^  s	         ` @rZ   Ú2quantized_decomposed_dequantize_per_tensor_defaultru  °  s«   ù€ ð �?‰?Ó Ò%ð Ø
(¨¨Ð/@ÀÇÁÓARÐ@SÐTóÐ%ð ÐÜ—M‘Mˆ	à×$Ñ$Ó&€Lõô ×ÑØ×ÑÓ!ØÜ×"Ñ"ØœE %›L´S¸³_ô
ð �~‰~Óôð r\   c                ó0  ‡‡‡‡‡‡‡‡	— | j                  «       t        j                  k(  rt        | t        j                  «      } | j                  «       t        j                  k(  sJ d| j                  «       › �«       ‚t        ‰j                  «       «      dk(  s9t        ‰j                  «       «      dk(  r‰j                  «       d   dk(  sJ d«       ‚t        ‰j                  «       «      dk(  s9t        ‰j                  «       «      dk(  r‰j                  «       d   dk(  sJ d«       ‚| j                  «       Š‰j                  «       Š‰j                  «       Š	ˆˆˆˆˆˆˆˆ	fd„}t        j                  | j                  «       ‰|| j                  «       ¬«      S )NrM  r   r(   úexpect scale as scalar tensorú"expect zero_point as scalar tensorc                óÊ  •—  ‰	| «      } ‰t        ‰j                  «       «      dk(  rdnd«      } ‰t        ‰j                  «       «      dk(  rdnd«      }‰j                  t        j                  k7  r$t        j                  |t        j                  «      }‰j                  t        j                  k7  r$t        j                  |t        j                  «      }t        j                  |t        j                  |«      z  «      |z   }t        ‰‰
t        j                  ¬«      \  }}t        j                  t        j                  ||«      |«      }t        j                  |‰«      S )Nr(   ©r   rÜ   r¬   )r¼   r½   r­   rp   rR  rH   rØ   rñ  rS  rQ  rU  rT  )r   ri  Ú_scaleÚ_zero_pointrà  rY  rZ  r\  r­   r^  r_  r`  rW  Úscale_loaderrX  Úzero_point_loaders           €€€€€€€€rZ   rL  zAquantized_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‰
ˆˆdÜ—+‘+œcŸk™k¨#¨tÓ4°dÓ;ˆÜ�|‰|˜G UÓ+Ð+r\   rM  )r°   rp   rR  rØ   rR  r¼   r½   rO  r7   ré   rc   )
ri  rW  rX  r`  r_  r­   rL  r^  r}  r~  s
    ````` @@@rZ   Ú/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Ð÷,ó ,ô ×ÑØ×ÑÓ!ØØØ�~‰~Óô	ð r\   c               óÀ  ‡‡‡‡‡	‡
— t        ‰j                  «       «      dk(  s9t        ‰j                  «       «      dk(  r‰j                  «       d   dk(  sJ d«       ‚t        ‰j                  «       «      dk(  s9t        ‰j                  «       «      dk(  r‰j                  «       d   dk(  sJ d«       ‚| j                  «       |k(  sJ d|› d| j                  «       › �«       ‚‰€t        j                  Š| j                  «       Š‰j                  «       Š	‰j                  «       Š
ˆˆˆˆ	ˆˆ
fd„}t        j                  | j                  «       ‰|| j                  «       ¬«      S )	Nr   r(   rw  rx  rh  ri  c                óV  •—  ‰| «      } ‰t        ‰j                  «       «      dk(  rdnd«      } ‰
t        ‰j                  «       «      dk(  rdnd«      }‰j                  t        j                  k7  r$t        j                  |t        j                  «      }‰	j                  t        j                  k7  r$t        j                  |t        j                  «      }t        j                  t        j                  |t        j                  «      |«      |z  }t        j                  |‰«      }|S )Nr(   rz  rÜ   )r¼   r½   r­   rp   rR  rH   rØ   rk  )r   ri  r{  r|  rà  r^  rf  rW  r}  rX  r~  s        €€€€€€rZ   rL  zCquantized_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 	Ó*ˆØˆ
r\   rM  rl  )ri  rW  rX  r`  r_  r­   rf  rL  r^  r}  r~  s    ``   ` @@@rZ   Ú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Ð÷
ñ 
ô ×ÑØ×ÑÓ!ØØØ�~‰~Óô	ð r\   c                óì  ‡‡‡‡‡‡‡— | d   j                  «       j                  dk(  }|r‚t        d„ | D «       «      rp| D ]  }|j                  «        Œ t        d„ | D «       «      rt	        t
        j                  g| ¢­Ž \  } } t        t
        j                  j                  «      | |«      S t        | «      dk(  rt        | d   «      S t        | d   |d«      }t        | dt        j                  iŽ}| D �cg c]  }t        ||«      ‘Œ } }dd„Šd„ Šˆˆˆfd	„Št!        ˆfd
„| D «       «      }dˆˆfd„Št"        j$                  rt'        | |«      S |r)t)        t*        j,                  j/                  | |«      «      S ˆˆfd„Šd}dŠdd„Št        | «      |k  s1t        | «      t"        j0                  k  r–t        ˆˆfd„| D «       «      r�t        ˆfd„t2        j4                  j6                  D «       «      }	t!        ˆfd„| D «       «      xr |	}
t        ˆfd„| D «       «      xr t!        ˆfd„| D «       «       }|
s|r|st'        | |«      S t)        t*        j,                  j/                  | |«      «      S c c}w )Nr   Úcpuc              3  ó|   K  — | ]4  }|j                  «       t        j                  t        j                  fv –— Œ6 y ­wr   )r°   rp   Úint8Úuint8©r�   ri  s     rZ   r‘   zcat.<locals>.<genexpr><  s.   è ø€ ò Ø;@ˆ�‰ÓœeŸj™j¬%¯+©+Ð6Ô6ñùs   ‚:<c              3  óT   K  — | ]   }t        |j                  «       «      d k(  –— Œ" y­w)r    N)r¼   r½   rˆ  s     rZ   r‘   zcat.<locals>.<genexpr>C  s!   è ø€ Ò>¨eŒs�5—>‘>Ó#Ó$¨Õ)Ñ>ùs   ‚&(r(   rÂ   c                ó  — t        | t        «      rJt        | j                  t        j                  «      r| j                  j                  «       S | j                  S t        | t        j                  «      r| j                  S | S r   )r`   r:   rb   r+   r!  r"  Ú
StorageBoxr´   s    rZ   Úunwrap_tensorzcat.<locals>.unwrap_tensorP  sV   € Ü�aœÔ#Ü˜!Ÿ&™&¤"§+¡+Ô.Ø—v‘v×)Ñ)Ó+Ð+à—v‘v�ä�aœŸ™Ô'Ø—6‘6ˆMàˆr\   c                ó‚   — t        | t        j                  «      xr$ t        | j                  t        j                  «      S r   )r`   r+   ÚComputedBufferrb   r8   )rl   s    rZ   Úis_reductionzcat.<locals>.is_reduction\  s)   € Ü˜!œR×.Ñ.Ó/ÒT´J¸q¿v¹vÄrÇ|Á|Ó4TÐTr\   c                óð   •— t        | t        t        j                  f«      r ‰ ‰| «      «      S  ‰| «      xs> t        | t        j                  «      xr" t        ˆfd„| j                  «       D «       «      S )Nc              3  óh   •K  — | ])  } ‰t         j                  j                  |«      «      –— Œ+ y ­wr   )rI   rR   Ú
get_buffer)r�   ÚreadÚcan_fuse_reductions     €rZ   r‘   z2cat.<locals>.can_fuse_reduction.<locals>.<genexpr>e  s-   øè ø€ ò àñ #¤1§7¡7×#5Ñ#5°dÓ#;×<ñùs   ƒ/2)r`   r:   r+   r‹  r7   r  Úget_read_names)rl   r”  r�  rŒ  s    €€€rZ   r”  zcat.<locals>.can_fuse_reduction_  sh   ø€ Ü�aœ)¤R§]¡]Ð3Ô4Ù%¡m°AÓ&6Ó7Ð7á˜‹Oò Ü˜!œRŸ\™\Ó*ò Üó à×,Ñ,Ó.ôó ð	
r\   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   rÜ   ©r�   rl   r”  s     €rZ   r‘   zcat.<locals>.<genexpr>l  s   øè ø€ ÒB°aÑ.¨q×1ÑBùó   ƒc                ó6  •— t        j                  | «      r:t        j                  | d¬«      \  }}t         j                  j	                  |«       S t        | t        t         j                  f«      r ‰ ‰| «      «      S t        | t         j                  «      ryy)NF)ÚfreezeT)	r+   r#  r$  ÚConcatKernelÚcan_realize_into_without_copyr`   r:   r‹  r7   )r›   r)  rÅ   Úshould_lower_cat_inputrŒ  s      €€rZ   r�  z#cat.<locals>.should_lower_cat_inputn  sx   ø€ ô ×#Ñ# AÔ&Ü×1Ñ1°!¸EÔB‰JˆG�QÜ—‘×DÑDÀWÓMÐMÐMä�aœ)¤R§]¡]Ð3Ô4Ù)©-¸Ó*:Ó;Ð;ä�aœŸ™Ô&Øàr\   c                óH  •— t        | t        t        j                  f«      r ‰ ‰| «      «      S t        | t        j                  «      sy| j                  «       j                  }| j                  «       D ]*  }| ‰t        j                  j                  |«      «      z  }Œ, |S rµ  )r`   r:   r+   r‹  r7   Úinner_fn_opcountÚnum_opsr•  rI   rR   r’  )r›   Úcountr“  Úop_countrŒ  s      €€rZ   r¢  zcat.<locals>.op_count…  sŠ   ø€ Ü�aœ)¤R§]¡]Ð3Ô4Ù™M¨!Ó,Ó-Ð-ô ˜!œRŸ\™\Ô*Øà×"Ñ"Ó$×,Ñ,ˆØ×$Ñ$Ó&ò 	8ˆDØ‘XœaŸg™g×0Ñ0°Ó6Ó7Ñ7‰Eð	8ð ˆr\   r¤   r&   c                ón   — | t         j                  j                  t         j                  j                  fv S r   )rœ  Úcatr’  Úconstant_pad_nd©rU   s    rZ   Úadditional_pointwise_opsz%cat.<locals>.additional_pointwise_opsš  s(   € Ø”d—h‘h×&Ñ&¬×(<Ñ(<×(DÑ(DÐEÐEÐEr\   c              3  ó4   •K  — | ]  } ‰|«      ‰k  –— Œ y ­wr   rÜ   )r�   rl   ÚMAX_SIMPLE_OP_COUNTr¢  s     €€rZ   r‘   zcat.<locals>.<genexpr>Ÿ  s   øè ø€ ÒC°q‘˜“Ð2Õ2ÑCùs   ƒc              3  ó6   •K  — | ]  }t        |‰«      –— Œ y ­wr   )rA   )r�   Úuser§  s     €rZ   r‘   zcat.<locals>.<genexpr>¡  s!   øè ø€ ò 
àô ˜SÐ":×;ñ
ùr’   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   rÜ   ©r�   r¿   r�  s     €rZ   r‘   zcat.<locals>.<genexpr>¨  s   øè ø€ Ò>°Ñ& s×+Ñ>ùr˜  c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   rÜ   r­  s     €rZ   r‘   zcat.<locals>.<genexpr>­  s   øè ø€ ò "
Ø,/Ñ" 3×'ñ"
ùr˜  c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   rÜ   r—  s     €rZ   r‘   zcat.<locals>.<genexpr>¯  s   øè ø€ Ò<°Ñ(¨×+Ñ<ùr˜  )r›   zUnion[TensorBox, ir.StorageBox]Úreturnú	ir.IRNode)r°  r·   ©rU   útorch._ops.OpOverload)rc   rP  r  rd  Úrequire_channels_lastrœ  r¤  r�  r’  r¼   rw  r  rÆ   r   r,  rØ   r  r)   Úforce_pointwise_catrI  r:   r+   r›  ré   Úmax_pointwise_cat_inputsrI   rS   rT   )r/  rÀ   Ú
cpu_deviceri  rÅ   r­   r¿   Úfusable_reductionÚMAX_COMPLEX_POINTWISE_CATÚpointwise_usesÚfuse_pointwise_useÚhorizontal_fuse_catr©  r§  r”  r�  r¢  r�  rŒ  s               @@@@@@@rZ   r¤  r¤  9  sI  þ€ à˜‘×%Ñ%Ó'×,Ñ,°Ñ5€JÙ”cñ ØDJôô ð
 ò 	ˆEØ�M‰M�Oð	äÑ>°vÔ>Ô>Ü-¬d¯h©hÐ@¸Ò@‰IˆF�AØ1Ô¤§¡× 0Ñ 0Ó1°&¸#Ó>Ð>ä
ˆ6ƒ{�aÒÜ�V˜A‘YÓÐä
˜˜q™	 3¨Ó
*€CÜØ	ðÜ%D×%LÑ%Lñ€Eð /5Ö5 sŒh�s˜EÕ"Ð5€FÐ5ó
òUö

ô ÓB¸6ÔBÓBÐöô ×!Ò!Ü˜V SÓ)Ð)ñ ÜœŸ™×/Ñ/°¸Ó<Ó=Ð=õð$ !"ÐØÐóFô ˆ6ƒ{Ð/Ò/Ü	ˆV‹œ×7Ñ7Ò	7ÜÔC¸FÔCÔCäó 
ä—~‘~×+Ñ+ô
ó 
ˆô Ó>°vÔ>Ó>ÒQÀ>ð 	ô "ó "
Ø39ô"
ó 
ò =äÓ<°VÔ<Ó<Ð<ð 	ñ Ñ"5Ñ>OÜ  ¨Ó-Ð-ä”R—_‘_×+Ñ+¨F°CÓ8Ó9Ð9ùòK 6s   Ã5I1c                ó€  ‡‡‡
‡‡— | j                  «       Št        ‰«      Št        ‰‰¬«      Št        ‰‰¬«      Št        ‰‰k7  ˆˆfd„«       t        j
                  j                  j                  t        j                  |d«      «      }|r\t        j
                  j                  j                  t        j
                  j                  j                  ‰‰   |z   ‰‰   «      d«      }n[t        j
                  j                  j                  t        j
                  j                  j                  ‰‰   ‰‰   |z
  «      d«      }dŠ
|r| dfŠ
nd|fŠ
t        ‰«      D ��cg c]  \  }}|‰‰fvsŒ|‘Œ }}}|j                  |«       ˆ
ˆˆˆˆfd„}	t        t        j                   j#                  | ||	«      «      S c c}}w )N)r   Úrankc                 ó   •— d‰ › d‰› �S )Nz(diagonal dimensions cannot be identical z, rÜ   )Údim1Údim2s   €€rZ   r7  zdiagonal.<locals>.<lambda>¾  s   ø€ Ð HÈÈÈbÐQUÐPVÐW€ r\   r   )r   r   c                óØ   •— | d   }dgt        ‰	«      z  }d}t        ‰«      D ]1  }|‰k(  r|‰d   z   ||<   Œ|‰k(  r|‰d   z   ||<   Œ%| |   ||<   |dz  }Œ3 |t        ‰	«      dz
  k(  sJ ‚|S )Nr:  r   r(   r&   )r¼   rè   )
r   Údiag_idxÚoriginal_idxÚcur_dimr×  Úbase_idxrÀ  rÁ  Únum_dimsÚoriginal_shapes
        €€€€€rZ   Ú	reindexerzdiagonal.<locals>.reindexerÚ  s�   ø€ Ø�r‘7ˆØ�sœS Ó0Ñ0ˆØˆÜ�x“ò 	ˆAØ�DŠyØ"*¨X°a©[Ñ"8�˜Q’Ø�d’Ø"*¨X°a©[Ñ"8�˜Q’à"% g¡,�˜Q‘Ø˜1‘‘ð	ð œ#˜nÓ-°Ñ1Ò1Ð1Ð1ØÐr\   )r½   r¼   r   r   rI   rR   r  r  r±   ÚLtÚevaluate_maxÚevaluate_minr_   rd   r:   r+   ÚGenericViewré   )ri  ÚoffsetrÀ  rÁ  Úoffset_negativeÚ	diag_sizerh   rÚ  rÏ  rÉ  rÆ  rÇ  rÈ  s     ``      @@@rZ   ÚdiagonalrÑ  ¶  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�1�a¸À$ÈÀÒ8MŠQÐN€EÑNØ	‡L�L�Ô÷ð ô  ”R—^‘^×*Ñ*¨5°%¸ÓCÓDÐDùó' Os   Å F:Å/F:c                ó0   — t        t        | |||«      «      S r   )rw  rÑ  )ri  rÎ  rÀ  rÁ  s       rZ   Údiagonal_copyrÓ  í  s   € ä”˜% ¨¨tÓ4Ó5Ð5r\   c                óP   — t        | «      }t        ||||«      }t        ||«       |S r   )rw  rÑ  Ú	mutate_to)ri  ÚsrcrÎ  rÀ  rÁ  r  rV   s          rZ   Údiagonal_scatterr×  ò  s*   € ä�5‹\€FÜ�f˜f d¨DÓ1€FÜˆf�cÔØ€Mr\   c           	     ó†   — t        j                  || j                  «       |   «      }t        t	        | |||dz   «      |«      S rº  )r<   Úhandle_negative_indexr½   rÛ  r  )r›   rÀ   r   s      rZ   ÚselectrÚ  ú  s;   € ä
×
$Ñ
$ S¨!¯*©*«,°sÑ*;Ó
<€CÜ”6˜!˜S # s¨Q¡wÓ/°Ó5Ð5r\   c           
     ór  — t        | |d«      }|}t        |t        t        f«      s`| j	                  «       |   }t
        j                  j                  j                  t        ||z   dz
  |«      «      }|g|z  }||dz
  |z  z
  |d<   g }d}|D ](  }||z   }	|j                  t        | |||	d¬«      «       |	}Œ* |S )Nr   r(   r:  Fr  )r  r`   r^   r”   r½   rI   rR   r  rÕ  r"   rd   r  )
r›   rÏ  rÀ   Úsizes_Úx_sizeÚchunksr0  r  rñ   r  s
             rZ   Úsplitrß     sÒ   € ä
˜˜3 Ó
"€CØ€Fô �eœd¤E˜]Ô+Ø—‘“˜cÑ"ˆÜ—‘×!Ñ!×7Ñ7Ü�V˜e‘^ aÑ'¨Ó/ó
ˆð �˜6Ñ!ˆà˜v¨™z¨UÑ2Ñ2ˆˆr‰
ð €FØ€EØò ˆØ�d‰lˆð 	�‰”f˜Q  U¨C°uÔ=Ô>Ø‰ðð €Mr\   c                ó   — t        | ||«      S r   )rß  )r›   rÏ  rÀ   s      rZ   Úsplit_with_sizesrá    s   € ä��E˜3ÓÐr\   c                óä   — t        | |d«      }t        j                  j                  j	                  | j                  «       |   «      }t        |«      D �cg c]  }t        | ||«      ‘Œ }}|S c c}w rµ  )r  rI   rR   r  rÕ  r½   rè   rÚ  )r›   rÀ   rÝ  rh   r0  s        rZ   Úunbindrã  "  s_   € ä
˜˜3 Ó
"€CÜ�W‰W×Ñ×3Ñ3°A·J±J³LÀÑ4EÓF€FÜ).¨v«Ö7 AŒf�Q˜˜QÕÐ7€FÐ7Ø€Mùò 8s   ÁA-c                ó>  ‡‡— | j                  «       }t        |«      }t        ||«      Š|dk(  rt        t	        | d«      |¬«      S |‰   }t
        j                  j                  }|j                  ||«       |j                  d‰«       t        ||z
  ‰«      dz   }|j                  |«      dkD  r-| j                  |j                  t        ||z  |«      «      «       g |d ‰ ¢|‘|‰dz   d  ¢|‘}	ˆˆfd„}
t        t        j                   j#                  | |	|
«      «      S )Nr   )r  r(   c                óD   •— | d   | ‰   ‰z  z   }g | d ‰ ¢|‘| ‰dz   d ¢­S )Nr:  r(   rÜ   )r   Údim_idxrÀ   r  s     €€rZ   rÉ  zunfold.<locals>.reindexer>  s?   ø€ Ø�b‘'˜C ™H t™OÑ+ˆØ8��T�c�Ð8˜GÐ8 c¨#°©'°BÐ&7Ñ8Ð8r\   )r½   r¼   r   r  rü  rI   rR   r  Ú	guard_leqÚguard_ltr"   r÷  rø  r!   r:   r+   rÍ  ré   )r›   Ú	dimensionrñ   r  rÏ  ÚndimÚdim_sizer  Únew_dim_sizeÚout_sizerÉ  rÀ   s      `       @rZ   Úunfoldrî  *  s  ù€ à�J‰J‹L€EÜˆu‹:€DÜ
˜4 Ó
+€Càˆq‚yÜ”i  1“o¨4Ô0Ð0à�S‰z€HÜ�w‰w×Ñ€HØ×Ñ�t˜XÔ&Ø×Ñ�a˜Ôä˜H t™O¨TÓ2°QÑ6€LØ×Ñ˜(Ó# aÒ'Ø	�‰�X×'Ñ'¬°¸tÑ0CÀXÓ(NÓOÔPàD��t˜�ÐD˜lÐD¨U°3¸±7°9Ð-=ÐD¸tÐD€Hõ9ô ”R—^‘^×*Ñ*¨1¨h¸	ÓBÓCÐCr\   c                óº   — t        | |d«      }t        | j                  «       «      }|j                  |t        j
                  j                  «       t        | |«      S rº  )r  r^   r½   Úinsertr±   r  r  r�  )r›   rÀ   rÙ  s      rZ   rü  rü  E  sE   € ä
˜˜3 Ó
"€CÜ�Q—Z‘Z“\Ó"€IØ×Ñ�Sœ%Ÿ'™'Ÿ+™+Ô&Ü��9ÓÐr\   c                óˆ   — t        | |«      }t        | t        «      sJ ‚t        |t        «      sJ ‚|j                  | _        | S r   )rü  r`   r:   rb   rß  s      rZ   Ú
unsqueeze_rò  M  s>   € ä
�A�sÓ
€CÜ�aœÔ#Ð#Ð#Ü�cœ9Ô%Ð%Ð%Ø�X‰X€A„FØ€Hr\   c                ó  — t         j                  j                  j                  j	                  t        j                  |«      «      }t        | j                  «       «      }|dk  r|||z   z  }d|cxk  r	||z   k  sJ ‚ J ‚|S rµ  )	rI   rR   r  r  r  r±   Úsympifyr¼   r½   )r›   rÀ   rÎ  rê  s       rZ   r  r  V  sr   € Ü
�'‰'×
Ñ
×
$Ñ
$×
2Ñ
2´5·=±=ÀÓ3EÓ
F€CÜˆq�z‰z‹|Ó€DØ
ˆQ‚wØˆt�f‰}ÑˆØ�Ô#�d˜V‘mÒ#Ð#Ñ#Ð#Ð#Ø€Jr\   r:  c                óþ   — t        | |d«      }t        j                  j                  j	                  | j                  «       |   «      dz  }t        | |d|«      }t        | |||dz  «      }t        |t        |«      «      S )Nr   r&   )	r  rI   rR   r  rÕ  r½   r  rN  Úsigmoid)r›   rÀ   Únew_lenrÔ   r  s        rZ   Úglurø  _  so   € ä
˜˜3 Ó
"€Cä�g‰g×Ñ×4Ñ4°Q·Z±Z³\À#Ñ5FÓGÈ1ÑL€GÜˆq�#�q˜'Ó"€AÜˆq�#�w ¨!¡Ó,€AÜˆq”'˜!“*ÓÐr\   c                óN   ‡ — |rt         j                  ‰ «       ˆ fd„}d|_        |S )Nc                 óx   •— d„ }t        j                  |t        j                  j                  ‰g| ¢­i |¤Ž«      S )Nc                ód   — t        | t        j                  «      rt        j                  | «      S | S r   )r`   r+   r2   r:   ré   r´   s    rZ   Úwrap_tensorsz7fallback_handler.<locals>.handler.<locals>.wrap_tensorsn  s%   € Ü*4°Q¼¿	¹	Ô*B”9×#Ñ# AÓ&ÐIÈÐIr\   )ÚpytreeÚtree_mapr+   ÚFallbackKernelré   )ri   rà   rü  Úkernels      €rZ   Úhandlerz!fallback_handler.<locals>.handlerm  s<   ø€ ò	Jô �‰Øœ"×+Ñ+×2Ñ2°6ÐK¸DÒKÀFÑKó
ð 	
r\   T)r  r—   Ú_is_fallback_handler)r   rŠ  r  s   `  rZ   r�  r�  i  s&   ø€ ÙÜ�‰�fÔô
ð $(€GÔ à€Nr\   c                 ó.   — t        j                  d«       y )NzjTorchinductor does not support code generation for complex operators. Performance may be worse than eager.)ÚwarningsÚwarnrÜ   r\   rZ   Ú_warn_complex_not_supportedr  {  s   € ä‡M�MØtõr\   c                ó   — | j                  «       rv|ri|j                  t        j                  j                  j
                  j                  t        j                  j                  j                  j                  fv ryt        «        y| j                  t        j                  k(  r[|sy|j                  t        j
                  j                  t        j                  j                  fv xs t        |j                  «       S y)z0Do not support reading or writing to this tensorFT)rŒ  rV   rp   rH   rœ  r�  r­   r�  r‘  r’  r  Úfloat8_e8m0fnur¤  rB   ©rl   ÚparentrX   s      rZ   Úunsupported_input_tensorr  „  s¿   € à‡|�|„~á�f—m‘mÜ�I‰I�N‰N×Ñ×%Ñ%Ü�I‰I�O‰O×0Ñ0×8Ñ8ð(
ñ 
ð Ü#Ô%Øà‡w�w”%×&Ñ&Ò&ÙØð
 �K‰Kä—	‘	—‘Ü—‘× Ñ ððò $ô
 �t—{‘{Ó#ð
ð 	
ð r\   c                óX   — t        | |«      ry| j                  xr t        j                  S )z2Do not support writing tensor but can read from itT)r  Úis_cpur)   Údisable_cpp_codegenr	  s      rZ   Úunsupported_output_tensorr  ¢  s$   € ä  6Ô*ØØ�8‰8Ò2œ×2Ñ2Ð2r\   c                ó0  — | j                   t        j                  j                  u ry| j                   t        j                  j                  u ryd„ }t        j                  | j                  i | j                  ¤ŽD ]  } ||| d¬«      sŒ y  || | d¬«      S )NFc                óF  — t        | t        j                  j                  «      syd| j                  vryt        j                  | j                  d   «      D ]H  }t        |t        j                  j                  «      sŒ(|rt        ||| «      sŒ8 yt        ||| «      sŒH y y)NFrà  T)r`   rp   ÚfxÚNoderT  rý  Útree_leavesÚ_subclassesÚ
FakeTensorr  r  )rX   r
  Ú	is_outputrT  s       rZ   Úcheck_skip_conditionzCfallback_node_due_to_unsupported_type.<locals>.check_skip_condition²  sˆ   € Ü˜$¤§¡§¡Ô.Øà˜Ÿ	™	Ñ!Øä×&Ñ& t§y¡y°Ñ'7Ó8ò 		 ˆDÜ˜d¤E×$5Ñ$5×$@Ñ$@ÔAØáÜ,¨T°6¸4Õ@Ùä+¨D°&¸$Õ?Ùð		 ð r\   )r  T)	rV   rœ  Úview_as_complexr’  Úlift_fresh_copyrý  Úarg_tree_leavesri   rà   )rX   Úallow_cpu_inputsr  rÃ   s       rZ   Ú%fallback_node_due_to_unsupported_typer  ©  sˆ   € à‡{�{”d×*Ñ*×2Ñ2Ñ2Øð ‡{�{”d×*Ñ*×2Ñ2Ñ2Øòô* ×%Ñ% t§y¡yÐ@°D·K±KÑ@ò ˆÙ  T°UÖ;Ùðñ    d°dÔ;Ð;r\   c                ó*  ‡— | t         vs|s
J d| › �«       ‚|rÉt        t        j                  d«      «      r«t	        | g«      rŸt
        j                  r&| t        j                  j                  j                  v si|sgt        j                  j
                  j                  r4dt        j                  j
                  _        t        j                  d«       t        d| › d�«      ‚ˆfd„}t!        | t        j"                  j$                  «      r*| j'                  «       D ]  }t)        | |«      } ||«       Œ y t!        | t        j"                  j*                  t        j"                  j,                  f«      r	 || «       y t/        d| › d	t1        | «      › �«      ‚)
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                ón   •— t        | «       ‰�t        | ‰«        t        | d ¬«      t        | «      «      S ©Nry  )r•   rž   r  r�  )Úop_overloadÚlayout_constraints    €rZ   Úregister_fallbackz(make_fallback.<locals>.register_fallbackî  s;   ø€ Ü! +Ô.ØÐ(Ü! +Ð/@ÔAØGÔ  À$ÔGÜ˜[Ó)ó
ð 	
r\   zUnsupported fallback z with type )r-   r·   ÚosÚgetenvr.   r)   Úfallback_randomrp   Ú_decompÚdecompositions_for_rngÚextra_random_decompsÚ_dynamoÚsuppress_errorsÚlogÚwarningrv   r`   rz   r˜   rš   r„   r{   ÚHigherOrderOperatorÚRuntimeErrorrP  )rU   r#  r  Úoverride_decompr$  Úolr"  s    `     rZ   Úmake_fallbackr3  Î  sQ  ø€ Ø”^Ñ#¡ð Ø
4°R°DÐ9óÐ6ñ 	Ü”—‘˜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Ø—,‘,“.ò 	+ˆBÜ! " b›/ˆKÙ˜kÕ*ñ	+ô 
�BœŸ™×.Ñ.´·
±
×0NÑ0NÐOÔ	PÙ˜"ÕäÐ2°2°$°kÄ$ÀrÃ(ÀÐLÓMÐMr\   c                óT   — d}| D ]  }||z  }Œ	 t        |t        j                  ¬«      S )zÎ
    TorchInductor offset calculation differs from PyTorch eager offset
    calculation for random ops (tl.rand vs torch.rand). In future, we should
    strive for same impl for tl.rand and torch.rand.
    r(   r¬   ©Útensorrp   r:  )rý  ÚnumelrÚ  s      rZ   Úphilox_rand_offsetr8     s2   € ð €EØò ˆØ˜‘	‰ðä�%œuŸ{™{Ô+Ð+r\   c                óB  ‡‡	‡
‡— t        j                  |‰| t         j                  j                  | «      «      j	                  «       Š
|j                  «       Š|j                  «       Š	ˆˆ	ˆ
ˆfd„}t        j                  |‰|t        | «      ¬«      }t        | «      }||fS )Nc                ó€  •— t        j                   ‰g «      t        j                  «      }t        j                   ‰g «      t        j                  «      }t        j                  t        j
                   ‰| «      t        j                  «      |«      }t        j                  ||«      }t        j                  |‰«      S r   )rH   rØ   rp   r¿  r—   r9  Úrand)	r(  Úseed_index_exprÚoffset_index_exprÚrand_index_exprr0  r­   Úoffset_loaderÚ
random_posÚseed_loaders	        €€€€rZ   rL  zphilox_rand.<locals>.inner_fn  sˆ   ø€ ô Ÿ,™,¡{°2£¼¿¹ÓDˆÜŸL™L©°rÓ):¼E¿K¹KÓHÐäŸ'™'Ü�N‰N™: eÓ,¬e¯k©kÓ:Ð<Mó
ˆô —‘ØØó
ˆô �|‰|˜F EÓ*Ð*r\   rM  )
r+   r%  ÚFlexibleLayoutÚcontiguous_stridesÚmake_indexerrO  r7   ré   r^   r8  )rñ   ÚseedrÎ  r'  rk   r­   rL  Úrandom_values_nodeÚoffset_noder?  r@  rA  s        `   @@@rZ   Úphilox_randrH    s™   û€ ô —‘ØØØÜ
×Ñ×,Ñ,¨TÓ2ó	÷
 �lƒnð ð ×"Ñ"Ó$€KØ×&Ñ&Ó(€M÷+ô #×)Ñ)ØØØÜ�D‹zô	Ðô % TÓ*€KØ˜{Ð*Ð*r\   c           	     óð   — t         j                  r\t        j                  t        j
                  t        j                  j                  t        j                  j                  | ||«      «      S t        d«      ‚)Nz&should be handled in replace_random.py)r)   r'  rý  rþ  r:   ré   r+   rÿ  rœ  Únative_dropoutr’  rv   )r›   ÚpÚtrains      rZ   rJ  rJ  3  sY   € ä×ÒÜ�‰Ü×ÑÜ×Ñ×$Ñ$¤T×%8Ñ%8×%@Ñ%@À!ÀQÈÓNó
ð 	
ô
 ÐEÓFÐFr\   c                óx  — t         j                  s-| j                  «       t        j                  d«      k(  sJ d«       ‚| j                  «        t        |«      dk(  st        |d   t        «      rt        j                  j                  nt        j                  j                  }t        j                  || g|¢­Ž  | S )Nr„  úTthis should be handled in decomps unless config.fallback_random or the device is CPUr   )r)   r'  rc   rp   rk   rd  r¼   r`   r#  rœ  Ú
bernoulli_ÚTensorr+   ÚInplaceBernoulliFallback)r›   ri   r"  s      rZ   rO  rO  >  s“   € ä×!Ò! Q§\¡\£^´u·|±|ÀEÓ7JÒ%Jð Ø^óÐJð ‡I�I„Kô ˆt‹9˜Š>œZ¨¨Q©´Ô7ô 	�‰×Òä�_‰_×#Ñ#ð ô
 ×Ñ ¨QÐ6°Ó6Ø€Hr\   c                ó¦   — t         j                  s-| j                  «       t        j                  d«      k(  sJ d«       ‚t        t        | «      g|¢­Ž S )Nr„  rN  )r)   r'  rc   rp   rk   rO  rw  )r›   ri   s     rZ   Úbernoulli_prS  M  sG   € ä×!Ò! Q§\¡\£^´u·|±|ÀEÓ7JÒ%Jð Ø^óÐJô ”e˜A“hÐ& Ò&Ð&r\   c                ó   — t         ‚r   ©rv   ©rÅ   s    rZ   Ú_foobarrW  V  s   € ä
Ðr\   c                ó.   — t         j                  d«       y )Nz1using triton random, expect difference from eager)r-  Úinfo)Úsalts    rZ   Ú_warn_triton_randomr[  [  s   € ä‡H�HÐ@ÕAr\   c                 óJ   — t        t        j                  j                  «       y r   )r[  rI   rR   Úcreation_timerÜ   r\   rZ   Úwarn_triton_randomr^  `  s   € äœŸ™×-Ñ-Õ.r\   c                 ó¬   — |j                  dd «      �t        | i |¤ŽS t        j                  r|j	                  dd «       t        | i |¤ŽS t        d«      ‚©NÚ	generatorz-should have been handled in replace_random.py)rU  Úfallback_rand_generatorr)   r'  ÚpopÚfallback_rand_defaultrv   ©ri   rà   s     rZ   r;  r;  l  sV   € à‡z�z�+˜tÓ$Ð0Ü&¨Ð7°Ñ7Ð7Ü	×	Ò	Ø�
‰
�; Ô%Ü$ dÐ5¨fÑ5Ð5Ü
ÐHÓ
IÐIr\   c                 ó¬   — |j                  dd «      �t        | i |¤ŽS t        j                  r|j	                  dd «       t        | i |¤ŽS t        d«      ‚r`  )rU  Úfallback_randn_generatorr)   r'  rc  Úfallback_randn_defaultrv   re  s     rZ   Úrandnri  v  sV   € à‡z�z�+˜tÓ$Ð0Ü'¨Ð8°Ñ8Ð8Ü	×	Ò	Ø�
‰
�; Ô%Ü% tÐ6¨vÑ6Ð6Ü
ÐHÓ
IÐIr\   c                ól   — t        j                  |«      }t         j                  j                  | |«      S r   )r+   Úget_stride_orderÚExternKernelÚrequire_stride_order)Úinput_tensorr'  Ústride_orders      rZ   Úinductor_force_stride_orderrp  €  s)   € ä×&Ñ& vÓ.€LÜ�?‰?×/Ñ/°¸lÓKÐKr\   c                ó   — t        d«      ‚)Nz.should be handled in fuse_seed_creation_pass()rU  )rk   s    rZ   Úinductor_seedrr  †  s   € ä
ÐIÓ
JÐJr\   c                óz   — t        «        t        j                  t        j                  | t        |«      «      «      S r   )r^  r:   ré   r+   ÚRandomSeedsr>   )r¡  rk   s     rZ   Úinductor_seedsru  ‹  s)   € äÔÜ×ÑœBŸN™N¨5´-ÀÓ2GÓHÓIÐIr\   c                ó|   ‡ ‡— ˆˆ fd„}t        j                  ‰ j                  «       ‰ j                  «       |g ¬«      S )Nc                óL   •— t        j                  ‰j                  «       ‰«      S r   )rH   Ú	load_seedÚget_name)rÅ   r(  Úseedss    €€rZ   rL  z&inductor_lookup_seed.<locals>.inner_fn“  s   ø€ Ü�}‰}˜UŸ^™^Ó-¨uÓ5Ð5r\   rM  )r7   ré   rc   r°   )rz  r(  rL  s   `` rZ   Úinductor_lookup_seedr{  ‘  s9   ù€ õ6ô ×ÑØ×ÑÓ!Ø�o‰oÓØØô	ð r\   ©rÎ  c               ó’  ‡‡‡	— t         j                  rJ ‚‰dv sJ ‚g | ¢} t        j                  }|j	                  «       }t        j                  ||| t
        j                  j                  | «      |¬«      j                  «       Š|j                  «       Š	ˆˆˆ	fd„}t        j                  |||g | ¢¬«      }|j                  «        |S )N)r;  ri  r|  c                óŽ   •—  t        t        ‰«       ‰g «      t        j                   ‰| «      t        j                  «      «      S r   )r„   rH   r9  rp   r¿  )r(  Úmoder@  rA  s    €€€rZ   rL  z!inductor_random.<locals>.inner_fnª  s7   ø€ Ø!Œw”s˜DÓ!Ù˜‹OÜ�N‰N™: eÓ,¬e¯k©kÓ:ó
ð 	
r\   rM  )r)   r'  rp   rR  r.  r+   r%  rB  rC  rD  rO  r7   ré   rd  )
rñ   rE  r  rÎ  r­   rk   rL  r0  r@  rA  s
     `     @@rZ   Úinductor_randomr€  ž  s¾   ú€ ä×%Ò%Ð%Ð%ØÐ$Ñ$Ð$Ð$ØˆTˆ7€DÜ�M‰M€EØ×%Ñ%Ó'€FÜ—‘Ø��tœR×.Ñ.×AÑAÀ$ÓGÐPVôç�lƒnð ð ×"Ñ"Ó$€Kö
ô ×ÑØØØØ�ˆwô	€Fð ‡N�NÔØ€Mr\   c               óf  ‡ ‡‡‡	— t         j                  rJ ‚g |¢}t        j                  }|j	                  «       }t        j                  |||t
        j                  j                  |«      |¬«      j                  «       Š|j                  «       Š	ˆˆ ˆˆ	fd„}t        j                  |||g |¢¬«      S )Nr|  c           	     ó  •— t        j                   ‰g «      t        j                   ‰| «      t        j                  «      t        j                  ‰t        j
                  «      t        j                  ‰t        j
                  «      «      S r   )rH   Ú	randint64r9  rp   r¿  r:  )r(  ÚhighÚlowr@  rA  s    €€€€rZ   rL  z"inductor_randint.<locals>.inner_fnÇ  sV   ø€ Ü�}‰}Ù˜‹OÜ�N‰N™: eÓ,¬e¯k©kÓ:Ü�N‰N˜3¤§¡Ó,Ü�N‰N˜4¤§¡Ó-ó	
ð 	
r\   rM  )r)   r'  rp   r:  r.  r+   r%  rB  rC  rD  rO  r7   ré   )
r…  r„  rñ   rE  rÎ  r­   rk   rL  r@  rA  s
   ``      @@rZ   Úinductor_randintr†  º  s£   û€ ô ×%Ò%Ð%Ð%ØˆTˆ7€DÜ�K‰K€EØ×%Ñ%Ó'€FÜ—‘Ø��tœR×.Ñ.×AÑAÀ$ÓGÐPVôç�lƒnð ð ×"Ñ"Ó$€K÷
ô ×ÑØØØØ�ˆwô	ð r\   c                ó¸   — | j                  «       | j                  «       d   | j                  «       d   | j                  «       d   z  | j                  «       d   fS ©Nr:  r   )ry  r½   Ú
get_stride©Útbs    rZ   Ú_boundaries_helperrŒ  ×  sO   € à
�‰‹Ø
�‰‹�bÑØ
�‰‹�aÑ˜2Ÿ=™=›?¨1Ñ-Ñ-Ø
�‰‹˜Ñð	ð r\   c                óH   — | j                  «       | j                  «       d   fS rû  )ry  r‰  rŠ  s    rZ   Ú_sorter_helperrŽ  à  s   € Ø�;‰;‹=˜"Ÿ-™-›/¨"Ñ-Ð-Ð-r\   ©Ú	out_int32ÚrightÚsideÚsorterc               ó&  ‡ ‡‡‡	‡
— d„ } |‰ «      r ||«      r
‰�9 |‰«      s1 t        t        j                  j                  d¬«      ‰ ||‰|‰¬«      S |�|dk(  rdŠ|rt        j
                  nt        j                  Š	|j                  «       Š
‰ j                  «        ‰�‰j                  «        t        ‰ j                  «       «      dk(  r
ˆ	ˆˆ ˆˆ
fd„}n	ˆ	ˆˆ ˆˆ
fd	„}|j                  «       }t        j                  |‰	||j                  ¬
«      S )Nc                ó^   — t         j                  j                  | t        j                  «      S r   )rI   rR   ra  rb  Ú	BUCKETIZErŠ  s    rZ   r7  zsearchsorted.<locals>.<lambda>î  s    € ¤A§G¡G×$7Ñ$7Ø
ŒN×$Ñ$ó%€ r\   Fr‰  r�  r‘  Tr(   c           
     óŠ   •—  ‰| «      }t        j                  |t        ‰«      d‰‰‰€d n
t        ‰«      ‰€d ¬«      S d¬«      S )Nr   ©r“  Úsorter_indices©rH   Ú	bucketizerŒ  rŽ  )r   rà  Úindex_dtyper‘  Úsorted_sequencer“  Úvalues_loaders     €€€€€rZ   rL  zsearchsorted.<locals>.inner_fn	  sV   ø€ Ù Ó$ˆCÜ—=‘=ØÜ" ?Ó3ØØØØ%˜~‘t´>À&Ó3IØ'- ~˜tôð ð <=ôð r\   c                ó²   •‡ —  ‰‰ «      }dˆ ˆfd„}t        j                  |t        ‰«       |‰«      ‰‰‰€d n
t        ‰«      ‰€d ¬«      S  |‰«      ¬«      S )Nc                óÂ   •— | j                  «       }t        j                  t        j                  t
        j                  d„ t        |d d ‰d d «      D «       «      ‰«      S )Nc              3  ó,   K  — | ]  \  }}||z  –— Œ y ­wr   rÜ   )r�   rÚ  rh   s      rZ   r‘   zNsearchsorted.<locals>.inner_fn.<locals>.get_flattened_index.<locals>.<genexpr>*	  s   è ø€ Ò&U±°°A q¨1¥uÑ&Uùó   ‚r:  )r‰  rH   r9  r÷   rÎ  Úoperatorr—   rç   )r‹  Ústridesr   rœ  s     €€rZ   Úget_flattened_indexz;searchsorted.<locals>.inner_fn.<locals>.get_flattened_index&	  sU   ø€ ØŸ-™-›/�Ü—~‘~Ü×$Ñ$Ü Ÿ™Ñ&U¼¸WÀSÀb¸\È3ÈsÐPRÈ8Ó9TÔ&Uóð  ó	ð r\   r˜  )r‹  r:   rš  )r   rà  r¥  rœ  r‘  r�  r“  rž  s   `  €€€€€rZ   rL  zsearchsorted.<locals>.inner_fn!	  sh   ù€ Ù Ó$ˆCöô —=‘=ØÜ" ?Ó3Ù# OÓ4ØØØ%˜~‘t´>À&Ó3IØ'- ~˜tôð ñ <OÈvÓ;Vôð r\   rM  )r�  rœ  ÚsearchsortedrP  rp   r¿  r:  rO  rd  r¼   r½   rc   r7   ré   rý  )r�  Úselfr�  r‘  r’  r“  Úvalidate_bucketizerL  rk   rœ  rž  s   `  ` `   @@rZ   r¦  r¦  ä  s  ü€ ñÐñ ˜Ô/Ù! $Ô'ØÐÑ'9¸&Ô'AàTÔ¤× 1Ñ 1× 8Ñ 8ÈeÔTØØØØØØô
ð 	
ð Ð˜D GšOØˆá!*”%—+’+´·±€KØ×$Ñ$Ó&€Mð ×ÑÔàÐØ�‰Ôä
ˆ?×#Ñ#Ó%Ó&¨!Ò+÷
	ñ 
	÷	ð 	ð0 �_‰_Ó€FÜ×ÑØØØØ�z‰zô	ð r\   ©r�  r‘  c               ó^  ‡‡‡‡— t        ‰j                  «       «      dk(  sJ ‚t        j                  j	                  | t
        j                  «      r.t        j                  j	                  ‰t
        j                  «      s/ t        t        j                  j                  d¬«      | ‰|‰¬«      S ‰j                  «        | j                  «       }| j                  «       Š|rt        j                  nt        j                   Šˆˆˆˆfd„}t#        j$                  |‰|| j                  «       ¬«      S )Nr(   Fr‰  r©  c                ó\   •—  ‰| «      }t        j                  |t        ‰«      d‰‰«      }|S rµ  )rH   r›  rŒ  )r(  rà  rÊ  Ú
boundariesrœ  r^  r‘  s      €€€€rZ   rL  zbucketize.<locals>.inner_fn^	  s6   ø€ Ù˜5Ó!ˆÜ—-‘-ØÜ˜zÓ*ØØØó
ˆð ˆr\   rM  )r¼   r½   rI   rR   ra  rb  r–  r�  rœ  r›  rP  rd  rc   rO  rp   r¿  r:  r7   ré   )ri  r¬  r�  r‘  rk   rL  rœ  r^  s    ` `  @@rZ   r›  r›  B	  sé   û€ ô ˆz×"Ñ"Ó$Ó%¨Ò*Ð*Ð*ô 	
�‰×Ñ˜E¤>×#;Ñ#;Ô<Ü�G‰G×Ñ 
¬N×,DÑ,DÔEàQÔ¤§¡× 5Ñ 5È5ÔQØ�:¨¸%ô
ð 	
ð ×ÑÔØ×ÑÓ€FØ×$Ñ$Ó&€Lá!*”%—+’+´·±€K÷
ô ×ÑØØØØ�~‰~Óô	ð r\   c                óŽ   — t        j                  t        j                  t        j                  j
                  ||f«      \  }}||fS r   )rý  Útree_map_onlyr+   r2   rl  Úrequire_stride1©rÅ   ri   rà   s      rZ   Úrequire_denser±  r	  s;   € Ü×'Ñ'Ü
�	‰	”2—?‘?×2Ñ2°T¸6°Nó�L€Dˆ&ð �ˆ<Ðr\   c                óŽ   — t        j                  t        j                  t        j                  j
                  ||f«      \  }}||fS r   )rý  r®  r+   r2   rl  Úrequire_contiguousr°  s      rZ   r³  r³  y	  s;   € Ü×'Ñ'Ü
�	‰	”2—?‘?×5Ñ5¸¸f°~ó�L€Dˆ&ð �ˆ<Ðr\   c                óŽ   — t        j                  t        j                  t        j                  j
                  ||f«      \  }}||fS r   )rý  r®  r+   r2   rl  r´  r°  s      rZ   r´  r´  €	  s;   € Ü×'Ñ'Ü
�	‰	”2—?‘?×8Ñ8¸4À¸.ó�L€Dˆ&ð �ˆ<Ðr\   c           
     ó¸   ‡— ˆfd„Št        ˆfd„t        | |«      D «       «      } |j                  «       D ��ci c]  \  }}| ‰|||   «      “Œ }}}| |fS c c}}w )Nc           	     ó  •— t        | t        j                  «      rm|j                  «       D �cg c]4  }t        |t        j
                  «      r|j                  j                  n|‘Œ6 }}t        j                  j                  | |«      S t        | t        «      r,| j                  «       D �ci c]  }| ‰| |   ||   «      “Œ c}S t        | t        t        f«      r$ t        | «      ˆfd„t        | |«      D «       «      S | S c c}w c c}w )Nc              3  ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wr   rÜ   )r�   rÔ   Úf_aÚapply_constraints      €rZ   r‘   zFconstrain_to_fake_tensors.<locals>.apply_constraint.<locals>.<genexpr>”	  s"   øè ø€ ò Ù-5¨a°Ñ   C×(ñùr’   )r`   r+   r2   r'  rp   ÚSymIntrX   Úexprrl  Úrequire_exact_stridesrù   r  r”   r^   rP  rç   )rÃ   Úfake_argrÚ  Úmeta_stride_exprÚkeyr¹  s        €rZ   r¹  z3constrain_to_fake_tensors.<locals>.apply_constraintˆ	  sñ   ø€ Ü�cœ2Ÿ9™9Ô%ð "Ÿ™Ó*ö àô  *¨!¬U¯\©\Ô:�—‘—’ÀÑAð Ðð  ô —?‘?×8Ñ8¸Ð>NÓOÐOÜ�cœ4Ô àJMÏ(É(Ë*öØCF�Ñ% c¨#¡h°¸±Ó>Ñ>òð ô ˜œe¤T˜]Ô+Ø”4˜“9ó Ü9<¸SÀ(Ó9Kôó ð ð ˆ
ùò ùòs   ®9DÂ+Dc              3  ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wr   rÜ   )r�   rÃ   r½  r¹  s      €rZ   r‘   z,constrain_to_fake_tensors.<locals>.<genexpr>™	  s"   øè ø€ ò Ù,9¨C°Ñ˜˜h×'ñùr’   )r”   rç   rá   )ri   rà   Ú	fake_argsÚfake_kwargsrß   rí   r¹  s         @rZ   Úconstrain_to_fake_tensorsrÃ  ‡	  sj   ø€ ôô" ó Ü=@ÀÀyÓ=Qôó €Dð BHÇÁÃ×P¹¸¸AˆaÑ! ! [°¡^Ó4Ñ4ÐP€FÑPØ�ˆ<Ðùó Qs   ¸Ac           
     óà   ‡— ˆfd„Št        ˆfd„t        || j                  «      D «       «      }|j                  «       D ��ci c]  \  }}| ‰|| j                  |   «      “Œ }}}||fS c c}}w )Nc           	     ó¤  •— t        | t        j                  «      rst        j                  |j                  d   j                  «       t        j                  j                  j                  «      }t        j                  j                  | |«      S t        | t        «      r,| j                  «       D �ci c]  }| ‰| |   ||   «      “Œ c}S | S c c}w ©Nrà  )r`   r+   r2   rk  rT  r'  rI   rR   r  r  rl  rm  rù   r  )rÃ   Úfx_argro  r¿  r¹  s       €rZ   r¹  z1constrain_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ÏHÉHËJÖWÀS�CÑ)¨#¨c©(°F¸3±KÓ@Ñ@ÒWÐWØˆ
ùò Xs   Â1Cc              3  ó6   •K  — | ]  \  }} ‰||«      –— Œ y ­wr   rÜ   )r�   rÃ   rÇ  r¹  s      €rZ   r‘   z*constrain_to_fx_strides.<locals>.<genexpr>«	  s"   øè ø€ ò Ù*5¨#¨vÑ˜˜f×%ñùr’   )r”   rç   ri   rá   rà   ©Úfx_noderi   rà   rß   rí   r¹  s        @rZ   rt   rt    	  ss   ø€ ôô ó Ü9<¸TÀ7Ç<Á<Ó9Pôó €Dð EKÇLÁLÃN×S¹D¸A¸qˆaÑ! ! W§^¡^°AÑ%6Ó7Ñ7ÐS€FÑSØ�ˆ<Ðùó Ts   Á!A*c                óö   ‡ ‡— ˆ fd„Št        ˆfd„t        t        |‰ j                  «      «      D «       «      }|j	                  «       D ��ci c]  \  }}| ‰d|‰ j
                  |   «      “Œ }}}||fS c c}}w )Nc           
     óÔ
  •‡— t        |t        j                  «      s|S |j                  d   }|j	                  «       D �cg c]4  }t        |t
        j                  «      r|j                  j                  n|‘Œ6 }}t        j                  |j	                  «       «      }|r<|d   dk7  r4t        t        t        t        |j                  «       «      «      «      «      }‰j                  t         j"                  j$                  k(  r| dv rt        |«      dk(  sJ ‚d}|j&                  s t        j(                  j+                  ||«      S dŠ‰j                  t
        j,                  j                   j.                  j$                  k(  xr | dk(  }t        |t0        «      sJ ‚t        |j                  «       «      d	vr|S t        j2                  |‰«      r3t        j4                  t        j(                  j7                  |«      |«      S t        |t        «      rY|j9                  «       �It        j2                  |‰«      r3t        j4                  t        j(                  j7                  |«      |«      S |�r¬t        |j                  «       «      }g }	|j9                  «       }
t        t        |j                  «       «      d
z
  «      D ]q  }t:        j<                  j>                  jA                  ||   d«      s1|
€Œ3t:        j<                  j>                  jA                  |
|   d«      sŒa|	jC                  |«       Œs dgt        |«      z  }d
|d<   d
}t        t        |«      dz
  dd«      D ]–  }||d
z      dk7  r|||d
z      z  }||	v r9t:        j<                  j>                  jA                  ||d
z      ‰z  d«      rd||<   ŒVt:        j<                  j>                  jA                  |‰z  d«      stE        |‰«      ‰z  }|||<   Œ˜ t        j(                  jG                  ||«      S t        j2                  |‰«      r3t        j4                  t        j(                  j7                  |«      |«      S t        |t        «      rY|j9                  «       �It        j2                  |‰«      r3t        j4                  t        j(                  j7                  |«      |«      S ˆfd„}t        |jH                  t        jJ                  «      rQ ||«      sI ||jM                  «       «      r3t        j4                  t        j(                  j7                  |«      |«      S t        j(                  j+                  ||«      S c c}w )Nrà  r:  r   )r   r¡   r    )rŸ   r(   r&   r   r¤   rŸ   ©rŸ   r    r(   r&   c                ó„   •— t         j                  j                  j                  | j	                  «       d   «      ‰z  dk(  S rˆ  )rI   rR   r  r÷  r½   )r›   Ú	ALIGNMENTs    €rZ   Ú
is_alignedz=sdpa_constraint.<locals>.apply_constraint.<locals>.is_aligned$
  s4   ø€ Ü—G‘G×$Ñ$×.Ñ.¨q¯z©z«|¸BÑ/?Ó@À9ÑLÐQRÑRÐRr\   )'r`   r+   r2   rT  r'  rp   rº  rX   r»  rk  r^   r  rè   r¼   r½   rV   rœ  Ú0_scaled_dot_product_efficient_attention_backwardr’  Úis_cudarl  rm  rH   Ú'_scaled_dot_product_efficient_attentionr:   Úis_aligned_realized_tensorÚtry_match_insignificant_stridesÚrealize_inputÚmaybe_get_striderI   rR   r  Ústatically_known_equalsrd   r=   r¼  rb   r!  r"  )r   rÃ   rÇ  Úmeta_valrÚ  r¾  ro  Úeffn_attn_fwd_biasrí  Úexpanded_dimsÚmaybe_striderh   Úout_stridesr'  rÐ  rÏ  rÊ  s                  @€rZ   r¹  z)sdpa_constraint.<locals>.apply_constraintµ	  s—  ù€ Ü˜#œrŸy™yÔ)ØˆJà—;‘;˜uÑ%ˆàGOÇÁÓGXö
ØBCœ: a¬¯©Ô6ˆA�F‰F�KŠK¸AÑ=ð
Ðð 
ô ×*Ñ*¨8¯?©?Ó+<Ó=ˆá˜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ä×(Ñ(¨¨iÔ8Ü×5Ñ5Ü—‘×-Ñ-¨cÓ2Ð4Dóð ô
 �sœFÔ#Ø×$Ñ$Ó&Ð2Ü×-Ñ-¨c°9Ô=ä×5Ñ5Ü—‘×-Ñ-¨cÓ2Ð4Dóð ò Ü˜CŸL™L›NÓ+ˆHàˆMð ×/Ñ/Ó1ˆLÜœ3˜sŸ|™|›~Ó.°Ñ2Ó3ò ,�Ü—7‘7×#Ñ#×;Ñ;Ð<LÈQÑ<OÐQRÔSØ Ñ,ÜŸ™×(Ñ(×@Ñ@ÀÈaÁÐRSÕTà!×(Ñ(¨Õ+ð,ð ˜$¤ X£Ñ.ˆKØˆK˜‰OØˆFÜœ3˜x›=¨1Ñ,¨b°"Ó5ò (�Ø˜q 1™uÑ%¨Ò*Ø# h¨q°1©u¡oÑ5�Fð ˜Ñ%Ü—w‘w×'Ñ'×?Ñ?Ø# A¨¡EÑ*¨YÑ6¸ôð *+˜ A™Ø ä—w‘w×'Ñ'×?Ñ?ÀÈÑ@RÐTUÔVÜ$ V¨YÓ7¸)ÑC�Fà!'�˜A’ð!(ô$ —?‘?×8Ñ8¸¸kÓJÐJä×(Ñ(¨¨iÔ8Ü×5Ñ5Ü—‘×-Ñ-¨cÓ2Ð4Dóð ô
 �sœFÔ#Ø×$Ñ$Ó&Ð2Ü×-Ñ-¨c°9Ô=ä×5Ñ5Ü—‘×-Ñ-¨cÓ2Ð4Dóð ô	Sô �c—h‘h¤§¡Ô,Ù˜c”?Ù˜cŸo™oÓ/Ô0Ü×=Ñ=ÜŸ™×5Ñ5°cÓ:Ð<Lóð ô �‰×3Ñ3°C¸ÓFÐFùòi
s   Á 9U%c              3  ó>   •K  — | ]  \  }\  }} ‰|||«      –— Œ y ­wr   rÜ   )r�   r   rÃ   rÇ  r¹  s       €rZ   r‘   z"sdpa_constraint.<locals>.<genexpr>0
  s*   øè ø€ ò áˆC‘�#�vñ 	˜˜c 6×*ñùs   ƒr:  )r”   r_   rç   ri   rá   rà   rÉ  s   `    @rZ   Úsdpa_constraintrß  ²	  s}   ù€ ôyGôv ó ä"+¬C°°g·l±lÓ,CÓ"Dôó €Dð IOÏÉË×WÁÀÀ1ˆaÑ! " a¨¯©¸Ñ):Ó;Ñ;ÐW€FÑWØ�ˆ<Ðùó Xs   Á"A5)r  c                ó”  — |}| j                  «       |j                  «       k7  rt        || j                  «       «      }| j                  «       |j                  «       k7  rt        || j                  «       «      }| j	                  «       |j	                  «       k7  r%t        || j	                  «       «      }t        |«      S t        |«      S r   )rc   r©  r°   rØ   r½   r  rw  )r§  rÖ  r¦  r›   rf   s        rZ   rx  rx    s‘   € à€AØ‡�Ó˜CŸN™NÓ,Ò,Ü�a˜Ÿ™Ó*Ó+ˆØ‡~�~Ó˜3Ÿ=™=›?Ò*Ü�Q˜Ÿ™Ó(Ó)ˆà‡}�}ƒ˜#Ÿ,™,›.Ò(Ü�Q˜Ÿ™›Ó(ˆÜ�S‹zÐÜ�‹8€Or\   )Úmemory_formatc          	     ó¶   — t        j                  | j                  «       | j                  «       | j	                  «       t        | j                  «       «      ¬«      S ©NrM  )r7   ré   rc   r°   rO  r^   r½   )r›   rá  s     rZ   rw  rw    s@   € ô ×ÑØ�|‰|‹~Ø�k‰k‹mØ—‘“Ü�A—J‘J“LÓ!ô	ð r\   c                óð  — g }t        | t        «      r›t        | j                  t        j                  «      rw| j                  } t        | t        j                  «      rF|j                  | j                  «       «       | j                  } t        | t        j                  «      rŒFt        | «      } t        | «      } |r;| j                  } |d d d…   D ]  }t        j                  | |¬«      } Œ t        | «      } | S )Nr:  r  )r`   r:   rb   r+   r&  rd   Ú
get_layoutrw  )r›   Úreinterpret_view_layoutsr   s      rZ   Úclone_preserve_reinterpret_viewrç    sÅ   € Ø!ÐÜ�!”YÔ¤J¨q¯v©v´r×7IÑ7IÔ$JØ�F‰FˆÜ˜œB×.Ñ.Ô/Ø$×+Ñ+¨A¯L©L«NÔ;Ø—‘ˆAô ˜œB×.Ñ.Õ/ô �a‹Lˆäˆa‹€AáØ�F‰FˆØ.©t°¨tÑ4ò 	:ˆFÜ×"Ñ"¨°&Ô9‰Að	:ä�a‹Lˆà€Hr\   r  c               ó\   ‡‡‡— ˆˆˆfd„}t        j                  t        |«      ‰|| g¬«      S )Nc                óD   •— t        j                  ‰| d   z  ‰z   ‰¬«      S )Nr   r¬   ©rH   r9  )r(  r­   r  r  s    €€€rZ   rx   ziota.<locals>.fnA  s!   ø€ Ü�~‰~˜d U¨1¡X™o°Ñ5¸UÔCÐCr\   rM  )r7   ré   r>   )Úlengthr  r  r­   rk   Úrequires_gradrx   s    ```   rZ   Úiotarí  7  s1   ú€ öDô ×ÑÜ˜VÓ$ØØØˆxô	ð r\   c           	     ó
  ‡‡‡‡— | j                  «       |j                  «       k(  sJ ‚| j                  «       Št        | ‰d«      Št        j                  j
                  j                  t        j                  ‰d«      «      r‰| j                  «       ‰   z   Št        j                  j
                  j                  d‰«       t        j                  j
                  j                  ‰| j                  «       ‰   «       t        t        |‰«      | j                  «       «      }|j                  «       Šˆˆˆˆfd„}t        j                  | j!                  «       | j                  «       |t#        | j                  «       «      ¬«      S )Nr   c           	     ó   •— t        j                  t        j                  t        j                  | ‰   t        j
                  «      t        j                  ‰t        j
                  «      «       ‰| «       ‰| «      «      S r   )rH   rÇ  Úeqr9  rp   r¿  )r   rÀ   r(  Ú
src_loaderr  s    €€€€rZ   rL  z select_scatter.<locals>.inner_fnX  sX   ø€ Ü�y‰yÜ�F‰FÜ—‘˜s 3™x¬¯©Ó5Ü—‘˜u¤e§k¡kÓ2óñ �s‹OÙ�S‹Mó
ð 	
r\   rM  )r°   rO  r  rI   rR   r  r  r±   rÊ  r½   rç  rè  r  rü  r7   ré   rc   r^   )r›   rÖ  rÀ   r(  rL  rñ  r  s     `` @@rZ   Úselect_scatterrò  L  s  û€ à�;‰;‹=˜CŸM™M›OÒ+Ð+Ð+Ø�}‰}‹€HÜ
˜˜3 Ó
"€CÜ‡w�w×Ñ×%Ñ%¤e§h¡h¨u°aÓ&8Ô9Ø˜Ÿ
™
› SÑ)Ñ)ˆÜ‡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Ó!ô	ð r\   c           	     óL  ‡ ‡‡‡‡‡‡	‡
— ‰ j                  «       |j                  «       k(  sJ ‚‰ j                  «       Š
t        ‰ ‰d«      Š‰ j                  «       ‰   Št        j
                  j                  ‰ ‰‰‰«      \  ŠŠt        ‰ j                  «       «      }t        ‰‰z
  ‰dz
  z   ‰«      |‰<   t        ||«      }|j                  «       Š	ˆˆˆˆ	ˆˆˆ ˆ
fd„}t        j                  ‰ j                  «       ‰ j                  «       |t        ‰ j                  «       «      ¬«      S )Nr   r(   c                ó  •‡— ‰	dk(  r‰‰k(  r‰
dk(  r ‰| «      S t        j                  | ‰   t        j                  «      }t	        | «      Št        | ‰   ‰	z
  ‰
«      ‰‰<   g }‰	dk7  rZ|j                  t        j                  |t        j                  t        j                  ‰	«      t        j                  «      «      «       ‰‰k7  rZ|j                  t        j                  |t        j                  t        j                  ‰«      t        j                  «      «      «       ‰
dk7  rz|j                  t        j                  t        j                  t        | ‰   ‰	z
  d‰
«      t        j                  «      t        j                  dt        j                  «      «      «       |sJ ‚t        j                  t         j                   |«      }t        j"                  |ˆˆfd„t%        ‰«      rdnd«      }t        j&                  || ‰| «      «      S )Nr   r(   c                 ó   •—  ‰‰ «      S r   rÜ   )Úsrc_idxrñ  s   €€rZ   r7  z1slice_scatter.<locals>.inner_fn.<locals>.<lambda>�  s   ø€ ‘J˜wÓ'€ r\   r8  )rH   r9  rp   r:  r^   r"   rd   r<  r±   r  r=  rð  r%   r;  r÷   rÎ  r>  r?  rµ   rÇ  )r   r@  rE  Úsrc_valrö  rÀ   rë  r  rñ  r  r  r›   r  s       @€€€€€€€€rZ   rL  zslice_scatter.<locals>.inner_fnx  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ó
ð 	
r\   rM  )r°   rO  r  r½   r+   r  Únormalize_start_endr^   r"   r  r7   ré   rc   )r›   rÖ  rÀ   r  r  r  Úsrc_sizerL  rë  rñ  r  s   ` ````  @@@rZ   Úslice_scatterrú  j  sì   ÿ€ à�;‰;‹=˜CŸM™M›OÒ+Ð+Ð+Ø�}‰}‹€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Ü
��hÓ
€CØ—‘Ó"€J÷,
ó ,
ô\ ×ÑØ�|‰|‹~Ø�k‰k‹mØÜ�A—J‘J“LÓ!ô	ð r\   c                ój   — t        | t        t        f«      rt        | «      dkD  rt	        | d   «      S | S rµ  )r`   r^   r”   r¼   Ú_unwrapr´   s    rZ   rü  rü  ®  s-   € Ü�!”dœE�]Ô#¬¨A«°ª
Ü�q˜‘t‹}ÐØ€Hr\   ©r­   rk   r   Ú
pin_memoryc               óî  ‡ ‡— t        |d t        j                  fv d|› �«       t        | d«       t        t	        ‰ «      t
        «      r‰xs t        j                  Šn‰xs t        j                  «       Šg }t        ‰ t        j                  «      rˆ ˆfd„}n»t        ‰ t        t
        f«      rˆ ˆfd„}nžt        ‰ «      dk(  s't        ‰ d   t        t
        f«      rBt        ‰ «      dk  r4|j                  t        j                  t        ‰ «      «      «       ˆ ˆfd„}n5t        j                  j!                  t        j"                  ‰ ‰|¬«      «      S t%        j&                  t)        |«      ‰||¬	«      S )
Núlayout=rþ  c                ó0   •— t        j                  ‰‰«      S r   rê  ©r(  rb   r­   s    €€rZ   rL  ztensor.<locals>.inner_fnÁ  s   ø€ Ü—>‘> $¨Ó.Ð.r\   c                ó0   •— t        j                  ‰‰«      S r   ©rH   r;  r  s    €€rZ   rL  ztensor.<locals>.inner_fnÆ  s   ø€ Ü—<‘<  eÓ,Ð,r\   r   r¤   c                ó„   •‡ ‡— ˆˆˆˆ fd„Št        ‰«      dk(  rt        j                  d‰«      S  ‰dt        ‰«      «      S )Nc           	     ój  •— | |k  sJ ‚|| z
  dk(  rt        j                  ‰|    ‰«      S || z
  dz  | z   }t        j                  t        j                  t        j                  ‰d   t
        j                  «      t        j                  |t
        j                  «      «       ‰| |«       ‰||«      «      S )Nr(   r&   r   )rH   r;  rÇ  r=  r9  rp   r:  )r  r  ÚmidÚbinary_searchrb   r­   r(  s      €€€€rZ   r  z/tensor.<locals>.inner_fn.<locals>.binary_searchÎ  sž   ø€ Ø˜s’{Ð"�{Ø˜‘; !Ò#ÜŸ<™<¨¨U©°UÓ;Ð;Ø˜U‘{ qÑ(¨5Ñ0�Ü—y‘yÜ—F‘FÜŸ™ u¨Q¡x´·±Ó=ÜŸ™ S¬%¯+©+Ó6óñ " %¨Ó-Ù! # sÓ+óð r\   r   )r¼   rH   r;  )r(  r  rb   r­   s   `@€€rZ   rL  ztensor.<locals>.inner_fnÍ  s7   ú€ ÷ô �4‹y˜AŠ~Ü—|‘| A uÓ-Ð-Ù  ¤C¨£IÓ.Ð.r\   r  rM  )rŒ   rp   Ústridedr`   rü  rª   r:  Úget_default_dtyper±   r»   r#  r¼   rd   ÚIntegerrI   rR   Úadd_tensor_constantr6  r7   ré   r>   )rb   r­   rk   r   rþ  rK  rL  s   ``     rZ   r6  r6  ´  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Ó$ØØØô	ð r\   c                óz   — t        | t        «      r|�t        | |«      } |�t        | |«      } | S t	        | ||¬«      S )Nr  )r`   r:   rØ   r©  r6  )rb   r­   rk   s      rZ   Ú	as_tensorr  í  sD   € ä�$œ	Ô"ØÐÜ˜D %Ó(ˆDØÐÜ˜T 6Ó*ˆDØˆÜ�$˜e¨FÔ3Ð3r\   c                ó8   — t        | t        j                  ¬«      S rP  r5  )rb   s    rZ   Úlong_tensorr  ø  s   € ä�$œeŸk™kÔ*Ð*r\   c                óô  — ddl m}  |t        j                  j                  j
                  t        j                  j                  j                  d   «      }|€J ‚t        |«      dk(  sJ |«       ‚t        t        |j                  «       «      «      \  }}t        j                  ||| «      }t        j                  j                  |«      |_        t        j                  j!                  |«       t        j                  j                  j                  d   }t#        |t$        j&                  t$        j(                  t$        j*                  f«      r|j,                  j.                  S t1        j2                  |«      S )Nr   )Úresolve_unbacked_bindingsÚunbacked_bindingsr(   rà  )rö  r  rI   rR   r  r  rS   rT  r¼   r-  Úiterrá   r+   ÚDynamicScalarÚregister_bufferrÎ   Úregister_operationr`   rp   rº  ÚSymFloatÚSymBoolrX   r»  r±   rô  )rb   r  r  Úbinding_symÚkeypathÚbufferrà  s          rZ   Ú_local_scalar_denser  ý  s  € åOñ 2Ü	�‰×Ñ×"Ñ"¤A§G¡G×$8Ñ$8×$=Ñ$=Ð>QÑ$RóÐð Ð(Ð(Ð(ÜÐ Ó! QÒ&Ð9Ð(9Ó9Ð&ô   ¤Ð%6×%<Ñ%<Ó%>Ó ?Ó@Ñ€K�Ü×Ñ˜k¨7°DÓ9€FÜ—'‘'×)Ñ)¨&Ó1€F„KÜ‡G�G×Ñ˜vÔ&ô �'‰'×
Ñ
×
#Ñ
# EÑ
*€CÜ�#œŸ™¤e§n¡n´e·m±mÐDÔEØ�x‰x�}‰}Ðä�}‰}˜SÓ!Ð!r\   c                 ó   — y r   rÜ   )rb   r‹   s     rZ   Ú_assert_scalarr  ,  s   € ð r\   )rk   r   c                ó   — y r   rÜ   )rÔ   rñ   r'  r­   rk   r   s         rZ   Ú_assert_tensor_metadatar!  5  s   € ð r\   c                óŽ  ‡‡‡— | Št        | t        t        f«      st        ‰d«      r‰j                  Št        ‰t        t        f«      rˆˆfd„}nTt        ‰t
        j                  «      rˆˆfd„}n3t        ‰j                  «       «      dk(  sJ ‚‰j                  «       Šˆfd„}t        j                  |‰|t        |«      ¬«      S )Nr×   c                ó0   •— t        j                  ‰‰«      S r   r  ©r(  r­   r×   s    €€rZ   rL  z_full.<locals>.inner_fnC  s   ø€ Ü—<‘<  uÓ-Ð-r\   c                ó0   •— t        j                  ‰‰«      S r   rê  r$  s    €€rZ   rL  z_full.<locals>.inner_fnH  s   ø€ Ü—>‘> %¨Ó/Ð/r\   r   c                ó   •—  ‰g «      S r   rÜ   )r(  Úvalue_loaders    €rZ   rL  z_full.<locals>.inner_fnO  s   ø€ Ù Ó#Ð#r\   rM  )r`   rª   r#  rÓ   r×   r±   r»   r¼   r½   rO  r7   ré   r^   )Ú
fill_valuerk   r­   rñ   rL  r×   r'  s     `  @@rZ   Ú_fullr)  <  s¤   ú€ Ø€EÜ�j¤3¬ ,Ô/´G¸EÀ7Ô4KØ—‘ˆä�%œ#œu˜Ô&ö	.ô 
�Eœ5Ÿ;™;Ô	'ö	0ô �5—>‘>Ó#Ó$¨Ò)Ð)Ð)Ø×(Ñ(Ó*ˆô	$ô ×ÑØØØÜ�D‹zô	ð r\   c                ó8   —  t        t        |«      «      | fi |¤ŽS r   ©Úcreate_tensor_likeÚtensor_constructor)r›   r(  rà   s      rZ   rå  rå  Z  s    € à=ÔÔ0°Ó<Ó=¸aÑJÀ6ÑJÐJr\   c                ó"   ‡ — d d d d dd dœˆ fd„
}|S )NF)Únamesr­   rk   r   rþ  rá  c                óú  •— t        | d u d«       t        |d t        j                  fv d|› �«       t        | d«       t        |«      }|xs t        j                  «       }t        |«      dk(  r6t        |d   t        t        t        j                  f«      rt        |d   «      }|D ]  }t        |t        j                  «      sŒJ ‚ |D �cg c]  }t        j                  |«      ‘Œ }}t        ‰|||«      S c c}w )Núnamed tensorsr   rþ  r(   r   )rŒ   rp   r	  r>   r
  r¼   r`   r^   r”   ÚSizerº  r±   r  r)  )	r/  r­   rk   r   rþ  rá  rñ   rÚ  r(  s	           €rZ   rZ  z!tensor_constructor.<locals>.innera  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Ü˜˜a™“>ˆDð ò 	3ˆAÜ! !¤U§\¡\Õ2Ð2Ð2ð	3à)-Ö. A”—‘˜Q•Ð.ˆÐ.Ü�Z ¨°Ó5Ð5ùò /s   ÃC8rÜ   )r(  rZ  s   ` rZ   r-  r-  _  s#   ø€ ð ØØØØØö6ð. €Lr\   )r/  r­   r   rk   rþ  rá  c                óÞ   — t        | d u d«       t        |«      }t        |«      dk(  r6t        |d   t        t
        t        j                  f«      rt        |d   «      }t        |d ||||¬«      S )Nr1  r(   r   ©r­   r   rk   rþ  )	rŒ   r>   r¼   r`   r^   r”   rp   r2  Úempty_strided)r/  r­   r   rk   rþ  rá  rñ   s          rZ   r  r  {  sf   € ô ˆu˜ˆ}˜oÔ.Ü˜6Ó"€FÜ
ˆ4ƒy�A‚~œ* T¨!¡W¬t´U¼E¿J¹JÐ.GÔHÜ�T˜!‘W‹~ˆÜØˆd˜%¨°vÈ*ôð r\   c                ó    ‡ — ddddddœˆ fd„
}|S )zZ
    Shim to convert X_like(...) into X(...).  For example zeros_like() into zeros().
    NF)r­   rk   r   rþ  rá  c               ó  •— t        | d«       t        |d t        j                  fv d|› �«       |€| j                  «       }nt	        |«      }|xs | j                  «       }t        | j                  «       «      } ‰|||||¬«      S )Nrþ  r   rý  )rŒ   rp   r	  r°   r®   rc   r^   r½   )r›   r­   rk   r   rþ  rá  rñ   Úcreation_fns          €rZ   Ú_constant_likez*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°VÈ
ô
ð 	
r\   rÜ   )r8  r9  s   ` rZ   r,  r,  Ž  s   ø€ ð  ¨d¸uÐTXö
ð Ðr\   c                ó*   — t        t        | «      «      S r   r+  )r(  s    rZ   rÉ  rÉ  ¥  s   € ÜÔ0°Ó<Ó=Ð=r\   c                ó   ‡ — d d d d dœˆ fd„
}|S )Nr4  c               ón  •— t        |t        t        f«      sJ ‚t        | d«       t        |d t        j
                  fv d|› �«       t        |«      xs | j                  «       }|xs | j                  «       }|D �cg c]  }t        j                  |«      ‘Œ }}t        ‰t        |«      ||«      S c c}w )Nrþ  r   )r`   r^   r”   rŒ   rp   r	  r®   r°   rc   r±   r  r)  r>   )r›   rñ   r­   r   rk   rþ  rÚ  r(  s          €rZ   Ú_new_constantz#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¸¸tÓDÐDùò 0s   Á=B2rÜ   )r(  r=  s   ` rZ   Únew_constantr>  ®  s   ø€ à t°DÀTö	Eð Ðr\   r4  c          	     ó~   — |€| j                  «       }|€| j                  «       }t        |d ||t        |«      |¬«      S ©Nr4  ©r°   rc   r5  r>   )r›   rñ   r­   r   rk   rþ  s         rZ   Ú	new_emptyrB  ½  sF   € à€}Ø—‘“ˆØ€~Ø—‘“ˆÜØØØØÜ˜VÓ$Øôð r\   c               ó˜  — t        | t        t        f«      sJ ‚t        |t        t        t        d «      f«      sJ ‚t	        | d«       t	        |d t
        j                  fv d|› �«       t        |«      xs t        j                  «       }|xs t        j                  d«      j                  }t        |«      }t        d||| ¬«      }|j                  «        |j                  j                  }t        j                   |j                  dgt#        | «      z  ¬«      |_        t        |t$        j&                  «      sJ ‚| D �cg c]  }t)        j*                  |«      ‘Œ } }|r#|D �cg c]  }t)        j*                  |«      ‘Œ c}nt$        j,                  j/                  | «      }t%        j0                  ||| |¬«      |_        |S c c}w c c}w )Nrþ  r   r8  r   )r(  rk   r­   rñ   )rK  )rk   r­   rñ   r'  )r`   r^   r”   rP  rŒ   rp   r	  r®   r
  r6  rk   r>   r)  rd  rb   ÚdataclassesÚreplacer¼   r+   rŽ  r±   r  rB  rC  r%  r   )	rñ   r'  r­   r   rk   rþ  Ú	pointwiser  rÚ  s	            rZ   r5  r5  Í  s{  € ô �dœT¤5˜MÔ*Ð*Ð*Ü�fœt¤U¬D°«JÐ7Ô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Ø%)Ö* ŒE�L‰L˜�OÐ*€DÐ*ñ ð #)Ö)˜QŒ�‰�a�Ó)ä×Ñ×1Ñ1°$Ó7ð ô
 —N‘NØØØØô	€F„Mð Ðùò +ùâ)s   Å GÅ$Gc          	     ó~   — |€| j                  «       }|€| j                  «       }t        ||||t        |«      |¬«      S r@  rA  )r›   rñ   r'  r­   r   rk   rþ  s          rZ   Únew_empty_stridedrH  í  sH   € ð €}Ø—‘“ˆØ€~Ø—‘“ˆÜØØØØÜ˜VÓ$Øôð r\   c                ó
  — |D �cg c]+  }t         j                  j                  j                  |«      ‘Œ- }}t	        t        t        |«      «      |j                  ¬«      }t        j                  j                  | |«      S c c}w )N)r¿  )rI   rR   r  r÷  Úsortedrè   r¼   Ú__getitem__r+   rl  rm  )r›   r'  rÚ  ro  s       rZ   Úcopy_stridedrL  ÿ  sa   € à5;Ö<°Œa�g‰g×Ñ×(Ñ(¨Õ+Ð<€FÐ<Üœ%¤ F£Ó,°&×2DÑ2DÔE€LÜ�?‰?×/Ñ/°°<Ó@Ð@ùò =s   …0B c                óV   — |j                  d«      €J d«       ‚ t        |«      | fi |¤ŽS )Nr­   z(dtype should be handled by decomposition)rU  r-  )rñ   r(  rà   s      rZ   ÚfullrN    s5   € à�:‰:�gÓÐ*ÐVÐ,VÓVÐ*Ø)Ô˜jÓ)¨$Ñ9°&Ñ9Ð9r\   c                ó  ‡‡‡‡— t        | t        «      sJ ‚|j                  «       dk(  rt        | |j	                  «       «      S |j                  «       t        j                  k(  sJ ‚| j	                  «       Št        ‰«      dk(  }t        | ‰|«      Š|rt        | dg«      } dgŠ| j                  «       Š|j                  «       Šˆˆˆˆfd„}t        j                  | j                  «       | j                  «       ||j	                  «       ¬«      S )Nr   r(   c                ó–   •— t        | «      } t        j                   ‰| «      ‰‰   «      }t        | «      dk(  r|g} n|| ‰<    ‰| «      S rµ  )r^   rH   Úindirect_indexingr¼   )r   Ú
gather_idxrÀ   Úindex_loaderrñ   r  s     €€€€rZ   rx   zgather.<locals>.fn!  sL   ø€ Ü�3‹iˆÜ×*Ñ*©<¸Ó+<¸dÀ3¹iÓHˆ
Üˆs‹8�qŠ=Ø�,‰Cà!ˆC�‰HÙ˜‹}Ðr\   rM  )r`   r:   Ú	get_numelrB  r½   r°   rp   r:  r¼   r  r  rO  r7   ré   rc   )	r›   rÀ   r(  Úsparse_gradrÎ  rx   rS  rñ   r  s	    `    @@@rZ   ÚgatherrV    sà   û€ ô �aœÔ#Ð#Ð#Ø‡�Ó˜AÒä˜˜EŸN™NÓ,Ó-Ð-à�?‰?Ó¤§¡Ò+Ð+Ð+Ø�:‰:‹<€DÜ�‹Y˜!‰^€FÜ
˜˜3 Ó
'€CáÜ�1�q�c‹NˆØˆsˆà�}‰}‹€HØ×$Ñ$Ó&€L÷ô ×ÑØ�|‰|‹~Ø�k‰k‹mØØ�~‰~Óô	ð r\   c                óÒ  ‡‡‡‡	‡
— |rJ ‚t        | t        «      sJ ‚t        |t        «      sJ ‚dt        |j                  «       «      v sJ ‚| j	                  «       Š	|j	                  «       Št        |j                  «       «      Š| j                  «       Š
g |j                  «       ¢‰
dd  ¢Šˆˆˆˆ	ˆ
fd„}t        j                  | j                  «       | j                  «       |‰¬«      S )Nrª   r(   c                ó´   •— t        | «      t        ‰«      k(  sJ | › d‰› �«       ‚ ‰| d ‰ «      }t        j                  |‰d   «      gg | ‰d  ¢z   } ‰|«      S )Nz != r   )r¼   rH   rQ  )r   Ú	var_indexÚ
weight_idxÚindices_loaderÚindices_ndimr  Úweight_loaderÚweight_sizes      €€€€€rZ   rx   zembedding.<locals>.fn?  s{   ø€ Ü�3‹xœ3˜x›=Ò(Ð@¨S¨E°°h°ZÐ*@Ó@Ð(Ù" 3 }¨Ð#5Ó6ˆ	Ü×+Ñ+¨I°{À1±~ÓFÐGð K
Ø��ÐðK
ñ 
ˆ
ñ ˜ZÓ(Ð(r\   rM  )
r`   r:   Ústrr°   rO  r¼   r½   r7   ré   rc   )ÚweightrÊ  Úpadding_idxÚscale_grad_by_freqÚsparserx   r[  r\  r  r]  r^  s         @@@@@rZ   Ú	embeddingrd  2  sÝ   ü€ áÐˆ:Ü�fœiÔ(Ð(Ð(Ü�gœyÔ)Ð)Ð)Ø”C˜×)Ñ)Ó+Ó,Ñ,Ð,Ð,à×&Ñ&Ó(€MØ×(Ñ(Ó*€NÜ�w×'Ñ'Ó)Ó*€LØ—/‘/Ó#€KØ6�×!Ñ!Ó#Ð6 k°!°" oÐ6€H÷)ð )ô ×ÑØ× Ñ Ó"Ø×ÑÓ ØØô	ð r\   c           
     ó  — t        d„ | D «       «      s)J d| D �cg c]  }|€Œ|j                  «       ‘Œ c}› �«       ‚t        d„ | D «       «      rt        d«      ‚t	        | «      D ��cg c]  \  }}t        |t        «      sŒ|‘Œ }}}t        |«      dkD  sJ d«       ‚d gt        | «      z  }t        |t        |D �cg c]  }| |   ‘Œ	 c}Ž «      D ](  \  }}|j                  «       |k7  rt        d«      ‚|||<   Œ* ||fS c c}w c c}}w c c}w )Nc              3  ó¼   K  — | ]T  }|�P|j                  «       t        j                  t        j                  t        j                  t        j
                  fv –— ŒV y ­wr   )r°   rp   r:  r¿  r·   r‡  ©r�   rh   s     rZ   r‘   z.check_and_broadcast_indices.<locals>.<genexpr>P  sA   è ø€ ò àØˆ=ð 	
�‰‹œ%Ÿ+™+¤u§{¡{´E·J±JÄÇÁÐLÔLñùs   ‚AAz)indices must be int64, byte or bool. Got c              3  ó‚   K  — | ]7  }|€Œ|j                  «       t        j                  t        j                  fv –— Œ9 y ­wr   )r°   rp   r·   r‡  rg  s     rZ   r‘   z.check_and_broadcast_indices.<locals>.<genexpr>W  s1   è ø€ ò Ø78ÀqÁ}ˆ�‰‹œ%Ÿ*™*¤e§k¡kÐ2Ô2ñùs   ‚?Š5?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‰   r_   r`   r:   r¼   rç   rä   rc   )rÊ  rk   rh   r›   Ú
valid_idxsÚnew_indicess         rZ   Úcheck_and_broadcast_indicesrk  O  s/  € Üñ àôô ð ð
 4ÈGÖ4eÀqÐWXÑWd°Q·[±[µ]Ò4eÐ3fÐgóð ô ñ Ø<Côô ô "Ð"=Ó>Ð>ä )¨'Ó 2×O™˜˜1´jÀÄIÕ6N’!ÐO€JÑOÜˆz‹?˜QÒÐDÐ DÓDÐØ�&œ3˜w›<Ñ'€KÜ�JÔ 1È
Ö3SÀ1°G¸A³JÒ3SÐ TÓUò ‰ˆˆ1ð �<‰<‹>˜VÒ#Ü%Ð&VÓWÐWØˆ�AŠðð ˜
Ð"Ð"ùò# 5fùó Pùò 4Ts   ™C=¡C=Á'DÂ DÂ:Dc	           
     óH  ‡‡‡‡‡‡‡‡‡‡— dŠt        ‰‰dd  «      D ]  \  }	}
|
|	z
  dk7  sŒdŠŒ t        ‰«      D ��cg c]  \  }}|�Œ	| |   ‘Œ c}}Šg ‰¢| t        ‰«      t        ‰«      z   d  ¢Š‰d   }‰r‰‰z   Šn‰d | ‰z   ‰|d  z   Šˆˆˆˆˆˆˆˆˆˆf
d„}‰|fS c c}}w )NFr(   Tr   c                óè  •
— t        | «      t        ‰«      k(  sJ ‚t        ‰«      t        ‰
«      k(  sJ ‚t        ‰«      }g }‰d   }‰rdn|}d}t        ‰d   dz   «      D ]}  }||k(  r||z  }‰|   €*|t        | «      k  sJ ‚|j                  | |   «       |dz  }Œ<‰|   }|€J ‚‰
|   }|j                  t        j                   || |||z    «      |‰	‰¬«      «       Œ g |¢| |d  ¢}‰€|S  ‰|«      S )Nr   r:  r(   ©r   Úwrap_neg)r¼   rè   rd   rH   rQ  )r   r¾  Ú	new_indexÚfirst_tensor_indexÚstart_offsetÚnext_idxrh   Úloaderrñ   r   Úindexed_sizerÊ  Úindices_loadersÚnon_consecutive_tensorsÚoutput_sizeÚtensor_indicesÚtensor_sizero  r  s            €€€€€€€€€€rZ   rx   z*index_output_size_and_inner_fn.<locals>.fn�  sN  ø€ Ü�3‹xœ3˜{Ó+Ò+Ð+Ð+Ü�?Ó#¤s¨<Ó'8Ò8Ð8Ð8ä�;ÓˆØˆ	Ø+¨AÑ.ÐÙ3‘qÐ9KˆØˆÜ�~ bÑ)¨AÑ-Ó.ò 	ˆAØ�LÒ Ø˜DÑ �Ø�q‰zÐ!Ø¤# c£(Ò*Ð*Ð*Ø× Ñ   X¡Ô/Ø˜A‘‘à(¨Ñ+�ØÐ)Ð)Ð)Ø# A‘�Ø× Ñ Ü×)Ñ)Ù˜s <°,ÀÑ2EÐFÓGØØ#Ø!)ô	õð	ð&
Øð
à��ˆ^ð
ˆ	ð %Ð,ˆyÐE±(¸9Ó2EÐEr\   )rç   r_   r¼   )rÝ  rÊ  ry  rz  rv  ru  r  r   ro  ÚpreviousÚcurrentrh   rà  rq  rx   rw  rx  s    ````````      @@rZ   Úindex_output_size_and_inner_fnr}  i  sî   ÿù€ ð$ $ÐÜ  °ÀÀÐ1CÓDò +Ñˆ�'Ø�XÑ Ó"Ø&*Ñ#ð+ô ,5°WÓ+=×M¡  CÀÁ�6˜!“9ÓM€KØS�KÐS &¬¨[Ó)9¼CÀÓ<OÑ)OÐ)QÐ"RÐS€Kà'¨Ñ*ÐÙØ! KÑ/‰ð Ð+Ð+Ð,ØñàÐ,Ð-Ð.ñ/ð 	÷ Fõ  FðD ˜ˆ?Ðùó_ Ns   ½
BÁBc                óŽ   — t        | ||«      \  }}}t        j                  | j                  «       | j	                  «       ||¬«      S rã  )Úindex_impl_helperr7   ré   rc   r°   )r›   rÊ  r   rx  rL  rÅ   s         rZ   Ú
index_implr€  ²  sB   € Ü0°°G¸UÓCÑ€K�˜1ä×ÑØ�|‰|‹~Ø�k‰k‹mØØô	ð r\   c                ó‚  ‡‡— t        |t        t        f«      sJ ‚| j                  «       Št	        || j                  «       «      \  }}t        |«      dkD  sJ d«       ‚|D �cg c]  }|�|j                  «       nd ‘Œ }}t        ||d      j                  «       «      }| j                  «       }t        t        |«      «      D �cg c]  }||   €Œ	||   ‘Œ }	}|rd|	v rd|vrt        d«      ‚t        t        |«      «      D �cg c]  }||   ‘Œ	 }	}t        ||||||	d ||¬«	      \  }
Šˆˆfd„}|
|‰fS c c}w c c}w c c}w )Nr   z Must have at least one valid idxz0index is out of bounds for dimension with size 0rn  c                ó    •—  ‰ ‰| «      «      S r   rÜ   )r   Úindex_inner_fnr  s    €€rZ   rL  z#index_impl_helper.<locals>.inner_fnÜ  s   ø€ Ù™ sÓ+Ó,Ð,r\   )r`   r^   r”   rO  rk  rc   r¼   r½   rè   Ú
IndexErrorr}  )r›   rÊ  r   ro  ry  rh   rv  rz  rÝ  ru  rx  rL  rƒ  r  s               @@rZ   r  r  ½  sS  ù€ Ü�g¤¤e˜}Ô-Ð-Ð-Ø�}‰}‹€HÜ9¸'À1Ç<Á<Ã>ÓRÑ€Gˆ^Üˆ~Ó Ò"ÐFÐ$FÓFÐ"àKRÖSÀa¨!¨-�q—}‘}”¸TÑAÐS€OÐSô �w˜~¨aÑ0Ñ1×:Ñ:Ó<Ó=€Kà�Z‰Z‹\€Fä',¬S°«\Ó':ÖU !¸gÀa¹jÑ>T�F˜1“IÐU€LÐUÙ��lÑ" q°Ñ';ÜÐKÓLÐLä',¬S°«\Ó':Ö; !�F˜1“IÐ;€LÐ;Ü"@ØØØØØØØØØô
#Ñ€K�õ-ð ˜ .Ð0Ð0ùò9 Tùò Vùò <s   Á!D2Ã
D7ÃD7ÄD<c                ó¶   — 	 t        | |d¬«      S # t        $ r? | j                  «         t        t        j
                  j                  d¬«      | |«      cY S w xY w)NT©r   Fr‰  )r€  r‰   rd  r�  rœ  r(  rP  ©r›   rÊ  s     rZ   r(  r(  â  sT   € ð
Ü˜!˜W¨DÔ1Ð1øÜò 
à	�	‰	ŒØMÔ¤§
¡
× 1Ñ 1ÀuÔMØˆwó
ò 	
ð
ús   ‚ �AAÁAc                ó   — t        | |d¬«      S )NFr†  )r€  r‡  s     rZ   Ú_unsafe_indexr‰  î  s   € ä�a˜¨Ô.Ð.r\   c                ó6   — t        t        | «      |||dd¬«      S )NTF©r   Úmay_realize©Úindex_put_impl_rw  ©r›   rÊ  rã   Ú
accumulates       rZ   Ú	index_putr‘  û  s    € äÜˆa‹�'˜6 :°TÀuôð r\   c                ó6   — t        t        | «      |||dd¬«      S )NFr‹  r�  r�  s       rZ   Ú_unsafe_index_putr“    s    € äÜˆa‹�'˜6 :°UÈôð r\   c                óÈ   — |j                  «       | j                  «       k7  rt        || j                  «       «      }|rt        | |«      }t        | t	        |d   || «      «      S rµ  )rc   r©  r—   rÕ  rÇ  )r§  rÊ  r×   r�  s       rZ   Úindex_put_as_masked_fillr•  	  sV   € Ø×ÑÓ˜TŸ_™_Ó.Ò.Ü˜% §¡Ó!2Ó3ˆÙÜ�D˜%Ó ˆÜ�Tœ5 ¨¡¨U°DÓ9Ó:Ð:r\   c                ór  — t        j                  «       }t        |«      r\|s|rX|sdnd}t        j                  j
                  j                  j                  dd «      x}r|› d|› �}|t        j                  _        t        j                  t        j                  j
                  j                  | |||«       | S )Nzindex put with accumulate.zdeterministic index put.Ústack_traceú Found from : 
 )rp   Ú$are_deterministic_algorithms_enabledr3   rI   rR   rS   rT  rU  Údisable_cudagraphs_reasonr+   ÚIndexPutFallbackrV   )r§  rÊ  rã   r�  Údeterministicr‹   r—  s          rZ   Úindex_put_fallbackr�    s    € Ü×>Ñ>Ó@€MÜ�Ô™j©Mñ !ñ )à+ð 	ô
 Ÿ'™'×.Ñ.×3Ñ3×7Ñ7¸ÀtÓLÐLˆ;ÐLØ�EÐ*¨;¨-Ð8ˆCØ,/Œ�‰Ô)ä×ÑœŸ™×,Ñ,×3Ñ3°T¸7ÀFÈJÔWØ€Kr\   c                ó$   — t        | |||dd¬«      S )NTr‹  ©rŽ  ©r§  rÊ  rã   r�  s       rZ   Ú
index_put_r¡  !  s   € äØˆg�v˜z°À4ôð r\   c                ó$   — t        | |||dd¬«      S )NFTr‹  rŸ  r   s       rZ   Ú_unsafe_index_put_r£  (  s   € äØˆg�v˜z°ÀDôð r\   c           
     ób  ‡— |rBd„ }d„ Š || «      |j                  «       v r$t        ˆfd„|D «       «      s|j                  «        |j                  «       dk(  r t	        |«      dk(  r’|d   j                  «       t        j                  t        j                  fv r_|d   }t        t	        |j                  «       «      t	        | j                  «       «      «      D ]  }t        |d«      }Œ t        | |g||«      S t        j                  «       rt        | |||«      S |D ]E  }	|	€Œ|	j                  «       t        j                  t        j                  fv sŒ7t        | |||«      c S  | j                  «       }
t	        |
«      }|rLt        | j                  «       «      r3|dk(  rt!        | dg«      } t        | |||«      } |dk(  rt!        | g «      } | S t#        || j                  «       «      }	 t%        || j'                  «       «      \  }}|D �cg c]  }|�|j+                  «       nd ‘Œ }}t-        | t.        «      sJ ‚| j                  «        |dk(  rt!        | dg«      } t1        ||d      j                  «       «      }t        t	        |«      «      D �cg c]  }|
|   ‘Œ	 }}t3        |
|||||d |¬«      \  }}t5        ||«      }t7        j8                  | j'                  «       | j                  «       |j+                  «       |||rdnd ¬	«      }t7        j:                  d t7        j<                  | «      |¬
«      }t>        j@                  jC                  |«      |_"        t>        j@                  jG                  |«       |dk(  rt!        | g «      } | S # t(        $ r t        | |||«      cY S w xY wc c}w c c}w )Nc                óF  — t        | t        j                  «      r| j                  } t        | t        j                  «      r| j                  «       } t        | t        j                  «      r| j                  } t        | t        j                  «      r| j                  «       S d S r   )	r`   r+   r:   rb   r!  r"  r‹  ÚBufferry  r´   s    rZ   Útry_get_namez%index_put_impl_.<locals>.try_get_name2  sg   € Ü˜!œRŸ\™\Ô*Ø—F‘F�Ü˜!œRŸ[™[Ô)Ø—M‘M“O�Ü˜!œRŸ]™]Ô+Ø—F‘F�Ü#-¨a´·±Ô#;�1—:‘:“<ÐEÀÐEr\   c                óô  — t        | t        «      rèt        | j                  t        j                  «      rÄ| j                  j                  «       } t        | t        j                  «      xrŽ t        | j                  t        j                  «      xrh t        | j                  dd «      xrO | j                  j                  j                  t        j                  j                  j                  j                  k(  S y)NrÊ  F)r`   r:   rb   r+   r!  r"  r‹  rl  r„   rÊ  rV   rp   rH   rœ  Úrandpermr’  )Úindices    rZ   Úindice_slice_from_randpermz3index_put_impl_.<locals>.indice_slice_from_randperm;  s«   € ô ˜&¤)Ô,´¸F¿K¹KÌÏÉÔ1UØŸ™×0Ñ0Ó2�ä˜v¤r§}¡}Ó5ò VÜ" 6§;¡;´·±Ó@òVä §¡¨Y¸Ó=òVð Ÿ™×+Ñ+×2Ñ2´e·i±i·n±n×6MÑ6M×6UÑ6UÑUð	ð r\   c              3  ó.   •K  — | ]  } ‰|«      –— Œ y ­wr   rÜ   )r�   rª  r«  s     €rZ   r‘   z"index_put_impl_.<locals>.<genexpr>I  s   øè ø€ ò E
Ø39Ñ& v×.ñE
ùr˜  r(   r   r:  r†  Ú
atomic_add©rk   r­   rL  rK  Úoutput_indexerÚscatter_mode©rÎ   r   rb   )$r•  r  rd  rT  r¼   r°   rp   r·   r‡  rè   r½   rü  r•  r™  r�  rC   r�  rØ   rk  rc   r‰   rO  r`   r:   r^   r}  r  r+   ÚScatterrŽ  ÚMutationLayoutSHOULDREMOVErI   rR   r  rÎ   r  )r§  rÊ  rã   r�  r   rŒ  r§  rE  rÅ   r(  rÝ  Úx_ndimry  rh   rv  rz  ru  Úexpected_vals_sizerL  Úscatterr  r«  s                        @rZ   rŽ  rŽ  /  sz  ø€ Ùò	Fò	ñ ˜Ó ×!6Ñ!6Ó!8Ñ8Äó E
Ø=DôE
ô B
ð �N‰NÔð 	×ÑÓ˜aÒÜ�‹L˜AÒØ�A‰J× Ñ Ó"¤u§z¡z´5·;±;Ð&?Ñ?à�q‰zˆÜ”s˜4Ÿ=™=›?Ó+¬S°·±³Ó-AÓBò 	'ˆAÜ˜T 2Ó&‰Dð	'ä'¨¨t¨f°f¸jÓIÐIô ×1Ñ1Ô3Ü! $¨°¸ÓDÐDð ò IˆØÑ §¡Ó!2´u·z±zÄ5Ç;Á;Ð6OÒ!OÜ% d¨G°V¸ZÓHÒHðIð �]‰]‹_€FÜ�‹[€FáÔBÀ4Ç>Á>ÓCSÔTà�QŠ;Ü˜˜q˜c“?ˆDÜ! $¨°¸ÓDˆØ�QŠ;Ü˜˜b“>ˆDØˆä�f˜dŸn™nÓ.Ó/€FðEä"=Ø�T—_‘_Ó&ó#
Ñˆ�ð LSÖSÀa¨!¨-�q—}‘}”¸TÑAÐS€OÐSä�dœIÔ&Ð&Ð&Ø‡L�L„Nð �‚{Ü�D˜1˜#‹ˆô �w˜~¨aÑ0Ñ1×:Ñ:Ó<Ó=€KÜ',¬S°«\Ó':Ö; !�F˜1“IÐ;€LÐ;ä#AØØØØØØØØô	$Ñ Ð˜ô �FÐ.Ó/€Fô �j‰jØ�‰Ó Ø�n‰nÓØ×#Ñ#Ó%Ø!ØÙ%/‘\°Tô€Gô ×ÑØÜ×,Ñ,¨TÓ2Øô€Fô
 —'‘'×)Ñ)¨&Ó1€F„KÜ‡G�G×Ñ˜vÔ&à�‚{Ü�D˜"‹~ˆØ€Køôa ò EÜ! $¨°¸ÓDÒDðEüò Tùò <s   Ç)N
 È
N'ÊN,Î
N$Î#N$r‰  c                óî   ‡‡‡‡‡	— t        | |dd¬«      \  }}Š‰j                  «       Š| j                  «       Š	ˆˆˆˆˆ	fd„}t        j                  | j	                  «       | j                  «       ||¬«      S )NFrn  c                óÞ   •‡ — ‰j                   t        j                  k7  r+t        j                   ‰‰ «      t        j                  «      }n ‰‰ «      }t        j
                  |ˆˆ ˆfd„‰«      S )Nc                 ó    •—  ‰ ‰ ‰«      «      S r   rÜ   )Ú_unsafe_index_fnr   Úself_loaders   €€€rZ   r7  z8_unsafe_masked_index.<locals>.inner_fn.<locals>.<lambda>Ã  s   ø€ ©KÑ8HÈÓ8MÓ,N€ r\   )r­   rp   r·   rH   rØ   r?  )r   Úmask_valrº  ÚfillrE  Úmask_loaderr»  s   ` €€€€€rZ   rL  z&_unsafe_masked_index.<locals>.inner_fn¾  sK   ù€ Ø�:‰:œŸ™Ò#Ü—|‘|¡K°Ó$4´e·j±jÓA‰Há" 3Ó'ˆHÜ�z‰z˜(Õ$NÐPTÓUÐUr\   rM  )r  rO  r7   ré   rc   r°   )
r§  rE  rÊ  r½  rK  rÅ   rL  rº  r¾  r»  s
    ` `   @@@rZ   Ú_unsafe_masked_indexr¿  ¶  sw   ü€ ä"3Øˆg˜U¨Uô#Ñ€FˆAÐð ×"Ñ"Ó$€KØ×"Ñ"Ó$€K÷Vð Vô ×ÑØ�‰Ó Ø�n‰nÓØØô	ð r\   c           	     óä   — t        ||d«      }| j                  «       }t        t        |«      «      D �cg c]#  }||   rt	        ||   ||    ||   dz
  «      nd ‘Œ% }}t        | ||d¬«      S c c}w )Nr   r(   T)r�  )rÇ  r½   rè   r¼   r  r“  )r›   rE  rÊ  rã   Úmasked_valuerý  rh   Úclamped_indicess           rZ   Ú#_unsafe_masked_index_put_accumulaterÃ  Í  s�   € ä˜˜v qÓ)€LØ�J‰J‹L€Eô ”s˜7“|Ó$öàð 7>¸a²jŒˆg�a‰j˜5 ™8˜) U¨1¡X°¡\Ô2ÀdÑJð€Oð ô ˜Q °È$ÔOÐOùòs   ´(A-c                óV   — t        j                  |t        j                  || «      «      S r   )rH   rT  rU  ©rÔ   ÚminÚmaxs      rZ   r  r  Ú  s   € ä�;‰;�sœCŸK™K¨¨QÓ/Ó0Ð0r\   c                óP   — t        | «      }t        ||||«      }t        ||«       |S r   )rw  r,  Úcopy_)r§  rÖ  rñ   r'  r(  r  Úoutput_views          rZ   Úas_strided_scatterrË  ß  s*   € ä�4‹[€FÜ˜V T¨6°>ÓB€KÜ	ˆ+�sÔØ€Mr\   c                ó2   — t        t        | «      |||fi |¤ŽS r   )Úscatter_rw  )r›   rÀ   r(  rÖ  rà   s        rZ   r¶  r¶  ç  s   € ä”E˜!“H˜c 5¨#Ñ8°Ñ8Ð8r\   ©rÎ  Úinclude_selfc               ó:  — t        |t        «      }t        | ||j                  «       t	        t
        j                  |r|j                  «       n
t        |«      «      |r|j                  «       j                  nd|«      rt        j                  | ||||||¬«       |S y )Nznot implrÎ  )r`   r:   rG   r°   r	   rp   r­   rP  rc   r+   ÚScatterFallback)r"  r§  rÀ   r(  rÖ  rÎ  rÏ  Úsrc_is_tensors           rZ   Úscatter_fallbackrÓ  ì  sŠ   € ô ˜s¤IÓ.€MÜØØØ�‰ÓÜŒU�[‰[©]˜#Ÿ-™-œ/ÄÀSÃ	ÓJÙ!.ˆ�‰Ó×Ò°JØôô 	×ÑØØØØØØØ%õ	
ð ˆàr\   ©rÎ  c               ó  — |dv sJ ‚|€[t        t        j                  t        j                  j
                  j                  j                  «      }t        || ||||¬«      }|�|S |dk(  rd}n|dk(  rd}t        | ||||«      S )N)Nr—   ÚmultiplyrÔ  r—   ÚsumrÖ  Úprod)
r„   rœ  rÍ  rI   rR   rS   rV   Ú_overloadnamerÓ  Úscatter_reduce_)r§  rÀ   r(  rÖ  rÎ  r"  Úfallback_results          rZ   rÍ  rÍ    s�   € àÐ.Ñ.Ð.Ð.Ø€~ÜœdŸm™m¬Q¯W©W×-AÑ-A×-HÑ-H×-VÑ-VÓWˆÜ*Ø˜˜s E¨3°vô
ˆð Ð&Ø"Ð"à�‚Ø‰Ø	�:Ò	ØˆÜ˜4  e¨S°&Ó9Ð9r\   c                ó0   — t        t        | «      |||«      S r   )Úscatter_add_rw  ©r›   rÀ   r(  rÖ  s       rZ   Úscatter_addrß    s   € äœ˜a› # u¨cÓ2Ð2r\   c                ó    — t        | |||d«      S )Nr×  )rÚ  rÞ  s       rZ   rÝ  rÝ  $  s   € ä˜1˜c 5¨#¨uÓ5Ð5r\   c                ó4   — t        t        | «      ||||fi |¤ŽS r   )rÚ  rw  )r›   rÀ   r(  rÖ  Úreduction_typerà   s         rZ   Úscatter_reducerã  )  s   € äœ5 ›8 S¨%°°nÑOÈÑOÐOr\   )rÏ  c          
     óÖ  ‡ ‡‡‡‡— |dv sJ ‚t        t        j                  j                  «       «      dk(  r dt        j                  j                  «       v sJ d«       ‚t	        ‰t
        «      rt        ‰ ‰«      Št        t        j                  j                  ‰ ‰|‰||¬«      }|r|S t	        ‰ t        «      sJ ‚dt        |j                  «       «      v sJ ‚t        ‰ j                  «       «      }|dk(  rt        ‰ dg«      Š t	        ‰t        «      r)t        ‰j                  «       «      dk(  rt        ‰dg«      Št	        |t        «      r)t        |j                  «       «      dk(  rt        |dg«      }|j                  «       dk(  r‰ S t        ‰ ‰«      Š‰ j!                  «        |j#                  «       Št	        ‰t        «      r‰j#                  «       nd Šˆˆˆ fd„}ˆ ˆˆfd	„}	d
„ }
|s¶t%        j&                  ‰ j)                  «       ‰ j                  «       ˆ fd„|j                  «       |d ¬«      }t%        j*                  d t%        j,                  ‰ «      |¬«      }t.        j0                  j3                  |«      |_        t.        j0                  j7                  |«       t%        j&                  ‰ j)                  «       ‰ j                  «       |	|j                  «       | |
|«      ¬«      }t%        j*                  d t%        j,                  ‰ «      |¬«      }t.        j0                  j3                  |«      |_        t.        j0                  j7                  |«       |dk(  rt        ‰ g «      Š ‰ S )N)Nr×  rØ  ÚmeanÚamaxÚaminr(   ÚtwozKaten.scatter_reduce_.two is not the unique overload of aten.scatter_reduce_rÎ  rª   r   c                óª   •— ‰j                  «       }t        |«      }t        | «      }t        j                   ‰| «      |dk(  rdn|‰   d¬«      |‰<   |S )Nr   r(   F)ro  )r½   r¼   r^   rH   rQ  )r   rý  rê  Úindirect_idxrÀ   rS  r§  s       €€€rZ   r¯  z'scatter_reduce_.<locals>.output_indexer\  sU   ø€ à—‘“ˆÜ�5‹zˆÜ˜C“yˆÜ×1Ñ1Ù˜Ó D¨A¢I™q°5¸±:Èô
ˆ�SÑð Ðr\   c                ó`   •— ‰r ‰| «      S t        j                  ‰‰j                  «       «      S r   ©rH   r;  r°   )r   r§  rÖ  rñ  s    €€€rZ   rx   zscatter_reduce_.<locals>.fnf  s*   ø€ ÙÙ˜c“?Ð"ô —<‘<  T§^¡^Ó%5Ó6Ð6r\   c                ó   — | dk(  ry| �J ‚y )Nr×  r­  rÜ   rÔ  s    rZ   Úbackend_reduce_strz+scatter_reduce_.<locals>.backend_reduce_strm  s   € Ø�UŠ?Øð �>Ð!�>Ør\   c                óL   •— t        j                  d‰j                  «       «      S rµ  rì  )r(  r§  s    €rZ   r7  z!scatter_reduce_.<locals>.<lambda>z  s   ø€ ¤3§<¡<°°4·>±>Ó3CÓ#D€ r\   r®  r±  )r¼   rœ  rÚ  rš   r`   r   rå  rÓ  rè  r:   r_  r°   r½   r�  rT  r  rd  rO  r+   r²  rc   rŽ  r³  rI   rR   r  rÎ   r  )r§  rÀ   r(  rÖ  rÎ  rÏ  rÛ  rê  r¯  rx   rî  Úzero_outr  r¶  rS  rñ  s   `` `          @@rZ   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òñ ä—:‘:Ø—?‘?Ó$Ø—.‘.Ó"Û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˜"‹~ˆØ€Kr\   c                óT  ‡‡‡‡‡‡— | j                  «        | j                  «       Š| j                  «       ‰ d  Š| j                  «       d ‰  }‰D �cg c]+  }t        j                  j
                  j                  |«      ‘Œ- c}Št        |«      ‰k(  sJ ‚|}t        ‰|«      D ��cg c]
  \  }}||z  ‘Œ c}}Št        |«      D ]  \  }}	|	€Œ	d|	z  ‰|<   Œ ˆfd„Šˆˆˆˆˆfd„}
t        j                  | j                  «       | j                  «       |
g |¢|¢¬«      S c c}w c c}}w )Nrp  c                ó¨  •— t        j                  | t        j                  «      } ‰r8t        j                  | t        j
                  dt        j                  «      «      } t        j                  | t        j
                  |t        j                  «      «      } t        j                  | t        j                  «      } t        j                  | |d¬«      S )Nç      à?Fr†  )
rH   r9  rp   rR  r—   r;  rN  rØ   r¿  rQ  )r›   rW  rñ   Úexacts      €rZ   Úscale_fnz$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Ô:Ð:r\   c                ó”   •— | ‰ d  }| d ‰  } ‰
g |¢t        |‰‰«      D ���cg c]  \  }}} ‰	|||«      ‘Œ c}}}¢«      S c c}}}w r   )rç   )r   r›   r  rh   rÚ  rñ   Úi_sizesÚ
inv_scalesÚnrõ  r  s         €€€€€rZ   rx   zupsample_nearestnd.<locals>.fn¿  s`   ø€ Ø���ˆHˆØ��!�ˆHˆÙØWˆaÐW¼#¸aÀÈWÓ:U×VÐV©J¨A¨q°$‘8˜A˜q $Õ'ÔVÐWó
ð 	
ùÜVs   ¤ArM  )Úrealize_hintrO  r½   rI   rR   r  rÕ  r¼   rç   r_   r7   ré   rc   r°   )r›   rx  Úscales_xrù  rô  Úbatchrh   Úo_sizesÚorW  rx   r÷  rø  rõ  r  s      ``      @@@@rZ   Úupsample_nearestndrÿ  Ÿ  s  ý€ ð ‡N�NÔØ�}‰}‹€HØ�j‰j‹l˜A˜2˜3Ð€GØ�J‰J‹L˜˜1˜"Ð€EØBIÖJ¸QŒq�w‰w×Ñ×5Ñ5°aÕ8ÒJ€Gäˆx‹=˜AÒÐÐØ€Gä$'¨°Ó$9×:™D˜A˜q�!�a“%Ó:€JÜ˜hÓ'ò (‰ˆˆ5ØÑØ %™KˆJ�qŠMð(ô	;÷
ð 
ô ×ÑØ�|‰|‹~Ø�k‰k‹mØØ!�Ð!˜Ð!ô	ð ùò9 Kùó
 ;s   Á0DÂ'D$c                ó"   — t        | ||fd¬«      S )Nr(   ©rù  ©rÿ  ©r›   rx  ra  s      rZ   Úupsample_nearest1dr  Î  s   € ä˜a ¨v¨i¸1Ô=Ð=r\   c                ó$   — t        | ||fdd¬«      S )Nr(   T©rù  rô  r  r  s      rZ   Ú_upsample_nearest_exact1dr  Ó  s   € ä˜a ¨v¨i¸1ÀDÔIÐIr\   c                ó$   — t        | |||fd¬«      S )Nr&   r  r  ©r›   rx  Úscales_hÚscales_ws       rZ   Úupsample_nearest2dr  Ø  s   € ô ˜a ¨x¸Ð.BÀaÔHÐHr\   c                ó&   — t        | |||fdd¬«      S )Nr&   Tr  r  r	  s       rZ   Ú_upsample_nearest_exact2dr  ß  s   € ô ˜a ¨x¸Ð.BÀaÈtÔTÐTr\   c                ó&   — t        | ||||fd¬«      S )NrŸ   r  r  ©r›   rx  Úscales_dr
  r  s        rZ   Úupsample_nearest3dr  æ  s   € ô ˜a ¨x¸À8Ð.LÐPQÔRÐRr\   c                ó(   — t        | ||||fdd¬«      S )NrŸ   Tr  r  r  s        rZ   Ú_upsample_nearest_exact3dr  ñ  s#   € ô Ø	ˆ;˜ 8¨XÐ6¸!À4ôð r\   c                ó,   ‡ — t        ˆ fd„|D «       «      S )Nc              3  óJ   •K  — | ]  }t        j                  |‰«      –— Œ y ­wr   r  )r�   rÔ   r­   s     €rZ   r‘   z$_create_constants.<locals>.<genexpr>ÿ  s   øè ø€ Ò6¨A”—‘˜a ×'Ñ6ùs   ƒ #)r”   )r­   ri   s   ` rZ   rQ  rQ  þ  s   ø€ ÜÓ6°Ô6Ó6Ð6r\   c                óÀ   ‡‡‡— | j                  «       Š| j                  «       Šˆˆˆfd„}t        j                  | j	                  «       | j                  «       |‰¬«      S )Nc                óŒ   •— t        | «      } t        | «      t        ‰«      k(  sJ ‚‰D ]  }‰|   dz
  | |   z
  | |<   Œ  ‰| «      S rº  )r^   r¼   )r   rÀ   rØ  rÏ  r  s     €€€rZ   rt  zrev.<locals>.loader  sW   ø€ Ü�3‹iˆÜ�3‹xœ3˜u›:Ò%Ð%Ð%Øò 	3ˆCØ˜c™
 Q™¨#¨c©(Ñ2ˆC�ŠHð	3ñ ˜‹}Ðr\   rM  )rO  r½   r7   ré   rc   r°   )r›   rØ  rt  rÏ  r  s    ` @@rZ   Úrevr    sM   ú€ ð �}‰}‹€HØ�J‰J‹L€Eöô ×ÑØ�|‰|‹~Ø�k‰k‹mØØô	ð r\   c                óˆ  — d„ } |«       ryt        |«      dk7  st        | j                  «       «      dk7  ry| j                  «        t        | t        j
                  «      r°t        | j                  t        j                  «      rŒt        | j                  j                  t        j                  «      s>t        j                  rNt        | j                  j                  t        j                  «      r | j                  j                  j                  sy| j                  «        t	        j                  | «      \  }}|j                  }|d   dk7  ry|d   dk7  s|d   dk7  s|d   dk7  ry|d   }|dk(  ry|d   }|j                   d   }	||	|z   k  ry| j                  j                  j                  }
|j                   d   |j                   d   |z   g}|t"        j$                  j&                  |
<   t)        | ||j                  |j*                  «      }t-        |d|	|	|z   ¬«      }t/        ||«       t0        d	   d
xx   dz  cc<   |S )zÀ
    This optimization changes the semantics of padding from 'clone'
    style to 'view' style.

    Thanks to functionalization, this change can still maintain numerical
    correctness.
    c                 ó  — t         j                  j                  } | €yt        | j                  «      }t        |«      dk(  rD|d   j                  t        j                  j                  t        j                  j                  fv ryy)a  
        Conservatively check if padding can be fused with downstream op.
        1. if the downstream op is a sum, then there is little benefit to
           do inplace padding
        2. if the downstream op is a matmul, doing inplace padding can
           save membw.
        Tr(   r   F)rI   rR   rS   r”   rT   r¼   rV   rœ  Úmmr’  Úaddmm)rS   rT   s     rZ   Ú_padding_can_be_fusedz6inplace_constant_pad_nd.<locals>._padding_can_be_fused#  sk   € ô —w‘w×+Ñ+ˆØÐØÜ�l×(Ñ(Ó)ˆÜˆu‹:˜Š?˜u Q™xŸ™Ü�G‰G�O‰OÜ�J‰J×Ñð3
ñ  
ð àr\   Nr    r&   r(   r   rŸ   )rÀ   r  r  ÚinductorÚinplace_padding)r¼   r½   rd  r`   r+   r:   rb   r‹  rŽ  r)   Úcan_inplace_pad_graph_inputÚInputBufferrÎ   Úfreeze_layoutr$  r'  rñ   rI   rR   Úbuffer_to_padded_sizer,  rÎ  r  Úfill_r   )r›   Úpaddingr(  r  rÅ   r   r¤  ÚnpadÚstride0ÚrowsizeÚbufnameÚpadded_sizeÚ	resized_xÚsliced_xs                 rZ   Úinplace_constant_pad_ndr.    sÞ  € òñ( ÔØô ˆ7ƒ|�qÒœC §
¡
£Ó-°Ò2Øð
 ‡I�I„Kô
 �qœ"Ÿ,™,Ô'Ü˜!Ÿ&™&¤"§-¡-Ô0ä�q—v‘v—{‘{¤B×$5Ñ$5Ô6ä×2Ò2Ü˜qŸv™vŸ{™{¬B¯N©NÔ;ð �v‰v�{‰{×ÒàØ‡O�OÔä×(Ñ(¨Ó+�I€A€vØ�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¸7ÀT¹>ÔJ€HÜ	ˆ(�JÔäˆZÑÐ*Ó+¨qÑ0Ó+ØÐr\   c                óÖ  ‡‡‡‡‡‡‡— t        |«      dz  dk(  sJ ‚t        d„ |D «       «      rt        | «      S t        j                  rt        | |‰«      }|r|S | j                  «       }t        t        t        t        |d d d…   |dd d…   «      «      «      «      Št        |«      t        ‰«      z
  Šg Š‰D ]?  \  }}‰j                  t        j                  j                  j                  |«      |f«       ŒA t        |d ‰ «      }g Št        ‰|‰d  «      D ]C  \  \  }}	}
‰j                  |
«       |j                  t        j                   |
|z   |	z   «      «       ŒE t        |«      t        |«      k(  sJ ‚ t#        | j%                  «       «      ‰«      Šˆˆˆˆˆfd„Šˆˆˆfd„}| j'                  «       Št)        j*                  | j-                  «       | j%                  «       ||¬«      S )Nr&   r   c              3  ó&   K  — | ]	  }|d k(  –— Œ y­w©r   NrÜ   ©r�   rK  s     rZ   r‘   z"constant_pad_nd.<locals>.<genexpr>z  s   è ø€ Ò
#�aˆ1��6Ñ
#ùr  r(   c                óB  •‡ — g }t        ‰ ‰	d  ‰‰«      D ]J  \  }\  }}}|dk7  r|j                  t        |d«      «       |dk7  sŒ0|j                  t        ||«      «       ŒL t	        j
                  t        j                  |«      }t        j                  |ˆ ˆ
fd„‰«      S )Nr   c                 ó   •—  ‰‰ «      S r   rÜ   )r(  r  s   €€rZ   r7  z/constant_pad_nd.<locals>.mask.<locals>.<lambda>�  s   ø€ ©°«€ r\   )	rç   rd   Úrange_mask_lowÚrange_mask_highr÷   rÎ  rH   r>  r?  )r(  rE  r   r…  r„  rë  Úboundsr(  Ú
mask_sizesrù  r  s   `     €€€€€rZ   rE  zconstant_pad_nd.<locals>.mask•  s‘   ù€ ØˆÜ(+¨E°!°"¨I°v¸zÓ(Jò 	:Ñ$ˆC‘�#�t˜fØ�aŠxØ—‘œN¨3°Ó2Ô3Ø�q‹yØ—‘œO¨C°Ó8Õ9ð		:ô
 ×Ñ¤§¡¨$Ó/ˆÜ�z‰z˜$Ô 7¸ÓDÐDr\   c                ó¾   •— t        | d ‰ «      }t        | ‰d  ‰«      D ]  \  }\  }}|j                  ||z
  «       Œ t        |«      t        | «      k(  sJ ‚ ‰|«      S r   )r^   rç   rd   r¼   )r(  rp  r   r…  Ú_highÚbounds_precomprE  rù  s        €€€rZ   Ú	offset_fnz"constant_pad_nd.<locals>.offset_fnŸ  si   ø€ Ü˜˜r ˜“Oˆ	Ü!$ U¨1¨2 Y°Ó!?ò 	(ÑˆC‘�#�uØ×Ñ˜S 3™YÕ'ð	(ä�9‹~¤ U£Ò+Ð+Ð+Ù�I‹Ðr\   rM  )r¼   r  rw  r)   r   r.  r½   r^   r  rç   rd   rI   rR   r  Úlookup_precomputed_sizer±   r  r   r°   rO  r7   ré   rc   )r›   r&  r(  rf   rÏ  ÚlÚhrx  r…  r„  rñ   r<  r7  r;  rE  r8  rù  r  s     `         @@@@@@rZ   r¥  r¥  w  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Øò P‰ˆˆ1Ø×ÑœqŸw™w×/Ñ/×GÑGÈÓJÈAÐNÕOðPô �u˜R˜a�y“/€KØ€JÜ  ¨¨q¨r¨Ó3ò <Ñ‰ˆˆd�TØ×Ñ˜$ÔØ×Ñœ5Ÿ<™<¨¨s©
°TÑ(9Ó:Õ;ð<ô ˆ{Óœs 5›zÒ)Ð)Ð)Ø-”˜qŸ{™{›}Ó-¨jÓ9€J÷Eð Eöð �}‰}‹€HÜ×ÑØ�|‰|‹~Ø�k‰k‹mØØô	ð r\   c                óÜ   — t        j                  t        j                  | t        j                  «      t        j                  t        j                  |«      t        j                  «      «      S r   )rH   r<  r9  rp   r:  r±   r  )rh   r…  s     rZ   r5  r5  ¯  s@   € Ü�6‰6Ü�‰�qœ%Ÿ+™+Ó&Ü�‰”u—}‘} SÓ)¬5¯;©;Ó7óð r\   c                ó¶   — t        j                  t        j                  | t        j                  «      t        j                  |t        j                  «      «      S r   )rH   r=  r9  rp   r:  )rh   r„  s     rZ   r6  r6  ¶  s7   € Ü�6‰6Ü�‰�qœ%Ÿ+™+Ó&Ü�‰�tœUŸ[™[Ó)óð r\   c                óV   — t        j                  t        | |«      t        | |«      «      S r   )rH   r>  r5  r6  )rh   r„  r…  s      rZ   Ú
range_maskrC  ½  s'   € Ü�8‰8Ü�q˜#ÓÜ˜˜4Ó óð r\   c                óŠ   ‡ ‡‡‡‡‡‡‡— ‰ j                  «       ‰ d  Š‰ j                  «       Š‰xs dg‰z  Šˆˆˆˆˆˆˆ ˆfd„}|S )Nr   c                óN  •‡‡— | d ‰  Š| ‰ d  Št        j                  t        j                  t	        ‰«      D �cg c]  }t        ‰|   ‰|   ‰
|   z   ‰
|    «      ‘Œ! c}«      }‰	rt        j                  |ˆˆˆˆˆfd„‰«      S t        j                  |ˆˆˆfd„‰«      S c c}w )Nc                 ó4   •—  t        ‰‰‰ ¬«      g ‰¢‰¢«      S )N©rÀ   )Úconstant_boundary_condition)rÀ   ÚihÚpad_fill_valueÚprefixr›   s   €€€€€rZ   r7  z;constant_boundary_condition.<locals>.load.<locals>.<lambda>Ö  s$   ø€ ÐOÔ3°A°~È3ÔOØ"�f�N˜r�Nó€ r\   c                 ó   •—  ‰g ‰¢‰ ¢«      S r   rÜ   )rI  rK  r  s   €€€rZ   r7  z;constant_boundary_condition.<locals>.load.<locals>.<lambda>Ü  s   ø€ ©(°>°V°>¸b°>Ó*B€ r\   )r÷   rÎ  rH   r>  rè   rC  r?  )r(  rh   rE  rI  rK  rÀ   r(  r?  rJ  r&  Ú	padding_hr›   r  s      @@€€€€€€€€rZ   r@  z)constant_boundary_condition.<locals>.loadË  sª   ú€ Ø�u˜˜�ˆØ�C�4�5ˆ\ˆä×ÑÜ�H‰HÜLQÐRUËJÖWÀqŒZ˜˜1™˜q ™t i°¡lÑ2°Y¸q±\°MÕBÒWó
ˆñ ô �J‰JØ÷ð óð
	
ô —‘˜DÕ"BÀJÓOð
	
ùò Xs   »$B"
)r½   rO  )	r›   r(  r&  rJ  rÀ   r@  r?  rM  r  s	   ````` @@@rZ   rH  rH  Ä  sE   ÿ€ ð 	
�
‰
‹�c�T�UÐ€AØ�}‰}‹€HØÒ$˜A˜3 ™9€I÷
ó 
ð( €Kr\   c                óx  — t        | d||   z  z   ||   dz
  z
  ||   dz
  z   ||   «      }|�r
t        | d||   z  z   ||   dz
  z
  d||   dz
  z  z   ||   «      }t        j                  j                  j	                  |dz
  ||   z  | z
  ||   z
  «      dk\  r>|dz  }t        j                  j                  j                  d|||   z  | z
  ||   z
  «       t        j                  j                  j	                  ||z
  «      dk(  r0t        j                  j                  j                  ||«       d}||fS |}||fS )Nr&   r(   r   F)r"   rI   rR   r  r÷  rç  r  )r›   rh   Úkernel_sizer'  r&  Ú	ceil_modeÚx_outÚx_alts           rZ   Úpooling_sizerS  â  sW  € ÜØ	ˆA�˜‘
‰NÑ˜k¨!™n¨qÑ0Ñ1°V¸A±YÀ±]ÑCÀVÈAÁYó€Eò ÜØ��G˜A‘J‘Ñ +¨a¡.°1Ñ"4Ñ5¸¸VÀA¹YÈ¹]Ñ8KÑKÈVÐTUÉYó
ˆô �7‰7×Ñ×%Ñ% u¨q¡y°F¸1±IÑ&=ÀÑ&AÀGÈAÁJÑ&NÓOÐSTÒTà�Q‰JˆEÜ�G‰G×Ñ×&Ñ& q¨%°&¸±)Ñ*;¸aÑ*?À'È!Á*Ñ*LÔMÜ�7‰7×Ñ×%Ñ% e¨e¡mÓ4¸Ò9ä�G‰G×Ñ×)Ñ)¨%°Ô7ØˆIð �)ÐÐð ˆEØ�)ÐÐr\   c                ób   — t        | d«      } | d   | d   z  }|dkD  xs t        d„ |D «       «      S )Nr&   r   r(   é   c              3  ó&   K  — | ]	  }|d kD  –— Œ y­wr  rÜ   rÖ  s     rZ   r‘   z:should_fallback_max_pool2d_with_indices.<locals>.<genexpr>û  s   è ø€ Ò$=¨q Q¨¥UÑ$=ùr  )rD   r  )rO  ÚdilationÚwindow_sizes      rZ   Ú'should_fallback_max_pool2d_with_indicesrY  ø  s;   € Ü˜{¨AÓ.€KØ˜a‘. ;¨q¡>Ñ1€KØ˜"ÑÒ=¤Ñ$=°HÔ$=Ó!=Ð=r\   ©Úassert_fallbackc               ó¤  — |dk(  rddg}|dk(  rddg}|s|}t        |d«      }t        |d«      }t        |d«      }t        |d«      }t        | t        «      sJ ‚t        |«      dk(  sJ ‚t        |«      dk(  sJ ‚t        |«      dk(  sJ ‚t        |«      dk(  sJ ‚t        | j	                  «       «      dv sJ ‚t        ||«      }|�||k(  sJ ‚|||||fS )Nr   r(   r&   rÍ  )rD   r`   r:   r¼   r½   rY  )r›   rO  r'  r&  rW  r[  Úuse_fallbacks          rZ   Úmax_pool2d_checksr^  þ  sÿ   € ð �!‚|Ø�a�&ˆØ�1‚}Ø�q�6ˆÙØˆä˜{¨AÓ.€KÜ˜& !Ó$€FÜ˜7 AÓ&€GÜ˜H aÓ(€Hä�aœÔ#Ð#Ð#Üˆ{Ó˜qÒ Ð Ð Üˆv‹;˜!ÒÐÐÜˆw‹<˜1ÒÐÐÜˆx‹=˜AÒÐÐÜˆq�z‰z‹|Ó Ñ&Ð&Ð&ä:¸;ÈÓQ€LØÐ"Ø˜Ò.Ð.Ð.à˜ ¨°<Ð?Ð?r\   c           
     óx  ‡‡‡‡— | j                  «        | j                  «       �^ }}}t        |d|‰‰|«      \  }	}
t        |d|‰‰|«      \  }}| j                  }|t        j
                  u rdn5|j                  rt        d«      nt	        j                  |«      j                  }t        |«      |	|gz   }‰d   s	‰d   s|
s|rt        | |d¬«      Šn| j                  «       ŠdŠˆˆˆˆfd„}t        j                  d| | j                  «       |||||¬	«      }t        j                  d
| | j                  «       t        j                   ||||¬	«      }t#        |j$                  j$                  t        «      r|j'                  «        t#        |j$                  j$                  t        «      r|j'                  «        ||fS )Nr   r(   Fú-infr&   rG  c                ó˜   •— | d ‰  }| ‰ d  }t        ‰«      D �cg c]  }||   ‰|   z  ||   z   ‰|   z
  ‘Œ }} ‰	g |¢|¢«      S c c}w r   )rè   )
r   Úreduction_idxrK  Úbhrh   rI  rÀ   r&  r'  r  s
         €€€€rZ   Úfn_innerz*_max_pool2d_with_offsets.<locals>.fn_inner8  sm   ø€ Ø�U�s�d�ˆØ�#��ˆZˆÜINÈsËÖTÀAˆb�‰e�f˜Q‘iÑ -°Ñ"2Ñ2°W¸Q±ZÓ?ÐTˆÐTÙ˜˜&˜ 2˜Ó'Ð'ùò Us   ›ArÇ  )râ  Ú
input_noderk   Ú	dst_dtypert  rL  rK  Úreduction_rangesÚargmax)rú  r½   rS  r­   rp   r·   r—  r#  rš  rÆ  r^   rH  rO  r8   ré   rc   r:  r`   rb   rd  )r›   rO  r'  r&  rW  rP  rü  r?  ÚwÚh_outÚ
ceil_mode1Úw_outÚ
ceil_mode2r­   Ú	min_valuer  rd  r0  ÚoffsetsrÀ   r  s     ``               @@rZ   Ú_max_pool2d_with_offsetsrp    s‡  û€ ð ‡N�NÔØ—:‘:“<�L€UˆAˆqä$ Q¨¨;¸ÀÈÓSÑ€Eˆ:Ü$ Q¨¨;¸ÀÈÓSÑ€Eˆ:à�G‰G€Eð ”E—J‘JÑñ 	à$×6Ò6Œe�FŒm¼E¿K¹KÈÓ<N×<RÑ<Rð ô �E‹{˜e U˜^Ñ+€HØˆq‚z�W˜Q’Z¡:±Ü.¨q°)ÀÔC‰à—=‘=“?ˆà
€C÷(ô ×ÑØØØ�|‰|‹~ØØØØØ$ô	€Fô ×ÑØØØ�|‰|‹~Ü—+‘+ØØØØ$ô	€Gô �&—+‘+×"Ñ"¤IÔ.à�‰ÔÜ�'—,‘,×#Ñ#¤YÔ/à�‰Ôà�7ˆ?Ðr\   c           	     óæ   — t        | ||||d¬«      \  }}}}}t        j                  d¬«      5  t        | |||||«      \  }}|t	        |t
        j                  «      fcd d d «       S # 1 sw Y   y xY w)NFrZ  rU  )Úunroll_reductions_threshold)r^  r)   r   rp  rØ   rp   r†  )	r›   rO  r'  r&  rW  rP  rÅ   r0  ro  s	            rZ   Ú#_low_memory_max_pool2d_with_offsetsrs  \  s„   € ô 1BØ	ØØØØØô1Ñ-€K�˜ (¨Aô 
�‰°"Ô	5ñ 	5Ü2ØØØØØØó
‰ˆ�ð ”x ¬¯©Ó4Ð4÷	5÷ 	5ò 	5ús   ®/A'Á'A0c                óÔ   ‡‡‡‡‡‡— | j                  «       Šˆˆˆfd„Šˆˆˆfd„}t        j                  | j                  «       t        j
                  || j                  «       ¬«      }|S )Nc                ó0  •— t        j                  ‰	t        j                  «      }t        j                  |‰d   z  ‰
d   z
  t        j                  «      }t        j                  |‰d   z  ‰
d   z
  t        j                  «      }|| z   }||z   }||z  |z   S r½  )rH   r9  rp   r:  )Úh_incÚw_incrc  ÚbwÚw_inÚhbaseÚwbaserI  ÚiwÚinput_widthr&  r'  s            €€€rZ   Úincrements_to_indexzF_low_memory_max_pool2d_offsets_to_indices.<locals>.increments_to_index…  s�   ø€ Ü�~‰~˜k¬5¯;©;Ó7ˆÜ—‘˜r F¨1¡I™~°¸±
Ñ:¼E¿K¹KÓHˆÜ—‘˜r F¨1¡I™~°¸±
Ñ:¼E¿K¹KÓHˆØ�U‰]ˆØ�U‰]ˆØ�D‰y˜2‰~Ðr\   c                ó¤   •— | �^ }}} ‰
g |¢|‘|‘«      }t        j                  ‰	t        j                  «      }||z  }|||z  z
  } ‰||||«      S r   ©rH   r;  rp   r¿  )r   rK  rc  rx  rÎ  Úkw_constrv  rw  r~  Úkernel_widthÚoffsets_loaders           €€€rZ   Úoffsets_to_indiceszE_low_memory_max_pool2d_offsets_to_indices.<locals>.offsets_to_indices�  sf   ø€ Ø‰ˆ��RÙÐ 1 &Ð 1¨"Ð 1¨bÐ 1Ó2ˆÜ—<‘< ¬e¯k©kÓ:ˆØ˜(Ñ"ˆØ˜% (Ñ*Ñ+ˆÙ" 5¨%°°RÓ8Ð8r\   rM  )rO  r7   ré   rc   rp   r:  r½   )	ro  r‚  r}  r'  r&  r„  rÊ  r~  rƒ  s	    ````  @@rZ   Ú)_low_memory_max_pool2d_offsets_to_indicesr…  {  sX   ý€ ð ×(Ñ(Ó*€Nöö9ô ×ÑØ×!Ñ!Ó#Ü�k‰kØ#Ø×ÑÓ!ô	€Gð €Nr\   c                óÞ   — t        | ||||«      \  }}}}}t        d„ |D «       «      rt        | |||||¬«      S t        | |||||«      \  }}t	        ||d   | j
                  d   ||«      }	||	fS )Nc              3  ó&   K  — | ]	  }|d kD  –— Œ y­wr  rÜ   rÖ  s     rZ   r‘   z*max_pool2d_with_indices.<locals>.<genexpr>²  s   è ø€ Ò
#�Qˆ1ˆq�5Ñ
#ùr  )rP  r:  )r^  r  Ú fallback_max_pool2d_with_indicesrp  r…  rý  )
r›   rO  r'  r&  rW  rP  rÅ   rf   ro  rÊ  s
             rZ   Úmax_pool2d_with_indicesr‰  ¥  s›   € ô 1BØ	ˆ;˜ ¨ó1Ñ-€K�˜ (¨Aô Ñ
#˜(Ô
#Ô#Ü/Øˆ{˜F G¨XÀô
ð 	
ô ,Ø	ˆ;˜ ¨°9ó�L€Cˆô 8Ø�˜R‘ !§'¡'¨"¡+¨v°wó€Gð �ˆ<Ðr\   c                ó  ‡‡‡‡‡‡‡‡‡‡‡— ‰dk(  rddgŠ|dk(  rddg}‰s‰Št        |t        «      sJ ‚t        ‰«      dk(  sJ ‚t        ‰«      dk(  sJ ‚t        ‰«      dk(  sJ ‚t        |«      dk(  sJ ‚t        |j                  «       «      dv sJ ‚| j	                  «        | j                  «       }t        |t        «      r³t        |j                  j                  t        «      r�|j                  j                  }	t        j                  d t        j                  |	j                  «       |	j                  «       |	j                  «       ¬«      |	¬«      }
|
j                  «        |
j                  «       }n|j                  «       }|d uxr |d   dk(  xs |d uxr |d   dk(  }t        d„ |D «       «      rt!        | |‰‰‰|||«      S |j                  «       �^ }}Š| j                  «       �^ }ŠŠ|j#                  «       Š| j#                  «       Št%        |j                  «       «      }t'        ˆˆfd„t)        ‰d   dz  «      D «       «      Št'        ˆˆfd	„t)        ‰d   dz  «      D «       «      Š‰‰z  }|d
kD  rt!        | |‰‰‰|||«      S |j                  «       Šˆˆˆˆˆˆˆˆˆˆˆfd„}t        j*                  | j                  «       | j                  «       ||¬«      }|rt        j,                  j/                  |«      S |S )Nr   r(   r&   rÍ  )rk   r­   rñ   r±  c              3  ó&   K  — | ]	  }|d k7  –— Œ y­wr  rÜ   rÖ  s     rZ   r‘   z3max_pool2d_with_indices_backward.<locals>.<genexpr>ñ  s   è ø€ Ò
$�aˆ1��6Ñ
$ùr  c           
   3  ót   •K  — | ]/  }t        |‰d    z  t        d |‰d    z
  ‰d    z  «      z
  d«      –— Œ1 y­w©r   r(   N©rÇ  ©r�   r?  rO  r'  s     €€rZ   r‘   z3max_pool2d_with_indices_backward.<locals>.<genexpr>þ  óF   øè ø€ ò àô 	ˆA�˜‘‰NœS  Q¨°Q©Ñ%7¸FÀ1¹IÑ$EÓFÑFÈ×Jñùó   ƒ58c           
   3  ót   •K  — | ]/  }t        |‰d    z  t        d|‰d    z
  ‰d    z  «      z
  d «      –— Œ1 y­w©r(   r   NrŽ  ©r�   ri  rO  r'  s     €€rZ   r‘   z3max_pool2d_with_indices_backward.<locals>.<genexpr>  r�  r‘  rU  c                óœ  •— | �^ }}}t        j                  |‰z  |z   t        j                  «      }|‰d   z   }|‰d   z   }t        j                  t	        |‰d   z
  ‰d   z   ‰d   «      t        j                  «      }t        j                  t	        |‰d   z
  ‰d   z   ‰d   «      t        j                  «      }t        j                  t	        |‰d   «      dz   t        j                  «      }t        j                  t	        |‰d   «      dz   t        j                  «      }t        j
                  |t        j                  dt        j                  «      «      }t        j
                  |t        j                  dt        j                  «      «      }t        j                  |t        j                  ‰t        j                  «      «      }t        j                  |t        j                  ‰t        j                  «      «      }d }	t        ‰«      D �]3  }
t        ‰«      D �]!  }t        j                  |t        j                  |
t        j                  «      «      }t        j                  |t        j                  |t        j                  «      «      }g |¢t        j                  t        j                  |t        j                  |t        j                  dt        j                  «      «      «      ‰d   d¬«      ‘t        j                  t        j                  |t        j                  |t        j                  dt        j                  «      «      «      ‰d   d¬«      ‘} ‰|«      } ‰|«      }t        j                  ||«      }|	€;t        j                  ||t        j                  dt        j                  «      «      }	�Œ¥t        j                  t        j                  t        j                   ||«      t        j                   ||«      «      |«      }t        j                  |t        j                  |	|«      |	«      }	�Œ$ �Œ6 |	€J ‚|	S )Nr   r(   éþÿÿÿFr†  r:  r8  )rH   r9  rp   r¿  r"   rT  r;  rU  rè   r—   rQ  rk  rð  rÇ  rR  r>  r=  )r   rK  r?  ri  Ú
index_testÚphstartÚpwstartÚphendÚpwendÚgradientÚph_Úpw_ÚphÚpwÚ
grad_indexÚindex_actualÚ	grad_partr   rE  Úgrad_loaderÚh_window_sizer[  Úindices_sizerO  r&  Úpooled_heightÚpooled_widthr'  Úw_window_sizeÚwidths                      €€€€€€€€€€€rZ   rx   z,max_pool2d_with_indices_backward.<locals>.fn  sA  ø€ Ø‰ˆ��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ˆàˆÜ˜Ó'ó #	WˆCÜ˜]Ó+ó "W�Ü—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�	ÜŸ™˜|¨ZÓ8�àÐ#ä"Ÿy™yØ˜y¬#¯,©,°s¼E¿M¹MÓ*Jó ’Hô Ÿ8™8ÜŸ™ÜŸF™F 2 uÓ-ÜŸF™F 2 uÓ-óð ó�Dô  #Ÿy™y¨¬s¯w©w°xÀÓ/KÈXÓV’HòE"Wð#	WðH Ð#Ð#Ð#Øˆr\   rM  )r`   r:   r¼   r½   rú  r×  rb   r7   r+   rŽ  rB  rc   r°   Údecide_layoutr‰  r  Ú)fallback_max_pool2d_with_indices_backwardrO  r^   rÇ  rè   ré   rl  r´  )Úgrad_outputr›   rO  r'  r&  rW  rP  rÊ  Ú	gO_striderb   Úx_bufferÚx_strideÚis_channels_lastÚ_batchÚ_heightrÅ   r  rX  rx   rf   r¤  r¥  r[  r¦  r§  r¨  r©  rª  s     ```               @@@@@@@@rZ   Ú 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Ø�v‰v�{‰{ˆÜ×$Ñ$ØÜ×$Ñ$Ø—‘Ó(Ø—n‘nÓ&Ø—]‘]“_ôð
 ô
ˆð 	×ÑÔ Ø×&Ñ&Ó(‰à×%Ñ%Ó'ˆà ¨Ð,ÒA°¸!±ÀÑ1Aò Ø˜ÐÒ3 )¨A¡,°!Ñ"3ð ô Ñ
$˜8Ô
$Ô$ä8Ø˜˜K¨°¸(ÀIÈwó
ð 	
ð  Ÿj™j›lÑ€VˆW�eØ&1×&:Ñ&:Ó&<Ñ#€Qˆ�|à×(Ñ(Ó*€NØ×)Ñ)Ó+€KÜ�A—J‘J“LÓ!€Häô ä�{ 1‘~¨Ñ)Ó*ôó €Mô ô ä�{ 1‘~¨Ñ)Ó*ôó €Mð
   -Ñ/€Kà�RÒä8Ø˜˜K¨°¸(ÀIÈwó
ð 	
ð ×#Ñ#Ó%€L÷9ö 9ôv ×
Ñ
Ø×%Ñ%Ó'Ø×#Ñ#Ó%ØØô	€Cñ Ü�‰×4Ñ4°SÓ9Ð9àˆ
r\   c                ó6   ‡‡— | j                  «       Šˆˆfd„}|S )Nc           
     ó  •‡ ‡‡‡	‡
— |\  ŠŠ	|\  ŠŠ
|\  }}t        j                  t        j                  t        j                  ‰‰z   t        j
                  «      t        j                  |t        j
                  «      «      t        j                  t        j                  ‰
‰	z   t        j
                  «      t        j                  |t        j
                  «      «      «      }t        j                  |ˆˆˆ	ˆ ˆ
ˆfd„‰«      S )Nc                 ó,   •—  ‰g ‰¢‰ ‰z   ‘‰‰z   ‘«      S r   rÜ   )Úh_start_indexrI  r|  rK  Úw_start_indexr  s   €€€€€€rZ   r7  z3pad_adaptive_loader.<locals>.load.<locals>.<lambda>m  s&   ø€ ‘HÐN˜vÐN }°rÑ'9ÐN¸=È2Ñ;MÐNÓO€ r\   )rH   r>  r=  r9  rp   r:  r?  )rK  Ú
incrementsÚstart_indicesÚend_indicesÚh_end_indexÚw_end_indexrE  r¸  rI  r|  r¹  Úpad_valr  s   `      @@@@€€rZ   r@  z!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Øó
ð 	
r\   ©rO  )r›   r¿  r@  r  s    ` @rZ   Úpad_adaptive_loaderrÁ  X  s   ù€ Ø�}‰}‹€Hõ
ð, €Kr\   c                óÎ   — t        j                  | ||¬«      }t        j                  |||¬«      }t        j                  | ||¬«      }t        j                  |||¬«      }	||||	fS )N)Úout_dimÚinp_dim)r÷   r  )
Ústart_indexÚ	end_indexÚh_inry  rj  rl  r¸  r½  r¹  r¾  s
             rZ   Ú compute_indices_adaptive_poolingrÈ  t  sa   € Ü×%Ñ% k¸5È$ÔO€MÜ×#Ñ# I°uÀdÔK€Kä×%Ñ% k¸5È$ÔO€MÜ×#Ñ# I°uÀdÔK€Kà˜+ }°kÐAÐAr\   c                ód   ‡‡‡‡‡‡— |\  }}|\  }}	t        | |||||	«      \  ŠŠŠŠˆˆˆˆˆˆfd„}
|
S )Nc                ó  •— | �^ }}} ‰|«      } ‰|«      } ‰|«      } ‰|«      }d }	t        j                  t        ‰d   «      t        ‰d   «      «      D ]$  \  }
} |||
|g||g||g«      }|	€|}	Œ ‰||	«      }	Œ& |	S r½  )rå   Úproductrè   )r   rt  rK  rc  rx  r¸  r½  r¹  r¾  r0  rI  r|  rà  Úh_end_index_fnÚh_start_index_fnÚkernel_maxesÚ
pooling_fnÚw_end_index_fnÚw_start_index_fns                €€€€€€rZ   rx   z _adaptive_pooling_fn.<locals>.fn�  s±   ø€ Ø‰ˆ��Rá(¨Ó,ˆÙ$ RÓ(ˆá(¨Ó,ˆÙ$ RÓ(ˆàˆÜ×'Ñ'¬¨l¸1©oÓ(>ÄÀlÐSTÁoÓ@VÓWò 
	1‰FˆB�ÙØØ�R�Ø Ð.Ø˜kÐ*ó	ˆCð ˆ~Ø‘á# C¨Ó0‘ð
	1ð ˆr\   ©rÈ  )rÅ  rÆ  rÎ  Úin_sizesÚ	out_sizesrÏ  rÇ  ry  rj  rl  rx   rÌ  rÍ  rÐ  rÑ  s     `  `     @@@@rZ   Ú_adaptive_pooling_fnrÕ  ~  sP   ý€ ð �J€Dˆ$Ø�L€Eˆ5ô 	)Ø�Y  d¨E°5ó	ñØØØØ÷
ñ ð. €Ir\   c                óh   ‡‡‡
‡‡‡‡— |\  }Š|\  }}t        | ||‰||«      \  ŠŠ
ŠŠˆ
ˆˆˆˆˆˆfd„}	|	S )Nc                óÆ  •— | �^ }}} ‰|«      } ‰|«      } ‰|«      } ‰|«      }d }	d }
t        j                  t        ‰d   «      t        ‰d   «      «      D ]„  \  }} ||||g||g||g«      }t        j                  ||z   ‰z  |z   |z   t
        j                  «      }|
€|}
n+t        j                  t        j                  ||	«      ||
«      }
|	€|}	Œ| ‰||	«      }	Œ† |
S r½  )	rå   rË  rè   rH   r9  rp   r:  rÇ  Úgt)r   rt  rK  rc  rx  r¸  r½  r¹  r¾  ÚmaxvalÚmaxindexrI  r|  rà  r(  rÌ  rÍ  rÎ  rÏ  rÐ  ry  rÑ  s                  €€€€€€€rZ   rx   z)_adaptive_pooling_fn_with_idx.<locals>.fn¶  s  ø€ Ø‰ˆ��Rá(¨Ó,ˆÙ$ RÓ(ˆá(¨Ó,ˆÙ$ RÓ(ˆàˆØˆÜ×'Ñ'¬¨l¸1©oÓ(>ÄÀlÐSTÁoÓ@VÓWò 	1‰FˆB�ÙØØ�R�Ø Ð.Ø˜kÐ*ó	ˆCô —N‘NØ Ñ# tÑ+¨mÑ;¸bÑ@Ä%Ç+Á+óˆEð ÐØ ‘äŸ9™9¤S§V¡V¨C°Ó%8¸%ÀÓJ�àˆ~Ø‘á# C¨Ó0‘ð)	1ð, ˆr\   rÒ  )rÅ  rÆ  rÎ  rÓ  rÔ  rÏ  rÇ  rj  rl  rx   rÌ  rÍ  rÐ  ry  rÑ  s     `  `    @@@@@rZ   Ú_adaptive_pooling_fn_with_idxrÛ  §  sQ   þ€ ð �J€Dˆ$Ø�L€Eˆ5ô 	)Ø�Y  d¨E°5ó	ñØØØØ÷
!ò !ðF €Ir\   c                ó  ‡ ‡‡— ‰ j                  «       t        j                  k(  rt        d«      ‚t	        ‰ t
        «      sJ ‚t        |«      dk(  sJ ‚‰ j                  «        ‰ j                  «       �^ }}}t        j                  j                  j                  |«      }t        j                  j                  j                  |«      }|\  }}||k(  r||k(  rt        ‰ «      S |dk(  s|dk(  r2g |¢|‘|‘}t        |‰ j                  «       ‰ j                  «       ¬«      S ||z  dk(  r||z  dk(  r||z  ||z  g}t!        ‰ |«      S t#        ||z   dz
  |«      }	t#        ||z   dz
  |«      }
t%        |«      ||gz   }‰ j                  «       }|	|
z  }|dkD  rt'        ‰ |«      S d„ }d„ }t)        |||	|
g||g||gt*        j,                  ¬	«      Št/        t1        ‰ «      «      Šˆˆˆ fd
„}t3        j4                  ‰ j                  «       |||¬«      }|S )Nz0'adaptive_avg_pool2d' not implemented for 'Long'r&   r   r  r(   rU  c                ó    — t        | |z  |«      S r   ©r"   ©r(  rÃ  rÄ  s      rZ   rÅ  z)_adaptive_avg_pool2d.<locals>.start_index  ó   € Ü˜ ™¨7Ó3Ð3r\   c                ó2   — t        | dz   |z  |z   dz
  |«      S rº  rÞ  rß  s      rZ   rÆ  z'_adaptive_avg_pool2d.<locals>.end_index
  ó"   € Ü˜ ™ gÑ-°Ñ7¸!Ñ;¸WÓEÐEr\   ©rÅ  rÆ  rÎ  rÓ  rÔ  rÏ  c                ó^   •— t        j                   ‰| t        ‰«      «       ‰| ‰«      «      S r   )rH   ÚtruedivrÁ  )r   Úfn_sumÚones_loaderr›   s    €€€rZ   rx   z _adaptive_avg_pool2d.<locals>.fn  s-   ø€ Ü�{‰{Ù�3Ô+¨AÓ.Ó/±¸¸[Ó1Ió
ð 	
r\   rM  )r°   rp   r:  r0  r`   r:   r¼   rú  r½   rI   rR   r  rÕ  rw  r  rc   Ú
avg_pool2dr=   r^   Úfallback_adaptive_avg_pool2drÕ  rH   r—   rÁ  Ú	ones_liker7   ré   )r›   rx  rü  rÇ  ry  rj  rl  Úo_sizerO  Úh_kernel_maxÚw_kernel_maxr  r­   rX  rÅ  rÆ  rx   Úrvræ  rç  s   `                 @@rZ   Ú_adaptive_avg_pool2drï  á  s  ú€ à‡{�{ƒ}œŸ™Ò#äÐMÓNÐNÜ�aœÔ#Ð#Ð#Üˆ{Ó˜qÒ Ð Ð Ø‡N�NÔàŸ™›Ñ€UˆD�$ä�7‰7×Ñ×1Ñ1°$Ó7€DÜ�7‰7×Ñ×1Ñ1°$Ó7€Dà�L€Eˆ5ð ˆu‚}˜ šÜ�Q‹xˆà�‚z�U˜a’ZØ'�5Ð'˜%Ð' Ð'ˆÜ�V 1§;¡;£=¸¿¹»ÔHÐHØˆe�|�qÒ˜T E™\¨QÒ.Ø˜u‘} d¨e¡mÐ4ˆÜ˜!˜[Ó)Ð)ä˜D 5™L¨1Ñ,¨uÓ5€LÜ˜D 5™L¨1Ñ,¨uÓ5€Lä�E‹{˜e U˜^Ñ+€HØ�K‰K‹M€Eà Ñ-€KØ�RÒä+¨A¨{Ó;Ð;ò4òFô "ØØØ" LÐ1Ø˜�Ø˜%�.Ü—7‘7ô€Fô &¤i°£lÓ3€Kö
ô
 
×	Ñ	Ø�|‰|‹~ØØØô	
€Bð €Ir\   c                ó¾  ‡ ‡‡— ‰ j                  «       t        j                  k(  rt        d«      ‚t	        ‰ t
        «      sJ ‚t        |«      dk(  sJ ‚‰ j                  «        ‰ j                  «       �^ }}}t        j                  j                  j                  |«      }t        j                  j                  j                  |«      }|\  }}|dk(  s|dk(  r\g |¢|‘|‘}t        |‰ j                  «       ‰ j                  «       ¬«      t        |t        j                  ‰ j                  «       ¬«      fS ||z  dk(  r||z  dk(  rt        ‚t!        ||z   dz
  |«      }t!        ||z   dz
  |«      }	t#        |«      ||gz   }
‰ j                  «       }||	z  }|dkD  rt%        ‰ |«      S d„ }d„ }t'        ||||	g||g||gt(        j*                  ¬	«      Št-        ||||	g||g||gt(        j*                  ¬	«      Šˆˆ fd
„}ˆˆ fd„}t/        j0                  ‰ j                  «       |||
¬«      }t/        j0                  ‰ j                  «       t        j                  ||
¬«      }||fS )Nz,adaptive_max_pool2d not implemented for Longr&   r   r  r(   rU  c                ó    — t        | |z  |«      S r   rÞ  rß  s      rZ   rÅ  z(adaptive_max_pool2d.<locals>.start_indexQ  rà  r\   c                ó2   — t        | dz   |z  |z   dz
  |«      S rº  rÞ  rß  s      rZ   rÆ  z&adaptive_max_pool2d.<locals>.end_indexT  râ  r\   rã  c           	     ó<   •—  ‰| t        ‰t        d«      «      «      S ©Nr`  ©rÁ  r#  )r   Úinner_func_max_valr›   s    €€rZ   Úinner_fn_max_valz-adaptive_max_pool2d.<locals>.inner_fn_max_vali  ó   ø€ Ù! #Ô':¸1¼eÀF»mÓ'LÓMÐMr\   c           	     ó<   •—  ‰| t        ‰t        d«      «      «      S rô  rõ  )r   Úinner_func_max_idxr›   s    €€rZ   Úinner_fn_max_idxz-adaptive_max_pool2d.<locals>.inner_fn_max_idxl  rø  r\   rM  )r°   rp   r:  r0  r`   r:   r¼   rú  r½   rI   rR   r  rÕ  r  rc   Ú
ValueErrorr=   r^   Úfallback_adaptive_max_pool2drÕ  rH   rT  rÛ  r7   ré   )r›   rx  rü  rÇ  ry  rj  rl  rë  rì  rí  r  r­   rX  rÅ  rÆ  r÷  rû  rî  Úrirú  rö  s   `                  @@rZ   Úadaptive_max_pool2drÿ  ,  sL  ú€ à‡{�{ƒ}œŸ™Ò#äÐIÓJÐJÜ�aœÔ#Ð#Ð#Üˆ{Ó˜qÒ Ð Ð Ø‡N�NÔàŸ™›Ñ€UˆD�$ä�7‰7×Ñ×1Ñ1°$Ó7€DÜ�7‰7×Ñ×1Ñ1°$Ó7€Dà�L€Eˆ5à�‚z�U˜a’ZØ'�5Ð'˜%Ð' Ð'ˆÜ�V 1§;¡;£=¸¿¹»ÔHÌ%Øœ%Ÿ+™+¨a¯l©l«nôK
ð 
ð 	
ð ˆe�|�qÒ˜T E™\¨QÒ.äÐä˜D 5™L¨1Ñ,¨uÓ5€LÜ˜D 5™L¨1Ñ,¨uÓ5€Lä�E‹{˜e U˜^Ñ+€HØ�K‰K‹M€Eà Ñ-€KØ�RÒä+¨A¨{Ó;Ð;ò4òFô .ØØØ" LÐ1Ø˜�Ø˜%�.Ü—;‘;ôÐô 7ØØØ" LÐ1Ø˜�Ø˜%�.Ü—;‘;ôÐõNõNô 
×	Ñ	Ø�|‰|‹~ØØ!Øô	
€Bô 
×	Ñ	Ø�|‰|‹~Ü�k‰kØ!Øô	
€Bð ˆrˆ6€Mr\   c                ó�   ‡ ‡‡‡‡‡‡‡— ‰‰   Š‰‰   Š‰‰   Št        ‰‰z
  ‰dz
  «      Š‰ j                  «       Šˆˆˆˆˆˆˆ ˆfd„}|S )Nr(   c                óV  •—  ‰g | ¢‰dz
  ‰z
  ‘«      }t        j                  |‰j                  «       «      }t        j                  ‰‰j                  «       «      }t        j                  ||z   |z  «      t        j                  ||z  «      z
  }t        j                  |t
        j                  «      }t        j                  |t        j                  ‰dz
  t
        j                  «      «      }t        j                  ||t        j                  ‰	‰
z
  t
        j                  «      «      S rº  )	rH   r9  r°   ró  rØ   rp   r:  r=  rÇ  )rK  rh   ÚsampleÚi_exprÚ
alpha_exprÚseq_irE  r5  rÀ   Úin_szÚ	kernel_szÚndimsÚout_szÚsamplesÚsamples_loaders          €€€€€€€€rZ   r@  z)_fractional_pooling_offsets.<locals>.loadŠ  sç   ø€ ÙÐ : &Ð :¨%°!©)°c©/Ð :Ó;ˆÜ—‘  7×#4Ñ#4Ó#6Ó7ˆÜ—^‘^ E¨7×+<Ñ+<Ó+>Ó?ˆ
Ü—	‘	˜6 F™?¨jÑ8Ó9¼C¿I¹IØ�ZÑó=
ñ 
ˆô —‘˜U¤E§K¡KÓ0ˆä�v‰vØÜ�N‰N˜6 A™:¤u§{¡{Ó3ó
ˆô �y‰y˜˜u¤c§n¡n°U¸YÑ5FÌÏÉÓ&TÓUÐUr\   )r$   rO  )	r
  r  r	  r  rÀ   r  r@  r5  r  s	   `````` @@rZ   Ú_fractional_pooling_offsetsr  ƒ  sT   ÿ€ Ø�C‰[€FØ�#‰J€EØ˜#‘€IÜ�u˜yÑ(¨&°1©*Ó5€EØ×(Ñ(Ó*€N÷Vó Vð €Kr\   c                ó€  ‡‡‡‡‡‡— | j                  «        | j                  «       �^ }ŠŠ‰\  }}|\  }}||z  dk\  rt        | ‰||«      S t        j                  t
        |‰‰g|‰d¬«      }	 |	d¬«      Š |	d¬«      Š| j                  «       Šˆˆˆˆˆˆfd„}
t        |«      ||gz   }t        j                  | j                  «       | j                  «       t        j                  |
d¬	«      |¬
«      }t        j                  | j                  «       t        j                  t        j                  |
d¬	«      |¬
«      }||fS )NrU  r&   )r
  r  r	  r  r  r   rG  r(   c           	     ót  •— | �^ }}}t        j                   ‰||«      ‰«      }t        j                   ‰||«      ‰«      }d }d }t        j                  t	        ‰d   «      t	        ‰d   «      «      D ]½  \  }	}
 ‰g |¢||	z   ‘||
z   ‘«      }|r‡t        j
                  ||	z   ‰z  |z   |
z   t        j                  «      }|€|}nRt        j                  t        j                  t        j                  ||«      t        j                  |«      «      ||«      }|€|}Œ¨t        j                  ||«      }Œ¿ |r|S |S r½  )rH   rQ  rå   rË  rè   r9  rp   r:  rÇ  Úor_rØ  ré  rT  )r   Úreturn_indexrK  rc  rx  r¸  r¹  rÙ  rÚ  rI  r|  rà  r(  Ú
h_index_fnÚinp_hÚinp_wrO  Ú
w_index_fnr  s                €€€€€€rZ   rx   z!fractional_max_pool2d.<locals>.fnµ  s:  ø€ Ø‰ˆ��Rä×-Ñ-©j¸ÀÓ.DÀeÓLˆÜ×-Ñ-©j¸ÀÓ.DÀeÓLˆàˆØˆÜ×'Ñ'¬¨k¸!©nÓ(=¼uÀ[ÐQRÁ^Ó?TÓUò 	2‰FˆB�ÙÐL˜VÐL ]°RÑ%7ÐL¸ÈÑ9KÐLÓMˆCÙÜŸ™Ø" RÑ'¨5Ñ0°=Ñ@À2ÑEÄuÇ{Á{ó�ð Ð#Ø$‘Hä"Ÿy™yÜŸ™¤§¡ s¨FÓ 3´S·Y±Y¸s³^ÓDÀeÈXó �Hð ˆ~Ø‘äŸ™ S¨&Ó1‘ð	2ñ  ØˆOàˆMr\   F)r  rM  T)rú  r½   Úfallback_fractional_max_pool2dr÷   r  r  rO  r^   r7   ré   rc   r°   rp   r:  )r›   rO  rx  Úrandom_samplesrü  Úkernel_hÚkernel_wrj  rl  Úgen_offsets_for_dimrx   r  rî  rþ  r  r  r  r  r  s    `            @@@@@rZ   Úfractional_max_pool2dr  œ  s2  ý€ à‡N�NÔØŸ:™:›<Ñ€UˆE�5Ø$Ñ€HˆhØ�L€Eˆ5à�(Ñ˜bÒ Ü-Øˆ{˜K¨ó
ð 	
ô $×+Ñ+Ü#ØØ�eˆnØØØôÐñ %¨Ô+€JÙ$¨Ô+€JØ�}‰}‹€H÷ñ ô: �E‹{˜e U˜^Ñ+€HÜ	×	Ñ	Ø�|‰|‹~Ø�k‰k‹mÜ×"Ñ" 2°EÔ:Øô	
€Bô 
×	Ñ	Ø�|‰|‹~Ü�k‰kÜ×"Ñ" 2°DÔ9Øô	
€Bð ˆrˆ6€Mr\   c                ób  ‡ ‡‡— ‰ j                  «        ‰ j                  «       �^ }}}t        j                  j                  j                  |«      }t        j                  j                  j                  |«      }|�^ }}}	||z  dk(  r||	z  dk(  rt        ‰ ||z  ||	z  gd¬«      S t        ||«      }
t        ||	«      }d„ Šˆfd„}t        ‰||
|g||g||	gt        j                  ¬«      Šˆˆ fd„}t        j                  ‰ j                  «       ‰ j                  «       |t        |«      ¬«      }|S )	Nr   r(   )Údivisor_overridec                óF   — t        | |z  t        j                  |«      «      S r   )r!   r±   rô  rß  s      rZ   rÅ  z0upsample_nearest2d_backward.<locals>.start_indexõ  s   € Ü�u˜w‘¬¯©°gÓ(>Ó?Ð?r\   c                ó   •—  ‰| dz   ||«      S rº  rÜ   )r(  rÃ  rÄ  rÅ  s      €rZ   rÆ  z.upsample_nearest2d_backward.<locals>.end_indexø  s   ø€ Ù˜E A™I¨°Ó9Ð9r\   rã  c                ó(   •—  ‰| t        ‰«      «      S r   )rÁ  )r   ræ  r›   s    €€rZ   rx   z'upsample_nearest2d_backward.<locals>.fn  s   ø€ Ù�cÔ.¨qÓ1Ó2Ð2r\   rM  )rú  r½   rI   rR   r  rÕ  rè  r=   rÕ  rH   r—   r7   ré   rc   r°   r^   )r›   rx  Ú
input_sizer
  r  r²  r  r  Úout_hÚout_wrì  rí  rÆ  rx   rî  ræ  rÅ  s   `              @@rZ   Úupsample_nearest2d_backwardr#  ã  s"  ú€ ð ‡N�NÔàŸJ™J›LÑ€VˆU�EÜ�G‰G×Ñ×2Ñ2°5Ó9€EÜ�G‰G×Ñ×2Ñ2°5Ó9€Eà&Ñ€VˆU�Eàˆu�}˜Ò˜e e™m¨qÒ0Ü˜!˜e u™n¨e°u©nÐ=ÐPQÔRÐRä˜5 %Ó(€LÜ˜5 %Ó(€Lò@ô:ô "ØØØ" LÐ1Ø˜�Ø˜%�.Ü—7‘7ô€Fõ3ô 
×	Ñ	Ø�|‰|‹~Ø�k‰k‹mØÜ�JÓô	
€Bð €Ir\   c           
     ó(   — t        | ||||||d¬«      S )Nr&   rG  ©Ú_avg_poolnd©r›   rO  r'  r&  rP  Úcount_include_padr  s          rZ   rè  rè    ó)   € ô Ø	ØØØØØØØô	ð 	r\   c           
     ó(   — t        | ||||||d¬«      S )NrŸ   rG  r%  r'  s          rZ   Ú
avg_pool3dr+  /  r)  r\   c                óv  ‡‡‡‡‡‡‡‡‡‡‡— ‰s‰Š‰sdg‰z  Št        ‰‰«      Št        ‰‰«      Št        ‰‰«      Št        | t        «      sJ ‚t        ‰«      ‰k(  sJ ‚t        ‰«      ‰k(  sJ ‚t        ‰«      ‰k(  sJ ‚t        | j	                  «       «      ‰dz   ‰dz   fv sJ ‚| j                  «        | j	                  «       d ‰  }| j	                  «       ‰ d  Št        t        ‰«      D �	cg c]  }	t        ‰|	   |	‰‰‰|«      ‘Œ c}	Ž \  }
}t        ‰«      st        |«      rt        | d‰¬«      Šd}n| j                  «       Šd}t        |«      t        |
«      z   }| j                  «       Št        j                  t         j"                  ‰«      }|dkD  r4‰dk(  rt$        }n‰d	k(  rt&        }nt)        d
‰› �«      ‚ || ‰‰‰|‰|«      S ˆˆˆˆfd„Š|r|r)|r|n|Š‰j*                  rd‰z  Šˆˆˆˆfd„}nˆˆˆˆfd„}nˆˆˆˆˆˆˆˆˆf	d„}t-        j.                  | j1                  «       ‰||¬«      }|S c c}	w )Nr   r(   r&   r8  rG  TFrU  rŸ   zUnknown dim: c           	     óT  •— | d ‰	  }| ‰	 d  }d }t        j                  t        ‰	«      D �cg c]  }t        ‰
|   «      ‘Œ c}Ž D ]V  }t        ‰	«      D �cg c]  }||   ‰|   z  ||   z   ‰|   z
  ‘Œ }} |g |¢|¢«      }|€|}ŒAt        j                  ||«      }ŒX |S c c}w c c}w r   )rå   rË  rè   rH   r—   )r   rt  rK  r  Útotalrh   rI  r¿   rà  rÀ   rO  r&  r'  s            €€€€rZ   ræ  z_avg_poolnd.<locals>.fn_sum†  sÆ   ø€ Ø�U�s�d�ˆØ���ˆJˆØˆÜ×#Ñ#ÄUÈ3ÃZÖ%PÀ¤e¨K¸©NÕ&;Ò%PÐQò 	,ˆBÜBGÈÃ*ÖM¸Q�1�Q‘4˜& ™)Ñ# b¨¡eÑ+¨g°a©jÓ8ÐMˆCÐMÙ˜˜6˜ C˜Ó)ˆCØˆ}Ø‘äŸ™  UÓ+‘ð	,ð ˆùò &QùÚMs   ¬B ÁB%c                óf   •— t        j                   ‰| ‰«      t        j                  ‰‰«      «      S r   )rH   rN  r;  )r   r­   ræ  rW  r  s    €€€€rZ   rx   z_avg_poolnd.<locals>.fn˜  s&   ø€ Ü—w‘w™v c¨8Ó4´c·l±lÀ5È%Ó6PÓQÐQr\   c                óf   •— t        j                   ‰| ‰«      t        j                  ‰‰«      «      S r   )rH   Útruncdivr;  )r   Údivisorr­   ræ  r  s    €€€€rZ   rx   z_avg_poolnd.<locals>.fn�  s'   ø€ ä—|‘|¡F¨3°Ó$9¼3¿<¹<ÈÐQVÓ;WÓXÐXr\   c                óF  •	— | ‰	 d  }g }t        ‰	«      D ]¡  }||   ‰|   z  ‰|   z
  }t        j                  |‰|   z   ‰|   ‰|   z   «      }‰s/t        j                  |d«      }t        j                  |‰|   «      }t	        j
                  ||z
  t        j                  «      }|j                  |«       Œ£ t        j                  t        j                  |«      }‰
j                  rt	        j                   ‰| ‰«      |«      S t	        j                   ‰| ‰«      |«      S rµ  )rè   r±   ÚMinÚMaxrH   r9  rp   r¿  rd   r÷   rÎ  rN  r—  rå  r1  )r   rc  Údivide_factorsrh   ÚhstartÚhendÚfactorÚdivide_factorr(  rÀ   r­   ræ  r?  rO  r&  r'  r  s           €€€€€€€€€rZ   rx   z_avg_poolnd.<locals>.fn£  s  ø€ Ø�c�T�U�ˆBàˆNÜ˜3“Zò .�Ø˜A™ ¨¡Ñ*¨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ÜŸ™¨¨v©´u·{±{ÓC�Ø×%Ñ% fÕ-ð.ô &×,Ñ,¬S¯W©W°nÓEˆMØ×&Ò&Ü—{‘{¡6¨#¨xÓ#8¸-ÓHÐHä—<‘<¡ s¨HÓ 5°}ÓEÐEr\   rM  )rD   r`   r:   r¼   r½   rú  rç   rè   rS  r  rH  rO  r^   r°   r÷   rÎ  r£  rN  Úfallback_avg_pool2dÚfallback_avg_pool3drü  r—  r7   ré   rc   )r›   rO  r'  r&  rP  r(  r  rÀ   rü  rh   rj  Ú
ceil_modesÚhad_paddingr  rX  Úfallbackrx   rî  r2  r­   ræ  r?  rW  r  s    ``` ` `          @@@@@@rZ   r&  r&  E  sT  ÿú€ ñ ØˆÙØ�#˜‘)ˆÜ˜{¨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ä×"Ñ"¤8§<¡<°Ó=€KØ�RÒà�!Š8Ü*‰HØ�AŠXÜ*‰Hä˜}¨S¨EÐ2Ó3Ð3áØØØØØØØó
ð 	
÷ñ Ñ*Ù&6Ñ"¸KˆØ×"Ò"Ø˜‘KˆE÷Rð R÷
Yð Y÷	Fô 	Fô$ 
×	Ñ	Ø�|‰|‹~ØØØô	
€Bð €Iùòu

s   Ã-H6c                óÒ  ‡‡‡‡‡‡‡‡‡‡‡‡‡‡— ‰�‰dk7  sJ d«       ‚‰s‰Š‰sddgŠt        | t        «      sJ ‚t        |t        «      sJ ‚t        ‰«      dk(  sJ ‚t        ‰«      dk(  sJ ‚t        ‰«      dk(  sJ ‚t        |j                  «       «      dv sJ ‚| j	                  «        |j                  «       �^ }ŠŠt        ‰d‰‰‰|«      \  }	}
t        ‰d‰‰‰|«      \  }}| j                  «       Š‰d   xs ‰d   xs |
xs |Š| j                  «       �^ }ŠŠt        |j                  «       «      }|j                  «       }t        ˆˆfd„t        ‰d   dz  «      D «       «      Št        ˆˆfd„t        ‰d   dz  «      D «       «      Š‰‰z  }|dkD  rt        | |‰‰‰|‰‰«      S ˆˆˆˆˆfd	„Šˆˆˆˆˆˆˆˆˆˆˆˆfd
„}t        j                  | j                  «       |||¬«      }|S )Nr   údivisor must be not zeror&   rÍ  r(   c           
   3  ót   •K  — | ]/  }t        |‰d    z  t        d |‰d    z
  ‰d    z  «      z
  d«      –— Œ1 y­wr�  rŽ  r�  s     €€rZ   r‘   z&avg_pool2d_backward.<locals>.<genexpr>í  r�  r‘  c           
   3  ót   •K  — | ]/  }t        |‰d    z  t        d|‰d    z
  ‰d    z  «      z
  d «      –— Œ1 y­wr“  rŽ  r”  s     €€rZ   r‘   z&avg_pool2d_backward.<locals>.<genexpr>ñ  r�  r‘  rU  c           	     ó@  •— t        j                  ‰d   t        j                  «      }t        j                  ‰d   t        j                  «      }t        j                  ‰d   t        j                  «      }t        j                  ‰d   t        j                  «      }t        j                  ‰d   t        j                  «      }t        j                  ‰d   t        j                  «      }t        j                  t        j
                  | |«      |«      }t        j                  t        j
                  ||«      |«      }	t        j                  t        j                  ||«      t        j                  t        j                  ‰t        j                  «      |«      «      }
t        j                  t        j                  |	|«      t        j                  t        j                  ‰t        j                  «      |«      «      }t        j                  |t        j                  dt        j                  «      «      }t        j                  |	t        j                  dt        j                  «      «      }	t        j                  |
t        j                  ‰t        j                  «      «      }
t        j                  |t        j                  ‰t        j                  «      «      }t        j
                  t        j                  |
|«      t        j                  ||	«      «      }|S )z{
        This computes the scaling factor that we will divide an element
        by when `count_include_pad=False`
        r   r(   )
rH   r;  rp   r¿  rk  rN  rU  r—   r9  rT  )rŸ  r   Ústride_hÚstride_wÚpad_hÚpad_wr  r  r7  Úwstartr8  Úwendr:  ÚheightrO  r&  r'  rª  s                €€€€€rZ   Ú!compute_pool_size_without_paddingz>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¡´·±Ó<ˆÜ—‘œŸ™  XÓ.°Ó6ˆÜ—‘œŸ™  XÓ.°Ó6ˆÜ�{‰{Ü�G‰G�F˜HÓ%Ü�G‰G”C—N‘N 6¬5¯;©;Ó7¸Ó?ó
ˆô �{‰{Ü�G‰G�F˜HÓ%Ü�G‰G”C—N‘N 5¬%¯+©+Ó6¸Ó>ó
ˆô —‘˜V¤S§\¡\°!´U·[±[Ó%AÓBˆÜ—‘˜V¤S§\¡\°!´U·[±[Ó%AÓBˆÜ�{‰{˜4¤§¡°¼¿¹Ó!DÓEˆÜ�{‰{˜4¤§¡°´u·{±{Ó!CÓDˆÜŸ™¤§¡¨¨fÓ 5´s·w±w¸tÀVÓ7LÓMˆØÐr\   c                ó8  •— | �^ }}}|‰d   z   }|‰d   z   }t        j                  t        |‰d   z
  ‰d   z   ‰d   «      t        j                  «      }t        j                  t        |‰d   z
  ‰d   z   ‰d   «      t        j                  «      }t        j                  t        |‰d   «      dz   t        j                  «      }t        j                  t        |‰d   «      dz   t        j                  «      }t        j
                  |t        j                  dt        j                  «      «      }t        j
                  |t        j                  dt        j                  «      «      }t        j                  |t        j                  ‰t        j                  «      «      }t        j                  |t        j                  ‰t        j                  «      «      }d }t        ‰«      D �]+  }	t        ‰«      D �]  }
t        j                  |t        j                  |	t        j                  «      «      }t        j                  |t        j                  |
t        j                  «      «      }‰�‰}n‰s‰s‰d   ‰d   z  }n	 ‰||«      }t        j                   ‰g |¢t        j                  t        j                  |t        j                  |t        j                  dt        j                  «      «      «      ‰d¬«      ‘t        j                  t        j                  |t        j                  |t        j                  dt        j                  «      «      «      ‰d¬«      ‘«      |«      }t        j                  t        j                  ||«      t        j                  ||«      «      }|€;t        j                  ||t        j                  dt        j                   «      «      }�Œït        j                  |t        j                  ||«      |«      }�Œ �Œ. |€J ‚|S )Nr   r(   Fr†  r8  )rH   r9  r"   rp   r¿  rT  r;  rU  rè   r—   rå  rQ  rk  r>  r=  rÇ  rR  )r   rK  r?  ri  r˜  r™  rš  r›  rœ  r�  rž  rŸ  r   rW  ÚpartrE  rL  r(  r  r¤  r¥  r>  rO  r&  r§  r¨  r'  r©  s                   €€€€€€€€€€€€rZ   rx   zavg_pool2d_backward.<locals>.fn   s2  ø€ Ø‰ˆ��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ˆàˆÜ˜Ó'ó *	RˆCÜ˜]Ó+ó )R�Ü—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˜uÓ%Ü—F‘F˜2˜uÓ%ó�ð Ð#Ü"Ÿy™y¨¨t´S·\±\À#ÄuÇ}Á}Ó5UÓV’Hä"Ÿy™y¨¬s¯w©w°xÀÓ/FÈÓQ’HòS)Rð*	RðV Ð#Ð#Ð#Øˆr\   rM  )r`   r:   r¼   r½   rú  rS  rO  r^   r°   rÇ  rè   Úfallback_avg_pool2d_backwardr7   ré   rc   )r­  r›   rO  r'  r&  rP  r(  r  rÅ   Ú_h_outrk  Ú_w_outrm  r  r­   rX  rx   rî  rL  r¤  r¥  r>  rK  r§  r¨  r©  rª  s     ``` ``          @@@@@@@@@rZ   Úavg_pool2d_backwardrR  Ä  s  ÿý€ ð Ð#Ð'7¸1Ò'<ÐXÐ>XÓXÐ<ÙØˆÙØ�a�&ˆä�k¤9Ô-Ð-Ð-Ü�aœÔ#Ð#Ð#Üˆ{Ó˜qÒ Ð Ð Üˆv‹;˜!ÒÐÐÜˆw‹<˜1ÒÐÐÜˆq�z‰z‹|Ó Ñ&Ð&Ð&à×ÑÔàŸ
™
›Ñ€Qˆ�ä%Ø��; ¨°óÑ€FˆJô & e¨Q°¸VÀWÈiÓXÑ€FˆJà×)Ñ)Ó+€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ð €Ir\   c                ó¶  ‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡‡ — ‰�‰dk7  sJ d«       ‚‰s‰Š‰sg d¢Št        | t        «      sJ ‚t        |t        «      sJ ‚t        ‰«      dk(  sJ ‚t        ‰«      dk(  sJ ‚t        ‰«      dk(  sJ ‚t        |j                  «       «      dv sJ ‚| j	                  «        |j                  «       �^ }ŠŠŠ t        ‰d‰‰‰|«      \  }	}
t        ‰d‰‰‰|«      \  }}t        ‰ d‰‰‰|«      \  }}| j                  «       Št        ‰«      xs
 |
xs |xs |Š| j                  «       �^ }ŠŠŠt        |j                  «       «      }|j                  «       }ˆˆfd„t        d«      D «       \  ŠŠŠ‰‰z  ‰z  }|d	kD  rt        | |‰‰‰|‰‰«      S ˆˆˆˆˆˆ fd
„Šˆˆˆˆˆˆˆˆˆˆˆˆˆˆfd„}t        j                  | j                  «       |||¬«      }|S )Nr   rA  )r   r   r   rŸ   )r    r¡   r(   r&   c              3  ój   •‡K  — | ])  Št        ˆˆˆfd „t        ‰‰   dz  «      D «       «      –— Œ+ y­w)c           
   3  ót   •K  — | ]/  }t        |‰‰   z  t        d |‰‰   z
  ‰‰   z  «      z
  d«      –— Œ1 y­wr�  rŽ  )r�   r×  rh   rO  r'  s     €€€rZ   r‘   z0avg_pool3d_backward.<locals>.<genexpr>.<genexpr>�  sF   øè ø€ ò 
àô ��V˜A‘Y‘¤ Q¨¨[¸©^Ñ);ÀÀqÁ	Ñ(IÓ!JÑJÈA×Nñ
ùr‘  r&   N)rÇ  rè   )r�   rh   rO  r'  s    @€€rZ   r‘   z&avg_pool3d_backward.<locals>.<genexpr>œ  s;   ùè ø€ ò 3ð
 ô	 	õ 
ä˜; q™>¨AÑ-Ó.ô
÷ 	
ñ3ùs   „/3é}   c           	     ó  •— d„ ‰D «       \  }}}d„ ‰D «       \  }}}d„ ‰D «       \  }	}
}d„ t        | ||g|||g|||g«      D «       \  }}}d„ t        |||g|	|
|g‰‰‰g|||g«      D «       \  }}}d„ |||fD «       \  }}}d„ t        |||g‰‰‰g«      D «       \  }}}t        j                  t        j                  t        j                  ||«      t        j                  ||«      «      t        j                  ||«      «      }|S )Nc              3  ód   K  — | ](  }t        j                  |t        j                  «      –— Œ* y ­wr   r€  )r�   rÚ  s     rZ   r‘   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>³  s   è ø€ Ò'UÈ¬¯©°Q¼¿¹×(DÑ'Uùó   ‚.0c              3  ód   K  — | ](  }t        j                  |t        j                  «      –— Œ* y ­wr   r€  r2  s     rZ   r‘   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>´  s   è ø€ ÒMÀœsŸ|™|¨A¬u¯{©{×;ÑMùrY  c              3  ód   K  — | ](  }t        j                  |t        j                  «      –— Œ* y ­wr   r€  )r�   rß   s     rZ   r‘   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>µ  s$   è ø€ ò (
Ø-.ŒC�L‰L˜œEŸK™K×(ñ(
ùrY  c              3  óx   K  — | ]2  \  }}}t        j                  t        j                  ||«      |«      –— Œ4 y ­wr   )rH   rk  rN  )r�   rK  rÚ  Úpads       rZ   r‘   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>¹  s3   è ø€ ò "
á��1�cô �G‰G”C—G‘G˜A˜q“M 3×'ñ"
ùs   ‚8:c           
   3  óæ   K  — | ]i  \  }}}}t        j                  t        j                  ||«      t        j                  t        j                  |t        j
                  «      |«      «      –— Œk y ­wr   )rH   rU  r—   r9  rp   r¿  )r�   r  rß   rÀ   r]  s        rZ   r‘   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>¿  sU   è ø€ ò 

ñ #��q˜#˜sô �K‰KÜ—‘˜˜qÓ!¤3§7¡7¬3¯>©>¸#¼u¿{¹{Ó+KÈSÓ#Q÷ñ

ùs   ‚A/A1c              3  óŒ   K  — | ]<  }t        j                  |t        j                  d t        j                  «      «      –— Œ> y­wr1  ©rH   rT  r;  rp   r¿  )r�   r  s     rZ   r‘   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>Ê  s2   è ø€ ò "
àô �K‰K˜œsŸ|™|¨A¬u¯{©{Ó;×<ñ"
ùó   ‚AAc              3  ó’   K  — | ]?  \  }}t        j                  |t        j                  |t        j                  «      «      –— ŒA y ­wr   ©rH   rU  r9  rp   r¿  )r�   r  rÀ   s      rZ   r‘   zQavg_pool3d_backward.<locals>.compute_pool_size_without_padding.<locals>.<genexpr>Î  s6   è ø€ ò 
á��Sô �K‰K˜œSŸ^™^¨C´·±Ó=×>ñ
ùó   ‚AA)rç   rH   rN  rk  )ÚpdrŸ  r   Ústride_drE  rF  Úpad_drG  rH  Úkernel_dr  r  Údstartr7  rI  Údendr8  rJ  r:  ÚdepthrK  rO  r&  r'  rª  s                      €€€€€€rZ   rL  z>avg_pool3d_backward.<locals>.compute_pool_size_without_padding²  sH  ø€ Ù'UÈfÔ'UÑ$ˆ�(˜HÙMÀWÔMÑˆˆu�eñ(
Ø2=ô(
Ñ$ˆ�(˜Hñ"
ä Ø�R˜�˜x¨°8Ð<¸uÀeÈUÐ>Sóô"
Ñˆ�˜ñ

ô '*Ø˜ Ð(Ø˜8 XÐ.Ø˜ Ð&Ø˜˜uÐ%ó	'ô	

Ñˆˆd�Dñ"
à  &¨&Ð1ô"
Ñˆ�˜ñ
ä  t¨TÐ 2°U¸FÀEÐ4JÓKô
Ñˆˆd�Dô Ÿ™Ü�G‰G”C—G‘G˜D &Ó)¬3¯7©7°4¸Ó+@ÓAÄ3Ç7Á7È4ÐQWÓCXó
ˆð Ðr\   c                ó.  •— | �^ }}}}d„ t        |||g‰«      D «       \  }}}d„ t        |||g‰‰!«      D «       \  }}}d„ t        |||g‰!«      D «       \  }}	}
d„ |||fD «       \  }}}d„ t        ||	|
g‰‰‰ g«      D «       \  }}	}
d }t        ‰«      D �]{  }t        ‰«      D �]i  }t        ‰"«      D �]W  }d„ t        |||g|||g«      D «       \  }}}‰�‰}n ‰s‰s‰d   ‰d   z  ‰d	   z  }n
 ‰|||«      }t        j                   ‰g |¢t        j                  t        j
                  |t        j                  |t        j                  dt        j                  «      «      «      ‰d
¬«      ‘t        j                  t        j
                  |t        j                  |	t        j                  dt        j                  «      «      «      ‰d
¬«      ‘t        j                  t        j
                  |t        j                  |
t        j                  dt        j                  «      «      «      ‰ d
¬«      ‘«      |«      }t        j                  t        j                  t        j                  ||«      t        j                  ||	«      «      t        j                  ||
«      «      }|€;t        j                  ||t        j                  dt        j                  «      «      }�Œ-t        j                  |t        j                  ||«      |«      }�ŒZ �Œl �Œ~ |€J ‚|S )Nc              3  ó,   K  — | ]  \  }}||z   –— Œ y ­wr   rÜ   )r�   rí   r]  s      rZ   r‘   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>Ù  s   è ø€ ÒA™v˜q #�1�s•7ÑAùr¢  c              3  óŒ   K  — | ]<  \  }}}t        j                  t        ||z
  |z   |«      t        j                  «      –— Œ> y ­wr   ©rH   r9  r"   rp   r¿  )r�   rí   rß   rÚ  s       rZ   r‘   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>Û  s<   è ø€ ò %
á��1�aô �N‰Nœ8 A¨¡E¨A¡I¨qÓ1´5·;±;×?ñ%
ùra  c              3  ó„   K  — | ]8  \  }}t        j                  t        ||«      d z   t        j                  «      –— Œ: y­wr  ro  )r�   rí   rÚ  s      rZ   r‘   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>à  s6   è ø€ ò 
á��1ô �N‰Nœ8 A q›>¨AÑ-¬u¯{©{×;ñ
ùs   ‚>A c              3  óŒ   K  — | ]<  }t        j                  |t        j                  d t        j                  «      «      –— Œ> y­wr1  r`  )r�   Úpstarts     rZ   r‘   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>å  s2   è ø€ ò %
àô �K‰K˜¤§¡¨Q´·±Ó <×=ñ%
ùra  c              3  ó’   K  — | ]?  \  }}t        j                  |t        j                  |t        j                  «      «      –— ŒA y ­wr   rc  )r�   ÚpendÚ
pooled_dims      rZ   r‘   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>é  s6   è ø€ ò 
á ��jô �K‰K˜œcŸn™n¨Z¼¿¹ÓE×Fñ
ùrd  c              3  ó’   K  — | ]?  \  }}t        j                  |t        j                  |t        j                  «      «      –— ŒA y ­wr   )rH   r—   r;  rp   r¿  )r�   rr  Úp_s      rZ   r‘   z2avg_pool3d_backward.<locals>.fn.<locals>.<genexpr>õ  s6   è ø€ ò "á&˜F Bô Ÿ™ ¬¯©°R¼¿¹Ó(E×Fñ"ùrd  r   r(   r&   Fr†  r8  )rç   rè   rH   rå  rQ  rU  rk  r;  rp   r¿  r>  r=  rÇ  rR  r—   )#r   rK  r×  r?  ri  Úpdstartr˜  r™  Úpdendrš  r›  rœ  Úpd_r�  rž  re  rŸ  r   rW  rN  rE  rL  r(  Úd_window_sizer  r¤  r¥  r>  rO  r&  Úpooled_depthr§  r¨  r'  r©  s#                        €€€€€€€€€€€€€€rZ   rx   zavg_pool3d_backward.<locals>.fn×  s  ø€ ØÑˆ��A�qÙA¬¨a°°A¨Y¸Ó)@ÔA‰ˆˆ1ˆañ%
ä  1 a˜y¨+°vÓ>ô%
Ñ!ˆ�˜'ñ

ä˜Q  1˜I vÓ.ô
Ñˆˆu�eñ
%
à" G¨WÐ5ô%
Ñ!ˆ�˜'ñ
ä$'Ø˜˜uÐ%¨°mÀ\Ð'Ró%ô
Ñˆˆu�eð ˆä˜Ó'ó 8	VˆCÜ˜]Ó+ó 7V�Ü  Ó/ó 6V�Cñ"ä*-Ø$ g¨wÐ7¸#¸sÀ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ÜŸ™¤§¡¨¨EÓ!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6Vò7Vð8	Vðr Ð#Ð#Ð#Øˆr\   rM  )r`   r:   r¼   r½   rú  rS  rO  r  r^   r°   rè   Úfallback_avg_pool3d_backwardr7   ré   rc   )!r­  r›   rO  r'  r&  rP  r(  r  r²  Ú_d_outÚceil_mode_drP  Úceil_mode_hrQ  Úceil_mode_wrÅ   r  r­   rX  rx   rî  rL  r{  rk  r¤  r¥  r>  rK  r|  r§  r¨  r©  rª  s!     ``` ``             @@@@@@@@@@@@rZ   Úavg_pool3d_backwardr‚  o  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ˆKô 'Ø��; ¨°óÑ€FˆKô 'Øˆq�+˜v w°	óÑ€FˆKð ×)Ñ)Ó+€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ð €Ir\   c                ó  — | j                  «       }t        |t        «      r|g}n|st        t	        |«      «      }t	        |«      dk(  rt        |«      dv s
J d|› �«       ‚g S t        |«      }t        t	        |«      «      D ]_  }||   dk  r#||xx   t	        |«      rt	        |«      ndz  cc<   d||   cxk  rt	        |«      k  rŒFn t	        |«      dk(  r	||   dk(  rŒ_J ‚ t	        t        |«      «      t	        |«      k(  sJ d«       ‚|S )Nr   )rÜ   rz  ©r:  zinvalid axis: r(   zreduction axis not unique)r½   r`   rª   rè   r¼   r”   r^   r    )r›   r]  rñ   rh   s       rZ   Ú_validate_reduction_axisr…  7  sþ   € Ø�:‰:‹<€DÜ�$œÔØˆv‰ÙÜ”S˜“YÓˆÜ
ˆ4ƒy�A‚~Ü�T‹{Ð/Ñ/ÐH°>À$ÀÐ1HÓHÐ/Øˆ	Ü�‹:€DÜ”3�t“9Óò MˆØ�‰7�QŠ;Ø�‹G¤C¨¤I”s˜4”y°1Ñ4‹GØ�D˜‘GÔ'œc $›iÕ'¬C°«I¸ªN¸tÀA¹wÈ!»|ÐLÐLðMô Œz˜$ÓÓ ¤C¨£IÒ-ÐJÐ/JÓJÐ-Ø€Kr\   c               óx  ‡‡
‡‡‡— |�t        | |«      } | j                  «       Št        t           t	        | |«      «      }g }g Šg }g Št        t        ‰«      «      D ]Q  }||v r&‰j                  |«       |j                  ‰|   «       Œ-‰j                  |«       |j                  ‰|   «       ŒS ˆ
ˆˆˆˆfd„}‰r0t        ‰«      }	‰D ]  }t        j                  j                  |	|<   Œ! n|}	| j                  «       Š
t        | j                  «       |xs | j                  «       | j                  «       ||	|¬«      S )Nc                ó€  •— t        |«      t        ‰	«      k(  sJ ‚‰r+t        | «      t        ‰
«      k(  sJ ‚‰D �cg c]  }| |   ‘Œ	 } }t        | «      t        ‰«      k(  sJ ‚d gt        | «      t        |«      z   z  }t        j                  t        ‰| «      t        ‰	|«      «      D ]
  \  }}|||<   Œ  ‰|«      S c c}w r   )r¼   rå   ræ   rç   )r(  Úreduction_indexrh   rp  r   ÚvarÚinner_loaderÚkeepdimsÚkept_idxÚreduced_idxrñ   s         €€€€€rZ   rt  z%_make_reduction_inner.<locals>.loader[  sÇ   ø€ Ü�?Ó#¤s¨;Ó'7Ò7Ð7Ð7ÙÜ�u“:¤ T£Ò*Ð*Ð*Ø'/Ö0 !�U˜1“XÐ0ˆEÐ0Ü�5‹zœS ›]Ò*Ð*Ð*Ø�Fœc %›j¬3¨Ó+?Ñ?Ñ@ˆ	Ü!Ÿ™Ü�˜%Ó ¤# k°?Ó"Có
ò 	!‰HˆC�ð !ˆI�cŠNð	!ñ ˜IÓ&Ð&ùò 1s   ºB;)rk   rf  rt  rL  rK  rg  )rØ   r½   r    rª   r…  rè   r¼   rd   r^   r±   r  r  rO  rù   rc   r°   )r›   r]  r‹  r­   r0  Ú
kept_sizesÚreduced_sizesrh   rt  r  rŠ  rŒ  r�  rñ   s     `       @@@@rZ   Ú_make_reduction_innerr�  I  s'  ü€ ØÐÜ�Q˜ÓˆØ�:‰:‹<€DÜ”c‰?Ô3°A°tÓ<Ó=€Dà€JØ€HØ€MØ€KÜ”3�t“9Óò 'ˆØ�‰9Ø×Ñ˜qÔ!Ø× Ñ   a¡Õ)à�O‰O˜AÔØ×Ñ˜d 1™gÕ&ð'÷'ð 'ñ Ü˜“:ˆØò 	&ˆAÜŸ'™'Ÿ+™+ˆH�QŠKñ	&ð ˆà—=‘=“?€LÜØ�|‰|‹~Ø'Ò8¨1¯;©;«=Ø—+‘+“-ØØØ&ôð r\   c                ó   ‡ ‡— dd dœˆˆ fd„}|S )Nr¬   c               óÀ   •— t        | |||‰¬«      }t        j                  d‰| dœ|¤Ž}t        |j                  j                  t        «      r|j                  «        |S )N©r]  r‹  r­   r0  )râ  re  rÜ   )r�  r8   ré   r`   rb   rd  )r›   r]  r‹  r­   rà   r0  r0  râ  s         €€rZ   rZ  zmake_reduction.<locals>.inner{  sb   ø€ Ü&ØØØØØ"7ô
ˆô ×!Ñ!ÐX°ÈAÑXÐQWÑXˆÜØ�K‰K×ÑÜô
ð �N‰NÔØˆr\   rÌ   rÜ   )râ  r0  rZ  s   `` rZ   Úmake_reductionr”  z  s   ù€ ð°T÷ ð  €Lr\   c               óÊ   — |�t        | |«      } t        | |«      }t        | j                  «       | j	                  «       f| j                  «       f| j                  «       |¬«      S )N)rk   ÚdtypesÚ	inner_fnsrñ   r]  )rØ   r  rù   rc   r°   rO  r½   )r›   r]  r­   s      rZ   Ú_make_scan_innerr˜  Ž  sZ   € ØÐÜ�Q˜ÓˆÜ˜˜DÓ!€DäØ�|‰|‹~Ø—‘“ÐØ—=‘=“?Ð$Ø�Z‰Z‹\Øôð r\   r¬   c               ó   ‡— |�t        | |«      } | j                  «       Št        | |«      }| j                  «       }|t        j
                  t        j                  fv rt        | t        j                  «      } t        | ||«      }t        ˆfd„|D «       «      }t        j                  || j                  «       | j                  «       ¬«      }t        j                  |t        |j                  «       «      «      }t        t!        ||«      |«      S )Nc              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wr   rÜ   ©r�   rh   rñ   s     €rZ   r‘   zmean.<locals>.<genexpr>§  ó   øè ø€ Ò0 a˜$˜q�'Ñ0ùrÝ   r'  )rØ   r½   r…  r°   rp   rS  rR  r#  Úsum_rF   r+   r1   rc   r0   ré   r^   Údiv)r›   r]  Úkeepdimr­   Úoutput_dtypeÚ
sum_resultÚdenomrñ   s          @rZ   rå  rå  œ  sÎ   ø€ àÐÜ�Q˜ÓˆØ�:‰:‹<€DÜ# A tÓ,€Dà—;‘;“=€LØœŸ™¤u§~¡~Ð6Ñ6Ü�QœŸ™Ó$ˆÜ�a˜˜wÓ'€JÜÓ0¨4Ô0Ó0€EÜ×Ñ e°1·;±;³=ÈÏÉËÔX€EÜ×Ñ˜e¤T¨*×*=Ñ*=Ó*?Ó%@ÓA€EÜ”C˜
 EÓ*¨LÓ9Ð9r\   c                ó2  ‡
— |€d}| j                  «       Š
t        | |«      }t        | |d¬«      }|r|j                  «        t	        t        | |«      «      }t        |||«      }t        ˆ
fd„|D «       «      }|rt        j                  ||z
  d«      }t        j                  || j                  «       | j                  «       ¬«      }t        j                  |t!        |j                  «       «      «      }t#        ||«      }	|s|	fS |r|nt%        ||«      }|	|fS )Nr(   T)rŸ  c              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wr   rÜ   r›  s     €rZ   r‘   z var_mean_sum_.<locals>.<genexpr>º  rœ  rÝ   r   r'  )r½   r…  rå  rd  Úsquarerk  r�  rF   r±   r5  r+   r1   r°   rc   r0   ré   r^   rž  rÛ  )r›   r]  Ú
correctionrŸ  Úreturn_meanÚx_meanÚdiffsr¡  r¢  Úx_varrñ   s             @rZ   Úvar_mean_sum_r«  ­  sö   ø€ ØÐØˆ
à�:‰:‹<€DÜ# A tÓ,€DÜ�!�T 4Ô(€FÙØ�‰Ôä”3�q˜&“>Ó"€EÜ�e˜T 7Ó+€JäÓ0¨4Ô0Ó0€EÙÜ—	‘	˜% *Ñ,¨aÓ0ˆÜ×Ñ e°1·;±;³=ÈÏÉËÔX€EÜ×Ñ˜e¤T¨*×*=Ñ*=Ó*?Ó%@ÓA€EÜ�
˜EÓ"€EÙØˆxˆá‰V¤G¨F°DÓ$9€FØ�&ˆ=Ðr\   c                óð   — t        | |«      }t        | ||d d ¬«      }|d   }t        |d   «      }t        |t        j
                  «      xr, t        |«      t        j                  k  xr t        |«      dk7  S )Nr“  rK  rg  r(   )	r…  r�  rF   r`   r±   r  rª   r)   rr  )r›   r]  rŸ  rà   rK  Úreduction_numels         rZ   Úuse_two_step_variancer®  Ç  s|   € ä# A tÓ,€DÜ"Ø	�˜w¨dÈ$ô€Fð �HÑ€FÜ# FÐ+=Ñ$>Ó?€Oä�?¤E§M¡MÓ2ò 	'Ü�Ó ¤6×#EÑ#EÑEò	'ä˜&Ó! QÑ&ðr\   c               ó  ‡‡‡‡‡— ‰€dŠt        | ||d d ¬«      }|j                  d«      }|j                  d«       |j                  d«       t        j                  j                  d|fd| j                  «       dœ|¤Ž\  }}}	|j                  «        | j                  «       Š| j                  «       Št        | |«      }t        ˆfd„|D «       «      Šd	„ Šˆˆˆˆfd
„}
 t        |
«      |«      }|r|j                  «        ||fS |fS )Nr(   r“  rL  rf  rt  Úwelford_reduce)r—  râ  r­   c              3  ó(   •K  — | ]	  }‰|   –— Œ y ­wr   rÜ   r›  s     €rZ   r‘   z$var_mean_welford_.<locals>.<genexpr>í  s   øè ø€ Ò1 q˜4 �7Ñ1ùrÝ   c                óê   — t        | t        j                  «      rD| j                  s8t	        j
                  t	        j                  | t        j                  «      |«      S t	        j                  | |«      S r   )
r`   r±   r²   Ú	is_numberrH   rØ   r9  rp   r:  r;  r)  s     rZ   Úget_constant_or_index_exprz5var_mean_welford_.<locals>.get_constant_or_index_exprï  sG   € Ü�aœŸ™Ô$¨Q¯[ª[Ü—<‘<¤§¡¨q´%·+±+Ó >ÀÓFÐFÜ�|‰|˜A˜uÓ%Ð%r\   c                óŒ   •—  ‰‰‰«      } ‰‰‰«      }t        j                  d‰«      }| t        j                  |||z
  «      z  S rµ  )rH   r;  rT  )rb   ÚcÚNÚzeror¦  r­   r´  Úrnumels       €€€€rZ   rõ  z#var_mean_welford_.<locals>.scale_fnô  sE   ø€ Ù& z°5Ó9ˆÙ& v¨uÓ5ˆÜ�|‰|˜A˜uÓ%ˆØ”c—k‘k $¨¨A©Ó.Ñ.Ð.r\   rÜ   )r�  rc  r+   ÚWelfordReductionré   r°   rd  r½   r…  rF   r[  )r›   r]  r¦  rŸ  r§  rà   rt  rå  Úm2rÅ   rõ  r‰  r­   r´  r¹  rñ   s     `         @@@@rZ   Ú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 tÓ,€DÜÓ1¨DÔ1Ó1€Fò&÷
/ð #Œ.˜Ó
" 2Ó
&€CáØ�‰ŒØ�DˆyÐØˆ6€Mr\   c               óø   ‡— | j                  «       Št        ‰«      }t        | |d¬«      } t        | ||||¬«      }t	        | ||¬«      rt        di |¤Žn
t        di |¤Ž}t        ˆfd„|D «       «      }|s|d   S |S )NFr‹  )r›   r]  r¦  rŸ  r§  )r]  rŸ  c              3  ó:   •K  — | ]  }t        |‰d ¬«      –— Œ y­w)Fr‹  N)rØ   )r�   r›   rf  s     €rZ   r‘   z#var_mean_helper_.<locals>.<genexpr>  s   øè ø€ ÒF¸!”8˜A˜y¨u×5Ð5ÑFùs   ƒr   rÜ   )r°   r   rØ   rù   r®  r«  r¼  r”   )	r›   r]  r¦  rŸ  r§  Úcompute_dtyperà   r  rf  s	           @rZ   Úvar_mean_helper_rÀ    s�   ø€ Ø—‘“€IÜ)¨)Ó4€MÜ��M¨Ô.€AÜØ
ØØØØô€Fô ! ¨°wÕ?ô 	Ñ˜ÒäÑ( Ñ(ð ô
 ÓF¸vÔFÓF€FÙ'ˆ6�!‰9Ð3¨VÐ3r\   )r¦  rŸ  c               ó"   — t        | |||d¬«      S )NF©r]  r¦  rŸ  r§  ©rÀ  ©r›   r]  r¦  rŸ  s       rZ   Úvar_rÅ    s   € äØ	� °WÈ%ôð r\   c               ó"   — t        | |||d¬«      S )NTrÂ  rÃ  rÄ  s       rZ   Úvar_meanrÇ    s   € äØ	� °WÈ$ôð r\   c                ó  — |dk  r!t        t        j                  | «      | |«      S |dk(  rt        j                  d|«      S |dk(  r| S t        | |dz  |«      }t        j                  ||«      }|dz  dk(  rt        j                  || «      }|S )Nr   r(   r&   )Úpow_recursiverH   rS  r;  rN  )r›   r  r­   r0  s       rZ   rÉ  rÉ  $  s‰   € Øˆ1‚uÜœSŸ^™^¨AÓ.°°°EÓ:Ð:ØˆA‚vÜ�|‰|˜A˜uÓ%Ð%ØˆA‚vØˆä˜1˜a 1™f eÓ,€FÜ�W‰W�V˜VÓ$€FØ	ˆA‰�!‚|Ü—‘˜ Ó#ˆØ€Mr\   c                ó.   — t        j                  | |«      S r   )rH   Úpow©rÔ   r  s     rZ   Ú
pow_nativerÍ  3  s   € ä�7‰7�1�a‹=Ðr\   )rê   c                óv  ‡ ‡‡— t        ‰t        «      r#‰t        ‰«      k(  rt        ‰ t        ‰«      «      S t        ‰t        «      r‰dk(  rt	        ‰ «      S t        ‰t        «      r‰dk(  rt        ‰ «      S t        d„ ‰ ‰fD «       «      }t        |«      }t        ‰t        «      xr d‰cxk  xr dk  nc xs	 |xr ‰dk\  }|rZ‰ j                  «       Šˆ ˆˆfd„}t        j                  ‰ j                  «       ‰ j                  «       |‰ j                  «       ¬«      S t        ‰ t        «      r:‰ dk(  rt        ‰d«      S ‰ d	k(  r$t!        ‰j                  «       «      rt#        ‰«      S |rDt        ‰ t        «      rt%        ‰ ‰«      S t        ‰t        «      rt'        ‰ ‰«      S t)        ‰ ‰«      S t+        ‰ ‰«      S )
Nró  r(   c              3  ór   K  — | ]/  }t        |t        j                  «      sŒ|j                  «       –— Œ1 y ­wr   )r`   r+   r:   r°   r  s     rZ   r‘   zpow.<locals>.<genexpr>K  s#   è ø€ ÒN 1´*¸QÄÇÁÕ2M�—‘—ÑNùs   ‚7¢7iàÿÿÿé    r   c                óF   •— t         ‰| «      ‰‰j                  «       «      S r   )rÉ  r°   )r   rÔ   r  rt  s    €€€rZ   rx   zpow.<locals>.fnU  s   ø€ Ü ¡¨£¨a°·±³Ó?Ð?r\   rM  r&   )r`   r#  rª   rË  Úsqrtrw  r-  r   rO  r7   ré   rc   r°   r½   r   rå  r   Úexp2Úfallback_pow_scalarÚfallback_pow_tensor_scalarÚfallback_pow_tensor_tensorrÍ  )rÔ   r  r­   Úis_integer_powÚembed_exponentrx   rt  s   ``    @rZ   rË  rË  A  sx  ú€ ä�!”UÔ ¤S¨£V¢Ü�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Ü˜“7ˆNáä�aœÔ Ü& q¨!Ó,Ð,Ü˜œ6Ô"Ü-¨a°Ó3Ð3ä-¨a°Ó3Ð3ä�a˜ÓÐr\   c                óä  — t        | t        «      r| j                  }n| }t        |t        «      r|j                  }t        |t        j                  «      swt        j                  | j                  «       | j                  «       |j                  «       | j                  «       ¬«      j                  }t        |t        j                  «      sJ ‚t        |t        j                  «      rg|j                  «       sW|j                  «       sGt        |j                  t        j                  «      s#|j                  «        |j                  |_        | S t        j                  j!                  |||¬«       | S )NrM  ©Úunsafe_alias)r`   r:   rb   r+   r‹  r7   ré   rc   r°   rO  r½   Úis_input_bufferÚis_module_bufferÚ	NopKernelrd  r³  Úrealize_into)Úchangedrà  rÛ  Úchanged_datas       rZ   rÕ  rÕ  q  s  € Ü�'œ9Ô%Ø—|‘|‰àˆÜ�#”yÔ!Ø�h‰hˆä�cœ2Ÿ=™=Ô)ä×ÑØ×%Ñ%Ó'Ø×#Ñ#Ó%Ø—_‘_Ó&Ø×#Ñ#Ó%ô	
÷
 ‰$ð 	ô ˜#œrŸ}™}Ô-Ð-Ð-ä�,¤§¡Ô.Ø×$Ñ$Ô&à×(Ñ(Ô*Ü�l×'Ñ'¬¯©Ô6ð 	�‰ŒØŸH™HˆÔØˆä×!Ñ!×.Ñ.Øˆ\¨ð /ô ð €Nr\   c                ó.   — t        | t        | |«      «      S r   )rÕ  rå  )r›   r(  s     rZ   r%  r%  ”  s   € ä�Qœ	 ! ZÓ0Ó1Ð1r\   c                óÂ   — | |u r| S t        || j                  «       «      }t        || j                  «       «      }t	        || j                  «       «      }t        | |«      S r   ©r©  rc   rØ   r°   r  r½   rÕ  )r“  rÖ  r¦  s      rZ   rÉ  rÉ  ™  sR   € à
ˆc�zàˆ
Ü
�C˜Ÿ™Ó)Ó
*€CÜ
�3˜Ÿ™›Ó
(€CÜ
��c—l‘l“nÓ
%€CÜ�S˜#ÓÐr\   c                ó.   — t        j                  | |«      S r   )rH   ÚfloordivrÌ  s     rZ   ræ  ræ  ¤  ó   € ä�<‰<˜˜1ÓÐr\   c                ó.   — t        j                  | |«      S r   )rH   r1  rÌ  s     rZ   r1  r1  ©  rç  r\   c                ó>  — t        | «      xr t        |«      }t        | «      xr t        |«      }|dk(  r,|rJ d«       ‚|rt        | |«      S t        t	        | |«      «      S |dk(  r,|rJ d«       ‚|rt        | |«      S t        t	        | |«      «      S t	        | |«      S )Nrî  z5floordiv operands can not be boolean at the same timeró  z5truncdiv operands can not be boolean at the same time)rµ   r¸   ræ  rî  rž  r1  ró  )rÔ   r  Úrounding_modeÚboth_integerÚboth_booleans        rZ   Údiv_moderí  ®  s¢   € ä" 1Ó%Ò<¬/¸!Ó*<€LÜ" 1Ó%Ò<¬/¸!Ó*<€Lð ˜ÒÙÐXÐ!XÓXÐÙ!-Œx˜˜1‹~ÐC´5¼¸QÀ»Ó3CÐCØ˜ÒÙÐXÐ!XÓXÐÙ!-Œx˜˜1‹~ÐC´5¼¸QÀ»Ó3CÐCÜˆq�!‹9Ðr\   c                ó¸   — t        | «      xr t        |«      }|rt        | |«      S t        t        j                  j
                  «      } t        |«      | |«      S r   )r¸   Úlogical_andr5   rœ  rN  r®  r[  )rÔ   r  Ú	both_boolrx   s       rZ   rN  rN  ¾  sN   € ä Ó"Ò9¤°qÓ'9€IÙÜ˜1˜aÓ Ð äœŸ™×*Ñ*Ó+ˆØ!Œ~˜bÓ! ! QÓ'Ð'r\   c                óf  — t        | t        j                  «      rt        | j                  «      S t        | t        j
                  «      rt        | j                  «       «      S t        | t        j                  «      r| S t        | t        j                  «      syt        j                  j                  j                  | j                  «       «      }t        j                  |«      5  t!        j"                  t        j$                  dd«      5   | j&                  | j)                  «       Ž }ddd«       ddd«       t        t        j                  j*                  j,                  «      sJ ‚t        |j.                  t        j                  «      r|j.                  S y# 1 sw Y   ŒrxY w# 1 sw Y   ŒvxY w)z:Try convert an arbitrary IR node into an ir.Constant valueNÚallow_indexingT)r`   r+   Ú
MutableBoxÚget_constant_valuerb   r!  r"  rÙ   ÚLoopsrp   Ú	_inductorÚops_handlerÚExtractConstantsHandlerrc   rI   Úset_ops_handlerr   ÚobjectrB  rL  Úinner_fn_argsÚvirtualizedÚOpsValuer×   )r›   r  rf   s      rZ   rô  rô  È  s/  € ô
 �!”R—]‘]Ô#Ü! !§&¡&Ó)Ð)Ü�!”R—[‘[Ô!Ü! !§-¡-£/Ó2Ð2Ü�!”R—[‘[Ô!Øˆô �aœŸ™Ô"Øä�o‰o×)Ñ)×AÑAÀ!Ç,Á,Ã.ÓQ€Gä	×Ñ˜'Ó"ñ-ä�‰”R×&Ñ&Ð(8¸$Ó?ñ-ð ˆa�j‰j˜!Ÿ/™/Ó+Ð,ˆ÷	-÷ -ô �cœ5Ÿ?™?×6Ñ6×?Ñ?Ô@Ð@Ð@Ü�#—)‘)œRŸ[™[Ô)Ø�y‰yÐØ÷-ð -ú÷ -ð -ús$   Ã&&F'ÄFÄ*F'ÆF$	Æ F'Æ'F0c                ó2  — t        d„ | |fD «       «      }|rt        | |«      S t        |«      x}�T|j                  dk(  r*t	        j
                  t        d«      |j                  «      }nd|j                  z  }t        | |«      S d„ } t        |«      | |«      S )Nc              3  óL   K  — | ]  }t        |«      xs t        |«      –— Œ y ­wr   )r¸   rµ   r  s     rZ   r‘   zdiv_prim.<locals>.<genexpr>ê  s"   è ø€ ÒOÀ1”o aÓ(Ò>¬O¸AÓ,>Ó>ÑOùs   ‚"$r   Úinfrp  c                 ó&   — t        j                  | Ž S r   )rH   rå  rÈ  s    rZ   rx   zdiv_prim.<locals>.fn÷  s   € Ü�{‰{˜DÐ!Ð!r\   )	r  r1  rô  r×   ÚmathÚcopysignr#  rN  r[  )rÔ   r  Úis_integralr2  rS  rx   s         rZ   Údiv_primr  è  s�   € äÑOÈÈAÈÔOÓO€KáÜ˜˜1‹~Ðä% aÓ(Ð(ˆÐ5à�=‰=˜AÒÜŸ™¤u¨U£|°W·]±]ÓC‰Jà˜wŸ}™}Ñ,ˆJÜ�1�jÓ!Ð!ò"ð Œ>˜"Ó˜a Ó#Ð#r\   c                óZ   — t        | |ft        j                  ¬«      \  } }t        | |«      S r!  )r2  r   ÚINT_TO_FLOATr  rÌ  s     rZ   rž  rž  ý  s0   € ô Ø	
ˆAˆÔ$C×$PÑ$Pô�D€A€qô �A�q‹>Ðr\   c                óh   — t        | «      xs t        | «      }|rd„ }nd„ } t        |«      | |«      S )Nc                ó.   — t        j                  | |«      S r   )rH   ÚmodrÌ  s     rZ   rx   zfmod.<locals>.fn  s   € Ü—7‘7˜1˜a“=Ð r\   c                ó.   — t        j                  | |«      S r   )rH   ÚfmodrÌ  s     rZ   rx   zfmod.<locals>.fn  s   € Ü—8‘8˜A˜q“>Ð!r\   )r¸   rµ   r[  )rÔ   r  r  rx   s       rZ   r  r  	  s9   € ä! !Ó$Ò:¬¸Ó(:€Káó	!ò
	"ð Œ>˜"Ó˜a Ó#Ð#r\   c               ó¼   — t        | j                  «       «      st        | j                  «       «      r|€t        j                  }t        d|¬«      } || |||¬«      S )Nr×  rv  r¬   ©r   r°   r   rp   r:  r”  ©r›   r]  r‹  r­   rx   s        rZ   r�  r�    sK   € ô 	˜Ÿ™›Ô'Ô+;¸A¿K¹K»MÔ+JØ
ˆ-Ü—‘ˆä	˜°UÔ	;€BÙˆa��x uÔ-Ð-r\   c                ó¢  — t        | j                  «       «      st        | j                  «       «      r|€t        j                  }t        | j                  «       «      dk(  r(|dv sJ ‚|xs | j                  «       }t        | |d¬«      S d„ }t        | ||¬«      }t        j                  j                  d	i |¤d|i¤Ž\  }|€t        | ||¬«      S |S )
Nr   ©r   r:  Tr‹  c                ó@   — | \  }|\  }t        j                  ||«      fS r   )rH   r—   ©Úa_tupleÚb_tuplerÔ   r  s       rZ   Ú
combine_fnzcumsum.<locals>.combine_fn8  ó#   € Ø‰ˆØ‰ˆÜ—‘˜˜1“ÐÐr\   ©r]  r­   r  ©rÀ   r­   rÜ   )r   r°   r   rp   r:  r¼   r½   rØ   r˜  r+   ÚScanré   Úfallback_cumsum©r›   r]  r­   r  rà   r0  s         rZ   Úcumsumr  ,  s¶   € ô 	˜Ÿ™›Ô'Ô+;¸A¿K¹K»MÔ+JØ
ˆ-Ü—‘ˆä
ˆ1�:‰:‹<Ó˜AÒØ�w‰ÐˆØÒ&˜Ÿ™›ˆÜ˜˜5 tÔ,Ð,ò ô
 ˜a d°%Ô8€FÜ—‘—‘Ñ? Ñ?°JÒ?�I€VØ€~Ü˜q d°%Ô8Ð8Ø€Mr\   c                ó¢  — t        | j                  «       «      st        | j                  «       «      r|€t        j                  }t        | j                  «       «      dk(  r(|dv sJ ‚|xs | j                  «       }t        | |d¬«      S d„ }t        | ||¬«      }t        j                  j                  d	i |¤d|i¤Ž\  }|€t        | ||¬«      S |S )
Nr   r  Tr‹  c                ó@   — | \  }|\  }t        j                  ||«      fS r   )rH   rN  r  s       rZ   r  zcumprod.<locals>.combine_fnP  r  r\   r  r  r  rÜ   )r   r°   r   rp   r:  r¼   r½   rØ   r˜  r+   r  ré   Úfallback_cumprodr  s         rZ   Úcumprodr!  D  s¶   € ô 	˜Ÿ™›Ô'Ô+;¸A¿K¹K»MÔ+JØ
ˆ-Ü—‘ˆä
ˆ1�:‰:‹<Ó˜AÒØ�w‰ÐˆØÒ&˜Ÿ™›ˆÜ˜˜5 tÔ,Ð,ò ô
 ˜a d°%Ô8€FÜ—‘—‘Ñ? Ñ?°JÒ?�I€VØ€~Ü  t°5Ô9Ð9Ø€Mr\   c                ó
  — d„ }| j                  «       }t        | j                  «       «      dk(  r|dv sJ ‚t        | «      S t	        | ||¬«      }t        j                  j                  di |¤d|i¤Ž\  }|€t        | |¬«      S |S )Nc           	     ó*  — | \  }|\  }t        j                  ||«      }t        j                  ||«      }||k7  t        j                  |«       z  }t        j                  |t        j
                  t        j                  ||z
  «      «      |z   |«      fS r   )rH   rU  rT  rã  rÇ  Úlog1pÚexp)r  r  rÔ   r  Úmin_vÚmax_vrE  s          rZ   Úlog_add_exp_helperz(logcumsumexp.<locals>.log_add_exp_helper^  s{   € Ø‰ˆØ‰ˆÜ—‘˜A˜qÓ!ˆÜ—‘˜A˜qÓ!ˆØ˜‘¤C§I¡I¨eÓ$4Ð#4Ñ5ˆÜ—	‘	˜$¤§	¡	¬#¯'©'°%¸%±-Ó*@Ó AÀEÑ IÈ1ÓMÐOÐOr\   r   r  r  r  rG  rÜ   )	r°   r¼   r½   rw  r˜  r+   r  ré   Úfallback_logcumsumexp)r›   rÀ   r(  r­   rà   r0  s         rZ   Úlogcumsumexpr*  \  s   € òPð �K‰K‹M€EÜ
ˆ1�:‰:‹<Ó˜AÒØ�g‰~Ðˆ~Ü�Q‹xˆä˜a c°Ô7€FÜ—‘—‘ÑG ÑGÐ4FÒG�I€VØ€~Ü$ Q¨CÔ0Ð0Ø€Mr\   c                óÆ  — t        | j                  «       «      dk(  r,|dv sJ ‚t        | «      t        | t        j
                  ¬«      fS | j                  «       }t        j                  d|d¬«      }t        | ||¬«      }|t        j
                  f|d<   | j                  «       d	„ f|d
<   t        j                  j                  di |¤d|i¤Ž\  }}|€t        | |¬«      S ||fS )Nr   r  r¬   rh  F©r­   Úarg_break_ties_leftr  r–  c                 ó   — y©NÚrindexrÜ   rV  s    rZ   r7  zcummax.<locals>.<lambda>  ó   � r\   r—  r  rG  rÜ   )r¼   r½   rw  r�  rp   r:  r°   r+   Úget_reduction_combine_fnr˜  rO  r  ré   Úfallback_cummax©r›   r]  r­   r  rà   rã   rÊ  s          rZ   Úcummaxr5  r  óÐ   € ä
ˆ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ˆGØ€~Ü˜q dÔ+Ð+Ø�7ˆ?Ðr\   c                óÆ  — t        | j                  «       «      dk(  r,|dv sJ ‚t        | «      t        | t        j
                  ¬«      fS | j                  «       }t        j                  d|d¬«      }t        | ||¬«      }|t        j
                  f|d<   | j                  «       d	„ f|d
<   t        j                  j                  di |¤d|i¤Ž\  }}|€t        | |¬«      S ||fS )Nr   r  r¬   ÚargminFr,  r  r–  c                 ó   — yr/  rÜ   rV  s    rZ   r7  zcummin.<locals>.<lambda>“  r1  r\   r—  r  rG  rÜ   )r¼   r½   rw  r�  rp   r:  r°   r+   r2  r˜  rO  r  ré   Úfallback_cumminr4  s          rZ   Úcumminr;  †  r6  r\   c               ó¼   — t        | j                  «       «      st        | j                  «       «      r|€t        j                  }t        d|¬«      } || |||¬«      S )NrØ  rv  r¬   r  r  s        rZ   rØ  rØ  š  sK   € ô 	˜Ÿ™›Ô'Ô+;¸A¿K¹K»MÔ+JØ
ˆ-Ü—‘ˆä	˜°eÔ	<€BÙˆa��x uÔ-Ð-r\   c                ó^   — t        | t        j                  «      }  t        d«      | ||¬«      S )Nr  ©r]  r‹  )rØ   rp   r·   r”  ©r›   rÀ   rŸ  s      rZ   Ú
reduce_anyr@  ¥  s(   € ä�”E—J‘JÓ€AØ Œ>˜%Ó  ¨°wÔ?Ð?r\   c                óZ   — |�t        | ||¬«      t        | ||¬«      fS t        | d |¬«      S ©Nr>  )Úreduce_amaxÚreduce_argmaxr?  s      rZ   Ú
reduce_maxrE  «  ó:   € à
€ä˜ ¨gÔ6Ü˜! #°Ô8ð
ð 	
ô
 �q˜t¨gÔ6Ð6r\   c                óZ   — |�t        | ||¬«      t        | ||¬«      fS t        | d |¬«      S rB  )Úreduce_aminÚreduce_argminr?  s      rZ   Ú
reduce_minrJ  ¶  rF  r\   Úxor_sumrÇ  rÆ  rh  rv  r8  Ú
logical_or)rW  rJ  ©ÚstablerÀ   Ú
descendingc          	     ó’  — |€d}| j                  «       }| j                  «       }t        t        |«      |«      }t        |«      dk(  r't	        | «      t        d|t        j                  |«      fS t        |«      r||   nd}t        j                  j                  j                  |t        j                  t        j                  «      j                  «      st        | |||¬«      S t!        |ddt        j                  |d¬«      }dgt        |«      z  }t        |«      r|||<   t#        ||«      }t%        ||«      }t&        j(                  j+                  || j,                  |j,                  f| j/                  «       |j/                  «       f||||¬«      \  }	}|	€t        | |||¬«      S |€J ‚|	t1        |t        j                  «      fS )NFr   r(   rM  )r  r  r­   rk   rì  )rk   r–  r—  rñ   r]  rN  rO  )r½   rc   r   r¼   rw  r)  rp   r:  rI   rR   r  Ústatically_known_ltrš  Úint16rÇ  Úsort_fallbackrí  r�  r  r+   ÚSortré   r­   rO  rØ   )
r›   rN  rÀ   rO  rý  rk   rë  rÊ  Ú
view_shaperã   s
             rZ   Úsort_stablerV  Ò  s‹  € à€~Øˆà�J‰J‹L€EØ�\‰\‹^€FÜ
œ3˜u›: sÓ
+€CÜ
ˆ5ƒz�Q‚Ü�Q‹xœ˜q &¬%¯+©+°uÓ=Ð=Ð=ä  œZˆu�SŠz¨Q€HÜ�7‰7×Ñ×/Ñ/°¼%¿+¹+ÄeÇkÁkÓ:R×:VÑ:VÔWÜ˜Q v°3À:ÔNÐNäØ˜ ¬¯©¸VÐSXô€Gð �”s˜5“zÑ!€JÜ
ˆ5„zØ"ˆ
�3‰Ü�7˜JÓ'€GÜ�W˜eÓ$€Gä—g‘g—n‘nØØ—‘˜Ÿ™Ð'Ø—=‘=“? G×$7Ñ$7Ó$9Ð:ØØØØð %ó �O€FˆGð €~Ü˜Q v°3À:ÔNÐNàÐÐÐØ”8˜G¤U§[¡[Ó1Ð1Ð1r\   c                ó    — t        | d||¬«      S )NFrM  )rV  )r›   rÀ   rO  s      rZ   ÚsortrX  ú  s   € ä�q ¨C¸JÔGÐGr\   c                ó<   — t        | |t        j                  |¬«      S )N©rÎ   rÂ   rY  ©r±  r   r  )rU   rÎ   rY  s      rZ   Úregister_pointwise_numericr\  ÿ  s!   € ÜØ
ØÜ;×HÑHØ'ô	ð r\   c                ó:   — t        | t        j                  d¬«      S )NT)rÂ   r¯  r[  r¦  s    rZ   Ú register_pointwise_numeric_ldf64r^    s   € ÜØ
Ü;×HÑHØ"ôð r\   rÂ  Úlogical_not)rJ  )rÂ   rë   r0  Úidentity)rb  Úpointwise_overrides_datac              #  óF  ‡K  — t         |   Št        | ‰j                  d «      }|€y ˆfd„}t        |t        j
                  j                  «      r9|j                  «       D ]%  }t        ||«      }|‰j                   ||«      f–— Œ' y |‰j                   ||«      f–— y ­w)Nc                ó4   •— ‰j                   €t        | «      S y r   )Útritonr�  )rU   rb   s    €rZ   Úmake_triton_fallbackz6_get_pointwise_overrides.<locals>.make_triton_fallbacku  s   ø€ Ø�;‰;ÐÜ# BÓ'Ð'ð r\   )	ra  r„   rÎ   r`   rp   rz   r˜   rš   rÂ   )ÚnsrÎ   rU   re  Úolnamer2  rb   s         @rZ   Ú_get_pointwise_overridesrh  o  s�   øè ø€ Ü# DÑ)€DÜ	��T—Y‘Y Ó	%€BØ	€zØô(ô �"”e—j‘j×1Ñ1Ô2Ø—l‘l“nò 	IˆFÜ˜˜VÓ$ˆBØ�d×.Ñ.Ñ0DÀRÓ0HÐHÓHñ	Ið �$×*Ñ*Ñ,@ÀÓ,DÐDÓDùs   ƒBB!rZ  c                ód   ‡— | t         |<   t        j                  | «       ˆfd„}t        | |«       y )Nc                 ó„   •—  ‰| i |¤Ž}g }t        | d   |«      D ]"  \  }}|j                  t        ||d¬«      «       Œ$ |S )Nr   TrÚ  )rç   rd   rÕ  )ri   rà   ÚresultsÚmut_resultsrÃ   r0  Úoutplace_ops         €rZ   rx   z$register_foreach_inplace.<locals>.fnÁ  sV   ø€ Ù˜tÐ. vÑ.ˆØˆÜ˜t A™w¨Ó0ò 	J‰KˆC�Ø×Ñœy¨¨fÀ4ÔHÕIð	Jð Ðr\   )rO   r`  r—   rü   )Úaten_opÚoutplace_aten_oprm  rx   s     ` rZ   Úregister_foreach_inplacerp  ½  s.   ø€ Ø07ÔÐ,Ñ-Ü×Ñ˜GÔ$ôô ˜w¨Õ+r\   c                ó2   ‡— t        | d ¬«      ˆfd„«       }|S )Nry  c                 ól   •—  ‰| i |¤Ž}t        || d   j                  «       «      }t        | d   |«      S rµ  )rØ   r°   rÕ  )ri   rà   r0  rm  s      €rZ   rx   zregister_inplace.<locals>.fná  s<   ø€ á˜dÐ- fÑ-ˆÜ˜& $ q¡'×"3Ñ"3Ó"5Ó6ˆÜ˜˜a™ &Ó)Ð)r\   )r  )rn  rm  rx   s    ` rZ   Úregister_inplacers  à  s#   ø€ Ü�w°DÔ9ó*ó :ð*ð
 €Ir\   c                 ó   — y r   rÜ   rÅ  s      rZ   Úsym_constrain_rangeru  
  ó   € àr\   c                ó´   — t         j                  j                  j                  d   }t	        |t
        j                  «      sJ ‚|j                  j                  S rÆ  ©	rI   rR   rS   rT  r`   rp   rº  rX   r»  ©rÔ   rÀ   rà  s      rZ   Úsym_sizerz    s@   € ä
�'‰'×
Ñ
×
#Ñ
# EÑ
*€Cô �cœ5Ÿ<™<Ô(Ð(Ð(Ø�8‰8�=‰=Ðr\   c                ó´   — t         j                  j                  j                  d   }t	        |t
        j                  «      sJ ‚|j                  j                  S rÆ  rx  ry  s      rZ   Ú
sym_strider|     s>   € ä
�'‰'×
Ñ
×
#Ñ
# EÑ
*€Cä�cœ5Ÿ<™<Ô(Ð(Ð(Ø�8‰8�=‰=Ðr\   c                ó"   — | j                  «       S r   )rT  )rÔ   s    rZ   Ú	sym_numelr~  (  s   € à�;‰;‹=Ðr\   c                ó&   — t        j                  | Ž S r   )r±   ÚAddrÈ  s    rZ   Úsym_sumr�  1  s   € ä�9‰9�dÐÐr\   c                ó   — t        d«      ‚)NzHelpful for debuggingrˆ   )r§  ri   rà   s      rZ   Úfoobarrƒ  6  s   € ä
Ð5Ó
6Ð6r\   c                ó8   — | j                  «        t        | «      S r   )rd  rw  r´   s    rZ   Ú_realizer…  ;  s   € à‡I�I„KÜ�‹8€Or\   c                óR   — | j                  «        t        j                  | |«       | S r   )rd  r+   ÚResizeStorageBytes)Úvariabler  s     rZ   Úresize_storage_bytes_r‰  A  s#   € à×ÑÔÜ×Ñ˜( HÔ-Ø€Or\   c                ó”   — | j                  «        |j                  «        t        j                  t        j                  | |«      «      S r   )rd  r:   ré   r+   ÚSetSourceTensorKernel)r§  Úsource_tensors     rZ   Úset__source_tensorr�  H  s5   € à‡L�L„NØ×ÑÔÜ×ÑœB×4Ñ4°T¸=ÓIÓJÐJr\   rÉ  c                óÂ   — | |u r| S t        || j                  «       «      }t        || j                  «       «      }t	        || j                  «       «      }t        | |«      S r   rä  )r“  rÖ  s     rZ   Ú
fsdp_copy_r�  Q  sR   € à�#‰:àˆJÜ˜˜SŸ^™^Ó-Ó.ˆÜ�s˜CŸM™M›OÓ,ˆÜ�S˜#Ÿ,™,›.Ó)ˆÜ˜˜cÓ"Ð"r\   c               óÈ  ‡	‡
‡‡— t        | t        «      sJ ‚t        |t        t        f«      sJ ‚|€t        j
                  }|t        j                  k(  rt        d|› �«      ‚|t        j                  k(  rt        |«      dk(  sJ ‚|t        j                  k(  rt        |«      dk(  sJ ‚| j                  «       Š
| j                  «       }| j                  «       }t        | j                  t        j                   «      r| j                  j#                  «       | _        t	        j$                  «       rit        j&                  j(                  j*                  rEt-        |«      rt/        d«      Šn0t1        |«      r t	        j2                  |«      j4                  ŠndŠndŠt6        j8                  j:                  j=                  ‰
d«      rt?        |‰||¬«      S tA        | ‰
gd	g«      }|jC                  «       Š	t        jD                  jG                  ||«      }t        jH                  ||||«      jK                  «       Šˆ	ˆ
ˆˆfd
„}tM        jN                  |||t        |«      ¬«      }|S )Nzunsupported memory format: r    r¡   ÚnanTr8  r   r  r(   c                ó  •‡—  ‰| «      Št        j                  ‰t        j                  «      }t        j                  ‰t        j                  «      }t        j                  ||«      }t        j
                  |ˆˆfd„‰«      S )Nc                 ó   •—  ‰‰ g«      S r   rÜ   )Ú
flat_indexÚflat_loaders   €€rZ   r7  z*resize.<locals>.inner_fn.<locals>.<lambda>•  s   ø€ ©°Z°LÓ(A€ r\   )rH   r9  rp   r:  r=  r?  )	r   Úflat_index_exprÚlimitrE  r”  r•  Ú	old_numelÚout_indexerÚuninitalized_vals	       @€€€€rZ   rL  zresize.<locals>.inner_fn�  sZ   ù€ Ù  Ó%ˆ
ÜŸ.™.¨´U·[±[ÓAˆÜ—‘˜y¬%¯+©+Ó6ˆÜ�v‰v�o uÓ-ˆÜ�z‰z˜$Ô AÐCSÓTÐTr\   rM  )(r`   r:   r^   r”   rp   Úcontiguous_formatÚpreserve_formatr0  Úchannels_lastr¼   Úchannels_last_3drT  r°   r.  rb   r+   r!  r"  r™  r‚   rœ  Úfill_uninitialized_memoryr   r#  r   rš  rÇ  rI   rR   r  rØ  rN  r,  rO  rB  Ú stride_ordered_for_memory_formatr%  rD  r7   ré   )r›   rñ   rá  r­   rk   Úx_flatÚ
out_striderL  rf   r•  r˜  r™  rš  s            @@@@rZ   Ú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Ü�K‰K×%Ñ%×?Ò?ä˜%Ô Ü$ U›|ÑÜ˜eÔ$Ü$Ÿ{™{¨5Ó1×5Ñ5Ñà#Ñð Ðä‡w�w×Ñ×/Ñ/°	¸1Ô=Ü�DÐ*°%ÀÔGÐGäØ	àð	
ð ð	
ó€Fð ×$Ñ$Ó&€KÜ×"Ñ"×CÑCÀDÈ-ÓX€JÜ—.‘. ¨°°jÓA×NÑNÓP€K÷Uô ×
Ñ
Ø˜U¨X¼dÀ4»jô€Cð €Jr\   )Úauto_functionalizedc                óà   — ddl m} |j                  |«      }t        j                  | ||i |¥|¥¬«       |j                  «       D ��ci c]  \  }}t        |t        «      sŒ||“Œ c}}S c c}}w )Nr   )Úkernel_side_table)Ú
kernel_idxÚgridÚtma_descriptor_metadataÚkernel_args)Ú*torch._higher_order_ops.triton_kernel_wrapr¦  Úget_constant_argsr+   ÚUserDefinedTritonKernelrá   r`   r:   )	r§  Úconstant_args_idxr¨  r©  rà   r¦  Úconstant_argsr¿  rà  s	            rZ   Útriton_kernel_wrap_r°  £  sj   € õ Mà%×7Ñ7Ð8IÓJ€MÜ×ÑØØØ 7Ø/�vÐ/ Ð/õ	ð &,§\¡\£^×R™˜˜c´zÀ#ÄyÕ7QˆC�‰HÓRÐRùÓRs   ÁA*Á!A*c                ó^  — t        d„ | g|¢D «       «      rTd}t        j                  j                  j                  j                  dd «      x}r|› d|› �}|t        j                  _        t        j                  j                  | |||«      }t        t        t        j                  |«      «      S )Nc              3  óV   K  — | ]!  }t        |t        «      xr t        |«      –— Œ# y ­wr   r8  r  s     rZ   r‘   zcond.<locals>.<genexpr>º  s#   è ø€ Ò
M°aŒ:�aœÓ Ò1¤Y¨q£\Ó1Ñ
Mùr9  z"control flow operator: torch.cond.r—  r˜  )r  rI   rR   rS   rT  rU  rš  r+   ÚConditionalré   r^   Úmapr:   )ÚpredÚtrue_fnÚfalse_fnÚoperandsr‹   r—  r0  s          rZ   rŠ   rŠ   ¸  s”   € ä
Ñ
M¸DÐ;LÀ8Ð;LÔ
MÔMØ2ˆÜŸ'™'×.Ñ.×3Ñ3×7Ñ7¸ÀtÓLÐLˆ;ÐLØ�EÐ*¨;¨-Ð8ˆCØ,/Œ�‰Ô)ä�^‰^×"Ñ" 4¨°(¸HÓE€FÜ””I×$Ñ$ fÓ-Ó.Ð.r\   c                ó^  — t        d„ ||z   D «       «      rTd}t        j                  j                  j                  j                  dd «      x}r|› d|› �}|t        j                  _        t        j                  j                  | |||«      }t        t        t        j                  |«      «      S )Nc              3  óV   K  — | ]!  }t        |t        «      xr t        |«      –— Œ# y ­wr   r8  r  s     rZ   r‘   zwhile_loop.<locals>.<genexpr>Æ  s+   è ø€ ò àô 	�1”fÓÒ.¤)¨A£,Ó.ñùr9  z(control flow operator: torch.while_loop.r—  r˜  )r  rI   rR   rS   rT  rU  rš  r+   Ú	WhileLoopré   r^   r´  r:   )Úcond_fnÚbody_fnÚcarried_inputsÚadditional_inputsr‹   r—  r0  s          rZ   Ú
while_looprÀ  Ä  sœ   € ä
ñ àÐ"3Ñ3ôô ð 9ˆÜŸ'™'×.Ñ.×3Ñ3×7Ñ7¸ÀtÓLÐLˆ;ÐLØ�EÐ*¨;¨-Ð8ˆCØ,/Œ�‰Ô)ä�\‰\× Ñ  ¨'°>ÐCTÓU€FÜ””I×$Ñ$ fÓ-Ó.Ð.r\   c                óˆ   — t         j                  j                  | |«      }t        t	        t
        j                  |«      «      S r   )r+   ÚInvokeSubgraphré   r^   r´  r:   )Úsubgraph_fnÚ
identifierr¸  r0  s       rZ   Úinvoke_subgraphrÅ  Ó  s2   € ä×Ñ×%Ñ% k°8Ó<€FÜ””I×$Ñ$ fÓ-Ó.Ð.r\   )Úschemec               óö  — d }t         j                  j                  j                  j	                  dd «      }|€J ‚t        | j                  j                  j                  «      D �]‘  \  }}|j                  dk(  r!||   t         j                  j                  |<   Œ7|j                  dk(  �rt         j                  j                  |«      \  }}t        j                  ||j                  «       «      D ]Œ  }	|	j                  «        |j                  r7t         j                  j                   j#                  |	j%                  «       «       t         j                  j&                  j#                  |	j%                  «       «       ŒŽ t(        j*                  j,                  j/                  t         j                  |||«      }�ŒXt         j                  j1                  |«      t         j                  j                  |<   �Œ” |S )NÚquant_optionsÚplaceholderr  )rI   rR   rS   rT  rU  r_   r  ÚnodesrU   ÚenvÚfetch_args_kwargs_from_envrå   ræ   rã   rd  Úcodegen_low_precisionÚlow_precision_codegen_opsr—   re  Úinvoke_quant_opsrp   r  ÚInterpreterr  Úrun_node)
rÃ  rÆ  r¸  r  rÈ  rh   rX   ri   rà   rí   s
             rZ   Úinvoke_quant_tracerrÒ  Ù  sl  € à€FÜ—G‘G×(Ñ(×-Ñ-×1Ñ1°/À4ÓH€MØÐ$Ð$Ð$ä˜[×5Ñ5×;Ñ;×AÑAÓBó 7‰ˆˆ4Ø�7‰7�mÒ#Ø (¨¡ŒA�G‰G�K‰K˜ÑØà�W‰W˜Ó ÜŸ7™7×=Ñ=¸dÓC‰LˆD�&ä—_‘_ T¨6¯=©=«?Ó;ò E�Ø—	‘	”à ×6Ò6Ü—G‘G×5Ñ5×9Ñ9¸!×:NÑ:NÓ:PÔQä—‘×(Ñ(×,Ñ,¨Q×-AÑ-AÓ-CÕDðEô —X‘X×)Ñ)×0Ñ0´·±¸$ÀÀfÓMŠFä !§¡× 0Ñ 0°Ó 6ŒA�G‰G�K‰K˜Óð%7ð( €Mr\   c                óØ  ‡
— ddl m}m} t        |«      dkD  rt	        d«      ‚t        j                  ||«      D �cg c](  } ||j                  «       |j                  «       ¬«      ‘Œ* }} || |«      Š
ˆ
fd„}t        |d   dd ¬«      }t        d„ |D «       «      |d	<   t        d
„ |D «       «      |d<   t        j                  j                  d|ddœ|¤Ž}	|	d   €t	        d«      ‚|	S c c}w )Nr(   )ÚInputDescriptorÚlower_pointwise_subgraphr   zSUnable to generate code for associative_scan op, because there are lifted argumentsr  c                ód   •—  ‰g t        j                  | «      ¢t        j                  |«      ¢­Ž S r   )rý  r  )ÚlhsÚrhsÚlowered_combine_fns     €rZ   Úwrapped_combine_fnz,associative_scan.<locals>.wrapped_combine_fn  s6   ø€ Ù!ð 
Ü×Ñ Ó$ð
ä×Ñ Ó$ò
ð 	
r\   r  c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr   )r°   r  s     rZ   r‘   z#associative_scan.<locals>.<genexpr>  s   è ø€ Ò7¨q˜QŸ[™[Ÿ]Ñ7ùó   ‚r–  c              3  ó<   K  — | ]  }|j                  «       –— Œ y ­wr   rÀ  r  s     rZ   r‘   z#associative_scan.<locals>.<genexpr>  s   è ø€ Ò<°A §¡§Ñ<ùrÜ  r—  F)r  Úcan_fallback_to_atenz/Unable to generate code for associative_scan oprÜ   )r~  rÔ  rÕ  r¼   r0  rå   ræ   r°   rc   r˜  r”   r+   r  ré   )r  Úxsr¿  rÔ  rÕ  r›   Úsubgraph_inputsrÚ  rà   r0  rÙ  s             @rZ   Úassociative_scanrá  ö  sÿ   ø€ ÷ Mä
ÐÓ Ò!ÜØaó
ð 	
ô —‘  RÓ(öàñ 	˜aŸk™k›m°A·L±L³NÖCð€Oð ñ 2°*¸oÓ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                 ó   — y r   rÜ   )Útokenss    rZ   Ú_sink_tokensrä    rv  r\   c                óZ  — t        j                  j                  |g|¢­i |¤Ž}ddlm}  ||||«      }|€J ‚t
        j                  j                  |   }|€|fS t        j                  t         j                  t        j                  |«      }t        |t        t        f«      s||fS |g|¢­S )Nr   )Úget_effect_key)r+   ÚEffectfulKernelré   Útorch._higher_order_ops.effectsræ  rI   rR   Úeffectful_opsrý  r®  ÚMultiOutputr:   r`   r^   r”   )ÚtokenrU   ri   rà   r0  ræ  Úeffect_typeÚeffectful_kernels           rZ   Úwith_effectsrî    s§   € ä×Ñ×&Ñ& rÐ;¨DÒ;°FÑ;€Få>á   T¨6Ó2€KØÐ"Ð"Ð"Ü—w‘w×,Ñ,¨[Ñ9Ðà€~Ø Ð"Ð"ä×!Ñ!¤"§.¡.´)×2BÑ2BÀFÓK€FÜ�fœt¤U˜mÔ,Ø  &Ð)Ð)à Ð* 6Ñ*Ð*r\   )Úregister_comm_loweringsc                óx  — t        | |ddd¬«      }|d   }t        j                  j                  j	                  t        |«      «      }t        j                  j                  di |¤d|dœ¤Ž\  }}|dk(  rZt        j                  j                  j                  |«      t        j                  k\  r t        j                  d| d|d	œ|¤Ž\  }}||fS t        j                  t!        j"                  d
«      «       t%        | |d¬«      }	t'        t(        j*                     t-        | |	«      «      }
t/        |
|d¬«      }|	|fS )zn
    Lowering inductor_prims.prepare_softmax_online to compute max/sum in one pass if no split is needed.
    TNr“  rg  Úonline_softmax_reduce)râ  r­  r(   r&   )re  Ú
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�  rI   rR   r  ÚsimplifyrF   r+   r8   Ú
num_splitsr÷  r)   rr  r4   ré   r  r  ÚtextwrapÚdedentrC  rM   rœ  r%  rk  r�  )r›   rÀ   rà   rg  r¹  ÚhintÚ	num_splitÚ
max_tensorÚ
sum_tensorræ  r%  Úxsums               rZ   Úprepare_softmax_onlinerý  9  s4  € ô
 #Ø	�˜d¨$Àdô€Fð Ð0Ñ1ÐÜ�W‰W×Ñ×&Ñ&¤}Ð5EÓ'FÓG€FÜ—l‘l×-Ñ-ñ Ø
ðà.Øó�O€Dˆ)ð 	�QŠÜ�G‰G×Ñ×&Ñ& vÓ.´&×2TÑ2TÒTä!7×!>Ñ!>ð "
Ø Q°tñ"
Ø?Eñ"
Ñˆ
�Jð ˜:Ð%Ð%ô 	�‰Ü�O‰Oðóô		
ô ˜1˜c¨DÔ1ˆÜœŸ™Ñ!¤# a¨£,Ó/ˆÜ�C˜ tÔ,ˆØ�TˆzÐr\   )r   )Úquantized_lowerings)Úmkldnn_lowerings)Újagged_loweringsc              #  óX  K  — t        | t        j                  j                  «      sJ d«       ‚t        j                  | «      }	  t        | «      t        | «      «       d–— |r
|t        | <   yt        j                  | «       y# |r
|t        | <   w t        j                  | «       w xY w­w)z^
    A context manager to force fallback an op. Used in unit test
    for FallbackKernel.
    z+Only OpOverload to make the clean up easierN)	r`   rp   rz   r{   rM   rU  r  r�  rc  )rU   Úold_handlers     rZ   Úforce_fallbackr  †  s�   è ø€ ô �bœ%Ÿ*™*×/Ñ/Ô0ð Ø5óÐ0ô —-‘- Ó#€KðØÔ˜"ÓÔ.¨rÓ2Ô3ÛáØ'ŒI�bŠMä�M‰M˜"Õøñ Ø'ŒI�bŠMä�M‰M˜"Õüs   ‚AB*ÁB Á""B*Â#B'Â'B*)re   z%Iterable[Union[tuple[Any, Any], Any]])rx   zCallable[..., Any]r°  zOptional[Callable[..., Any]])r­   rª   )rÂ   r   )ri   z	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Â   r  )rÂ   r  r°  z.Callable[[Callable[_P, _T]], Callable[_P, _T]])NN)NNNNFN)F)r›   r:   r­   útorch.dtype)r›   r:   rk   útorch.devicer   )r   r   l            r(   Trz  )ri  r:   ra  r:   rc  r:   r]  rª   r`  rª   r_  rª   r­   r  r°  r:   )ri  r:   ra  r:   rc  r:   r]  rª   r`  rª   r_  rª   r­   r  rf  úOptional[torch.dtype]r°  r:   )ri  r:   rW  r#  rX  rª   r`  rª   r_  rª   r­   r  r°  r:   )ri  r:   rW  r#  rX  rª   r`  rª   r_  rª   r­   r  rf  r  r°  r:   )ri  r:   rW  r:   rX  r:   r`  rª   r_  rª   r­   r  r°  r:   )ri  r:   rW  r:   rX  r:   r`  rª   r_  rª   r­   r  rf  r  r°  r:   )r   r   r(   )rÎ  rª   rÀ  rª   rÁ  rª   r„  )T)rl   ztorch.Tensor)rX   ztorch.fx.Node)NTF)rk   r  )rñ   ú	list[int]rE  r:   r  r_  rÎ  rª   )
r…  rª   r„  rª   rñ   r  rE  r:   rÎ  rª   )r‹  r:   r°  z.tuple[str, sympy.Expr, sympy.Expr, sympy.Expr])r‹  r:   r°  ztuple[str, sympy.Expr])r�  r:   r§  r:   r�  r·   r‘  r·   r’  úOptional[str]r“  úOptional[TensorBox]r°  r:   )ri  r:   r¬  r:   r�  r·   r‘  r·   )rÀ   rª   r(  rª   )r   NNr(   )NNN)r:  FF)rÀ   rª   )r"  r³  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·   )ra  úOptional[float])r
  r  r  r  )r  r  r
  r  r  r  )r›   r:   r&  zSequence[int]r(  r#  r°  r
  )rh   ú
sympy.Exprr…  zUnion[sympy.Expr, int])rh   r  r„  r  )rh   r  r„  r  r…  r  )Nrp  N)Nr   r(   F)r8  )NNNN)rÜ   r   FTN)râ  rJ   rÌ   )r›   r±  r°  zOptional[ir.Constant])r:  F)rÃ  úir.SubgraphrÄ  r_  )rÃ  r  )r  r  r¿  ztuple[torch.Tensor]r²  (â  Ú
__future__r   Ú
contextlibrD  r÷   rå   Úloggingr  r£  r%  rö  r  Úcollectionsr   Úcollections.abcr   r   Útypingr   r   r	   r
   r   r   r   Útyping_extensionsr   Úunittest.mockr   r±   rp   Ú$torch.ao.quantization.fx._decomposedÚtorch.fxÚtorch.utils._pytreer‚   Ú_pytreerý  Útorch._dynamo.utilsr   Ú(torch._higher_order_ops.associative_scanr   r«  r   Útorch._prims_commonr   r   r   r   r   r   r   r   r   r   r   Útorch.fx.experimental.sym_noder   r   Útorch.utils._ordered_setr    Útorch.utils._sympy.functionsr!   r"   r#   r$   r%   Ú_dynamo.utilsr'   Ú r)   r*   r+   r,   Údecompositionr-   r.   r/   r0   r1   r2   r3   r4   r5   r6   r7   r8   r9   r:   r;   r<   r=   r>   r?   r@   rA   rB   rC   rD   rE   rF   rG   rü  rH   rI   r÷  rJ   rK   rL   ÚFALLBACK_ALLOW_LISTÚ	getLoggerr®  r-  rM   Ú__annotations__rN   rz   r{   r  rœ  Útr_c10dr�  r–   Ú_higher_order_opsr‡  rW   r`  rO   Úquantized_decomposedr[   rm   r}   r|   rŒ   r•   rž   r,  r1  rè  rR  ÚbmmÚconvolutionÚconvolution_backwardr‰  r´  r  r  r  Ú_int_mmr‡  r†  rR  r¿  r:  rS  rR  r?  Ú	complex32Ú	complex64r·   rR  r«   r®   rµ   r¸   rÆ   rÊ   rÐ   rò   rü   r	  r,  r  r   r2  r[  rq  rØ   r‘  r”  r¡  r�  r­   r¤  r©  Ú
device_putr«  r±  rÀ  rÄ  rÇ  rä   ÚaliasÚdetachÚdetach_ÚliftÚview_ofrÑ  rÓ   rÒ  rÛ  rÝ  rá  rã  ré  rë  rî  rñ  r’  ró  r  r  r  r  Ú_unsafe_viewÚreshaper  Úslicer  r.  rI  Úquantize_per_channelre  Údequantize_per_channelrm  Úquantize_per_tensorrr  Údequantize_per_tensorru  r6  r  r‚  r¤  rÑ  rÓ  r×  rÚ  rß  rá  rã  rî  rü  rò  r  rø  r�  Ú	lru_cacher  r  r  r  r3  r8  ÚrngprimsrH  rJ  rO  Ú	bernoullirK  rS  rW  r[  r^  r;  rd  ra  rb  ri  rh  rg  ÚrandintÚforce_stride_orderrp  rE  rr  rz  ru  Úlookup_seedr{  Úrandomr€  r†  rŒ  rŽ  r¦  rP  r›  r±  r³  r´  rÃ  rt   rß  Ú_adaptive_avg_pool3dÚadaptive_max_pool3dÚfractional_max_pool3dÚmax_pool3d_with_indicesÚuniformÚexponentialÚ_pdist_forwardÚsoft_margin_loss_backwardÚ_cdist_forwardÚ_cdist_backwardÚ
_trilinearÚsegment_reduceÚ_segment_reduce_backwardÚhistcÚ	histogramÚbin_ctÚ_histogramdd_bin_edgesÚ_histogramdd_from_bin_ctsÚaddbmmÚ_addmm_activationÚ
_cudnn_rnnÚ_cudnn_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_backwardrX  rN  Ú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Ó  rÑ  Ú#_scaled_dot_product_flash_attentionÚ,_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_reducerx  rw  rç  r  rí  rò  rú  rü  Úscalar_tensorr  Ú
LongTensorr  r  r  r!  r)  rå  r-  r  r,  rÉ  r�  rê  Ú
zeros_liker>  rB  r5  rH  rL  rN  rV  rd  rk  r}  r€  r  r(  r‰  r‘  r“  r•  r�  r¡  r£  rŽ  r¿  Úfallback__unsafe_masked_indexrÃ  Ú,fallback__unsafe_masked_index_put_accumulater  rË  r¶  rÓ  rÍ  rß  rÝ  rã  rÚ  rÿ  r  r  r  r  rQ  r  r.  r¥  r5  r6  rC  rH  rS  rY  r^  rp  rs  r…  rˆ  r¬  rÁ  rÈ  rÕ  rÛ  rï  ré  rÿ  rý  r  r  r  r#  r;  r+  r<  r&  rO  r‚  r}  r…  r�  r”  r˜  rå  r«  r®  r¼  rÀ  r‰  rÅ  rÇ  rÉ  rÍ  rË  ÚTensor_TensorrÖ  ÚScalarrÔ  ÚTensor_ScalarrÕ  rÕ  r%  rÉ  ræ  r1  rž  rí  rN  rô  r  Útrue_divider  r  r×  r�  r  r  r!  r   r*  r)  r5  r3  r;  r:  rØ  r  r@  rÇ  rE  rÆ  rJ  rK  ræ  rC  rç  rH  rh  rD  r8  rI  r—   rS  rV  r\  r^  Úrsqrtr%  rÓ  Úexpm1Úrelurö  rÒ  r¥  rk  ÚcosÚsinÚabsÚbitwise_andÚbitwise_left_shiftÚbitwise_notÚ
bitwise_orÚbitwise_right_shiftÚbitwise_xorÚlgammaÚerfÚspecial_erfr$  ÚtanÚtanhrï  r_  rL  Úlogical_xorrT  rU  Ú	clamp_minÚ	clamp_maxÚnegrS  Ú	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.commonrb  ra  rh  rÎ   rU   rÂ   rY  Ú_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_copyrp  Ú_foreach_add_Ú_foreach_mul_Ú_foreach_div_rs  Ú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__ru  rz  rª   r|  r~  rá   ÚmethodÚfuncr�  rƒ  Ú_inductor_testrd  r…  r  r‰  Úset_Úsource_Tensorr�  Úfsdpr�  r£  Ú*torch._higher_order_ops.auto_functionalizer¤  r°  Úhigher_orderrŠ   rÀ  rÅ  Úinvoke_quantrÒ  rá  rä  rî  Úcomm_loweringrï  rý  r   rþ  Úregister_quantized_opsÚregister_woq_mm_opsrÿ  Úregister_onednn_fusion_opsr   Úregister_jagged_opsÚcontextmanagerr  rÜ   r\   rZ   ú<module>r"	     sd5  ðæ "ã Û Û Û Û Û Û Û 	Û Û Ý #ß .ß O× OÑ OÝ 'Ý ã ã Û +Û ß $Ð $Ý (Ý HÝ U÷÷ ÷ ñ ÷ MÝ /÷õ õ -ß 8Ó 8ß =÷÷ ÷ ÷ ÷ ÷ ÷ ñ ÷  ñ Ý*ñ ˆTƒ]€Ùˆtƒ_€ñ !à ØðóÐ ð €g×Ñ˜Ó!€ØFH€	ÐCÓ Hð ð ð ó ð .ˆJ�u—z‘z×,Ñ,Ñ-Ó/€	Ø‡y�y‡~�~€Ø
�)‰)×
Ñ
€Ø�	‰	�‰€Ø9˜
 5§:¡:×#8Ñ#8Ñ9Ó;Ð Ø/ˆj˜Ÿ™×.Ñ.Ñ/Ø
×Ñ×)Ñ)Ð*ó€ð
 8�j §¡×!6Ñ!6Ñ7Ó9Ð ØNPÐ ÐKÓ PØ—y‘y×5Ñ5Ð òôô,-ò6
MòFò

ò3ñ à�ŠØ×ÒØ�ŠØ× Ò Ø�ŠØ×ÒØ×!Ò!Ø×$Ò$Ø×-Ò-Ø�ŠØ×ÒØ×&Ò&Ø�Šðôð* ‡{‚{Ø‡z‚zØ‡{‚{Ø‡{‚{Ø‡{‚{Ø‡}‚}Ø‡}‚}Ø‡}‚}Ø‡‚Ø‡‚Ø�ŠØ�
Š
Ø�Šñ€ô.ò"ò#ôòò ðEØ
ðEàðEð ðEð Cð	Eð
  ðEð &ôEòPð23ð Cô	3ðp ð 	(×/Ò/Øðððð 4ôò(#ô40ðj ØØ $Ø!%ØØô[ô|7ötEñ �5×*Ñ*×7Ñ7ÈTÔRñ)ó Sð)ñX �5×-Ò-À4ÔHó)ó Ið)ð @Eö 5ñ( �4—9’9—?’?¸Ô=ó&ó >ð&ð ;@Èeö Kñ �5×#Ò#¸Ô>õFó ?ðFð 
ØØ7×?Ò?ØØØ $ØØØó1òhñ> Ô ð ôñ �4—:’:¨ÀDÔIñó Jðñ0 �4×)Ò)°UÐPTÔUñ ó Vð ñF �D—J’J §¢¨T¯\ª\¸4¿9º9ÀeÇmÂmÐTÓUñó Vðñ ˆ4�ÔØ&Ñ�d—o’oÓ& sÔ+ñ �4—<’<°TÔ:óBó ;ðBñ2 �4×$Ò$¸$Ô?ó"ó @ð"ñ �D—M’M�?Ó#óó $ðñ �4—:’:ÓñCó ðCñ �4—:’:ÓñCó ðCñ �4—9’9Óñ!ó ð!ñ �4—:’:Óñ!ó ð!ñ �4—:’:×%Ò%Ó&ñ%ó 'ð%ñ �4—:’:Óñ!ó ð!ñ �4—;’;°DÔ9ñ>ó :ð>ñ2 �5×)Ò)¸tÔDñ
ó Eð
ñ �4—>’>°tÔ<ñ#ó =ð#ñ �4—;’;Óñ.ó  ð.ñb �4×$Ò$¸$Ô?Ù�4—9’9°$Ô7Ù�4—<’<°TÔ:ñ1ó ;ó 8ó @ð1ñ �4—<’<°TÔ:ñ>ó ;ð>ñ �4—:’:°4Ô8óVó 9ðVñ �4—?’?¸Ô=óJó >ðJñ$ �4×#Ò#¸Ô>óó ?ðñ �4×'Ò'¸TÔBóó Cðô
BñJ Ð'×<Ò<ÐRVÔWð/Øð/àð/ð ð/ð ð	/ð
 ð/ð ð/ð ð/ð ó/ó Xð/ñd Ø×/Ò/À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ñ6ó :ð6ñ
 �4—:’:°4Ô8óó 9ðñ8 �4×(Ò(¸dÔCó ó Dð ñ �4—;’;°DÔ9óó :ðñ �4—;’;°DÔ9ñDó :ðDñ4 �4—>’>°tÔ<ñó =ðñ �4—?’?¸Ô=ñó >ðôñ �4—8’8Óóó ðôð$ €×Ò�TÓñó ðöö<3ö"<ôJ/Nòd	,ñ �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Ô ñ �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ð
 ØØØ"&ñZØðZà
ðZð ð	Zð
 ðZð ðZð  ðZð óZó GñZñz �4—>’>°tÔ<ð
 Øñ,Øð,àð,ð ð	,ð
 ó,ó =ñ,ó^óóóó2ó$CñN ˆd×'Ò'Ô (Ù ˆd×&Ò&Ô 'Ù ˆd×(Ò(Ô )Ù ˆd×*Ò*Ô +ñ ˆd�lŠl Õ 'Ù ˆd×Ò×&Ò&¨UÕ 3Ù ˆd×!Ò!Ô "Ù ˆd×,Ò,°5Õ 9ñ ˆ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×'Ò'Ñ)@Ô AÙ ˆ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×"Ò"Ô #ñ ˆ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ÙØ	õñ
 Ø×5Ò5×=Ò=ÙØ	õñ
 Ø×,Ò,×4Ò4ÙØ	õñ
 Ø×5Ò5×=Ò=ÙØ	õñ
 Ø×4Ò4×<Ò<ÙØ	õñ
 Ø×=Ò=×EÒEÙØ	õñ
 Ø×9Ò9×AÒAÙØ	õñ
 Ø×BÒB×JÒJÙØ	õñ
 ˆd×+Ò+×3Ò3±_Ô EÙ ˆd×,Ò,×4Ò4±oÔ FÙ ˆd×/Ò/×7Ò7¹Ô IÙ ˆd×0Ò0×8Ò8¹/Ô Jñ ˆd×ÒÔ  ñ
 �4—9’9°$Ô7ó
ó 8ñ
ñ �4—:’:ÓØ"ó ó ñóñ( ˆ4Ð"Ô#Ø+Ñ�d×*Ò*Ó+©EÔ2ñ �5—:’:Óñó ññ( �4×&Ò&¸DÔAóó Bññ: �4×%Ò%¸4Ô@ó@ó Añ@óFñ �E—L’L $×"4Ò"4Ð5Ó6Ø t°DÀUó 5ó 7ð5ñp �5—?’?Ó#ó4ó $ñ4ñ �5×#Ò#Ó$ñ+ó %ñ+ñ �4×+Ò+Ó,ñ+"ó -ñ+"ñ\ �4×&Ò&Ó'ñó (ññ �4×/Ò/Ó0à%)ñØ59À$óó 1ñóñ< �4—>’>°tÔ<ñKó =ñKóñ8 �E—K’K §¢Ð,Ó-ð Ø
ØØØØóó .ñó$ó.>ð 0Ñ˜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ó"ó :ñ"ñJ �4—>’>°tÔ<óó =ñó8#ðF õFóRõ"1ñJ �4—:’:°4Ô8ñ
ó 9ñ
ñ �4×%Ò%¸4Ô@ñ/ó Añ/ñ �4—>’>Ó"óó #ññ �4×)Ò)Ó*óó +ñó;óñ  �4—?’?¸Ô=óó >ññ �>×4Ò4È$ÔOóó Pñõ{ñ| !1Ø×Ò×%Ò%¸5ô!Ñ ñ 0@Ø×,Ò,×4Ò4È%ô0Ñ ,ñ
 �4×,Ò,À$ÔGñó Hññ, �4×;Ò;ÐQUÔVñ	Pó Wñ	Pð ñ1ó ñ1ñ �4×*Ò*ÀÔEóó Fññ �4—<’<°TÔ:ó9ó ;ñ9ð !ØñØ&ðð 
ðð ðð õñB �4—=’=°dÔ;ØDHõ :ó <ñ:ñ" �4×#Ò#¸Ô>ó3ó ?ñ3ñ �4×$Ò$¸$Ô?ó6ó @ñ6ñ �4×&Ò&¸DÔAóPó BñPñ �4×'Ò'¸TÔBØPTõ mó Cñmðh Øñ,ð *ð,ð ð	,ð
 õ,ñ^ �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õõð :>õó<ó,>ð CGõ@ðF õ>ñB �5×<Ò<ÐRVÔWð ó5ó Xñ5ñ< Ø	×3Ò3Èôñóññ@ $4Ø× Ò ×(Ò(Øô$Ñ  ñ �4×/Ò/ÀTÔJð ØØØóó Kðñ8 -=Ø×)Ò)×1Ò1Øô-Ñ )ñ �4×8Ò8ÈdÔSñLó TðLõ^ó8Bó&óR2ñj  0Ø×Ò×%Ò%¸5ô Ñ ñ
 �4×,Ò,Ó-ñBó .ñBñJ  0Ø×Ò×$Ò$¸%ô Ñ ñ
 �4×+Ò+Ó,ñNó -ñNñb "2Ø×Ò×&Ò&¸Eô"Ñ ó
ñ2 �4×-Ò-Ó.ñCó /ñCñL �4×3Ò3×;Ò;Ó<àBFó*ó =ñ*ñZ 'Ø‡O‚O×Ò°ôÑ ñ 'Ø‡O‚O×Ò°ôÑ ñ
 �4—?’?¸Ô=ð ØØØØóó >ðñ* �4—?’?¸Ô=ð ØØØØóó >ñó*wñt  0Ø×Ò×$Ò$¸%ô Ñ ñ
 �4×+Ò+ÀÔFð óbó GðbñJ  0Ø×Ò×$Ò$¸%ô Ñ ñ
 �4×+Ò+ÀÔFð óDó GñDóNó$.÷bó(ñ �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Õ,ò,ó -ñ,ö^ ñF �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�Ú   §¢Ô *Ú   §¢Ô *Ù˜ŸšÓ"�Ù  ×!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Ù+÷		
ð
ò 5MØ‰tó5ò 
Ñ0‰Ñ¡ñ 	ÙÙÙ 3Ù+÷		
ñ
ð
ñ, .Ø×Ò×Ò™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Ù ˜4×-Ò-©tÔ 4ô,ò Ø×Ò×Ò˜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ôô
ò �—’™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—>’>Ó"òó #ñð (�M×'Ò'Ó)ò 8�L�F‰DØ1ÑÑ(©Ó0Ó1±$Õ7ð8ñ �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ò/ó Jñ/ñ �5—9‘9×)Ò)×4Ò4È$ÔOò/ó Pñ/ñ �5—9‘9×)Ò)×9Ò9ÈtÔTô/ó Uñ/ñ
 �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ÈDÔQò+ó Rñ+÷& 3Ñ 2ò Ô ñ �>×8Ò8ÈdÔSò2ó Tñ2÷l Ð ñ ‘Ô ç !Ð !ð +Ñ × *Ò *Ô ,Ø 'Ñ × 'Ò 'Ô )ç Ð ð ,Ñ × +Ò +Ô -ç Ð ð %Ñ × $Ò $Ô &ð ×Òôó òr\   