§
    ¶ ½jb3  ã                  óÀ   — d Z ddlmZ ddlZddlmc mZ ddl	Z
ddlZddlmZmZmZ ddlZddlmZmZ ddlmZ ddlmZ ej        dd
„¦   «         Z G d„ d¦  «        ZdS )a   
Adversarial Stress Testing Suite: Spatial Grid Isolation & Portal Roundtrip.
Validates:
1. High entity density (500+ entities) in SpatialGrid for zone_player_hideout.
2. Boundary coordinate precision (63.99 vs 64.01) and boundary jitter without ghost leaks.
3. Cross-zone spatial grid isolation between hideout, sanctuary, and outer maps.
4. Rapid portal roundtrip endurance (1,000x roundtrips) and concurrent multi-player storms.
5. Adversarial portal attacks (out-of-zone, under-level, non-existent portals).
é    )ÚannotationsN)ÚListÚSetÚTuple)ÚEntityÚSpatialGrid©Ú
ZoneEngine)ÚZoneTypeÚreturnr
   c                 ó   — t          ¦   «         S ©Nr	   © ó    úOC:\Projects\FreeExile\tests\security_fuzzing\test_spatial_portal_adversarial.pyÚenginer      s   € å‰<Œ<Ðr   c                  óR   — e Zd ZdZdd„Zdd„Zdd„Zdd	„Zdd
„Zdd„Z	dd„Z
dd„ZdS )Ú TestSpatialGridPortalAdversarialz>Adversarial stress and isolation test harness for Milestone 1.r   r
   r   ÚNonec                ó2  ‡ — |j         d         }d}t          |¦  «        D ]B}|dz  dz  dz
  }|dz  dz  dz
  }t          d|z   ||¬¦  «        }|                     |¦  «         ŒC|j        }t          |¦  «        }	|	|k    }
|
�s0t          j        d|
fd	|	|f¦  «        d
t          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        nd
dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}
|j        }t          |¦  «        }	|	|k    }
|
�s0t          j        d|
fd|	|f¦  «        d
t          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        nd
dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}
t          d„ |j                             ¦   «         D ¦   «         ¦  «        }||k    }|sÂt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nddt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d}|                     ddd¬¦  «        }t          |¦  «        }d}||k    }	|	sòt          j        d|	fd||f¦  «        d
t          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        nd
dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }d d!|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}|                     dd¦  «        Š ˆ fd"„t          d#d$¦  «        D ¦   «         }|D ]°}|j        |         }||v }|s—t          j        d%|fd&||f¦  «        t          j        |¦  «        d't          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd'd(œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}Œ±t          |¦  «        D ]8}d|z   }|j        |         }|                     ||j        d+z   |j        ¦  «         Œ9|j        }t          |¦  «        }	|	|k    }
|
�s0t          j        d|
fd	|	|f¦  «        d
t          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        nd
dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}
d,„ |j                             ¦   «         D ¦   «         }t          |¦  «        }||k    }|sòt          j        d|fd-||f¦  «        d.t          j	        ¦   «         v st          j
        t          ¦  «        rt          j        t          ¦  «        nd.t          j        |¦  «        t          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndd/œz  }d d!|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|j                             ¦   «         D �]*}t          |¦  «        }d}||k    }	|	�st          j        d|	fd||f¦  «        d
