
    \i'             #       x   S SK r S SKrS SKrS SKrS SKrS SKJr  S SKrS SK	r	S SK
Jr  S SKrS SKJrJrJrJrJrJr  S SKJr  S SKJr  S SKJrJrJrJrJr  \R:                  " S5      S-  rS	r\	R@                  " S
S9S 5       r!\	R@                  " S
S9S 5       r"\	R@                  " S
S9S 5       r#\	RH                  RK                  S/ S S 4\/SS4S/S S 4\S/SS4\\\/S S 4\\\\/SS4/5      S 5       r&S r'S r(S r)S r*S r+\	RH                  RK                  SSS/\" S S 5      S// SS//5      \	RH                  RY                  S5      S 5       5       r-S r.\	RH                  RK                  S/ \/ 4/ \// / /4/ S/ 4/ S// / /4S/\/ 4S/\// / /4S/S/ 4S/S// / /4\/S/ 4\/S// / /4\/\/ 4\/\// / /4\/\/ 4\/\// / /4\\/\/ 4\\/\// / /4S\/\" S S SS5      S/4S\/\" S S SS5      /S /S//4S\\/\" S S SS5      S/4\S\/\" S S SS5      S S/4\S\/\" S S SS5      /S S /S S//4\\/\\/S/S//4\\\\/\\\\/S /S //4/5      S! 5       r/\	RH                  RK                  S"\" S#S#5      / 4\" S#S#5      // / /4\" SS5      S/4\" SS5      /S /S//4\" SS5      \" S$S$5      \" SS5      /S S/SS//4\" S S SS5      S S/4\" S S SS5      /S S /S S//4\" S%S%S&S&5      / S'Q4\" S%S%S&S&5      // S(Q/ S'Q/4\" S S SS5      \" S)S)S*S*5      \" S%S%S&S&5      // S+Q/ S,Q/4\R`                  " \" S S 5      S5      / S-Q4\R`                  " \" S S 5      S5      // S.Q/ S-Q/4\" S%S//S/S%//5      / S0Q4\" S%S//S/S%//5      // S.Q/ S0Q/4/5      S1 5       r1\	RH                  RK                  S"\" S S 5      S /4\" S S 5      /S /S //4\" S#S#5      S /4\" S#S#5      /S /S //4\" S S#5      S /4\" S S#5      /S /S //4\" SS5      S S/4\" SS5      /S S /S S//4\" S S SS5      S S/4\" S S SS5      /S S /S S//4\R`                  " \" S S 5      S#5      SS /4\R`                  " \" S S 5      S#5      /S S /SS //4\" S%S//S/S%//5      / S2Q4\" S%S//S/S%//5      // S3Q/ S2Q/4/5      S4 5       r2\	RH                  RK                  S"\" S#S#5      S S/4\" S#S#5      /S S /S S//4\" SS5      S/4\" SS5      /S /S//4\" S S SS5      S S/4\" S S SS5      /S S /S S//4\" S S S5S55      / S6Q4\" S S S5S55      // S.Q/ S6Q/4\" S S SS5      \" S)S)S*S*5      \" SSS S 5      // S7Q/ S8Q/4\R`                  " \" S S 5      \5      / S-Q4\R`                  " \" S S 5      \5      // S.Q/ S-Q/4\R`                  " \" S S 5      S \-  5      / S9Q4\R`                  " \" S S 5      S \-  5      // S(Q/ S9Q/4\" S%S//S/S%//5      / S0Q4\" S%S//S/S%//5      // S.Q/ S0Q/4/5      S: 5       r3\	RH                  RK                  S;S<S=/5      S> 5       r4\	RH                  RK                  S?S@/ S6Q4SA/ 4SBS/4SC/ 4SD/ 4SE/ S6Q4SF/ 4SGS/4/5      SH 5       r5SI r6\	RH                  RK                  S?\	Rn                  " S@S/\	RH                  Rq                  \SJ:  SKSL9SM9SA/ 4SB/ 4SC/ 4SDS/4SN/ 4SE/ 4SF/ 4SG/ 4/	5      SO 5       r9\	RH                  RK                  S"\" S#S#5      / 4\" S#S#5      // / /4\" SS5      S/4\" SS5      /S /S//4\" S S SPSP5      / SQQ4\" S S SPSP5      // S3Q/ SQQ/4\" S S SS5      \" S)S)S*S*5      \" S S SPSP5      // SRQ/ SSQ/4\R`                  " \" S S 5      S5      S /4\R`                  " \" S S 5      S5      /S /S //4\R`                  " \" S S 5      S \-  5      / S-Q4\R`                  " \" S S 5      S \-  5      // S.Q/ S-Q/4\" S%S%/S/S///5      S%S//4\" S%S%/S/S///5      /S S /S%S///4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      S//4\" S%S//S/S///5      /S /S///4/5      ST 5       r:\	RH                  RK                  S"\" S S 5      S /4\" S S 5      /S /S //4\" S#S#5      S /4\" S#S#5      /S /S //4\" S S#5      / 4\" S S#5      // / /4\" SS5      S S/4\" SS5      /S S /S S//4\" S S SS5      S S/4\" S S SS5      /S S /S S//4\" S S SS5      \" S)S)S*S*5      \" SSS S 5      // SUQ/ SVQ/4\R`                  " \" S S 5      S#5      SS /4\R`                  " \" S S 5      S#5      /S S /SS //4\R`                  " \" SS5      \5      S/4\R`                  " \" SS5      \5      /S /S//4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      SPS//4\" S%S//S/S///5      /S S /SPS///4/5      SW 5       r;\	RH                  RK                  S"\" S S#5      S /4\" S S#5      /S /S //4\" S#S 5      S /4\" S#S 5      /S /S //4\" S#S#5      S S/4\" S#S#5      /S S /S S//4\" SS5      S/4\" SS5      /S /S//4\" S S SS5      S S/4\" S S SS5      /S S /S S//4\" S S S5S55      / S6Q4\" S S S5S55      // S.Q/ S6Q/4\" S S SS5      \" S)S)S*S*5      \" SSS S 5      // S7Q/ S8Q/4\R`                  " \" S S 5      \5      / S-Q4\R`                  " \" S S 5      \5      // S.Q/ S-Q/4\R`                  " \" S S 5      S \-  5      / S9Q4\R`                  " \" S S 5      S \-  5      // S(Q/ S9Q/4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      S//4\" S%S//S/S///5      /S /S///4/5      SX 5       r<\	RH                  RK                  S"\" S#S#5      / 4\" S#S#5      // / /4\" SS5      S/4\" SS5      /S /S//4\" S S SPSP5      / 4\" S S SPSP5      // / /4\R`                  " \" S S 5      S5      / 4\R`                  " \" S S 5      S5      // / /4\" S%S%/S/S///5      / 4\" S%S%/S/S///5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4/5      SY 5       r=\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\" S#S#5      S /4\" S#S#5      /S /S //4\" S S#5      / 4\" S S#5      // / /4\" SS5      / 4\" SS5      // / /4\" S S SS5      / 4\" S S SS5      // / /4\R`                  " \" S S 5      S#5      / 4\R`                  " \" S S 5      S#5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" SZSZ/S/S///5      SP/4\" SZSZ/S/S///5      /S /SP//4/5      S[ 5       r>\	RH                  RK                  S"\" S S#5      S /4\" S S#5      /S /S //4\" S#S 5      S /4\" S#S 5      /S /S //4\" S#S#5      S S/4\" S#S#5      /S S /S S//4\" SS5      S/4\" SS5      /S /S//4\" S S SS5      / 4\" S S SS5      // / /4\" S S S#S#5      S /4\" S S S#S#5      /S /S //4\" S S S5S55      / 4\" S S S5S55      // / /4\R`                  " \" S S 5      \5      S /4\R`                  " \" S S 5      \5      /S /S //4\R`                  " \" S S 5      S \-  5      / 4\R`                  " \" S S 5      S \-  5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" S\S]/S\S^//5      S%/4\" S\S]/S\S^//5      /S /S%//4/5      S_ 5       r?\	RH                  RK                  S"\" S#S#5      / 4\" S#S#5      // / /4\" SS5      S/4\" SS5      /S /S//4\" S S SPSP5      S`S%/4\" S S SPSP5      /S S /S`S%//4\R`                  " \" S S 5      S5      S /4\R`                  " \" S S 5      S5      /S /S //4\R`                  " \" S S 5      S \-  5      / S-Q4\R`                  " \" S S 5      S \-  5      // S.Q/ S-Q/4\" S%S%/S/S///5      S%S//4\" S%S%/S/S///5      /S S /S%S///4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      S//4\" S%S//S/S///5      /S /S///4/5      Sa 5       r@\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\" S S SS5      S /4\" S S SS5      /S /S //4\R`                  " \" S S 5      S#5      / 4\R`                  " \" S S 5      S#5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" S%S%/SPSP//5      / 4\" S%S%/SPSP//5      // / /4/5      Sb 5       rA\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\" S S SS5      / 4\" S S SS5      // / /4\" S S SS5      S/4\" S S SS5      /S /S//4\R`                  " \" S S 5      \5      / 4\R`                  " \" S S 5      \5      // / /4\R`                  " \" S S 5      S \-  5      S /4\R`                  " \" S S 5      S \-  5      /S /S //4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4/5      Sc 5       rB\	RH                  RK                  S"\" S#S#5      / 4\" S#S#5      // / /4\" SS5      / 4\" SS5      // / /4\" S S SPSP5      / 4\" S S SPSP5      // / /4\R`                  " \" S S 5      S5      / 4\R`                  " \" S S 5      S5      // / /4\" S%S%/S/S///5      / 4\" S%S%/S/S///5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4/5      Sd 5       rC\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\" S S S5S55      / 4\" S S S5S55      // / /4\R`                  " \" S S 5      S#5      / 4\R`                  " \" S S 5      S#5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" S%S%/SPSP//5      / 4\" S%S%/SPSP//5      // / /4/5      Se 5       rD\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\" S S SS5      S S/4\" S S SS5      /S S /S S//4\" S S SS5      S S/4\" S S SS5      /S S /S S//4\R`                  " \" S S 5      \5      SS`/4\R`                  " \" S S 5      \5      /S S /SS`//4\R`                  " \" S S 5      S \-  5      / SfQ4\R`                  " \" S S 5      S \-  5      // S3Q/ SfQ/4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4/5      Sg 5       rE\	RH                  RK                  S"\" SS5      / 4\" S S SPSP5      / 4\R`                  " \" S S 5      S5      / 4\" S%S//S/S///5      / 4/5      Sh 5       rF\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\" S S S5S55      S/4\" S S S5S55      /S /S//4\R`                  " \" S S 5      S#5      SS /4\R`                  " \" S S 5      S#5      /S S /SS //4\R                  " SiSj/5      S /4\R                  " SiSj/5      /S /S //4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S//S/Sk//5      / 4\" S%S//S/S//S/Sk//5      // / /4/5      Sl 5       rH\	RH                  RK                  S"\" S S#5      / 4\" S S#5      // / /4\" S S S5S55      / 4\" S S S5S55      // / /4\R`                  " \" S S 5      \5      / 4\R`                  " \" S S 5      \5      // / /4\" S%S//S/S//S/Sk//5      S//4\" S%S//S/S//S/Sk//5      /S /S///4/5      Sm 5       rI\	RH                  RK                  S"\" S#S#5      / 4\" S#S#5      // / /4\" SS5      / 4\" SS5      // / /4\" S S SPSP5      S SP/4\" S S SPSP5      /S S /S SP//4\R`                  " \" S S 5      S5      / 4\R`                  " \" S S 5      S5      // / /4\" SnSo/5      S/4\" SnSo/5      /S /S//4\" S%S%/S/S///5      / 4\" S%S%/S/S///5      // / /4/5      Sp 5       rJ\	RH                  RK                  S"\" S S 5      S /4\" S S 5      /S /S //4\" S#S#5      / 4\" S#S#5      // / /4\" SS5      S S/4\" SS5      /S S /S S//4\" S S SS5      S/4\" S S SS5      /S /S//4\R`                  " \" S S 5      S#5      / 4\R`                  " \" S S 5      S#5      // / /4\R`                  " \" SS5      \Sq-   5      / 4\R`                  " \" SS5      \Sq-   5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S//S/Sk//5      SPS//4\" S%S//S/S//S/Sk//5      /S S /SPS///4/5      Sr 5       rK\	RH                  RK                  S"\" S S#5      / 4\" S S#5      // / /4\" \\-   S 5      S /4\" \\-   S 5      /S /S //4\" S S SS5      / 4\" S S SS5      // / /4\" \\-   S SS5      S /4\" \\-   S SS5      /S /S //4\R`                  " \" S S 5      \\-   5      / 4\R`                  " \" S S 5      \\-   5      // / /4\" S S /S/S//S/Sk//5      / 4\" S S /S/S//S/Sk//5      // / /4/5      Ss 5       rL\	RH                  RK                  S"\" S#S#5      / 4\" S#S#5      // / /4\" SS5      S/4\" SS5      /S /S//4\" S S SPSP5      / SQQ4\" S S SPSP5      // S3Q/ SQQ/4\R`                  " \" S S 5      S5      S /4\R`                  " \" S S 5      S5      /S /S //4\R`                  " \" S S 5      S \-  5      / S-Q4\R`                  " \" S S 5      S \-  5      // S.Q/ S-Q/4\" S%S%/S/S///5      S%S//4\" S%S%/S/S///5      /S S /S%S///4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      S//4\" S%S//S/S///5      /S /S///4/5      St 5       rM\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\" S S S5S55      S /4\" S S S5S55      /S /S //4\" SSS S 5      SS/4\" SSS S 5      /S S /SS//4\R`                  " \" S S 5      S#5      / 4\R`                  " \" S S 5      S#5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" S%S%/SPSP//5      / 4\" S%S%/SPSP//5      // / /4/5      Su 5       rN\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\" S S SS5      / 4\" S S SS5      // / /4\" S S SS5      S/4\" S S SS5      /S /S//4\R`                  " \" S S 5      \5      / 4\R`                  " \" S S 5      \5      // / /4\R`                  " \" S S 5      S \-  5      S /4\R`                  " \" S S 5      S \-  5      /S /S //4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4/5      Sv 5       rO\	RH                  RK                  S"\" S#S#5      / 4\" S#S#5      // / /4\" SS5      S/4\" SS5      /S /S//4\" S S SPSP5      / 4\" S S SPSP5      // / /4\R`                  " \" S S 5      S5      / 4\R`                  " \" S S 5      S5      // / /4\" S%S%/S/S///5      / 4\" S%S%/S/S///5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4/5      Sw 5       rP\	RH                  RK                  S"\" S S 5      S /4\" S S 5      /S /S //4\" S#S#5      S /4\" S#S#5      /S /S //4\" S S#5      / 4\" S S#5      // / /4\" SS5      S S/4\" SS5      /S S /S S//4\R                  " SS/SS//5      S/4\R                  " SS/SS//5      /S /S//4\R                  " S5S5/SxSx//5      / 4\R                  " S5S5/SxSx//5      // / /4\" S S SS5      / 4\" S S SS5      // / /4\R`                  " \" S S 5      S#5      / 4\R`                  " \" S S 5      S#5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" SZSZ/S/S///5      SP/4\" SZSZ/S/S///5      /S /SP//4/5      Sy 5       rQ\	RH                  RK                  S"\" S S#5      S /4\" S S#5      /S /S //4\" S#S 5      S /4\" S#S 5      /S /S //4\" SS5      S/4\" SS5      /S /S//4\" S#S#5      S S/4\" S#S#5      /S S /S S//4\R                  " S S /SS//5      / 4\R                  " S S /SS//5      // / /4\R                  " S5S5/SxSx//5      S/4\R                  " S5S5/SxSx//5      /S /S//4\" S S SS5      / 4\" S S SS5      // / /4\" S S S#S#5      S /4\" S S S#S#5      /S /S //4\" S S S5S55      / 4\" S S S5S55      // / /4\R`                  " \" S S 5      \5      S /4\R`                  " \" S S 5      \5      /S /S //4\R`                  " \" S S 5      S \-  5      / 4\R`                  " \" S S 5      S \-  5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" S\S]/S\S^//5      S%/4\" S\S]/S\S^//5      /S /S%//4/5      Sz 5       rR\	RH                  RK                  S"\" S#S#5      / 4\" S#S#5      // / /4\" SS5      S/4\" SS5      /S /S//4\R                  " S S /SS//5      S/4\R                  " S S /SS//5      /S /S//4\R                  " S#S#/SxSx//5      SS/4\R                  " S#S#/SxSx//5      /S S /SS//4\R                  " S S/SS //5      S/4\R                  " S S/SS //5      /S /S//4\" S S SPSP5      S`S%/4\" S S SPSP5      /S S /S`S%//4\R`                  " \" S S 5      S5      S /4\R`                  " \" S S 5      S5      /S /S //4\R`                  " \" S S 5      S \-  5      / S-Q4\R`                  " \" S S 5      S \-  5      // S.Q/ S-Q/4\" S%S%/S/S///5      S%S//4\" S%S%/S/S///5      /S S /S%S///4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      S//4\" S%S//S/S///5      /S /S///4/5      S{ 5       rS\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\R                  " S S /SS//5      / 4\R                  " S S /SS//5      // / /4\R                  " S S /SS//5      / 4\R                  " S S /SS//5      // / /4\R                  " S S/SS //5      / 4\R                  " S S/SS //5      // / /4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4\" S%S//S/S///5      / 4\" S%S//S/S///5      // / /4\" S%S%/SPSP//5      / 4\" S%S%/SPSP//5      // / /4\" S S SS5      / 4\" S S SS5      // / /4\" S S SS5      / 4\" S S SS5      // / /4\R`                  " \" S S 5      S#5      / 4\R`                  " \" S S 5      S#5      // / /4/5      S| 5       rT\	RH                  RK                  S"\" S S 5      / 4\" S S 5      // / /4\R                  " S S /SS//5      / 4\R                  " S S /SS//5      // / /4\" S S SS5      / 4\" S S SS5      // / /4\" S S SS5      S/4\" S S SS5      /S /S//4\R`                  " \" S S 5      \5      / 4\R`                  " \" S S 5      \5      // / /4\R`                  " \" S S 5      S \-  5      S /4\R`                  " \" S S 5      S \-  5      /S /S //4\" S%S//S/S%//5      / 4\" S%S//S/S%//5      // / /4/5      S} 5       rU\	RH                  R                  \S~:  SSL9\	RH                  RK                  S\" S S 5      \" S S 5      /SS/\\//5      S 5       5       rW\	RH                  R                  \S~:  SSL9\	RH                  RK                  S\" S S 5      SS4\" S S 5      /SS4\" S S 5      SS4\" S S 5      /SS4\" S S 5      /S/S4\" S S 5      S S/S4\" S S 5      /S S/S4\" S S 5      S//S4\" S S 5      /S//S4/	5      S 5       5       rX\	RH                  R                  \S~:  SSL9\	RH                  RK                  S/ SS/ 4PS/S/ / /4P\" SS5      S / 4P\" SS5      /S / / /4P\" SS5      S$/ 4P\" SS5      /S$/ / /4P\" SS5      \R                  / 4P\" SS5      /\R                  / / /4P\" 5       S/ 4P\" 5       /S/ / /4P\" SS5      S#S /4P\" SS5      /S#S /S //4P\" SS5      Sx/ S6Q4P\" SS5      /Sx/ S.Q/ S6Q/4P\" S S 5      S5/ S-Q4P\" S S 5      /S5/ S.Q/ S-Q/4P\" S#S#5      SS S/4P\" S#S#5      /SS S /S S//4PS\" S#S#5      /SSS/S S//4P\" S#S#5      \" SS5      /S/ SQ/ SQ/4P\" S S5      \" SS5      /SS// SQ/ S8Q/4P\" S S S S 5      S / S8Q4P\" S S S S 5      /S / S3Q/ S8Q/4P\" S S S S 5      S/ S8Q4P\" S S S S 5      /S/ S3Q/ S8Q/4P\" SSSS5      S5/ S8Q4P\" SSSS5      /S5/ S3Q/ S8Q/4P\" SS/S5S5//5      S/ S6Q4P\" SS/S5S5//5      /S/ S.Q/ S6Q/4P\" S#S#/SS//5      S/ SQ4P\" S#S#/SS//5      /S/ S3Q/ SQ/4P5      S 5       5       rZ\	RH                  R                  \S~:  SSL9\	RH                  RK                  SSS/ 4S/S/ / /4\" S#S#5      S S /4\" S#S#5      /S S /S //4\" S#S#5      SS S/4\" S#S#5      /SS S /S S//4\" SS5      S#SS/4\" SS5      /S#S S /SS//4\" S S SS5      S#S S/4\" S S SS5      /S#S S /S S//4\" S#S#S5S55      S#S S/4\" S#S#S5S55      /S#S S /S S//4\" S%S%/S/S///5      S#/ S2Q4\" S%S%/S/S///5      /S#/ S3Q/ S2Q/4\" S%S//S/S%//5      S5S%SP/4\" S%S//S/S%//5      /S5S S /S%SP//4/5      S 5       5       r[\	RH                  R                  \S~:  SSL9\	RH                  RK                  S\" S S 5      S S /4\" S S 5      /S S /S //4\" S S 5      S#S /4\" S S 5      /S#S /S //4\" S S 5      S5S S/4\" S S 5      /S5S S /S S//4\" S#S#5      SS S/4\" S#S#5      /SS S /S S//4\" S#S#5      S#S S/4\" S#S#5      /S#S S /S S//4\" S S SS5      S S S/4\" S S SS5      /S S S /S S//4\" S S SS5      S/ S6Q4\" S S SS5      /S/ S.Q/ S6Q/4\" S%S%/S/S///5      S#S%S//4\" S%S%/S/S///5      /S#S S /S%S///4\" S%S%/S/S///5      Sx/ SQ4\" S%S%/S/S///5      /Sx/ SQ/ SQ/4/5      S 5       5       r\S r]\	RH                  RK                  SS/5      S 5       r^\	RH                  RK                  SSS/\" SS5      S//5      S 5       r_\	RH                  RK                  S\\/\" SS5      \//5      S 5       r`\	RH                  RK                  S"\" SS5      S 4\" SS5      S4\" SS5      S4\" SS5      \" S S 5      /SS /4\" SS5      \" SS5      /SS/4\" SS5      \" S)S)5      /S S/4\" S#S#SS5      S4\R`                  " \" SxSx5      \5      S4\R`                  " \" S S 5      \5      S 4\" S]S%/S/S///5      S/4\" S%S//S/S%//5      SP4/5      S 5       ra\	RH                  RK                  S"\" S#S#5      S S/4\" S S S S 5      / S8Q4\" S%S%/S/S///5      S%S//4/5      S 5       rb\	RH                  RK                  S"\" S#S#5      S 4\" S5S#5      S 4\R"                  " S#S5SS5      S4\R                  " S S#/SSx//5      S 4/5      S 5       rc\	RH                  RK                  S"\" SS5      SS/4\" S S SS5      S S/4\" S#S#S5S55      S S/4\" S S S%S%5      / SQ4\R`                  " \" SxSx5      \5      SS/4\R`                  " \" S S 5      \5      SS /4\" S%S%/S/S///5      / S2Q4\" S]S%/S/S///5      SPS//4\" S%S//S/S%//5      S%SP/4/	5      S 5       rd\	RH                  RK                  S"\" S S 5      S 4\" SS5      S4\R"                  " S S%SSP5      S 4\" S%S//S/S%//5      SP4/5      S 5       re\	RH                  RK                  S"\" S#S#5      S S/4\" S S SS5      S S/4\" S#S#S5S55      / S6Q4\" S S S%S%5      / SQ4\R`                  " \" SxSx5      \5      SS /4\R`                  " \" S S 5      \5      / S-Q4\" S%S%/S/S///5      S%S//4\" S]S%/S/S///5      S%S//4/5      S 5       rfS rg\	RH                  RK                  SSS//5      S 5       rh\	RH                  RK                  SSS/ 4S/S/ / /4SS/ / 44S/S/ / // 44/5      S 5       ri\	RH                  RK                  S"\/ 4\// / /4\\/SS/SS //4/5      S 5       rj\	RH                  RK                  S"\" SS5      S /4\" SS5      /S /S //4\" SS5      S/4\" SS5      /S /S//4\" SS5      S/4\" SS5      /S /S//4\" S#S#5      S S/4\" S#S#5      /S S /S S//4\" SS5      \" S S 5      /S S/SS //4\" SS5      \" SS5      /S S/SS//4\" SS5      \" S)S)5      /S S/S S//4\" S#S#SS5      S/4\" S#S#SS5      /S /S//4\" S S S S 5      / S8Q4\" S S S S 5      // S3Q/ S8Q/4\R`                  " \" SxSx5      S5      SS /4\R`                  " \" SxSx5      S5      /S S /SS //4\R`                  " \" S S 5      S#5      S /4\R`                  " \" S S 5      S#5      /S /S //4\" S]S%/S/S///5      S//4\" S]S%/S/S///5      /S /S///4\" S%S//S/S%//5      SP/4\" S%S//S/S%//5      /S /SP//4\" S%S%/S/S///5      S%S//4\" S%S%/S/S///5      /S S /S%S///4\" S#S#/SS//5      / SQ4\" S#S#/SS//5      // S3Q/ SQ/4/5      S 5       rk\	RH                  RK                  S"\" S#S#5      S /4\" S#S#5      /S /S //4\" SS5      SS/4\" SS5      /S S /SS//4\" S S SS5      S S/4\" S S SS5      /S S /S S//4\" S#S#S5S55      S S/4\" S#S#S5S55      /S S /S S//4\" S S S#S#5      \" S S S%S%5      // SQ/ SQ/4\R`                  " \" SxSx5      S5      / SQ4\R`                  " \" SxSx5      S5      // S.Q/ SQ/4\R`                  " \" S S 5      S#5      SS /4\R`                  " \" S S 5      S#5      /S S /SS //4\" S%S%/S/S///5      / S2Q4\" S%S%/S/S///5      // S3Q/ S2Q/4\" S]S%/S/S///5      SPS//4\" S]S%/S/S///5      /S S /SPS///4\" S%S//S/S%//5      S%SP/4\" S%S//S/S%//5      /S S /S%SP//4/5      S 5       rl\	RH                  RK                  S"\" S S 5      S /4\" S S 5      /S /S //4\" SS5      S/4\" SS5      /S /S//4\" S#S#5      S S/4\" S#S#5      /S S /S S//4\" S S SS5      S S/4\" S S SS5      /S S /S S//4\" S#S#S5S55      / S6Q4\" S#S#S5S55      // S.Q/ S6Q/4\" S S SS5      \" S S S%S%5      // SQ/ SQ/4\R`                  " \" SxSx5      \5      SS /4\R`                  " \" SxSx5      \5      /S S /SS //4\R`                  " \" S S 5      \5      / S-Q4\R`                  " \" S S 5      \5      // S.Q/ S-Q/4\" S%S%/S/S///5      S%S//4\" S%S%/S/S///5      /S S /S%S///4\" S]S%/S/S///5      S%S//4\" S]S%/S/S///5      /S S /S%S///4\" S%S//S/S%//5      SP/4\" S%S//S/S%//5      /S /SP//4/5      S 5       rm\	RH                  RK                  S\" S#S#5      SS S/4\" S#S#5      /SS S /S S//4\" S#S#5      SS S/4\" S#S#5      /SS S /S S//4\" S#S#5      S/ 4\" S#S#5      /S/ / /4\" S#S#5      \" S S 5      /SS/S //4/5      S 5       rn\	RH                  RK                  S\" S#S#5      S 4\" S#S#5      /S 4\" S#S#5      S$4\" S#S#5      /S$4/5      S 5       roS rp\	RH                  RK                  S"\" S S 5      S /S/44\" S S 5      /S /S //S/44\" S#S#5      S S/SS/44\" S#S#5      /S S /S S//SS/44\" S S SS5      S S/SS/44\" S S SS5      /S S /S S//SS/44/5      S 5       rq\	RH                  RK                  S\" SS5      SS/4\" SS5      /SS /S//4\" SS5      SS S/4\" SS5      /SS S /S S//4\" SS5      \" SS5      /S/ SQ/ SQ/4/5      S 5       rr\	RH                  RK                  S"\" SS5      / 4\" SS5      // / /4/5      S 5       rs\	RH                  RK                  S\" SS5      S4\" SS5      S/4\" SS5      // 4\" SS5      /S/4/5      S 5       rt\	RH                  RK                  S\" SS5      S4\" SS5      S/4\" SS5      // 4\" SS5      /S/4/5      S 5       ruS rvS rwg)    N)ThreadPoolExecutor)assert_array_equal)
LineString
MultiPointPointSTRtreeboxgeos_version)UnsupportedGEOSVersionError)assert_geometries_equal)emptyempty_line_stringempty_pointignore_invalidpoint   g&.>session)scopec               #      #    [         R                  " [        R                  " S5      [        R                  " S5      5      n [	        U 5      v   g 7f)N
   )shapelypointsnparanger   geomss    ]/var/www/html/kml_chatgpt/mouzaenv/lib/python3.13/site-packages/shapely/tests/test_strtree.pytreer      s/     NN299R="))B-8E