t          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        nd
d0t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd0t          j        |¦  «        t          j        |¦  «        dœz  }t          j        d1¦  «        d2z   d!|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	}�Œ,t          |¦  «        D ]½}|                     d|z   ¦  «        }d}||u}|s—t          j        d3|fd4||f¦  «        d5t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd5t          j        |¦  «        d6œz  }d)d*|iz  }t          t          j        |¦  «        ¦  «        ‚dx}}Œ¾|j        }t          |¦  «        }	d}|	|k    }
|
�st          j        d|
fd7|	|f¦  «        d
t          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        nd
dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        t          j        |¦  «        d8œz  }d9d:|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	x}
}|j        }t          |¦  «        }	d}|	|k    }
|
�st          j        d|
fd;|	|f¦  «        d
t          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        nd
dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        t          j        |¦  «        d8œz  }d9d:|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	x}
}|j        }t          |¦  «        }	d}|	|k    }
|
�st          j        d|
fd<|	|f¦  «        d
t          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        nd
dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        t          j        |¦  «        d8œz  }t          j        d=¦  «        d>z   d:|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}	x}
}dS )?zOStress-tests hideout spatial grid with 500 entities, AOI querying, and cleanup.Úzone_player_hideoutéô  é   g      0@ç      i@éè  ©Ú	entity_idÚxÚy©ú==)zN%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.entities
})
} == %(py7)sÚlenÚgridÚtotal_entities)Úpy0Úpy1Úpy3Úpy5Úpy7úassert %(py9)sÚpy9N)zU%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.entity_cell_map
})
} == %(py7)sc              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   ©r"   ©Ú.0Úss     r   ú	<genexpr>zfTestSpatialGridPortalAdversarial.test_spatial_grid_high_volume_hideout_500_entities.<locals>.<genexpr>/   s(   è è € ÐAÐA¨�S ™VœVÐAÐAÐAÐAÐAÐAr   ©z%(py0)s == %(py2)sÚtotal_in_cells©r%   Úpy2úassert %(py4)sÚpy4ç        é   ©Úradius_cellsr   )ú>)z/%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} > %(py6)sÚaoi©r%   r&   r'   Úpy6úassert %(py8)sÚpy8c                ób   •— h | ]+}t          d d¦  «        D ]}‰d         |z   ‰d         |z   f’ŒŒ,S )éÿÿÿÿé   r   r9   )Úrange)r/   ÚdxÚdyÚcenter_cells      €r   ú	<setcomp>zfTestSpatialGridPortalAdversarial.test_spatial_grid_high_volume_hideout_500_entities.<locals>.<setcomp>8   s_   ø€ ð 
ð 
ð 
àÝ˜B ‘l”lð
ð 
ð ð ˜Œ^˜bÑ  +¨a¤.°2Ñ"5Ð6ð
ð 
ð 
ð 
r   rC   rD   ©Úin©z%(py1)s in %(py3)sÚexpected_cells©r&   r'   úassert %(py5)sr(   g      p@c              3  ó4   K  — | ]}t          |¦  «        V — Œd S r   r-   r.   s     r   r1   zfTestSpatialGridPortalAdversarial.test_spatial_grid_high_volume_hideout_500_entities.<locals>.<genexpr>H   s(   è è € Ð7Ð7˜a•3�q‘6”6Ð7Ð7Ð7Ð7Ð7Ð7r   )z0%(py4)s
{%(py4)s = %(py0)s(%(py2)s)
} == %(py6)sÚsum)r%   r5   r7   r?   Úcell_setz%Empty cells must be garbage collectedz
>assert %(py8)s)úis not)z%(py0)s is not %(py3)sÚremoved©r%   r'   )zN%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.entities
})
} == %(py8)s)r%   r&   r'   r(   rA   zassert %(py10)sÚpy10)zU%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.entity_cell_map
})
} == %(py8)s)zK%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.cells
})
} == %(py8)sz&All cell sets must be fully cleaned upú
>assert %(py10)s)Úzone_spatial_gridsrE   r   Ú
add_entityÚentitiesr"   Ú
@pytest_arÚ_call_reprcompareÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationÚentity_cell_maprQ   ÚcellsÚvaluesÚget_entities_in_aoiÚget_cell_coordsÚupdate_entity_positionr   r   Ú_format_assertmsgÚremove_entity)!Úselfr   r#   r$   Úir   r   ÚentityÚ@py_assert2Ú@py_assert4Ú@py_assert6Ú@py_format8Ú@py_format10r3   Ú@py_assert1Ú@py_format3Ú@py_format5r=   Ú@py_assert5Ú@py_format7Ú@py_format9rM   ÚeidÚ@py_assert0Ú@py_format4Ú@py_format6ÚentÚ@py_assert3rR   rT   Ú@py_assert7Ú@py_format11rH   s!                                   @r   Ú2test_spatial_grid_high_volume_hideout_500_entitieszSTestSpatialGridPortalAdversarial.test_spatial_grid_high_volume_hideout_500_entities   s£  ø€ àÔ(Ð)>Ô?ˆØˆõ �~Ñ&Ô&ð 	$ð 	$ˆAà�R‘˜4‘ %Ñ'ˆAØ�b‘˜DÑ  5Ñ(ˆAÝ d¨Q¡h°!°qÐ9Ñ9Ô9ˆFØ�OŠO˜FÑ#Ô#Ð#Ð#à”=Ð3�s�=Ñ!Ô!Ð3Ð! ^Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3Ð! ^Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�sÑ3Ô3Ð3Õ3Ô3�sÑ3Ô3Ð3Ð3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�4Ñ3Ô3Ð3Õ3Ô3�4Ñ3Ô3Ð3Ð3Õ3Ô3�=Ñ3Ô3Õ3Ô3Ð!Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3 ^Ñ3Ô3Ð3Õ3Ô3 ^Ñ3Ô3Ð3Ð3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØÔ'Ð:�sÐ'Ñ(Ô(Ð:Ð(¨NÒ:Ð:Ð:Ñ:Õ:Ô:Ð:Ð:Ð:Ð:Ð(¨NÐ:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:�sÑ:Ô:Ð:Õ:Ô:�sÑ:Ô:Ð:Ð:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:�4Ñ:Ô:Ð:Õ:Ô:�4Ñ:Ô:Ð:Ð:Õ:Ô:Ð'Ñ:Ô:Õ:Ô:Ð(Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:¨NÑ:Ô:Ð:Õ:Ô:¨NÑ:Ô:Ð:Ð:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:õ ÐAÐA¨T¬Z×->Ò->Ñ-@Ô-@ÐAÑAÔAÑAÔAˆØ Ò/Ð/Ð/Ð/Õ/Ô/Ð/Ð/Ð/Ð/ˆ~ Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆ~Ñ/Ô/Ð/Õ/Ô/ˆ~Ñ/Ô/Ð/Ð/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ Ñ/Ô/Ð/Õ/Ô/ Ñ/Ô/Ð/Ð/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/ð ×&Ò& s¨C¸aÐ&Ñ@Ô@ˆÝ�3‰xŒxÐ˜!Ðˆx˜!Š|ÐÐÐÕÔÐÐÐÐˆx˜!ÐÑÔÐÕÔÑÔÐÐÕÔ�sÑÔÐÕÔ�sÑÔÐÐÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÕÔˆxÑÔÕÔ˜!ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐð ×*Ò*¨3°Ñ4Ô4ˆð
ð 
ð 
ð 
å˜B ‘l”lð
ñ 
ô 
ˆð
 ð 	?ð 	?ˆCØÔ'¨Ô,Ð>Ð,°Ð>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð,°Ð>Ñ>Ô>Õ>Ô>Ð,Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>°Ñ>Ô>Ð>Õ>Ô>°Ñ>Ô>Ð>Ð>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>õ �~Ñ&Ô&ð 	Cð 	CˆAØ˜‘(ˆCØ”- Ô$ˆCØ×'Ò'¨¨S¬U°U©]¸C¼EÑBÔBÐBÐBð ”=Ð3�s�=Ñ!Ô!Ð3Ð! ^Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3Ð! ^Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�sÑ3Ô3Ð3Õ3Ô3�sÑ3Ô3Ð3Ð3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3�4Ñ3Ô3Ð3Õ3Ô3�4Ñ3Ô3Ð3Ð3Õ3Ô3�=Ñ3Ô3Õ3Ô3Ð!Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3 ^Ñ3Ô3Ð3Õ3Ô3 ^Ñ3Ô3Ð3Ð3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø7Ð7 4¤:×#4Ò#4Ñ#6Ô#6Ð7Ñ7Ô7ÐI�sÐ7Ñ7Ô7ÐIÐ7¸>ÒIÐIÐIÐIÕIÔIÐIÐIÐIÐIÐ7¸>ÐIÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔI�sÑIÔIÐIÕIÔI�sÑIÔIÐIÐIÕIÔIÐ7ÑIÔIÕIÔIÐ7ÑIÔIÐIÕIÔIÑIÔIÐIÐIÕIÔI¸>ÑIÔIÐIÕIÔI¸>ÑIÔIÐIÐIÐIÐIÑIÐIÐIÐIÐIÐIÑIÐIÕIÕIÔIÐIÑIÔIÑIÔIÐIÐIÐIÐIÐIÐIÐIØœ
×)Ò)Ñ+Ô+ð 	Nñ 	NˆHÝ�x‘=”=ÐM 1ÐM�= 1Ò$ÐMÐMÑMÕMÔMÐMÐMÐMÐM�= 1ÐMÑMÔMÐMÕMÔMÑMÔMÐMÐMÕMÔM•3ÑMÔMÐMÕMÔM•3ÑMÔMÐMÐMÐMÕMÔMÑMÔMÐMÐMÕMÔM�xÑMÔMÐMÕMÔM�xÑMÔMÐMÐMÕMÔM�=ÑMÔMÕMÔM 1ÑMÔMÐMÐMÑMÐMÕMÔMÐ&MÑMÔMÐMÑMÐMÐMÐMÑMÐMÕMÕMÔMÐMÑMÔMÑMÔMÐMÐMÐMÐMÐMÐMÐMÑMõ �~Ñ&Ô&ð 	'ð 	'ˆAØ×(Ò(¨°©Ñ2Ô2ˆGØ"&Ð&�7 $Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&�7 $Ð&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�7Ñ&Ô&Ð&Õ&Ô&�7Ñ&Ô&Ð&Ð&Õ&Ô& $Ñ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&à”=Ð&�s�=Ñ!Ô!Ð& QÐ&Ð! QÒ&Ð&Ð&Ñ&Õ&Ô&Ð&Ð&Ð&Ð&Ð! QÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�sÑ&Ô&Ð&Õ&Ô&�sÑ&Ô&Ð&Ð&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�4Ñ&Ô&Ð&Õ&Ô&�4Ñ&Ô&Ð&Ð&Õ&Ô&�=Ñ&Ô&Õ&Ô&Ð!Ñ&Ô&Õ&Ô& QÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ð&ØÔ'Ð-�sÐ'Ñ(Ô(Ð-¨AÐ-Ð(¨AÒ-Ð-Ð-Ñ-Õ-Ô-Ð-Ð-Ð-Ð-Ð(¨AÐ-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-�sÑ-Ô-Ð-Õ-Ô-�sÑ-Ô-Ð-Ð-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-�4Ñ-Ô-Ð-Õ-Ô-�4Ñ-Ô-Ð-Ð-Õ-Ô-Ð'Ñ-Ô-Õ-Ô-Ð(Ñ-Ô-Õ-Ô-¨AÑ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø”:ÐM�s�:‰ŒÐM !ÐMˆ !Ò#ÐMÐMÑMÕMÔMÐMÐMÐMÐMˆ !ÐMÑMÔMÐMÕMÔMÑMÔMÐMÐMÕMÔM�sÑMÔMÐMÕMÔM�sÑMÔMÐMÐMÐMÕMÔMÑMÔMÐMÐMÕMÔM�4ÑMÔMÐMÕMÔM�4ÑMÔMÐMÐMÕMÔM�:ÑMÔMÕMÔMˆÑMÔMÕMÔM !ÑMÔMÐMÐMÑMÐMÕMÔMÐ%MÑMÔMÐMÑMÐMÐMÐMÑMÐMÕMÕMÔMÐMÑMÔMÑMÔMÐMÐMÐMÐMÐMÐMÐMÐMÐMÐMÐMr   c           	     óh  ‡‡‡‡— |j         d         Šd}dŠdˆˆfd„Št          j                             |¬¦  «        5 Šˆˆfd	„t	          |¦  «        D ¦   «         }d
„ t          j                             |¦  «        D ¦   «         }ddd¦  «         n# 1 swxY w Y   t          |¦  «        }|‰z  }||k    }|�s[t          j        d|fd||f¦  «        dt          j
        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nddt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j
        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        nddœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}‰j        }t!          |¦  «        }|‰z  }