%.s   AAc               #      #    [         R                  " S5      n [         R                  " S5      nSn[        R                  " [         R                  " X U-   /XU-   //5      R
                  5      n[        U5      v   g 7f)Nr      )r   r   r   linestringsarrayTr   )xyoffsetr   s       r   	line_treer'   #   s^     
		"A
		"AF1&j/A6z?)K L N NOE
%.s   A;A=c               #      #    [         R                  " [         R                  " [        R                  " S5      [        R                  " S5      5      [
        [        -   SS9n [        U 5      v   g 7f)Nr       )	quad_segs)r   bufferr   r   r   HALF_UNIT_DIAGEPSr   r   s    r   	poly_treer.   ,   sI      NNryy}biim4ns6JVXE %.s   A-A/zgeometry,count, hitsr    c                     [        U 5      n[        U5      U:X  d   eUR                  [        SSSS5      5      R                  U:X  d   eg )Nr   d   )r   lenqueryr	   size)geometrycounthitsr   s       r   	test_initr7   6   sH      8Dt9::c!QS)*//4777    c                      [         R                  " [        5         [        S/5        S S S 5        g ! , (       d  f       g = f)NzNot a geometry)pytestraises	TypeErrorr    r8   r   test_init_with_invalid_geometryr>   K   s&    	y	!!"# 