||
k    }|�snt          j        d|fd||
f¦  «        dt          j
        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        nddt          j
        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        ndt          j        |¦  «        t          j        |¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j
        ¦   «         v st          j        ‰¦  «        rt          j        ‰¦  «        nddœz  }	dd|	iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}x}}
dS )zMStresses spatial grid with concurrent thread operations to verify robustness.r   é   é2   Ú	worker_idÚintr   c           	     óf  •— d| dz  z   }t          ‰¦  «        D ]—}||z   }t          |t          |dz  ¦  «        t          | dz  ¦  «        ¬¦  «        }‰                     |¦  «         ‰                     ||j        dz   |j        dz   ¦  «         ‰                     |j        |j        d¬¦  «        }Œ˜‰S )	Niˆ  éd   é
   é   r   g      @@r9   r:   )rE   r   ÚfloatrY   rh   r   r   rf   )r…   Úbase_idÚkry   r}   Ú_r#   Úitems_per_workers         €€r   Úworker_taskz`TestSpatialGridPortalAdversarial.test_spatial_grid_concurrent_worker_stress.<locals>.worker_task[   s»   ø€ Ø˜Y¨™_Ñ,ˆGÝÐ+Ñ,Ô,ð Kð K�Ø ‘k�Ý s­e°A¸±F©m¬m½uÀYÐQSÁ^Ñ?TÔ?TÐUÑUÔU�Ø—’ Ñ$Ô$Ð$Ø×+Ò+¨C°´¸±¸s¼uÀt¹|ÑLÔLÐLØ×,Ò,¨S¬U°C´EÈÐ,ÑJÔJ��Ø#Ð#r   ©Úmax_workersc                ó<   •— g | ]}‰                      ‰|¦  «        ‘ŒS r   ©Úsubmit)r/   ÚwÚexecutorr�   s     €€r   ú
<listcomp>z_TestSpatialGridPortalAdversarial.test_spatial_grid_concurrent_worker_stress.<locals>.<listcomp>f   s'   ø€ ÐTÐTÐT¸1�x—’ {°AÑ6Ô6ÐTÐTÐTr   c                ó6   — g | ]}|                      ¦   «         ‘ŒS r   ©Úresult©r/   Úfs     r   r˜   z_TestSpatialGridPortalAdversarial.test_spatial_grid_concurrent_worker_stress.<locals>.<listcomp>g   s    € ÐTÐTÐT a�q—x’x‘z”zÐTÐTÐTr   Nr    )z<%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == (%(py5)s * %(py6)s)rQ   ÚresultsÚworker_countr�   )r%   r&   r'   r(   r?   r*   r+   )zZ%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.entities
})
} == (%(py7)s * %(py8)s)r"   r#   )r%   r&   r'   r(   r)   rA   zassert %(py11)sÚpy11)r…   r†   r   r†   )rX   Ú
concurrentÚfuturesÚThreadPoolExecutorrE   Úas_completedrQ   r[   r\   r]   r^   r_   r`   ra   rb   rZ   r"   )rk   r   rŸ   r¢   rž   rn   r   ro   rq   rr   Ú@py_assert9rp   Ú@py_format12r—   r#   r�   r�   s                @@@@r   Ú*test_spatial_grid_concurrent_worker_stresszKTestSpatialGridPortalAdversarial.test_spatial_grid_concurrent_worker_stressU   sG  øøøø€ àÔ(Ð)>Ô?ˆØˆØÐð	$ð 	$ð 	$ð 	$ð 	$ð 	$ð 	$õ Ô×2Ò2¸|Ð2ÑLÔLð 	UÐPXØTÐTÐTÐTÐTÅÀlÑ@SÔ@SÐTÑTÔTˆGØTÐT­:Ô+=×+JÒ+JÈ7Ñ+SÔ+SÐTÑTÔTˆGð	Uð 	Uð 	Uñ 	Uô 	Uð 	Uð 	Uð 	Uð 	Uð 	Uð 	Uøøøð 	Uð 	Uð 	Uð 	Uõ �7‰|Œ|Ð>˜|Ð.>Ñ>Ð>ˆ|Ð>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>ˆ|Ð>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�sÑ>Ô>Ð>Õ>Ô>�sÑ>Ô>Ð>Ð>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>�7Ñ>Ô>Ð>Õ>Ô>�7Ñ>Ô>Ð>Ð>Õ>Ô>ˆ|Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>˜|Ñ>Ô>Ð>Õ>Ô>˜|Ñ>Ô>Ð>Ð>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>Ð.>Ñ>Ô>Ð>Õ>Ô>Ð.>Ñ>Ô>Ð>Ð>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ø”=ÐD�s�=Ñ!Ô!ÐD \Ð4DÑ%DÐDÐ!Ð%DÒDÐDÐDÑDÕDÔDÐDÐDÐDÐDÐ!Ð%DÐDÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔD�sÑDÔDÐDÕDÔD�sÑDÔDÐDÐDÐDÕDÔDÑDÔDÐDÐDÕDÔD�4ÑDÔDÐDÕDÔD�4ÑDÔDÐDÐDÕDÔD�=ÑDÔDÕDÔDÐ!ÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔD \ÑDÔDÐDÕDÔD \ÑDÔDÐDÐDÐDÕDÔDÑDÔDÐDÐDÕDÔDÐ4DÑDÔDÐDÕDÔDÐ4DÑDÔDÐDÐDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDs   ½ABÂBÂBc           	     ó�  — |j         d         }|j        }d}d} |||¦  «        }d}||k    }|sãt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	d	d
|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚dx}x}x}x}x}}|j        }d}d} |||¦  «        }d}||k    }|sãt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	d	d
|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚dx}x}x}x}x}}|j        }d}d} |||¦  «        }d}||k    }|sãt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	d	d
|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚dx}x}x}x}x}}|j        }d}| }d} |||¦  «        }d}||k    }|sãt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}x}x}x}}|j        }d}d} |||¦  «        }d}||k    }|sãt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	d	d
|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚dx}x}x}x}x}}|j        }d}d} |||¦  «        }d}||k    }|sãt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }	d	d
|	iz  }
t          t          j	        |
¦  «        ¦  «        ‚dx}x}x}x}x}}|j        }d}| }d} |||¦  «        }d}||k    }|sãt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}x}x}x}}|j        }d}| }d} |||¦  «        }d}||k    }|sãt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}x}x}x}}|j        }d}| }d} |||¦  «        }d}||k    }|sãt          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}x}x}x}x}}t          ddd¬¦  «        }|                     |¦  «         t          d¦  «        D �]}|dz  dk    rdnd}|                     ||d¦  «         |dz  dk    rdnd}|dz  dk    rdnd}|j        d         }||k    }|s—t          j        d|fd||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }d d!|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}}d}|j        |         }||v }|slt          j        d"|fd#||f¦  «        t          j        |¦  «        t          j        |¦  «        d$œz  }d%d&|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}||j        v r‡d}|j        |         }||v}|slt          j        d'|fd(||f¦  «        t          j        |¦  «        t          j        |¦  «        d$œz  }d%d&|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}�Œ
|                     d¦  «         d}|j        }||v}|sªt          j        d'|fd)||f¦  «        t          j        |¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d*œz  }d+d,|iz  }t          t          j	        |¦  «        ¦  «        ‚dx}x}}dS )-zHAdversarial boundary coordinate check (63.99 vs 64.01, negative bounds).r   gZd;ßÿO@r8   )r   r   r    )z_%(py8)s
{%(py8)s = %(py2)s
{%(py2)s = %(py0)s.get_cell_coords
}(%(py4)s, %(py6)s)
} == %(py11)sr#   )r%   r5   r7   r?   rA   r    úassert %(py13)sÚpy13Nç      P@)r9   r   gòÒMb P@gü©ñÒMbP?)rC   r   )z`%(py9)s
{%(py9)s = %(py2)s
{%(py2)s = %(py0)s.get_cell_coords
}(-%(py4)s, %(py7)s)
} == %(py12)s)r%   r5   r7   r)   r+   Úpy12zassert %(py14)sÚpy14)éþÿÿÿr   i­&  ç…ëQ¸þO@r   r   rD   r   çq=
×£ P@)z%(py1)s == %(py3)sÚexpected_cellrN   rO   r(   rJ   )z%(py1)s in %(py4)s)r&   r7   zassert %(py6)sr?   ©únot in)z%(py1)s not in %(py4)s)z4%(py1)s not in %(py5)s
{%(py5)s = %(py3)s.entities
})r&   r'   r(   úassert %(py7)sr)   )rX   rg   r[   r\   r]   r^   r_   r`   ra   rb   r   rY   rE   rh   rc   rd   rj   rZ   )rk   r   r#   rs   r~   rv   r   Ú@py_assert10r¥   r¦   Ú@py_format14rp   Ú@py_assert8Ú@py_assert11Ú@py_format13Ú@py_format15Ú
jitter_entÚstepÚnew_xr±   Ú
other_cellrz   rn   r{   r|   ru   rw   ro   rq   s                                r   Ú.test_boundary_coordinate_precision_and_no_leakzOTestSpatialGridPortalAdversarial.test_boundary_coordinate_precision_and_no_leakl   s  € àÔ(Ð)>Ô?ˆð Ô#Ð: FÐ:¨CÐ:Ð#Ð# F¨CÑ0Ô0Ð:°FÐ:Ð0°FÒ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð0°FÐ:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆtÑ:Ô:Ð:Õ:Ô:ˆtÑ:Ô:Ð:Ð:Õ:Ô:Ð#Ñ:Ô:Õ:Ô: FÑ:Ô:Õ:Ô:¨CÑ:Ô:Õ:Ô:Ð0Ñ:Ô:Õ:Ô:°FÑ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÔ#Ð: FÐ:¨CÐ:Ð#Ð# F¨CÑ0Ô0Ð:°FÐ:Ð0°FÒ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð0°FÐ:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆtÑ:Ô:Ð:Õ:Ô:ˆtÑ:Ô:Ð:Ð:Õ:Ô:Ð#Ñ:Ô:Õ:Ô: FÑ:Ô:Õ:Ô:¨CÑ:Ô:Õ:Ô:Ð0Ñ:Ô:Õ:Ô:°FÑ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÔ#Ð: FÐ:¨CÐ:Ð#Ð# F¨CÑ0Ô0Ð:°FÐ:Ð0°FÒ:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð0°FÐ:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆtÑ:Ô:Ð:Õ:Ô:ˆtÑ:Ô:Ð:Ð:Õ:Ô:Ð#Ñ:Ô:Õ:Ô: FÑ:Ô:Õ:Ô:¨CÑ:Ô:Õ:Ô:Ð0Ñ:Ô:Õ:Ô:°FÑ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:àÔ#Ð; UÐ; U FÐ;¨CÐ;Ð#Ð# F¨CÑ0Ô0Ð;°GÐ;Ð0°GÒ;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð0°GÐ;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆtÑ;Ô;Ð;Õ;Ô;ˆtÑ;Ô;Ð;Ð;Õ;Ô;Ð#Ñ;Ô;Õ;Ô; UÑ;Ô;Õ;Ô;¨CÑ;Ô;Õ;Ô;Ð0Ñ;Ô;Õ;Ô;°GÑ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØÔ#Ð9 EÐ9¨3Ð9Ð#Ð# E¨3Ñ/Ô/Ð9°6Ð9Ð/°6Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð/°6Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Ð9Õ9Ô9Ð#Ñ9Ô9Õ9Ô9 EÑ9Ô9Õ9Ô9¨3Ñ9Ô9Õ9Ô9Ð/Ñ9Ô9Õ9Ô9°6Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÔ#Ð9 EÐ9¨3Ð9Ð#Ð# E¨3Ñ/Ô/Ð9°6Ð9Ð/°6Ò9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð/°6Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Õ9Ô9ˆtÑ9Ô9Ð9Ð9Õ9Ô9Ð#Ñ9Ô9Õ9Ô9 EÑ9Ô9Õ9Ô9¨3Ñ9Ô9Õ9Ô9Ð/Ñ9Ô9Õ9Ô9°6Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9àÔ#Ð< VÐ< V GÐ<¨SÐ<Ð#Ð# G¨SÑ1Ô1Ð<°WÐ<Ð1°WÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð1°WÐ<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆtÑ<Ô<Ð<Õ<Ô<ˆtÑ<Ô<Ð<Ð<Õ<Ô<Ð#Ñ<Ô<Õ<Ô< VÑ<Ô<Õ<Ô<¨SÑ<Ô<Õ<Ô<Ð1Ñ<Ô<Õ<Ô<°WÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ#Ð< VÐ< V GÐ<¨SÐ<Ð#Ð# G¨SÑ1Ô1Ð<°WÐ<Ð1°WÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð1°WÐ<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆtÑ<Ô<Ð<Õ<Ô<ˆtÑ<Ô<Ð<Ð<Õ<Ô<Ð#Ñ<Ô<Õ<Ô< VÑ<Ô<Õ<Ô<¨SÑ<Ô<Õ<Ô<Ð1Ñ<Ô<Õ<Ô<°WÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ#Ð< VÐ< V GÐ<¨SÐ<Ð#Ð# G¨SÑ1Ô1Ð<°WÐ<Ð1°WÒ<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð1°WÐ<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆtÑ<Ô<Ð<Õ<Ô<ˆtÑ<Ô<Ð<Ð<Õ<Ô<Ð#Ñ<Ô<Õ<Ô< VÑ<Ô<Õ<Ô<¨SÑ<Ô<Õ<Ô<Ð1Ñ<Ô<Õ<Ô<°WÑ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<õ  d¨e°sÐ;Ñ;Ô;ˆ
Ø�Š˜
Ñ#Ô#Ð#å˜#‘J”Jð 
	:ñ 
	:ˆDØ" Q™h¨!šm˜m�E�E°%ˆEØ×'Ò'¨
°E¸3Ñ?Ô?Ð?Ø'+¨a¡x°1¢} }˜F˜F¸6ˆMØ$(¨1¡H°¢M M˜˜¸ˆJàÔ'¨Ô-Ð>Ð-°Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð-°Ð>Ñ>Ô>Õ>Ô>Ð-Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>°Ñ>Ô>Ð>Õ>Ô>°Ñ>Ô>Ð>Ð>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>ØÐ4˜4œ: mÔ4Ð4�4Ð4Ð4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4�4Ð4Ð4Ñ4Ô4Õ4Ô4�4Ñ4Ô4Õ4Ô4Ð4Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4à˜TœZÐ'Ð'ØÐ9 4¤:¨jÔ#9Ð9�tÐ#9Ð9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9�tÐ#9Ð9Ñ9Ô9Õ9Ô9�tÑ9Ô9Õ9Ô9Ð#9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ùà×Ò˜4Ñ Ô Ð ØÐ(˜4œ=Ð(ˆt˜=Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆt˜=Ð(Ñ(Ô(Õ(Ô(ˆtÑ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(˜4Ñ(Ô(Ð(Õ(Ô(˜4Ñ(Ô(Ð(Ð(Õ(Ô(˜=Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r   c                óT
  — |j         d         }|j         d         }t          ddd¬¦  «        }t          ddd¬¦  «        }|                     |¦  «         |                     |¦  «         |                     ddd	¬