"	!	!s   1
?c                      [        5       n [        SS5      nX/n[        U5      nS n S nSS KnUR                  5         UR	                  [        SSSS5      5      R                  5       S/:X  d   eg )Nr   r    )r   r   gccollectr2   r	   tolist)point1point2r   r   r@   s        r   test_referencesrE   P   si    WF1a[FE5>DFFJJL ::c!Q1o&--/A3666r8   c                      [         R                  " [        R                  " S5      [        R                  " S5      5      n [	        U 5      nS U S S & SS KnUR                  5         UR                  [        5        g )Nr   r   )	r   r   r   r   r   r@   rA   r2   r   )arrr   r@   s      r   test_flush_geometriesrH   b   sN    
..2		"
6C3<D CFJJLJJur8   c                      [         R                  " [        /5      n [        U 5      n[	        XR
                  5        [        R                  " SS5      U S'   [	        [        UR
                  S   5        g )Nr   )r   r"   r   r   r   
geometriesr   r   )rG   r   s     r   test_geometries_propertyrK   o   sP    
((E7
C3<DC1 ]]1a CFE4??1#56r8   c           	      
   [        [        S5       Vs/ s H  n[        X5      R                  S5      PM     sn5      n[        R
                  " U5      nSnU S-  n[        US5       nUR                  U5        S S S 5        [        R                  " [        R                  [        U5      /[        R                  S9nUR                  US9  UR                  5         UR                   S:X  d   eg s  snf ! , (       d  f       N= f)	N   皙?a   
import pickle
import sys

from shapely import Point

pickled_strtree = sys.stdin.buffer.read()
print("received pickled strtree:", repr(pickled_strtree))
tree = pickle.loads(pickled_strtree)

tree.query(Point(0, 0))
tree.nearest(Point(0, 0))
print("done")
zunpickle-strtree.pyw)stdin)inputr   )r   ranger   r+   pickledumpsopenwrite
subprocessPopensys
executablestrPIPEcommunicatewait
returncode)tmp_pathir   pickled_strtreeunpickle_scriptfilenameoutprocs           r   test_pickle_persistencerg   y   s    U1X>XE!K&&s+X>?Dll4(OO //H	h			/" 
 	X'ooD 	?+IIK??a9 ?& 
	s   $C/'C44
Dr4   zI am not a geometryzstill not a geometryzin a mixed arrayz8ignore:Creating an ndarray from ragged nested sequences:c                     [         R                  " [        [        45         U R	                  U5        S S S 5        g ! , (       d  f       g = fN)r:   r;   r<   
ValueErrorr2   r   r4   s     r   test_query_invalid_geometryrl      s-     
	:.	/

8 
0	/	/s	   <
A
c                     [         R                  " [        SS9   U R                  [	        SS5      //5        S S S 5        g ! , (       d  f       g = f)NzArray should be one dimensionalmatch      ?)r:   r;   r<   r2   r   r   s    r   test_query_invalid_dimensionrr      s6    	y(I	J

U3_%&' 
K	J	Js   A
Az tree_geometry, geometry,expectedr   rM   c                 P    [        U 5      n[        UR                  U5      U5        g ri   )r   r   r2   )tree_geometryr4   expectedr   s       r   test_query_with_none_and_emptyrv      s"    P =!Dtzz(+X6r8   zgeometry,expectedrp         )rx            	   )r   r   r   r   r   r0   n   )r   r   r   r   r   r   r   )r   r    rx   rz   r{   r|   r}   )r   rM      )r   r   r   r{   )rx   rz   r{   c                 :    [        U R                  U5      U5        g ri   r   r2   r   r4   ru   s      r   test_query_pointsr      s    D tzz(+X6r8   )r   rx   rz   r{   )r   r   r   r   c                 :    [        U R                  U5      U5        g ri   r   r'   r4   ru   s      r   test_query_linesr      s    4 yx0(;r8   g      ?)r   r    r   )r   r   r   r   )r   r    r   rM   )r    r   rM   r   rx   c                 :    [        U R                  U5      U5        g ri   r   r.   r4   ru   s      r   test_query_polygonsr     s    L yx0(;r8   	predicatebad_predicatedisjointc                     [         R                  " [        SS9   U R                  [	        SS5      US9  S S S 5        g ! , (       d  f       g = f)Nzis not a valid optionrn   r    r   )r:   r;   rj   r2   r   )r   r   s     r   test_query_invalid_predicater   E  s6     
z)@	A

5A;)
4 
B	A	As	   >
Azpredicate,expected
intersectswithincontainsoverlapscrossescovers
covered_bycontains_properlyc                 ~    [        SSSS5      n[        R                  " U5        [        U R	                  X1S9U5        g )Nr   r   r   )r	   r   preparer   r2   )r   r   ru   geoms       r   test_query_prepared_inputsr   R  s4     q!Q?DOODtzz$z<hGr8   c           	          [         R                  " [        SSSS5      [        SSSS5      /5      nU R                  USS9n[        R
                  " US   5        [        X R                  USS95        g )Nr   r    rM   rx   r   r   )r   r"   r	   r2   r   r   r   )r   r   ru   s      r   )test_query_with_partially_prepared_inputsr   e  sb    88SAq!_c!Q1o67Dzz$,z7H OODGxDL!IJr8   rM      r   zGEOS < 3.13)reason)markstouchesc                 z   [        5          [        R                  " SS/S[        S5      /5      nS S S 5        [        S:  a>  [
        R                  " [        R                  5         U R                  WUS9  S S S 5        g [        U R                  WUS9U5        g ! , (       d  f       Nq= f! , (       d  f       g = f)Nr    nanr   r   )
r   r   r!   floatr
   r:   r;   GEOSExceptionr2   r   )r   r   ru   line_nans       r   test_query_predicate_errorsr   n  s    & 
	&&1v5</@A 
j ]]7001JJx9J5 21 	4::h):DhO 
	 21s   %B&B,
B),
B:rz   )rM   r   rx   rz   )r   r   r   r   r   r   )r   r    rM   r   rx   rz   c                 8    [        U R                  USS9U5        g Nr   r   r   r   s      r   test_query_intersects_pointsr     s    h tzz(lzCXNr8   )r   r   r   r   r   )r   r    r    r   rM   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_intersects_linesr     s    J yx<H(Sr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_intersects_polygonsr         \ yx<H(Sr8   c                 8    [        U R                  USS9U5        g Nr   r   r   r   s      r   test_query_within_pointsr     s    8 tzz(hz?Jr8   g      @c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_within_linesr   =  s    @ yx8DhOr8   g      @g      @g      @c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_within_polygonsr   `  s    R yx8DhOr8   r   c                 8    [        U R                  USS9U5        g Nr   r   r   r   s      r   test_query_contains_pointsr     s    @ tzz(jzA8Lr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_contains_linesr     s    0 yx:FQr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_contains_polygonsr         2 yx:FQr8   c                 8    [        U R                  USS9U5        g Nr   r   r   r   s      r   test_query_overlaps_pointsr     s    : tzz(jzA8Lr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_overlaps_linesr     r   r8   )r    r   r   rx   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_overlaps_polygonsr   '  s    6 yx:FQr8   c                 8    [        U R                  USS9U5        g Nr   r   r   r   s      r   test_query_crosses_pointsr   H  s     tzz(iz@(Kr8   )r    r   )r   r    r|   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_crosses_linesr   Y      0 yx9ExPr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_crosses_polygonsr   t  s    $ yx9ExPr8   )rw   rw   )r    r    c                 8    [        U R                  USS9U5        g Nr   r   r   r   s      r   test_query_touches_pointsr     s    0 tzz(iz@(Kr8   gHz>c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_touches_linesr     s    > yx9ExPr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_touches_polygonsr     r   r8   c                 8    [        U R                  USS9U5        g Nr   r   r   r   s      r   test_query_covers_pointsr     s    @ tzz(hz?Jr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_covers_linesr     s    8 yx8DhOr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_covers_polygonsr   &  s    2 yx8DhOr8   c                 8    [        U R                  USS9U5        g Nr   r   r   r   s      r   test_query_covered_by_pointsr   C  s    8 tzz(lzCXNr8   g      @c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_covered_by_linesr   b  s    N yx<H(Sr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   test_query_covered_by_polygonsr     r   r8   c                 8    [        U R                  USS9U5        g Nr   r   r   r   s      r   #test_query_contains_properly_pointsr     s    T tzz(6IzJHUr8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   "test_query_contains_properly_linesr     s    < ,?@(r8   c                 8    [        U R                  USS9U5        g r   r   r   s      r   %test_query_contains_properly_polygonsr     s    : ,?@(r8   )rM   r   r   zGEOS >= 3.10c                     [         R                  " [        SS9   U R                  USSS9  S S S 5        g ! , (       d  f       g = f)Nzrequires GEOS >= 3.10rn   dwithinr    r   distance)r:   r;   r   r2   rk   s     r   test_query_dwithin_geos_versionr   3  s3    
 
2:Q	R

8y1
= 
S	R	R	   5
AzGEOS < 3.10zgeometry,distance,matchz#distance parameter must be providedfooz!could not convert string to floatz.Could not broadcast distance to match geometryg      ?zshould be one dimensionalc                     [         R                  " [        US9   U R                  USUS9  S S S 5        g ! , (       d  f       g = f)Nrn   r   r   )r:   r;   rj   r2   )r   r4   r   ro   s       r   #test_query_dwithin_invalid_distancer   <  s0      
z	/

8y8
D 
0	/	/r   zgeometry,distance,expectedg      ?g      ?)r   r   r    )r   r    r   g?g      ?)r   r    r    r    g      @)r   r    rM   r   c                 :    [        U R                  USUS9U5        g Nr   r   r   )r   r4   r   ru   s       r   test_query_dwithin_pointsr   P  s!    J 

8y8
Dhr8   c                 :    [        U R                  USUS9U5        g r   r   )r'   r4   r   ru   s       r   test_query_dwithin_linesr     s!    2 IIr8   )rM   r   rx   rz   r{   r|   r}   )r   r   r   r   r   r   r   c                 :    [        U R                  USUS9U5        g r   r   )r.   r4   r   ru   s       r   test_query_dwithin_polygonsr     s"    B IIr8   c                  J    [        / 5      n U R                  [        5      b   eg ri   )r   nearestr   rq   s    r   test_nearest_empty_treer     s     2;D<<&&&r8   c                     [         R                  " [        5         U R                  U5        S S S 5        g ! , (       d  f       g = fri   )r:   r;   r<   r   rk   s     r   test_nearest_invalid_geomr     s&    	y	!X 
"	!	!	   6
Ac                     [         R                  " [        5         U R                  U5        S S S 5        g ! , (       d  f       g = fri   r:   r;   rj   r   rk   s     r   test_nearest_noner    s&    	z	"X 
#	"	"r   c                     [         R                  " [        5         U R                  U5        S S S 5        g ! , (       d  f       g = fri   r  rk   s     r   test_nearest_emptyr    s(     
z	"X 
#	"	"r   ir}   c                 :    [        U R                  U5      U5        g ri   r   r   r   s      r   test_nearest_pointsr    s    " t||H-x8r8   c                 4    U R                  U5      nX2;   d   eg ri   r   )r   r4   ru   results       r   test_nearest_points_equidistantr    s     \\(#Fr8   c                 :    [        U R                  U5      U5        g ri   r  r   s      r   test_nearest_linesr  #       y((2H=r8   )r   rM   r   rx   c                 4    U R                  U5      nX2;   d   eg ri   r
  )r'   r4   ru   r  s       r   test_nearest_lines_equidistantr  0  s     2 x(Fr8   c                 :    [        U R                  U5      U5        g ri   r  r   s      r   test_nearest_polygonsr  M  r  r8   )rM   r   rx   c                 4    U R                  U5      nX2;   d   eg ri   r
  )r.   r4   ru   r  s       r   !test_nearest_polygons_equidistantr  Z  s     * x(Fr8   c                      [        / 5      n [        U R                  [        5      / 5        [        U R                  [        /5      / / /5        g ri   )r   r   query_nearestr   rq   s    r   test_query_nearest_empty_treer  s  s;    2;Dt))%0"5t))5'2RH=r8   c                     [         R                  " [        5         U R                  U5        S S S 5        g ! , (       d  f       g = fri   )r:   r;   r<   r  rk   s     r   test_query_nearest_invalid_geomr  y  s(    	y	!8$ 
"	!	!r   z!geometry,return_distance,expectedFTc                     U(       a/  U R                  USS9u  pE[        XCS   5        [        XSS   5        g [        U R                  U5      U5        g )NTreturn_distancer   r    )r  r   )r   r4   r  ru   indexr   s         r   test_query_nearest_noner    sM     ,,Xt,L51+.8a[1 	4--h7Br8   c                 :    [        U R                  U5      U5        g ri   r   r  r   s      r   test_query_nearest_empty_geomr"    s    
 t))(3X>r8   c                 :    [        U R                  U5      U5        g ri   r!  r   s      r   test_query_nearest_pointsr$    s    J t))(3X>r8   )r   r    r    r    r    )r   r   rM   r   rx   )r    r   rM   c                 :    [        U R                  U5      U5        g ri   r!  r   s      r   test_query_nearest_linesr&    s    @ y..x8(Cr8   )r   r   r    r    r    )r   r    rM   r   rx   c                 :    [        U R                  U5      U5        g ri   r!  r   s      r   test_query_nearest_polygonsr(    s    > y..x8(Cr8   zgeometry,max_distance,expectedrN   c                 6    [        U R                  XS9U5        g )Nmax_distancer!  )r   r4   r+  ru   s       r   test_query_nearest_max_distancer,    s    " 8?r8   zgeometry,max_distancec                     [         R                  " [        SS9   U R                  XS9  S S S 5        g ! , (       d  f       g = f)Nz#max_distance must be greater than 0rn   r*  r:   r;   rj   r  )r   r4   r+  s      r   'test_query_nearest_invalid_max_distancer/    s1     
z)N	O8? 
P	O	Os	   3
Ac                     [         R                  " [        SS9   U R                  [	        SS5      S/S9  S S S 5        g ! , (       d  f       g = f)Nz$parameter only accepts scalar valuesrn   rp   r    r*  )r:   r;   rj   r  r   rq   s    r   )test_query_nearest_nonscalar_max_distancer1  +  s9    	z)O	P5c?!= 
Q	P	Ps	   ?
Ag        g-?c                     Uu  p4U R                  USS9u  pV[        XS5        [        [        R                  " US5      U5        g )NTr  r   )r  r   r   round)r   r4   ru   expected_indicesexpected_distactual_indicesactual_dists          r   "test_query_nearest_return_distancer8  0  sB     '/#"&"4"4Xt"4"TN~8rxxQ/?r8   zgeometry,exclusive,expected)r   r   r    r    )r   r   r    rM   c                 6    [        U R                  XS9U5        g N	exclusiver!  )r   r4   r<  ru   s       r   test_query_nearest_exclusiver=  D  s     t))()H(Sr8   c                 d    [        [        SS5      /5      n [        U R                  USS9U5        g )Nr    Tr;  )r   r   r   r  r   s      r   'test_query_nearest_exclusive_no_resultsr?  R  s0     E!QK=!Dt))(d)CXNr8   zgeometry,exclusiveinvalidzalso invalidc                     [         R                  " [        5         U R                  XS9  S S S 5        g ! , (       d  f       g = fr:  r.  )r   r4   r<  s      r   $test_query_nearest_invalid_exclusiverB  ^  s-     
z	"89 
#	"	"	   4
Azgeometry,all_matchesc                     [         R                  " [        5         U R                  XS9  S S S 5        g ! , (       d  f       g = f)Nall_matchesr.  )r   r4   rF  s      r   &test_query_nearest_invalid_all_matchesrG  m  s-     
z	"8= 
#	"	"rC  c                     [        SS5      n[        U R                  USS9SS/5        U R                  USS9n[        R                  " US/5      (       d   [        R                  " US/5      (       d   eg g )Nrp   TrE  r   r    F)r   r   r  r   array_equal)r   r   indicess      r   test_query_nearest_all_matchesrK  |  sq    #sOEt))%T)BQFK  E :G>>'A3''2>>'A3+G+GGG+G'r8   c                  B  ^
^ [         R                  " [        R                  R	                  SSS5      5      n Sn[         R
                  " S[        R                  R                  U5      -  S-
  S[        R                  R                  U5      -  S-
  5      n[        [        U 5      S-  5      nU S U XSU-   U SU-  SU-   U SU-  S  /m
[        [        U5      S-  5      nUS U X#SU-   USU-  SU-   USU-  S  /n/ m[        S5       H#  nXE   n[        U5      nTR                  U5        M%     U
U4S jn[        5        n	[        U	R                  U[        R                  " [        S5      [        S5      5      5      5        S S S 5        g ! , (       d  f       g = f)Ni  rM   r   i r   c                 @   > U u  pTU   nTU   nUR                  USS9$ r   )r2   )idxsra   jr   rightpolygons_partstreess        r   thread_func0test_strtree_threaded_query.<locals>.thread_func  s0    Qxq!zz%:z66r8   )r   polygonsr   randomrandnr   intr1   rR   r   appendr   listmap	itertoolsproduct)rU  Nr   npoints_partsra   leftr   rS  poolrQ  rR  s             @@r   test_strtree_threaded_queryrc    s   		a ;<HA^^A		 0 0 33a7RYY=M=Ma=P9PST9TUF 	CMAA!QUQQQ	N 	CK!OAr
1q5q1uq1uq1uw	L E1Xt}T 7 
	TXXk9#4#4U1XuQx#HIJ 
		s   AF
F)xr\  mathrS   rW   rY   concurrent.futuresr   numpyr   r:   numpy.testingr   r   r   r   r   r   r	   r
   shapely.errorsr   shapely.testingr   shapely.tests.commonr   r   r   r   r   sqrtr,   r-   fixturer   r'   r.   markparametrizer7   r>   rE   rH   rK   rg   filterwarningsrl   rr   rv   r+   r   r   r   r   r   r   paramxfailr   r   r   r   r   r   r   r   r   r   r   r   r   r   r!   r   r   r   r   r   r   r   r   r   r   r   r   r   r   skipifr   r   r   r   r   r   r   r   r  r  r  r  r  r  r  r  r  r  r  r"  r$  r&  r(  r,  r/  r1  r8  r=  r?  rB  rG  rK  rc  r=   r8   r   <module>rs     s%X       
 1   ,  M M 6 3  1!
 i  !
 i  ! i  !  
Q

!Q
A
1
/	0!Q7
%6	7A>88$
7$
7 B 		q!,-	#	 VW X
(
 & 
UB	eWr2h	T2	dVb"X

%2r(#
r
$"b"
$
4&2r(#
%
5'B8$
%
5'B8$
#
%2r(+ Aq"b)A3/
Q2r*+qcA3Z8
u	s1aR01#6
u	s1aR01a&9
u	Aq"b 12aVaV4DE
%1#s4K!2E:K!2E:S1#J	
=#&N7O&N7
  
sC"
S/	RH%	q!qc
1+!qc
# 1a[%B-q!5VaV	

 
Q1a1a&!
aAq/	aVaV,-	Q2r	O,
aB
	@A Aq!_c#sC5s1aR7HI"$9:	

 
aQ	'3
..q!a
(	)Iy+AB	aVaV$	%y1
q!fq!f%
&	')Y)?@9 B7C B7  
q!qc
1+!qc
#	sC1#
S/	aS1#J'	q#
3-A3*%	q!q!f
1+!Q!Q()	Q1a1a&!
aAq/	aVaV,-	aS	)Aq62
..q!c
*	+q!fq!f-=>	aVaV$	%|4
q!fq!f%
&	',)EF)2<32<  
sC1a&!
S/	aVaV,-	q!qc
1+!qc
#	Q1a1a&!
aAq/	aVaV,-	Q3	i(
aC
	I 67 Aq!_c#sC5s1aAG<(	

 
a^	4i@^^E!QK89	"	

 
aQ%7	8/J^^E!QK^);<=o.	

 
aVaV$	%y1
q!fq!f%
&	')Y)?@A!$J<K$J< 55
 	y!	2	aS	R	B	9	r	qc"	HHK C++##L:$=m#T	

 
2	R	R	QC	B	2	r	b!$P%$P  
sC"
S/	RH%	q!qc
1+!qc
#	Q1a,'
aAq/	\<89 Aq!_c#sC5s1aAG!34	
 
aQ	'!-
..q!a
(	)QC!:6 
aQ%7	8)D^^E!QK^);<=	"	
 AA'(F	

 !Q!Q()*VaV	

 
aVaV$	%r*
q!fq!f%
&	'"b2 AA'(C	

 !Q!Q()*S1#J	
W/2fOg2fO  
q!qc
1+!qc
#	sC1#
S/	aS1#J'	q#
3-2r(#	q!q!f
1+!Q!Q()	Q1a1a&!
aAq/	aVaV,- Aq!_c#sC5s1aAGo.	

 
aS	)Aq62
..q!c
*	+q!fq!f-=>	a^	4qc:
..q!n
5	6!qc
C	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%1v.
q!fq!f%
&	'1a&1a&)9:? #HTI#HT  
q#
3-A3*%	sA
Q-A3*%	sC1a&!
S/	aVaV,-	q!qc
1+!qc
#	Q1a1a&!
aAq/	aVaV,-	Q3	i(
aC
	I 67 Aq!_c#sC5s1aAG<(	

 
a^	4i@^^E!QK89	"	

 
aQ%7	8/J^^E!QK^);<=o.	

 
aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%s+
q!fq!f%
&	'1#s4Q),ZT[,ZT
  
sC"
S/	RH%	q!qc
1+!qc
#	Q1a"
aAq/	RH%	aQ	',
..q!a
(	)B84	aVaV$	%r*
q!fq!f%
&	'"b2 
aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2-6K76K  
q!b
1+R!	sC1#
S/	aS1#J'	q#
3-2r(#	q!b
1+R!	Q1a"
aAq/	RH%	aS	)2.
..q!c
*	+b"X6	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2	c3Z!Q(	)A3/
sCj1a&)
*	+qcA3Z85>P?>P  
q#
3-A3*%	sA
Q-A3*%	sC1a&!
S/	aVaV,-	q!qc
1+!qc
#	Q1a"
aAq/	RH%	Q3	qc"
aC
	!qc
+	Q3	b!
aC
	R)	a^	4qc:
..q!n
5	6!qc
C	aQ%7	8"=
..q!a.&8
9	:RHE	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2	dC[4+.	/!5
tSkD#;/
0	1QC!:>G$'PPQ'PP
  
sC"
S/	RH%	q!qc
1+!qc
#	Q1a1a&!
aAq/	aVaV,- 
aQ	'!-
..q!a
(	)QC!:6 
aQ%7	8)D
..q!a.&8
9	:Y	<RS	aVaV$	%1v.
q!fq!f%
&	'1a&1a&)9:	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%s+
q!fq!f%
&	'1#s45>M?>M  
q!b
1+R!	Q1a1#
aAq/	aS1#J'	aS	)2.
..q!c
*	+b"X6	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2%.R/.R  
q!b
1+R!	Q1a"
aAq/	RH%	Q1a1#
aAq/	aS1#J'	a^	4b9
..q!n
5	6RA	aQ%7	81#>
..q!a.&8
9	:aS1#JG 
aVaV$	%r*
q!fq!f%
&	'"b2'0R10R  
sC"
S/	RH%	q!b
1+R! 
Q1a"
aAq/	RH%	aQ	',
..q!a
(	)B84	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2 
aVaV$	%r*
q!fq!f%
&	'"b2/8M98M  
q!b
1+R! 
Q3	b!
aC
	R)	aS	)2.
..q!c
*	+b"X6	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2'0R10R  
q!b
1+R!	Q1a1a&!
aAq/	aVaV,-	Q1a1a&!
aAq/	aVaV,-	a^	4q!f=
..q!n
5	6!Q!Q8HI	aQ%7	8,G^^E!QK^);<=<(	

 
aVaV$	%r*
q!fq!f%
&	'"b2+4R54R  
q!b	Q1a"	aQ	',	aVaV$	%r*	LL  
q!b
1+R!	Q3	qc"
aC
	!qc
+	aS	)Aq62
..q!c
*	+q!fq!f-=>			ff-	.4


vv.
/	0A3*=	aVaV$	%r*
q!fq!f%
&	'"b2	aVaVaV,	-r2
q!fq!fq!f-
.	/"b:%.Q/.Q  
q#
3-2r(#	Q3	b!
aC
	R)	a^	4b9
..q!n
5	6RA	aVaVaV,	-s3
q!fq!fq!f-
.	/1#s<"Q#"Q  
sC"
S/	RH%	q!b
1+R!	Q1a1a&!
aAq/	aVaV,-	aQ	',
..q!a
(	)B84	Xv&	'!-
h'
(	)QC!:6	aVaV$	%r*
q!fq!f%
&	'"b2%.L/.L  
q!qc
1+!qc
#	sC"
S/	RH%	q!q!f
1+!Q!Q()	Q1a1#
aAq/	aS1#J'	aS	)2.
..q!c
*	+b"X6 
a^d%:	;R@
..q!nt&;
<	=BxH	aVaV$	%r*
q!fq!f%
&	'"b2	aVaVaV,	-1v6
q!fq!fq!f-
.	/1a&1a&1AB3<Q=<Q  
q#
3-2r(#	~#Q	'!-
$a
(	)QC!:6	Q1a"
aAq/	RH%	^c!1a	+aS1
ns"Aq!
,	-aSz:	a^c%9	:B?
..q!ns&:
;	<r2hG	aVaVaV,	-r2
q!fq!fq!f-
.	/"b:%.Q/.Q
  
sC"
S/	RH%	q!qc
1+!qc
#	Q1a,'
aAq/	\<89 
aQ	'!-
..q!a
(	)QC!:6 
aQ%7	8)D
..q!a.&8
9	:Y	<RS	aVaV$	%1v.
q!fq!f%
&	'1a&1a&)9:	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%s+
q!fq!f%
&	'1#s45>K?>K  
q!b
1+R!	Q3	qc"
aC
	!qc
+	Q1a1a&!
aAq/	aVaV,-	aS	)2.
..q!c
*	+b"X6	aVaV$	%r*
q!fq!f%
&	'"b2 
aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2-6P76P  
q!b
1+R!	Q1a"
aAq/	RH%	Q1a1#
aAq/	aS1#J'	a^	4b9
..q!n
5	6RA	aQ%7	81#>
..q!a.&8
9	:aS1#JG 
aVaV$	%r*
q!fq!f%
&	'"b2'0P10P
  
sC"
S/	RH%	q!qc
1+!qc
#	Q1a"
aAq/	RH%	aQ	',
..q!a
(	)B84	aVaV$	%r*
q!fq!f%
&	'"b2 
aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2-6O76O  
q!qc
1+!qc
#	sC1#
S/	aS1#J'	q#
3-2r(#	q!q!f
1+!Q!Q()			q!fq!f-	.4


1v1v.
/	0A3*=			sCj3*5	6;


SzC:6
7	82r(C	Q1a"
aAq/	RH%	aS	)2.
..q!c
*	+b"X6	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2	c3Z!Q(	)A3/
sCj1a&)
*	+qcA3Z8C"%LTM%LT  
q#
3-A3*%	sA
Q-A3*%	q!qc
1+!qc
#	sC1a&!
S/	aVaV,-			q!fq!f-	.3


1v1v.
/	02r(;			sCj3*5	6<


SzC:6
7	8A3*E	Q1a"
aAq/	RH%	Q3	qc"
aC
	!qc
+	Q3	b!
aC
	R)	a^	4qc:
..q!n
5	6!qc
C	aQ%7	8"=
..q!a.&8
9	:RHE	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2	dC[4+.	/!5
tSkD#;/
0	1QC!:>Q),ZT[,ZT
  
sC"
S/	RH%	q!qc
1+!qc
# 
		q!fq!f-	.4


1v1v.
/	0A3*=			sCj3*5	6A?


SzC:6
7	8Aq6Aq6:JK			q!fq!f-	.4


1v1v.
/	0A3*=	Q1a1a&!
aAq/	aVaV,- 
aQ	'!-
..q!a
(	)QC!:6 
aQ%7	8)D
..q!a.&8
9	:Y	<RS	aVaV$	%1v.
q!fq!f%
&	'1a&1a&)9:	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%s+
q!fq!f%
&	'1#s4I%(RVS(RV  
q!b
1+R!			q!fq!f-	.3


1v1v.
/	02r(;			q!fq!f-	.3


1v1v.
/	02r(;			q!fq!f-	.3


1v1v.
/	02r(;	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2	aVaV$	%r*
q!fq!f%
&	'"b2	Q1a"
aAq/	RH%	Q1a"
aAq/	RH%	aS	)2.
..q!c
*	+b"X61:;:  
q!b
1+R! 
		q!fq!f-	.3


1v1v.
/	02r(;	Q1a"
aAq/	RH%	Q1a1#
aAq/	aS1#J'	a^	4b9
..q!n
5	6RA	aQ%7	81#>
..q!a.&8
9	:aS1#JG 
aVaV$	%r*
q!fq!f%
&	'"b2/898 LJ.~Fq!uQ{mTD655'J> G>
 L:-mD	q!dAB
1+CD	q!e@A
1+BC
1+!DE	q!q!fNO
1+A PQ	q!ug:;
1+#!<=
E EE
 L:-mD ?	sB?
r2h? 
tT	Ar"? d
	a"b*	?
 
tT	B#? d
	b2r(+? 
tT	BFFB'? d
	bffr2h/? 
!R? 'ABx ? 
tT	C!%? d
	cQC!:.? 
tT	C+? d
	cIy#9:? 
q!c9%?  1+i34!?$ 
sC$A'%?& S/	DAq6Aq6"23'?* 5c?#  A
	
)?@ 3_eD$/0	"	
??J 1c]E$-.1I<(	
I?T 
Q1a!\*U?V aAq/	Al;<W?X 
Q1a$-Y?Z aAq/	D<">?[?^ 
Q1a#|,_?` aAq/	C,!=>a?d 
dD\C:.	/yAe?f tTlS#J/
0	14)Y9OPg?l c
S#J/0	
k?v #sc3Z012<(	
u?BFGB EH L:-mD 	sB
r2h	sC!aS!
S/	AaSz*	sC#1v&
S/	C1a&1a&!12	q!cAq6"
1+q!fq!f-.	Q1a#1v&
aAq/	C1a&1a&!12	S#sC	 #1v.
c3S
!	"C1a&1a&)9:	aVaV$	%sL9
q!fq!f%
&	'|\.JK	aVaV$	%sQF3
q!fq!f%
&	'1v1v.>?%./ E0 L:-mD 	q!a!
1+QC!:&	q!cA3
1+qcA3Z(	q!cAq6"
1+q!fq!f-.	sC!aV$
S/	AAA/0	sC#1v&
S/	C1a&1a&!12	Q1a!aV$
aAq/	AAA/0	Q1a!Y'
aAq/	A	956	aVaV$	%sQF3
q!fq!f%
&	'1v1v.>?AA'(!	
 !Q!Q()*"$9:	
->? E@'
 &;%<= >
 dTFU1a[$4G%HI J
 {meAqk;-GH
 	tT	A	tT	A	q!a
1+uQ{	#aV,
1+uT1~	&A/
S/5c?	+aV4	S#tT	"A&	c3	8!<	a^	4a8	c1X1v&	'+	aVaV$	%q) 9! 9  
sC1a&!	Q1a,'	aVaV$	%1v.

 	sC!	sC!	S#q!	$a(			q#hC1	2A6	>>  
q!q!f	Q1a1a&!	S#sC	 1a&)	Q1a,'	c3	81a&A	a^	4q!f=	aVaV$	%|4	c1X1v&	'!Q0	aVaV$	%1v.!*+* 	q!a	q!a	Q1a	 !$	aVaV$	%q)	>>  
sC1a&!	Q1a1a&!	S#sC	 ),	Q1a)$	c3	81a&A	a^	4i@	aVaV$	%1v.	c1X1v&	'!Q0"#"> &;>T=U%VW% X%
 '	ub
R!	tb"X
R"~&	CC R[E7RH%!Q!Q8H'IJ?	? 	tT	QC 
d
	sQCj)	tT	QC 
d
	sQCj)	q!qc
1+!qc
#	sC1a&!
S/	aVaV,-
1+uQ{	#q!fq!f%56
1+uT1~	&!Q!Q(89
S/5c?	+q!fq!f-=>	S#tT	"QC(
c3d
#	$sQCj1	Q1a,'
aAq/	\<89	c3	+aV4
..sC!
,	-AA/?@	aS	)A3/
..q!c
*	+qcA3Z8	c1X1v&	'!-
sAhA'
(	)QC!:6	aVaV$	%s+
q!fq!f%
&	'1#s4	aVaV$	%1v.
q!fq!f%
&	'1a&1a&)9:	c3Z#s,	-|<
sCj3*-
.	/,1MN? #H?I#H? 	sC1#
S/	aS1#J'	q!q!f
1+!Q!Q()	Q1a1a&!
aAq/	aVaV,-	S#sC	 1a&)
c3S
!	"aVaV$45
aC
s1aA	//?1ST	c3	+Y7
..sC!
,	-	9/EF	aS	)Aq62
..q!c
*	+q!fq!f-=>	aVaV$	%|4
q!fq!f%
&	',)EF	c1X1v&	'!Q0
sAhA'
(	)QFQF+;<	aVaV$	%1v.
q!fq!f%
&	'1a&1a&)9:5>D?>D 	q!qc
1+!qc
#	q!qc
1+!qc
#	sC1a&!
S/	aVaV,-	Q1a1a&!
aAq/	aVaV,-	S#sC	 ),
c3S
!	"Y	$:;
aAq/3q!Q?	+o-OP	c3	81a&A
..sC.
9	:aVaV<LM	a^	4i@
..q!n
5	6I8NO	aVaV$	%1v.
q!fq!f%
&	'1a&1a&)9:	c1X1v&	'!Q0
sAhA'
(	)QFQF+;<	aVaV$	%s+
q!fq!f%
&	'1#s43<D=<D $ 
sC$A'
S/	DAq6Aq6"23	sC"q!f%
S/	B!Q!Q 01	sC#r"
S/	C"b*
S/5A;	'sQCj9 !  	sC!
S/	A	sC"
S/	B	@@
>
 	q!sSEl#
1+1#scU+,	sCAq6FF#345
S/	q!fq!f-/?@A	Q1aAq6C:./
aAq/	q!fq!f-Sz:;
@
@ !	q!eaS!
1+aSz*	q!dQF#
1+1v1v./
1+uQ{	#TL,+GH	T	T 	q!b
1+R!OO
 	q!i 	q!~&'
1+
1+ 	:	:
 	q!i 	q!~&'
1+
1+ 	>	>
H'Kr8   