¦  «        }d}||v }|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}}d}||v}|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}}|                     ddd	¬
¦  «        }d}||v }|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}}d}||v}|s—t	          j        d|fd||f¦  «        t	          j        |¦  «        dt          j        ¦   «         v st	          j	        |¦  «        rt	          j        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚dx}}t          ddd¬¦  «        }t          ddd¬¦  «        }|                     |¦  «         |                     |¦  «         |                     |dd¦  «         |j        d         }|j        }d}||k    }|st	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}}|j        d         }|j        }d}||k    }|st	          j        d|fd||f¦  «        t	          j        |¦  «        t	          j        |¦  «        t	          j        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}}|                     d¦  «         |                     d¦  «         |                     d¦  «         |                     d¦  «         dS )zCVerifies hideout and sanctuary spatial grids never cross-pollinate.r   Úzone_boundless_sanctuaryiY  r¯   r   iZ  r°   r«   rD   r:   rJ   rL   Úaoi_hideoutrN   rO   r(   Nr²   )z%(py1)s not in %(py3)sÚaoi_sanctuaryia  g      $@r   g      .@r    )z)%(py3)s
{%(py3)s = %(py1)s.x
} == %(py6)s)r&   r'   r?   r@   rA   )rX   r   rY   rf   r[   r\   r`   r]   r^   r_   ra   rb   rh   rZ   r   rj   )rk   r   Úhideout_gridÚsanctuary_gridÚent_aÚent_brÂ   rz   rn   r{   r|   rÃ   Úent_hÚent_srv   ro   rw   rx   s                     r   Ú8test_cross_zone_spatial_isolation_under_identical_coordszYTestSpatialGridPortalAdversarial.test_cross_zone_spatial_isolation_under_identical_coords�   s
  € àÔ0Ð1FÔGˆØÔ2Ð3MÔNˆõ  ¨°%Ð8Ñ8Ô8ˆÝ ¨°%Ð8Ñ8Ô8ˆà×Ò Ñ&Ô&Ð&Ø×!Ò! %Ñ(Ô(Ð(ð #×6Ò6°t¸TÐPQÐ6ÑRÔRˆØÐ"ˆt�{Ð"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"ˆt�{Ð"Ñ"Ô"Õ"Ô"ˆtÑ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�{Ñ"Ô"Ð"Õ"Ô"�{Ñ"Ô"Ð"Ð"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"ØÐ&ˆt˜;Ð&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆt˜;Ð&Ñ&Ô&Õ&Ô&ˆtÑ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&˜;Ñ&Ô&Ð&Õ&Ô&˜;Ñ&Ô&Ð&Ð&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&ð '×:Ò:¸4ÀÐTUÐ:ÑVÔVˆØÐ$ˆt�}Ð$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$ˆt�}Ð$Ñ$Ô$Õ$Ô$ˆtÑ$Ô$Ð$Õ$Ô$Ñ$Ô$Ð$Ð$Õ$Ô$�}Ñ$Ô$Ð$Õ$Ô$�}Ñ$Ô$Ð$Ð$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$ØÐ(ˆt˜=Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆt˜=Ð(Ñ(Ô(Õ(Ô(ˆtÑ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(˜=Ñ(Ô(Ð(Õ(Ô(˜=Ñ(Ô(Ð(Ð(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(õ  ¨°Ð6Ñ6Ô6ˆÝ ¨°%Ð8Ñ8Ô8ˆØ×Ò Ñ&Ô&Ð&Ø×!Ò! %Ñ(Ô(Ð(ð 	×+Ò+¨E°4¸Ñ>Ô>Ð>ØÔ$ TÔ*Ð4Ð*Ô,Ð4°Ð4Ð,°Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð,°Ð4Ñ4Ô4Õ4Ô4Ð*Ñ4Ô4Õ4Ô4Ð,Ñ4Ô4Õ4Ô4°Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4Ð4ØÔ& tÔ,Ð7Ð,Ô.Ð7°%Ð7Ð.°%Ò7Ð7Ð7Ð7Õ7Ô7Ð7Ð7Ð7Ð7Ð.°%Ð7Ñ7Ô7Õ7Ô7Ð,Ñ7Ô7Õ7Ô7Ð.Ñ7Ô7Õ7Ô7°%Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ð 	×"Ò" 4Ñ(Ô(Ð(Ø×"Ò" 4Ñ(Ô(Ð(Ø×$Ò$ TÑ*Ô*Ð*Ø×$Ò$ TÑ*Ô*Ð*Ð*Ð*r   c                ó"  — d}|                      |d¦  «         t          j        ¦   «         }d}t          |¦  «        D �]{}|                     |dd¬¦  «        \  }}}d}||u }	|	s—t          j        d|	fd	||f¦  «        d
t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd
t          j
        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}	}d}||k    }	|	s—t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}	}|                     |¦  «        }|j        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |	¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|j        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |	¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|j        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |	¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|                     |dd¬¦  «        \  }}}d}||u }	|	s—t          j        d|	fd	||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}	}d}||k    }	|	s—t          j        d|	fd||f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}	}|                     |¦  «        }|j        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |	¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|j        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |	¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}|j        }	d}|	|k    }|sªt          j        d|fd|	|f¦  «        dt          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        ndt          j
        |	¦  «        t          j
        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}	x}}�Œ}t          j        ¦   «         |z
  }d }||k     }	|	s±t          j        d!|	fd"||f¦  «        d#t          j        ¦   «         v st          j	        |¦  «        rt          j
        |¦  «        nd#t          j
        |¦  «        dœz  }
t          j        d$|d%›d&�¦  «        d'z   d|
iz  }t          t          j        |¦  «        ¦  «        ‚dx}	}dS )(zCSimulates 1,000 rapid back-and-forth roundtrips (2,000 traversals).Úplayer_stress_commuterrÁ   r   Úportal_sanctuary_to_hideoutr9   ©Úplayer_levelT©Úis©z%(py0)s is %(py3)sÚok1rU   rO   r(   Nr   r    ©z%(py0)s == %(py3)sÚdest1)z/%(py2)s
{%(py2)s = %(py0)s.zone_id
} == %(py5)sÚloc1)r%   r5   r(   r´   r)   r8   )z)%(py2)s
{%(py2)s = %(py0)s.x
} == %(py5)s)z)%(py2)s
{%(py2)s = %(py0)s.y
} == %(py5)sÚportal_hideout_to_sanctuaryÚok2Údest2Úloc2g     €v@g      ð?)ú<)z%(py0)s < %(py3)sÚdurationz Roundtrip performance degraded: z.3fzs for 2000 traversalsz
>assert %(py5)s)Úspawn_playerÚtimeÚperf_counterrE   Útraverse_portalr[   r\   r]   r^   r_   r`   ra   rb   Úget_player_locationÚzone_idr   r   ri   )rk   r   ÚpidÚ
start_timeÚ
roundtripsrŽ   rÓ   rÕ   rn   rs   r{   r|   rÖ   ro   r~   rq   rØ   rÙ   rÚ   rÜ   s                       r   Ú-test_portal_roundtrip_rapid_transitions_1000xzNTestSpatialGridPortalAdversarial.test_portal_roundtrip_rapid_transitions_1000x·   sï	  € à&ˆØ×Ò˜CÐ!;Ñ<Ô<Ð<åÔ&Ñ(Ô(ˆ
Øˆ
å�zÑ"Ô"ð 	!ñ 	!ˆAà"×2Ò2°3Ð8UÐdeÐ2ÑfÔf‰MˆC�˜ØÐ�3˜$�;ÐÐÐÕÔÐÐÐÐ�3˜$ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ1Ð1�5Ð1Ò1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1�5Ð1Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1�5Ñ1Ô1Ð1Õ1Ô1�5Ñ1Ô1Ð1Ð1Õ1Ô1Ð1Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ø×-Ò-¨cÑ2Ô2ˆDØ”<Ð8Ð#8Ð8�<Ð#8Ò8Ð8Ð8Ð8Õ8Ô8Ð8Ð8Ð8Ð8�<Ð#8Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8�4Ñ8Ô8Ð8Õ8Ô8�4Ñ8Ô8Ð8Ð8Õ8Ô8�<Ñ8Ô8Õ8Ô8Ð#8Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ø”6Ð ˜SÐ �6˜S’=Ð Ð Ð Õ Ô Ð Ð Ð Ð �6˜SÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �4Ñ Ô Ð Õ Ô �4Ñ Ô Ð Ð Õ Ô �6Ñ Ô Õ Ô ˜SÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ø”6Ð ˜SÐ �6˜S’=Ð Ð Ð Õ Ô Ð Ð Ð Ð �6˜SÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �4Ñ Ô Ð Õ Ô �4Ñ Ô Ð Ð Õ Ô �6Ñ Ô Õ Ô ˜SÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð ð #×2Ò2°3Ð8UÐdeÐ2ÑfÔf‰MˆC�˜ØÐ�3˜$�;ÐÐÐÕÔÐÐÐÐ�3˜$ÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÕÔ˜$ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ6Ð6�5Ð6Ò6Ð6Ð6Ð6Õ6Ô6Ð6Ð6Ð6Ð6�5Ð6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6�5Ñ6Ô6Ð6Õ6Ô6�5Ñ6Ô6Ð6Ð6Õ6Ô6Ð6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ø×-Ò-¨cÑ2Ô2ˆDØ”<Ð=Ð#=Ð=�<Ð#=Ò=Ð=Ð=Ð=Õ=Ô=Ð=Ð=Ð=Ð=�<Ð#=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=�4Ñ=Ô=Ð=Õ=Ô=�4Ñ=Ô=Ð=Ð=Õ=Ô=�<Ñ=Ô=Õ=Ô=Ð#=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ø”6Ð"˜UÐ"�6˜U’?Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"�6˜UÐ"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"�4Ñ"Ô"Ð"Õ"Ô"�4Ñ"Ô"Ð"Ð"Õ"Ô"�6Ñ"Ô"Õ"Ô"˜UÑ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"Ø”6Ð ˜SÐ �6˜S’=Ð Ð Ð Õ Ô Ð Ð Ð Ð �6˜SÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �4Ñ Ô Ð Õ Ô �4Ñ Ô Ð Ð Õ Ô �6Ñ Ô Õ Ô ˜SÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ñ åÔ$Ñ&Ô&¨Ñ3ˆàÐeˆx˜#Š~ÐeÐeÐeÕeÔeÐeÐeÐeÐeˆx˜#ÐeÑeÔeÐeÕeÔeÑeÔeÐeÐeÕeÔeˆxÑeÔeÐeÕeÔeˆxÑeÔeÐeÐeÕeÔe˜#ÑeÔeÐeÐeÑeÐeÕeÔeÐeÀ(ÐeÐeÐeÐeÑeÔeÐeÑeÐeÐeÐeÑeÐeÕeÕeÔeÐeÑeÔeÑeÔeÐeÐeÐeÐeÐeÐeÐer   c                ó6  ‡‡
‡‡— d}dŠ
t          |¦  «        D ]}‰                     d|› �d¦  «         Œdˆ
ˆfd„Št          j                             d	¬
¦  «        5 Šˆˆfd„t          |¦  «        D ¦   «         }t          d„ t          j                             |¦  «        D ¦   «         ¦  «        }ddd¦  «         n# 1 swxY w Y   |‰
z  dz  }||k    }|sÂt          j        d|fd||f¦  «        dt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddt          j
        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚d}dS )zDSimulates 50 players concurrently traversing portals across threads.r„   rŠ   Úplayer_storm_rÁ   Ú
player_idxr†   r   c                óÞ   •— d| › �}d}t          ‰¦  «        D ]T}‰	                     |dd¬¦  «        \  }}}|r|dk    r|dz  }‰	                     |dd¬¦  «        \  }}}|r|dk    r|dz  }ŒU|S )	Nrè   r   rÍ   r9   rÎ   r   r×   rÁ   )rE   rà   )
ré   rã   Úsuccess_countrŽ   rÓ   rÕ   rØ   rÙ   Úcycles_per_playerr   s
           €€r   Úplayer_storm_taskzdTestSpatialGridPortalAdversarial.test_portal_concurrent_multiplayer_storm.<locals>.player_storm_taskß   s²   ø€ Ø. *Ð.Ð.ˆCØˆMÝÐ,Ñ-Ô-ð 'ð '�Ø &× 6Ò 6°sÐ<YÐhiÐ 6Ñ jÔ j‘��U˜AØð '˜5Ð$9Ò9Ð9Ø! QÑ&�MØ &× 6Ò 6°sÐ<YÐhiÐ 6Ñ jÔ j‘��U˜AØð '˜5Ð$>Ò>Ð>Ø! QÑ&�MøØ Ð r   r‰   r‘   c                ó<   •— g | ]}‰                      ‰|¦  «        ‘ŒS r   r”   )r/   rl   r—   rí   s     €€r   r˜   z]TestSpatialGridPortalAdversarial.test_portal_concurrent_multiplayer_storm.<locals>.<listcomp>ì   s(   ø€ ÐZÐZÐZÀ�x—’Ð'8¸!Ñ<Ô<ÐZÐZÐZr   c              3  ó>   K  — | ]}|                      ¦   «         V — Œd S r   rš   rœ   s     r   r1   z\TestSpatialGridPortalAdversarial.test_portal_concurrent_multiplayer_storm.<locals>.<genexpr>í   s*   è è € Ð]Ð]¨q §¢¡
¤
Ð]Ð]Ð]Ð]Ð]Ð]r   NrD   r    r2   Útotal_successÚexpectedr4   r6   r7   )ré   r†   r   r†   )rE   rÝ   r¡   r¢   r£   rQ   r¤   r[   r\   r]   r^   r_   r`   ra   rb   )rk   r   Úplayer_countrl   r¢   rð   rñ   rs   rt   ru   rì   r—   rí   s    `        @@@r   Ú(test_portal_concurrent_multiplayer_stormzITestSpatialGridPortalAdversarial.test_portal_concurrent_multiplayer_stormÖ   s=  øøøø€ àˆØÐõ �|Ñ$Ô$ð 	Qð 	QˆAØ×ÒÐ 3°Ð 3Ð 3Ð5OÑPÔPÐPÐPð
	!ð 
	!ð 
	!ð 
	!ð 
	!ð 
	!ð 
	!õ Ô×2Ò2¸rÐ2ÑBÔBð 	^ÀhØZÐZÐZÐZÐZÅeÈLÑFYÔFYÐZÑZÔZˆGÝÐ]Ð]µJÔ4F×4SÒ4SÐT[Ñ4\Ô4\Ð]Ñ]Ô]Ñ]Ô]ˆMð	^ð 	^ð 	^ñ 	^ô 	^ð 	^ð 	^ð 	^ð 	^ð 	^ð 	^øøøð 	^ð 	^ð 	^ð 	^ð  Ð"3Ñ3°aÑ7ˆØ Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ} Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ}Ñ(Ô(Ð(Õ(Ô(ˆ}Ñ(Ô(Ð(Ð(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô( Ñ(Ô(Ð(Õ(Ô( Ñ(Ô(Ð(Ð(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(s   ÁAB:Â:B>ÃB>c                ó`  — d}|                      |d¦  «         |                     |dd¬¦  «        \  }}}d}||u }|s—t          j        d|fd||f¦  «        d	t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd	t          j        |¦  «        d
œz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}}d}||k    }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d
œz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}}d}
|
|v }|s—t          j        d|fd|
|f¦  «        t          j        |
¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}
}|                     |dd¬¦  «        \  }}}d}||u }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d
œz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}}d}||k    }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d
œz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}}d}
|
|v }|s—t          j        d|fd|
|f¦  «        t          j        |
¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nddœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}
}|                     |dd¬¦  «        \  }}}d}||u }|s—t          j        d|fd||f¦  «        dt	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        d
œz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}}d}||k    }|s—t          j        d|fd||f¦  «        d t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd t          j        |¦  «        d
œz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}}d}
|
|v }|s—t          j        d|fd|
|f¦  «        t          j        |
¦  «        d!t	          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        nd!dœz  }dd|iz  }	t          t          j	        |	¦  «        ¦  «        ‚dx}
}dS )"zGTests invalid portal requests: wrong zone, wrong level, fake portal ID.Úplayer_adversary_01rÁ   r×   r‰   rÎ   FrÐ   rÒ   ÚokrU   rO   r(   NÚ r    rÔ   Údestu   KhÃ´ng tÃ¬m tháº¥y Lá»‘i QuarJ   rL   ÚmsgrN   Ú!portal_sanctuary_to_ancient_swordé   Úok_lvlÚdest_lvlu#   ChÆ°a Ä‘áº¡t cáº¥p Ä‘á»™ yÃªu cáº§uÚmsg_lvlÚportal_non_existent_idrˆ   Úok_fakeÚ	dest_fakeÚmsg_fake)
rÝ   rà   r[   r\   r]   r^   r_   r`   ra   rb   )rk   r   rã   rö   rø   rù   rn   rs   r{   r|   rz   rü   rý   rþ   r   r  r  s                    r   Ú1test_adversarial_portal_invalid_traversal_attackszRTestSpatialGridPortalAdversarial.test_adversarial_portal_invalid_traversal_attacksò   sp  € à#ˆØ×Ò˜CÐ!;Ñ<Ô<Ð<ð ×.Ò.¨sÐ4QÐ`bÐ.ÑcÔc‰ˆˆD�#ØÐˆr�Uˆ{ÐÐÐÕÔÐÐÐÐˆr�UÐÑÔÐÕÔÑÔÐÐÕÔˆrÑÔÐÕÔˆrÑÔÐÐÕÔ�UÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆt�rŠzÐÐÐÕÔÐÐÐÐˆt�rÐÑÔÐÕÔÑÔÐÐÕÔˆtÑÔÐÕÔˆtÑÔÐÐÕÔ�rÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ-Ð4Ð-°Ð4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð-°Ð4Ñ4Ô4Õ4Ô4Ð-Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4°Ñ4Ô4Ð4Õ4Ô4°Ñ4Ô4Ð4Ð4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4ð %+×$:Ò$:ØÐ4À1ð %;ñ %
ô %
Ñ!ˆ�˜'ð Ðˆv˜ˆÐÐÐÕÔÐÐÐÐˆv˜ÐÑÔÐÕÔÑÔÐÐÕÔˆvÑÔÐÕÔˆvÑÔÐÐÕÔ˜ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆx˜2Š~ÐÐÐÕÔÐÐÐÐˆx˜2ÐÑÔÐÕÔÑÔÐÐÕÔˆxÑÔÐÕÔˆxÑÔÐÐÕÔ˜2ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ4Ð?Ð4¸Ð?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð4¸Ð?Ñ?Ô?Õ?Ô?Ð4Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?¸Ñ?Ô?Ð?Õ?Ô?¸Ñ?Ô?Ð?Ð?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?ð (.×'=Ò'=¸cÐC[ÐjmÐ'=Ñ'nÔ'nÑ$ˆ�˜HØÐˆw˜%ÐÐÐÐÕÔÐÐÐÐˆw˜%ÐÑÔÐÕÔÑÔÐÐÕÔˆwÑÔÐÕÔˆwÑÔÐÐÕÔ˜%ÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØÐˆy˜BŠÐÐÐÕÔÐÐÐÐˆy˜BÐÑÔÐÕÔÑÔÐÐÕÔˆyÑÔÐÕÔˆyÑÔÐÐÕÔ˜BÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐØ-Ð9Ð-°Ð9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð-°Ð9Ñ9Ô9Õ9Ô9Ð-Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9°Ñ9Ô9Ð9Õ9Ô9°Ñ9Ô9Ð9Ð9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9r   c           
     ó˜  ‡— t          ‰j                             ¦   «         ¦  «        }t          |¦  «        }d}||k    }|sòt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}d
}||v }|s—t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d	x}}d}||v }|s—t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d	x}}ˆfd„|D ¦   «         }d„ |D ¦   «         }t          |¦  «        }t          |¦  «        }||k    }|�s�t	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }t	          j        d¦  «        dz   d|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}t          |¦  «        D ]G\  }}‰j        |         }|                     t!          dt#          |dz  ¦  «        d¬¦  «        ¦  «         ŒHt          |¦  «        D �]j\  }}‰j        |         }|j        d         }|j        }d}||z  }t#          |¦  «        }||k    }|�st	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        t"          ¦  «        rt	          j	        t"          ¦  «        ndd t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd t	          j	        |¦  «        t	          j	        |¦  «        d!œz  }d"d#|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}x}}�Œl|D ]"}‰j        |                              d¦  «         Œ#d	S )$zFVerifies spatial grid isolation across all registered canonical zones.é   )ú>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sr"   Úall_zone_idsr>   r@   rA   Nr   rJ   rL   rN   rO   r(   rÁ   c                ó*   •— g | ]}‰j         |         ‘ŒS r   )rX   )r/   Úzidr   s     €r   r˜   zbTestSpatialGridPortalAdversarial.test_cross_zone_isolation_all_canonical_zones.<locals>.<listcomp>  s!   ø€ ÐQÐQÐQ¸S˜&Ô3°CÔ8ÐQÐQÐQr   c                ó,   — h | ]}t          |¦  «        ’ŒS r   )Úid)r/   Úgs     r   rI   zaTestSpatialGridPortalAdversarial.test_cross_zone_isolation_all_canonical_zones.<locals>.<setcomp>  s   € Ð:Ð:Ð: a�B˜q™EœEÐ:Ð:Ð:r   r    )zN%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py8)s
{%(py8)s = %(py5)s(%(py6)s)
}Úunique_instances)r%   r&   r'   r(   r?   rA   z'Each zone must own a unique SpatialGridrW   rV   i¸"  rˆ   r8   r   )zU%(py3)s
{%(py3)s = %(py1)s.x
} == %(py11)s
{%(py11)s = %(py5)s((%(py6)s * %(py8)s))
}r‹   Úidx)r&   r'   r(   r?   rA   r    r©   rª   )ÚlistÚzonesÚkeysr"   r[   r\   r]   r^   r_   r`   ra   rb   ri   Ú	enumeraterX   rY   r   r‹   rZ   r   rj   )rk   r   r  rn   rv   ro   rw   rx   rz   r{   r|   Úgrid_instancesr  r   r€   r  r	  r#   r¥   rµ   r¦   r¶   s    `                    r   Ú-test_cross_zone_isolation_all_canonical_zoneszNTestSpatialGridPortalAdversarial.test_cross_zone_isolation_all_canonical_zones  sß  ø€ å˜FœL×-Ò-Ñ/Ô/Ñ0Ô0ˆÝ�<Ñ Ô Ð& BÐ&Ð  BÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&Ð  BÐ&Ñ&Ô&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�sÑ&Ô&Ð&Õ&Ô&�sÑ&Ô&Ð&Ð&Ð&Õ&Ô&Ñ&Ô&Ð&Ð&Õ&Ô&�<Ñ&Ô&Ð&Õ&Ô&�<Ñ&Ô&Ð&Ð&Õ&Ô&Ð Ñ&Ô&Õ&Ô& BÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø$Ð4Ð$¨Ð4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð$¨Ð4Ñ4Ô4Õ4Ô4Ð$Ñ4Ô4Ð4Õ4Ô4Ñ4Ô4Ð4Ð4Õ4Ô4¨Ñ4Ô4Ð4Õ4Ô4¨Ñ4Ô4Ð4Ð4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ø)Ð9Ð)¨\Ð9Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð)¨\Ð9Ñ9Ô9Õ9Ô9Ð)Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9¨\Ñ9Ô9Ð9Õ9Ô9¨\Ñ9Ô9Ð9Ð9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9ð RÐQÐQÐQÀLÐQÑQÔQˆØ:Ð:¨>Ð:Ñ:Ô:ÐÝÐ#Ñ$Ô$Ðd­¨LÑ(9Ô(9ÐdÐ$Ð(9Ò9ÐdÐdÑdÕdÔdÐdÐdÐdÐdÐ$Ð(9ÐdÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd�sÑdÔdÐdÕdÔd�sÑdÔdÐdÐdÐdÕdÔdÑdÔdÐdÐdÕdÔdÐ#ÑdÔdÐdÕdÔdÐ#ÑdÔdÐdÐdÕdÔdÐ$ÑdÔdÐdÕdÔdÑdÔdÐdÐdÕdÔd­ÑdÔdÐdÕdÔd­ÑdÔdÐdÐdÐdÕdÔdÑdÔdÐdÐdÕdÔd¨LÑdÔdÐdÕdÔd¨LÑdÔdÐdÐdÕdÔdÐ(9ÑdÔdÐdÐdÑdÐdÕdÔdÐ;dÑdÔdÐdÑdÐdÐdÐdÑdÐdÕdÕdÔdÐdÑdÔdÑdÔdÐdÐdÐdÐdÐdÐdÐdõ " ,Ñ/Ô/ð 	Oð 	O‰HˆC�ØÔ,¨SÔ1ˆDØ�OŠO�F¨TµU¸3À¹9Ñ5EÔ5EÈÐMÑMÔMÑNÔNÐNÐNõ " ,Ñ/Ô/ð 	=ñ 	=‰HˆC�ØÔ,¨SÔ1ˆDØ”= Ô&Ð<Ð&Ô(Ð<¸Ð<°#¸±)Ð<­E°)Ñ,<Ô,<Ð<Ð(Ð,<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð(Ð,<Ð<Ñ<Ô<Õ<Ô<Ð&Ñ<Ô<Õ<Ô<Ð(Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­EÑ<Ô<Ð<Õ<Ô<­EÑ<Ô<Ð<Ð<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<°#Ñ<Ô<Ð<Õ<Ô<°#Ñ<Ô<Ð<Ð<Õ<Ô<¸Ñ<Ô<Õ<Ô<Ð,<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ñ<ð  ð 	?ð 	?ˆCØÔ% cÔ*×8Ò8¸Ñ>Ô>Ð>Ð>ð	?ð 	?r   N)r   r
   r   r   )Ú__name__Ú
__module__Ú__qualname__Ú__doc__r�   r§   r¿   rÊ   ræ   ró   r  r  r   r   r   r   r      sÉ   € € € € € ØHÐHð5Nð 5Nð 5Nð 5NðnEð Eð Eð Eð.")ð ")ð ")ð ")ðH%+ð %+ð %+ð %+ðNfð fð fð fð>)ð )ð )ð )ð8:ð :ð :ð :ð2?ð ?ð ?ð ?ð ?ð ?r   r   )r   r
   )r  Ú
__future__r   Úbuiltinsr]   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter[   Úconcurrent.futuresr¡   rÞ   Útypingr   r   r   ÚpytestÚserver.world.spatial_gridr   r   Úserver.world.zone_enginer
   Úserver.world.zone_typesr   Úfixturer   r   r   r   r   ú<module>r%     s  ððð ð #Ð "Ð "Ð "Ð "Ð "Ø  € € € € € € € € € € € € Ð Ð Ð Ð Ø €€€Ø #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ð #Ø €€€à 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ð 9Ø /Ð /Ð /Ð /Ð /Ð /Ø ,Ð ,Ð ,Ð ,Ð ,Ð ,ð „ðð ð ñ „ððH?ð H?ð H?ð H?ð H?ñ H?ô H?ð H?ð H?ð H?r   