diff options
Diffstat (limited to 'testsuite')
95 files changed, 2 insertions, 6640 deletions
diff --git a/testsuite/tests/dph/Makefile b/testsuite/tests/dph/Makefile deleted file mode 100644 index 9a36a1c5fe..0000000000 --- a/testsuite/tests/dph/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/classes/DefsVect.hs b/testsuite/tests/dph/classes/DefsVect.hs deleted file mode 100644 index f6ed5544e2..0000000000 --- a/testsuite/tests/dph/classes/DefsVect.hs +++ /dev/null @@ -1,53 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS_GHC -fvectorise #-} - -module DefsVect where - -import Data.Array.Parallel - - --- {-# VECTORISE SCALAR instance Eq Char #-} --- {-# VECTORISE SCALAR instance Eq Float #-} --- {-# VECTORISE SCALAR instance Ord Char #-} --- {-# VECTORISE SCALAR instance Ord Float #-} - - -data MyBool = MyTrue | MyFalse - -class Eq a => Cmp a where - cmp :: a -> a -> Bool - --- FIXME: --- instance Cmp Int where --- cmp = (==) - --- isFive :: (Eq a, Num a) => a -> Bool -isFive :: Int -> Bool -isFive x = x == 5 - -isEq :: Eq a => a -> Bool -isEq x = x == x - -fiveEq :: Int -> Bool -fiveEq x = isFive x && isEq x - -cmpArrs :: PArray Int -> PArray Int -> Bool -{-# NOINLINE cmpArrs #-} -cmpArrs v w = cmpArrs' (fromPArrayP v) (fromPArrayP w) - -cmpArrs' :: [:Int:] -> [:Int:] -> Bool -cmpArrs' xs ys = andP [:x == y | x <- xs | y <- ys:] - -isFives :: PArray Int -> Bool -{-# NOINLINE isFives #-} -isFives xs = isFives' (fromPArrayP xs) - -isFives' :: [:Int:] -> Bool -isFives' xs = andP (mapP isFive xs) - -isEqs :: PArray Int -> Bool -{-# NOINLINE isEqs #-} -isEqs xs = isEqs' (fromPArrayP xs) - -isEqs' :: [:Int:] -> Bool -isEqs' xs = andP (mapP isEq xs) diff --git a/testsuite/tests/dph/classes/Main.hs b/testsuite/tests/dph/classes/Main.hs deleted file mode 100644 index 471c0cc8e0..0000000000 --- a/testsuite/tests/dph/classes/Main.hs +++ /dev/null @@ -1,15 +0,0 @@ -module Main where - -import Data.Array.Parallel.PArray (PArray, fromList) - -import DefsVect - -main - = let v = fromList [1..10] - w = fromList [11..20] - in - print $ [ fiveEq 5 - , cmpArrs v w - , isFives (fromList $ replicate 10 5) - , isEqs v - ] diff --git a/testsuite/tests/dph/classes/Makefile b/testsuite/tests/dph/classes/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/classes/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/classes/dph-classes-copy-fast.stdout b/testsuite/tests/dph/classes/dph-classes-copy-fast.stdout deleted file mode 100644 index bf8e7b9e4b..0000000000 --- a/testsuite/tests/dph/classes/dph-classes-copy-fast.stdout +++ /dev/null @@ -1 +0,0 @@ -[True,False,True,True] diff --git a/testsuite/tests/dph/classes/dph-classes-vseg-fast.stdout b/testsuite/tests/dph/classes/dph-classes-vseg-fast.stdout deleted file mode 100644 index bf8e7b9e4b..0000000000 --- a/testsuite/tests/dph/classes/dph-classes-vseg-fast.stdout +++ /dev/null @@ -1 +0,0 @@ -[True,False,True,True] diff --git a/testsuite/tests/dph/classes/dph-classes.T b/testsuite/tests/dph/classes/dph-classes.T deleted file mode 100644 index acd19ba4b1..0000000000 --- a/testsuite/tests/dph/classes/dph-classes.T +++ /dev/null @@ -1,6 +0,0 @@ - -test('dph-classes-vseg-fast', - [normal, reqlib('dph-lifted-vseg'), reqlib('dph-prim-par'), - only_ways(['normal', 'threaded1', 'threaded2'])], - multimod_compile_and_run, - ['Main', '-O0 -fno-enable-rewrite-rules -package dph-lifted-vseg']) diff --git a/testsuite/tests/dph/diophantine/DiophantineVect.hs b/testsuite/tests/dph/diophantine/DiophantineVect.hs deleted file mode 100644 index 981b9ad62d..0000000000 --- a/testsuite/tests/dph/diophantine/DiophantineVect.hs +++ /dev/null @@ -1,39 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS -fvectorise -XParallelListComp #-} -module DiophantineVect (solution3) where - -import Data.Array.Parallel -import Data.Array.Parallel.Prelude.Int as I - -import qualified Prelude as P - -solution3' - = let - pow x i = productP (replicateP i x) - primes = [: 2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73 :] - a `cutTo` b = sliceP 0 (lengthP b) a - sumpri xx = productP [: pow p x | p <- primes `cutTo` xx | x <- xx :] - distinct xx = productP [: x I.+ 1 | x <- xx :] - - series :: [:Int:] -> Int -> [:[:Int:]:] - series xs n - | n == 1 = [: [: 0 :] :] - | otherwise = [: [: x :] +:+ ps - | x <- xs - , ps <- series (I.enumFromToP 0 x) (n I.- 1) :] - - prob x y - = let xx = [: (sumpri m ,m) - | m <- series (I.enumFromToP 1 3) x - , distinct [: x I.* 2 | x <- m :] > y :] - i = minIndexP [: a | (a, b) <- xx :] - in xx !: i - in - prob 5 200 - -solution3 :: (Int, PArray Int) -{-# NOINLINE solution3 #-} -solution3 - = let (i, is) = solution3' - in - (i, toPArrayP is) diff --git a/testsuite/tests/dph/diophantine/Main.hs b/testsuite/tests/dph/diophantine/Main.hs deleted file mode 100644 index 571566ebcb..0000000000 --- a/testsuite/tests/dph/diophantine/Main.hs +++ /dev/null @@ -1,42 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} - -import Data.List -import DiophantineVect - -import qualified Data.Array.Parallel.PArray as P -import Data.Array.Parallel.Prelude - - --- Solution for the 108th Euler problem. --- From the Haskell Wiki -solution1 - = let primes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73] - series _ 1 = [[0]] - series xs n = [x:ps | x <- xs, ps <- series [0..x] (n-1) ] - distinct = product . map (+1) - sumpri x = product $ zipWith (^) primes x - - prob x y = minimum [ (sumpri m ,m) - | m <- series [1..3] x - , (>y) $ distinct $ map (*2) m] - in prob 5 200 - -solution2 - = let primes = [2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73] - series _ 1 = [[0]] - series xs n = [x:ps | x <- xs, ps <- series [0..x] (n-1) ] - distinct xx = product [ x + 1 | x <- xx ] - sumpri xx = product $ zipWith (^) primes xx - - prob x y = minimum [ (sumpri m ,m) - | m <- series [1..3] x - , (distinct $ map (*2) m) > y ] - in prob 5 200 - - -main - = do print solution1 - print solution2 - print solution3 - - diff --git a/testsuite/tests/dph/diophantine/Makefile b/testsuite/tests/dph/diophantine/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/diophantine/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/diophantine/dph-diophantine-copy-fast.stdout b/testsuite/tests/dph/diophantine/dph-diophantine-copy-fast.stdout deleted file mode 100644 index 3fe0f66bd1..0000000000 --- a/testsuite/tests/dph/diophantine/dph-diophantine-copy-fast.stdout +++ /dev/null @@ -1,3 +0,0 @@ -(1260,[2,2,1,1,0]) -(1260,[2,2,1,1,0]) -(1260,fromList<PArray> [2,2,1,1,0]) diff --git a/testsuite/tests/dph/diophantine/dph-diophantine-copy-opt.stdout b/testsuite/tests/dph/diophantine/dph-diophantine-copy-opt.stdout deleted file mode 100644 index 3fe0f66bd1..0000000000 --- a/testsuite/tests/dph/diophantine/dph-diophantine-copy-opt.stdout +++ /dev/null @@ -1,3 +0,0 @@ -(1260,[2,2,1,1,0]) -(1260,[2,2,1,1,0]) -(1260,fromList<PArray> [2,2,1,1,0]) diff --git a/testsuite/tests/dph/diophantine/dph-diophantine.T b/testsuite/tests/dph/diophantine/dph-diophantine.T deleted file mode 100644 index fbcf565145..0000000000 --- a/testsuite/tests/dph/diophantine/dph-diophantine.T +++ /dev/null @@ -1,11 +0,0 @@ - - -test ('dph-diophantine-copy-fast' - , [ outputdir('fast') - , reqlib('dph-lifted-copy') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-copy']) - diff --git a/testsuite/tests/dph/dotp/DotPVect.hs b/testsuite/tests/dph/dotp/DotPVect.hs deleted file mode 100644 index 3fc9084245..0000000000 --- a/testsuite/tests/dph/dotp/DotPVect.hs +++ /dev/null @@ -1,15 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS -fvectorise #-} -module DotPVect ( dotp ) where - -import Data.Array.Parallel -import Data.Array.Parallel.Prelude.Double as D - -import qualified Prelude - -dotp :: PArray Double -> PArray Double -> Double -{-# NOINLINE dotp #-} -dotp v w = dotp' (fromPArrayP v) (fromPArrayP w) - -dotp' :: [:Double:] -> [:Double:] -> Double -dotp' v w = D.sumP (zipWithP (D.*) v w) diff --git a/testsuite/tests/dph/dotp/Main.hs b/testsuite/tests/dph/dotp/Main.hs deleted file mode 100644 index 04eb407fc7..0000000000 --- a/testsuite/tests/dph/dotp/Main.hs +++ /dev/null @@ -1,54 +0,0 @@ -import DotPVect ( dotp ) - -import Control.Exception (evaluate) -import System.Console.GetOpt -import qualified System.Random as R - -import qualified Data.Array.Parallel.Unlifted as U -import qualified Data.Array.Parallel.PArray as P -import Data.Array.Parallel.PArray (PArray) - - - -generateVectorU :: Int -> IO (U.Array Double) -generateVectorU n = - do - let seed = 42742 - let rg = R.mkStdGen seed - let -- The std random function is too slow to generate really big vectors - -- with. Instead, we generate a short random vector and repeat that. - randvec = U.randomRs k (-100, 100) rg - vec = U.map (\i -> U.index "generateVectorU" randvec (i `mod` k)) (U.enumFromTo 0 (n-1)) - evaluate vec - return vec - where - k = 1000 - -generateVector :: Int -> IO (PArray Double) -generateVector n - = do - vec <- generateVectorU n - return $ P.fromUArray vec - -generateVectors :: Int -> IO (PArray Double, PArray Double) -generateVectors n = - do - v <- generateVector n - w <- generateVector n - return (v,w) - -main - = do -- compute dot product with NDP - vectors <- generateVectors 100000 - let resultViaNDP = (uncurry dotp) vectors - - -- compute with lists - let (aVecX, aVecY) = vectors - let vecX = P.toList aVecX - let vecY = P.toList aVecY - let resultViaList = sum $ zipWith (*) vecX vecY - - -- ignore wibbles in low order bits - putStr $ (take 12 $ show resultViaNDP) ++ "\n" - putStr $ (take 12 $ show resultViaList) ++ "\n" - diff --git a/testsuite/tests/dph/dotp/Makefile b/testsuite/tests/dph/dotp/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/dotp/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/dotp/dph-dotp-copy-fast.stdout b/testsuite/tests/dph/dotp/dph-dotp-copy-fast.stdout deleted file mode 100644 index e8f012cbc6..0000000000 --- a/testsuite/tests/dph/dotp/dph-dotp-copy-fast.stdout +++ /dev/null @@ -1,2 +0,0 @@ -3.3659625259 -3.3659625259 diff --git a/testsuite/tests/dph/dotp/dph-dotp-copy-opt.stdout b/testsuite/tests/dph/dotp/dph-dotp-copy-opt.stdout deleted file mode 100644 index e8f012cbc6..0000000000 --- a/testsuite/tests/dph/dotp/dph-dotp-copy-opt.stdout +++ /dev/null @@ -1,2 +0,0 @@ -3.3659625259 -3.3659625259 diff --git a/testsuite/tests/dph/dotp/dph-dotp-vseg-fast.stdout b/testsuite/tests/dph/dotp/dph-dotp-vseg-fast.stdout deleted file mode 100644 index e8f012cbc6..0000000000 --- a/testsuite/tests/dph/dotp/dph-dotp-vseg-fast.stdout +++ /dev/null @@ -1,2 +0,0 @@ -3.3659625259 -3.3659625259 diff --git a/testsuite/tests/dph/dotp/dph-dotp-vseg-opt.stdout b/testsuite/tests/dph/dotp/dph-dotp-vseg-opt.stdout deleted file mode 100644 index e8f012cbc6..0000000000 --- a/testsuite/tests/dph/dotp/dph-dotp-vseg-opt.stdout +++ /dev/null @@ -1,2 +0,0 @@ -3.3659625259 -3.3659625259 diff --git a/testsuite/tests/dph/dotp/dph-dotp.T b/testsuite/tests/dph/dotp/dph-dotp.T deleted file mode 100644 index e49644290a..0000000000 --- a/testsuite/tests/dph/dotp/dph-dotp.T +++ /dev/null @@ -1,20 +0,0 @@ - - -test ('dph-dotp-copy-fast' - , [ outputdir('copy-fast') - , reqlib('dph-lifted-copy') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-copy -package dph-prim-par']) - -test ('dph-dotp-vseg-fast' - , [ outputdir('vseg-fast') - , reqlib('dph-lifted-vseg') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-vseg -package dph-prim-par']) - diff --git a/testsuite/tests/dph/enumfromto/EnumFromToP.hs b/testsuite/tests/dph/enumfromto/EnumFromToP.hs deleted file mode 100644 index f210f21dab..0000000000 --- a/testsuite/tests/dph/enumfromto/EnumFromToP.hs +++ /dev/null @@ -1,24 +0,0 @@ --- List enumeration doesn't work for parallel list comprehensions. --- --- > ghc-stage2: panic! (the 'impossible' happened) --- > (GHC version 7.7.20130109 for x86_64-unknown-linux): --- > DsMonad: uninitialised ds_parr_bi --- --- (I.enumFromToP is a workaround) - -{-# LANGUAGE ParallelArrays, ParallelListComp #-} -{-# OPTIONS -fvectorise #-} -module EnumFromToP where - -import Data.Array.Parallel hiding ((+), (-), (*), (/)) -import Data.Array.Parallel.PArray -import Data.Array.Parallel.Prelude.Bool as B -import Data.Array.Parallel.Prelude.Double as D -import qualified Data.Array.Parallel.Prelude.Int as I -import qualified Data.Vector as V -import qualified Prelude as P - - -nums = [: 0 .. 100 :] - - diff --git a/testsuite/tests/dph/enumfromto/Makefile b/testsuite/tests/dph/enumfromto/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/enumfromto/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/enumfromto/dph-enumfromto.T b/testsuite/tests/dph/enumfromto/dph-enumfromto.T deleted file mode 100644 index ac4d0f0176..0000000000 --- a/testsuite/tests/dph/enumfromto/dph-enumfromto.T +++ /dev/null @@ -1,4 +0,0 @@ -test('EnumFromToP', - [reqlib('dph-lifted-vseg'), reqlib('dph-prim-par'), expect_broken(7736), - only_ways(['normal', 'threaded1', 'threaded2'])], - compile, ['-O0 -package dph-lifted-vseg']) diff --git a/testsuite/tests/dph/modules/ExportList.hs b/testsuite/tests/dph/modules/ExportList.hs deleted file mode 100644 index 99011e1a97..0000000000 --- a/testsuite/tests/dph/modules/ExportList.hs +++ /dev/null @@ -1,33 +0,0 @@ --- Explicit export list --- Produces error --- > ghc-stage2: panic! (the 'impossible' happened) --- > (GHC version 7.7.20130109 for x86_64-unknown-linux): --- > nameModule solveV{v r3Ep} --- It is something about internal vs external names. - -{-# LANGUAGE ParallelArrays, ParallelListComp #-} -{-# OPTIONS -fvectorise #-} -module ExportList (solvePA) where - -import Data.Array.Parallel hiding ((+), (-), (*), (/)) -import Data.Array.Parallel.PArray -import Data.Array.Parallel.Prelude.Bool as B -import Data.Array.Parallel.Prelude.Double as D -import qualified Data.Array.Parallel.Prelude.Int as I -import qualified Data.Vector as V -import qualified Prelude as P - -data NodeV = NodeV Double Double Double [:NodeV:] - -{-# NOINLINE solvePA #-} -solvePA - :: NodeV -- ^ nodes - -> Double -- ^ time - -> PArray Double -solvePA nodes t = toPArrayP (solveV t) - - -solveV :: Double -> [:Double:] -solveV t - = concatP (mapP solveV [: :]) - diff --git a/testsuite/tests/dph/modules/Makefile b/testsuite/tests/dph/modules/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/modules/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/modules/dph-ExportList-vseg-fast.stderr b/testsuite/tests/dph/modules/dph-ExportList-vseg-fast.stderr deleted file mode 100644 index bf6f453f71..0000000000 --- a/testsuite/tests/dph/modules/dph-ExportList-vseg-fast.stderr +++ /dev/null @@ -1,9 +0,0 @@ -[1 of 1] Compiling ExportList ( ExportList.hs, ExportList.o ) -Warning: vectorisation failure: identityConvTyCon: type constructor contains parallel arrays [::] - Could NOT call vectorised from original version - ExportList.solveV :: GHC.Types.Double -> [:GHC.Types.Double:] -Warning: vectorisation failure: identityConvTyCon: type constructor contains parallel arrays NodeV - Could NOT call vectorised from original version - ExportList.solvePA :: ExportList.NodeV - -> GHC.Types.Double - -> Data.Array.Parallel.PArray.PData.Base.PArray GHC.Types.Double diff --git a/testsuite/tests/dph/modules/dph-modules.T b/testsuite/tests/dph/modules/dph-modules.T deleted file mode 100644 index 6ccac11f30..0000000000 --- a/testsuite/tests/dph/modules/dph-modules.T +++ /dev/null @@ -1,4 +0,0 @@ -test('dph-ExportList-vseg-fast', - [reqlib('dph-lifted-vseg'), reqlib('dph-prim-par'), - only_ways(['normal', 'threaded1', 'threaded2'])], - multimod_compile, ['ExportList', '-O0 -package dph-lifted-vseg']) diff --git a/testsuite/tests/dph/nbody/Body.hs b/testsuite/tests/dph/nbody/Body.hs deleted file mode 100644 index 8a116993a8..0000000000 --- a/testsuite/tests/dph/nbody/Body.hs +++ /dev/null @@ -1,85 +0,0 @@ -{-# LANGUAGE BangPatterns #-} - --- | Massful bodies in the simulation. -module Body - ( Velocity - , Accel - , MassPoint - , Body - - , unitBody - , massPointOfBody - , setMassOfBody - , setAccelOfBody - , setStartVelOfBody - , advanceBody) -where -import Util - - --- Types ---------------------------------------------------------------------- --- We're using tuples instead of ADTs so we can put them in unboxed vectors. - --- | The velocity of a point. -type Velocity = (Double, Double) - --- | The acceleration of a point. -type Accel = (Double, Double) - --- | A point in 2D space with its mass. -type MassPoint = (Double, Double, Double) - --- | Bodies consist of a MassPoint, but also carry their velocity --- and acceleration between steps of the simulation. -type Body = (MassPoint, Velocity, Accel) - - --- Body ----------------------------------------------------------------------- --- | Make a body with unit mass and zero vel and acc. -unitBody :: Double -> Double -> Body -unitBody x y - = ((x, y, 1), (0, 0), (0, 0)) - - --- | Take the MassPoint of a body. -massPointOfBody :: Body -> MassPoint -massPointOfBody (mp, vel, acc) - = mp - - --- | Set the mass of a body. -setMassOfBody :: Double -> Body -> Body -setMassOfBody mass ((x, y, _), vel, acc) - = ((x, y, mass), vel, acc) - - --- | Set the acceleration of a body. -setAccelOfBody :: Accel -> Body -> Body -setAccelOfBody acc' (mp, vel, _) - = (mp, vel, acc') - - --- | Set the starting velocity of a body. --- It is set to rotate around the origin, with the speed proportional --- to the sqrt of the distance from it. This seems to make nice simulations. -setStartVelOfBody :: Double -> Body -> Body -setStartVelOfBody startVel (mp@(x, y, mass), vel, acc) - = let pos = (x, y) - (x', y') = normaliseV (x, y) - vel' = (y', -x') - vel'' = mulSV (sqrt (magV pos) * startVel) vel' - - in (mp, vel'', acc) - - --- | Advance a body forwards in time. -advanceBody :: Double -> Body -> Body -advanceBody time - ( (px, py, mass) - , (vx, vy) - , acc@(ax, ay)) - - = ( (px + time * vx, py + time * vy, mass) - , (vx + time * ax, vy + time * ay) - , acc) - diff --git a/testsuite/tests/dph/nbody/Config.hs b/testsuite/tests/dph/nbody/Config.hs deleted file mode 100644 index 1fc93a8164..0000000000 --- a/testsuite/tests/dph/nbody/Config.hs +++ /dev/null @@ -1,50 +0,0 @@ - -module Config - ( Config(..) - , defaultConfig) -where - --- | Program config -data Config - = Config { - -- What solver to use - configSolverName :: String - - -- System setup - , configBodyCount :: Int - , configBodyMass :: Double - , configTimeStep :: Double - , configEpsilon :: Double - - -- Initial conditions. - , configStartDiscSize :: Double - , configStartSpeed :: Double - - -- Terminating conditions. - , configMaxSteps :: Int - - -- Dump points to file - , configDumpFinal :: Maybe FilePath - - -- Print points to stdout - , configPrintFinal :: Bool - - -- Print timings to stdout - , configPrintTimings :: Bool } - - -defaultConfig :: Config -defaultConfig - = Config - { configSolverName = "nested-bh" - , configBodyCount = 100 - , configBodyMass = 10 - , configTimeStep = 1 - , configEpsilon = 100 - , configStartDiscSize = 50 - , configStartSpeed = 0.5 - , configMaxSteps = 10 - , configDumpFinal = Nothing - , configPrintFinal = True - , configPrintTimings = False } - diff --git a/testsuite/tests/dph/nbody/Dump.hs b/testsuite/tests/dph/nbody/Dump.hs deleted file mode 100644 index b436e3c07a..0000000000 --- a/testsuite/tests/dph/nbody/Dump.hs +++ /dev/null @@ -1,46 +0,0 @@ -{-# LANGUAGE ScopedTypeVariables #-} -module Dump - ( dumpWorld - , printWorld) -where -import Body -import World -import System.IO -import Data.List -import Text.Printf -import qualified Data.Vector.Unboxed as V - - --- | Dump the bodies in a world to a file. -dumpWorld :: World -> FilePath -> IO () -dumpWorld world filePath - = do h <- openFile filePath WriteMode - mapM_ (hWriteBody h) - $ V.toList - $ worldBodies world - hClose h - - --- | Print the bodies in a world to stdout -printWorld :: World -> IO () -printWorld world - = do mapM_ (hWriteBody stdout) - $ V.toList - $ worldBodies world - - --- | Write a single body to a file. -hWriteBody :: Handle -> Body -> IO () -hWriteBody h ((px, py, mass), (vx, vy), (ax, ay)) - = hPutStrLn h - $ concat - $ ( (padRc 8 ' ' $ show mass) - : " " - : (intersperse " " - $ map (\f -> printf "%15.8f" f) [ px, py, vx, vy, ax, ay ])) - - --- | Right justify a doc, padding with a given character. -padRc :: Int -> Char -> String -> String -padRc n c str - = replicate (n - length str) c ++ str diff --git a/testsuite/tests/dph/nbody/Generate.hs b/testsuite/tests/dph/nbody/Generate.hs deleted file mode 100644 index 5b700ddec5..0000000000 --- a/testsuite/tests/dph/nbody/Generate.hs +++ /dev/null @@ -1,98 +0,0 @@ -{-# LANGUAGE TypeOperators #-} -module Generate - ( genPointsUniform - , genPointsUniformWithSeed - , genPointsDisc - , genPointsCombo - , pointsPArrayOfUArray ) -where -import Types -import Randomish -import qualified Data.Array.Parallel.Unlifted as U -import qualified Data.Array.Parallel as P -import qualified Data.Array.Parallel.PArray as P -import Data.Array.Parallel.PArray (PArray) -import Control.Exception - --- Random points generation --- IMPORTANT: We use the same seed with the same random generator in all --- quickhull codes. The asymptotic work complexity of quickhull --- is between O (N) and O (N^2) depending on the input. --- To compare benchmark results, they always need to use the same --- input. -seed :: Int -seed = 42742 - --- | Some uniformly distributed points -genPointsUniform - :: Int -- ^ number of points - -> Double -- ^ minimum coordinate - -> Double -- ^ maximum coordinate - -> U.Array (Double, Double) - -genPointsUniform n pointMin pointMax - = let pts = randomishDoubles (n*2) pointMin pointMax seed - xs = U.extract pts 0 n - ys = U.extract pts n n - in U.zip xs ys - - --- | Some uniformly distributed points -genPointsUniformWithSeed - :: Int -- ^ seed - -> Int -- ^ number of points - -> Double -- ^ minimum coordinate - -> Double -- ^ maximum coordinate - -> U.Array (Double, Double) - -genPointsUniformWithSeed seed' n pointMin pointMax - = let pts = randomishDoubles (n*2) pointMin pointMax seed' - xs = U.extract pts 0 n - ys = U.extract pts n n - in U.zip xs ys - - --- | Some points distributed as a disc -genPointsDisc - :: Int -- ^ number of points - -> (Double, Double) -- ^ center of disc - -> Double -- ^ radius of disc - -> U.Array (Double, Double) - -genPointsDisc n (originX, originY) radiusMax - = let radius = randomishDoubles n 0 radiusMax seed - angle = randomishDoubles n (-pi) pi (seed + 1234) - - makeXY r a - = ( originX + r * cos a - , originY + r * sin a) - - in originX `seq` originY `seq` U.zipWith makeXY radius angle - - --- | A point cloud with areas of high and low density -genPointsCombo - :: Int -- ^ number of points - -> U.Array (Double, Double) - -genPointsCombo n - = genPointsDisc (n `div` 5) (250, 250) 200 - U.+:+ genPointsDisc (n `div` 5) (100, 100) 80 - U.+:+ genPointsDisc (n `div` 5) (150, 300) 30 - U.+:+ genPointsDisc (n `div` 5) (500, 120) 30 - U.+:+ genPointsDisc (n `div` 5) (300, 200) 150 - - --- | Convert a list of points to a PArray -pointsPArrayOfUArray - :: U.Array (Double, Double) - -> IO (PArray Point) - -pointsPArrayOfUArray ps - = do - let pts = makePointsPA - (P.fromUArray (U.fsts ps)) - (P.fromUArray (U.snds ps)) - evaluate $ P.nf pts - return pts - diff --git a/testsuite/tests/dph/nbody/Main.hs b/testsuite/tests/dph/nbody/Main.hs deleted file mode 100644 index ad2c809a1c..0000000000 --- a/testsuite/tests/dph/nbody/Main.hs +++ /dev/null @@ -1,103 +0,0 @@ -{-# LANGUAGE ParallelListComp, BangPatterns #-} - -import Config -import Dump -import World -import Body -import Util -import Solver -import Generate -import Control.Monad -import Data.Maybe -import qualified Data.Vector.Unboxed as V -import qualified Data.Array.Parallel as P -import qualified Data.Array.Parallel.PArray as P - - -main :: IO () -main - = let config = defaultConfig - calcAccels = calcAccels_nb - - -- Setup initial world - vPoints = genPointsDisc - (configBodyCount config) - (0, 0) - (configStartDiscSize config) - - vBodies = V.map (setStartVelOfBody $ configStartSpeed config) - $ V.map (setMassOfBody $ configBodyMass config) - $ V.map (uncurry unitBody) - $ vPoints - - worldStart = World - { worldBodies = vBodies - , worldSteps = 0 } - - in mainBatch config calcAccels worldStart - - --- | Run the simulation in batch mode. -mainBatch :: Config -> Solver -> World -> IO () -mainBatch config calcAccels worldStart - = do let world' = mainBatchRun config calcAccels worldStart - mainEnd (configDumpFinal config) - (configPrintFinal config) - world' - - -mainBatchRun config calcAccels worldStart - = go worldStart - where go !world - = let world' = advanceWorld - (calcAccels $ configEpsilon config) - (configTimeStep config) - world - - in if worldSteps world' < configMaxSteps config - then go world' - else world' - - --- | Called at end of run to dump final world state. -mainEnd :: Maybe FilePath -- ^ Write final bodies to this file. - -> Bool -- ^ Print final bodies to stdout - -> World -- ^ Final world state. - -> IO () - -mainEnd mDumpFinal printFinal world - = do -- Dump the final world state to file if requested. - maybe (return ()) (dumpWorld world) mDumpFinal - when printFinal (printWorld world) - - --- Solver --------------------------------------------------------------------- -type Solver = Double -> V.Vector MassPoint -> V.Vector Accel - --- | Nested Data Parallelism + Barnes-Hut algorithm. -calcAccels_nb :: Solver -calcAccels_nb epsilon mpts - = let - -- bounds finding isn't vectorised yet. - (llx, lly, rux, ruy) = findBounds mpts - - mpts' = P.fromList $ V.toList mpts - accels' = calcAccelsWithBoxPA epsilon llx lly rux ruy mpts' - - in V.fromList $ P.toList accels' - - --- | Find the coordinates of the bounding box that contains these points. -findBounds :: V.Vector MassPoint -> (Double, Double, Double, Double) -{-# INLINE findBounds #-} -findBounds bounds - = V.foldl' acc (x1, y1, x1, y1) bounds - where - (x1, y1, _) = bounds V.! 0 - - acc (!llx, !lly, !rux, !ruy) (x, y, _) - = let !llx' = min llx x - !lly' = min lly y - !rux' = max rux x - !ruy' = max ruy y - in (llx', lly', rux', ruy') diff --git a/testsuite/tests/dph/nbody/Makefile b/testsuite/tests/dph/nbody/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/nbody/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/nbody/Randomish.hs b/testsuite/tests/dph/nbody/Randomish.hs deleted file mode 100644 index 7aeefa33d8..0000000000 --- a/testsuite/tests/dph/nbody/Randomish.hs +++ /dev/null @@ -1,82 +0,0 @@ -{-# LANGUAGE BangPatterns #-} - -module Randomish - ( randomishInts - , randomishDoubles) -where -import Data.Word -import Data.Vector.Unboxed (Vector) -import qualified Data.Vector.Unboxed.Mutable as MV -import qualified Data.Vector.Unboxed as V -import qualified Data.Vector.Generic as G - - --- | Use the "minimal standard" Lehmer generator to quickly generate some random --- numbers with reasonable statistical properties. By "reasonable" we mean good --- enough for games and test data, but not cryptography or anything where the --- quality of the randomness really matters. --- --- From "Random Number Generators: Good ones are hard to find" --- Stephen K. Park and Keith W. Miller. --- Communications of the ACM, Oct 1988, Volume 31, Number 10. --- -randomishInts - :: Int -- Length of vector. - -> Int -- Minumum value in output. - -> Int -- Maximum value in output. - -> Int -- Random seed. - -> Vector Int -- Vector of random numbers. - -randomishInts !len !valMin' !valMax' !seed' - - = let -- a magic number (don't change it) - multiplier :: Word64 - multiplier = 16807 - - -- a merzenne prime (don't change it) - modulus :: Word64 - modulus = 2^(31 :: Integer) - 1 - - -- if the seed is 0 all the numbers in the sequence are also 0. - seed - | seed' == 0 = 1 - | otherwise = seed' - - !valMin = fromIntegral valMin' - !valMax = fromIntegral valMax' + 1 - !range = valMax - valMin - - {-# INLINE f #-} - f x = multiplier * x `mod` modulus - in G.create - $ do - vec <- MV.new len - - let go !ix !x - | ix == len = return () - | otherwise - = do let x' = f x - MV.write vec ix $ fromIntegral $ (x `mod` range) + valMin - go (ix + 1) x' - - go 0 (f $ f $ f $ fromIntegral seed) - return vec - - --- | Generate some randomish doubles with terrible statistical properties. --- This is good enough for test data, but not much else. -randomishDoubles - :: Int -- Length of vector - -> Double -- Minimum value in output - -> Double -- Maximum value in output - -> Int -- Random seed. - -> Vector Double -- Vector of randomish doubles. - -randomishDoubles !len !valMin !valMax !seed - = let range = valMax - valMin - - mx = 2^(30 :: Integer) - 1 - mxf = fromIntegral mx - ints = randomishInts len 0 mx seed - - in V.map (\n -> valMin + (fromIntegral n / mxf) * range) ints diff --git a/testsuite/tests/dph/nbody/Solver.hs b/testsuite/tests/dph/nbody/Solver.hs deleted file mode 100644 index a5545b3f2f..0000000000 --- a/testsuite/tests/dph/nbody/Solver.hs +++ /dev/null @@ -1,156 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS -fvectorise #-} -module Solver - (calcAccelsWithBoxPA) -where -import Data.Array.Parallel -import Data.Array.Parallel.Prelude.Bool -import Data.Array.Parallel.Prelude.Double as D -import qualified Data.Array.Parallel.Prelude.Int as I -import qualified Prelude - -data BoundingBox - = Box Double -- lower left X - Double -- lower left Y - Double -- upper right X - Double -- upper right Y - -data MassPoint - = MP Double -- pos X - Double -- pos Y - Double -- mass - -type Accel - = (Double, Double) - -data BHTree - = BHT Double -- size of cell - Double -- centroid X - Double -- centroid Y - Double -- centroid mass - [:BHTree:] -- children - - -calcAccelsWithBoxPA - :: Double - -> Double -> Double -> Double -> Double - -> PArray (Double, Double, Double) - -> PArray (Double, Double) - -calcAccelsWithBoxPA epsilon llx lly rux ruy mpts - = let mpts' = [: MP x y m | (x, y, m) <- fromPArrayP mpts :] - accs' = calcAccelsWithBox epsilon llx lly rux ruy mpts' - in toPArrayP accs' -{-# NOINLINE calcAccelsWithBoxPA #-} - --- | Given the extend of a bounding box containing all the points, --- calculate the accelerations on all of them. -calcAccelsWithBox - :: Double - -> Double -> Double -> Double -> Double - -> [: MassPoint :] - -> [: Accel :] - -calcAccelsWithBox epsilon llx lly rux ruy mspts - = accs - where accs = [: calcAccel epsilon m tree | m <- mspts :] - tree = buildTree (Box llx lly rux ruy) mspts - - --- | Build the Barnes-Hut quadtree tree. -buildTree :: BoundingBox -> [: MassPoint :] -> BHTree -buildTree bb particles - | lengthP particles I.<= 1 = BHT s x y m emptyP - | otherwise = BHT s x y m subTrees - where (MP x y m) = calcCentroid particles - (boxes, splitPnts) = splitPoints bb particles - subTrees = [:buildTree bb' ps | (bb', ps) <- zipP boxes splitPnts:] - - (Box llx lly rux ruy) = bb - sx = rux D.- llx - sy = ruy D.- lly - s = if sx D.< sy then sx else sy - - --- | Split massPoints according to their locations in the quadrants. -splitPoints - :: BoundingBox - -> [: MassPoint :] - -> ([:BoundingBox:], [:[: MassPoint :]:]) - -splitPoints b@(Box llx lly rux ruy) particles - | noOfPoints I.<= 1 = (singletonP b, singletonP particles) - | otherwise - = unzipP [: (b,p) | (b,p) <- zipP boxes splitPars, lengthP p I.> 0:] - where noOfPoints = lengthP particles - lls = [: p | p <- particles, inBox b1 p :] - lus = [: p | p <- particles, inBox b2 p :] - rus = [: p | p <- particles, inBox b3 p :] - rls = [: p | p <- particles, inBox b4 p :] - b1 = Box llx lly midx midy - b2 = Box llx midy midx ruy - b3 = Box midx midy rux ruy - b4 = Box midx lly rux midy - boxes = singletonP b1 +:+ singletonP b2 +:+ singletonP b3 +:+ singletonP b4 - splitPars = singletonP lls +:+ singletonP lus +:+ singletonP rus +:+ singletonP rls - (midx, midy) = ((llx D.+ rux) D./ 2.0 , (lly D.+ ruy) D./ 2.0) - - --- | Checks if particle is in box (excluding left and lower border) -inBox :: BoundingBox -> MassPoint -> Bool -inBox (Box llx lly rux ruy) (MP px py _) - = (px D.> llx) && (px D.<= rux) && (py D.> lly) && (py D.<= ruy) - - --- | Calculate the centroid of some points. -calcCentroid:: [:MassPoint:] -> MassPoint -calcCentroid mpts - = MP (sumP xs / mass) (sumP ys / mass) mass - where mass = sumP [: m | MP _ _ m <- mpts :] - (xs, ys) = unzipP [: (m D.* x, m D.* y) | MP x y m <- mpts :] - - --- | Calculate the accelleration of a point due to the points in the given tree. -calcAccel :: Double -> MassPoint -> BHTree -> (Double, Double) -calcAccel epsilon mpt (BHT s x y m subtrees) - | lengthP subtrees I.== 0 - = accel epsilon mpt (MP x y m) - - | isFar mpt s x y - = accel epsilon mpt (MP x y m) - - | otherwise - = let (xs, ys) = unzipP [: calcAccel epsilon mpt st | st <- subtrees :] - in (sumP xs, sumP ys) - - --- | Calculate the acceleration on a point due to some other point. -accel :: Double -- ^ If the distance between the points is smaller than this - -- then ignore the forces between them. - -> MassPoint -- ^ The point being acclerated. - -> MassPoint -- ^ Neibouring point. - -> Accel - -accel epsilon (MP x1 y1 _) (MP x2 y2 m) - = (aabs D.* dx D./ r , aabs D.* dy D./ r) - where rsqr = (dx D.* dx) D.+ (dy D.* dy) D.+ epsilon D.* epsilon - r = sqrt rsqr - dx = x1 D.- x2 - dy = y1 D.- y2 - aabs = m D./ rsqr - - --- | If the point is far from a cell in the tree then we can use --- it's centroid as an approximation of all the points in the region. -isFar :: MassPoint -- point being accelerated - -> Double -- size of region - -> Double -- position of center of mass of cell - -> Double -- position of center of mass of cell - -> Bool - -isFar (MP x1 y1 m) s x2 y2 - = let dx = x2 D.- x1 - dy = y2 D.- y1 - dist = sqrt (dx D.* dx D.+ dy D.* dy) - in (s D./ dist) D.< 1 - diff --git a/testsuite/tests/dph/nbody/Types.hs b/testsuite/tests/dph/nbody/Types.hs deleted file mode 100644 index 5ebd849a62..0000000000 --- a/testsuite/tests/dph/nbody/Types.hs +++ /dev/null @@ -1,52 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS -fvectorise #-} - -module Types - ( Point - , Line - , makePoints, makePointsPA - , xsOf, xsOfPA - , ysOf, ysOfPA) -where -import Data.Array.Parallel -import Data.Array.Parallel.Prelude.Double -import qualified Data.Array.Parallel.Prelude.Double as D -import qualified Prelude as P - -type Point = (Double, Double) -type Line = (Point, Point) - --- | Make some points from their components. -makePoints :: [:Double:] -> [:Double:] -> [:Point:] -makePoints = zipP - - --- | Make some points from their components, as a `PArray`. -makePointsPA :: PArray Double -> PArray Double -> PArray Point -{-# NOINLINE makePointsPA #-} -makePointsPA xs ys - = toPArrayP (makePoints (fromPArrayP xs) (fromPArrayP ys)) - - --- | Take the x values of some points. -xsOf :: [:Point:] -> [:Double:] -xsOf ps = [: x | (x, _) <- ps :] - - --- | Take the x values of some points as a `PArray`. -xsOfPA :: PArray Point -> PArray Double -{-# NOINLINE xsOfPA #-} -xsOfPA ps = toPArrayP (xsOf (fromPArrayP ps)) - - --- | Take the y values of some points. -ysOf :: [:Point:] -> [:Double:] -ysOf ps = [: y | (_, y) <- ps :] - - --- | Take the y values of some points as a `PArray`. -ysOfPA :: PArray Point -> PArray Double -{-# NOINLINE ysOfPA #-} -ysOfPA ps = toPArrayP (ysOf (fromPArrayP ps)) - - diff --git a/testsuite/tests/dph/nbody/Util.hs b/testsuite/tests/dph/nbody/Util.hs deleted file mode 100644 index 5f78802c83..0000000000 --- a/testsuite/tests/dph/nbody/Util.hs +++ /dev/null @@ -1,18 +0,0 @@ - -module Util - ( magV - , mulSV - , normaliseV) -where - --- | The magnitude of a vector. -magV :: (Double, Double) -> Double -magV (x, y) = sqrt (x * x + y * y) - --- | Multiply a vector by a scalar. -mulSV :: Double -> (Double, Double) -> (Double, Double) -mulSV s (x, y) = (s * x, s * y) - --- | Normalise a vector, so it has a magnitude of 1. -normaliseV :: (Double, Double) -> (Double, Double) -normaliseV v = mulSV (1 / magV v) v diff --git a/testsuite/tests/dph/nbody/World.hs b/testsuite/tests/dph/nbody/World.hs deleted file mode 100644 index d858ffb928..0000000000 --- a/testsuite/tests/dph/nbody/World.hs +++ /dev/null @@ -1,47 +0,0 @@ -{-# LANGUAGE BangPatterns #-} - -module World - ( World(..) - , advanceWorld) -where -import Body -import qualified Data.Vector.Unboxed as V - -data World - = World - { -- | Bodies in the simulation. - worldBodies :: !(V.Vector Body) - - -- | Number of steps taken in the simulation so far. - , worldSteps :: !Int } - - --- | Advance the world forward in time. -advanceWorld - :: (V.Vector MassPoint -> V.Vector Accel) - -- ^ Fn to compute accelerations of each point. - -> Double -- ^ Time step. - -> World - -> World - -advanceWorld calcAccels timeStep world - = let -- Calculate the accelerations on each body. - accels = calcAccels - $ V.map massPointOfBody - $ worldBodies world - - -- Apply the accelerations to the bodies and advance them. - bodies' = V.zipWith - (\body (ax, ay) - -> advanceBody timeStep - (setAccelOfBody (-ax, -ay) body)) - (worldBodies world) - accels - - -- Update the world. - steps' = worldSteps world + 1 - - in world { worldBodies = bodies' - , worldSteps = steps' } - -
\ No newline at end of file diff --git a/testsuite/tests/dph/nbody/dph-nbody-copy-fast.stdout b/testsuite/tests/dph/nbody/dph-nbody-copy-fast.stdout deleted file mode 100644 index 69fdd8b303..0000000000 --- a/testsuite/tests/dph/nbody/dph-nbody-copy-fast.stdout +++ /dev/null @@ -1,100 +0,0 @@ - 10.0 -7.88876745 14.40403609 0.07781862 1.41725313 0.00728077 -0.00615418 - 10.0 -20.39602554 -5.40256368 -1.56824530 0.67893475 0.01493099 0.00782011 - 10.0 -0.05794753 10.34183386 0.35651327 0.89460951 0.00188899 -0.00356931 - 10.0 -4.75609397 34.74782948 1.61195437 1.87077953 0.00587195 -0.01975082 - 10.0 36.25896362 10.82337782 2.14170846 -1.41319743 -0.02163268 -0.00507727 - 10.0 4.02674361 -9.00872919 0.03617254 -0.88316283 -0.00122400 0.00926493 - 10.0 42.00406508 -40.85785845 -0.76014767 -3.29738763 -0.02191949 0.02332737 - 10.0 -22.63186030 5.80994447 -1.07420146 1.51160117 0.01670201 0.00006355 - 10.0 16.53870540 16.94639077 1.84926442 0.20378411 -0.00879785 -0.00880553 - 10.0 39.92854878 29.06425991 2.88523318 -1.01552251 -0.02189971 -0.01632925 - 10.0 -17.45501954 11.39301477 -0.56641470 1.60906365 0.01371008 -0.00396360 - 10.0 26.25934753 8.00486951 1.85024443 -0.89918952 -0.01562756 -0.00309898 - 10.0 -9.33900099 9.24549389 -0.36060159 1.12461927 0.00801307 -0.00255620 - 10.0 -46.47873679 -28.36980232 -2.92763912 1.44708065 0.02528654 0.01949016 - 10.0 -12.54370842 34.21722863 1.24120256 2.21072951 0.01080973 -0.01869097 - 10.0 -7.14048930 7.10420057 -0.36081624 0.86670872 0.00647863 -0.00118788 - 10.0 -49.88492485 -23.33817148 -2.76602163 1.78294227 0.02720067 0.01682362 - 10.0 -19.81399282 53.52954568 2.07232227 2.65936299 0.01424146 -0.02727658 - 10.0 23.77418551 14.68227128 2.04725863 -0.41772276 -0.01379116 -0.00752371 - 10.0 -5.73673778 8.93192786 -0.16259409 0.97138466 0.00562305 -0.00245174 - 10.0 10.54277542 -1.02674862 0.84834041 -0.44100517 -0.00531874 0.00383461 - 10.0 23.01197723 21.12299112 2.25990543 -0.12607295 -0.01291140 -0.01176114 - 10.0 -44.78532667 12.05197921 -1.02696812 2.77848076 0.02808850 -0.00298275 - 10.0 31.46388060 -49.75461307 -1.52046945 -3.03579919 -0.01637469 0.02786471 - 10.0 24.84943257 -25.92687211 -0.24060772 -2.45045466 -0.01484349 0.01860299 - 10.0 25.91948874 -30.60444211 -0.52684367 -2.60005186 -0.01516185 0.02084074 - 10.0 -10.85946929 20.87407647 0.39902427 1.82589346 0.00972306 -0.01062660 - 10.0 -38.51435867 1.59076858 -1.56374573 2.10935343 0.02533138 0.00325720 - 10.0 48.51766969 -21.77175738 0.49039776 -3.14884736 -0.02642908 0.01352300 - 10.0 5.74566172 46.44110258 2.61301762 1.41963745 -0.00049448 -0.02602402 - 10.0 -22.88917903 -27.97906439 -2.49898486 -0.03157484 0.01438842 0.02110301 - 10.0 31.73261776 -6.28614087 1.21728705 -1.94829313 -0.01955786 0.00624200 - 10.0 4.24232124 19.44671943 1.21964188 1.10199242 -0.00052277 -0.01009959 - 10.0 0.91334970 48.66777413 2.53737735 1.69247032 0.00244742 -0.02680742 - 10.0 10.67139892 31.69558668 2.17625638 0.97201541 -0.00424894 -0.01856619 - 10.0 12.94163719 58.29627746 3.27732262 1.10311871 -0.00411829 -0.03016643 - 10.0 39.19514702 34.09017661 3.04651632 -0.83806079 -0.02092181 -0.01899392 - 10.0 -24.13067759 -32.16302812 -2.68262548 -0.04506858 0.01454248 0.02301772 - 10.0 51.78333979 -13.45956325 1.00920828 -3.03719366 -0.02816357 0.00875884 - 10.0 -18.73188233 -17.30379387 -1.95701398 -0.00677590 0.01307052 0.01538889 - 10.0 24.70514705 -49.06503148 -1.67808526 -2.78661149 -0.01337746 0.02867654 - 10.0 -51.06940692 -15.61458174 -2.46357376 2.08982818 0.02835174 0.01252356 - 10.0 -4.29154911 -29.69366786 -1.77081329 -1.27717018 0.00330457 0.02241695 - 10.0 2.11752441 33.61609431 1.87012243 1.50451828 0.00141129 -0.01940596 - 10.0 37.73902003 -20.32722331 0.42253535 -2.74138534 -0.02210996 0.01412198 - 10.0 18.24940441 16.13909492 1.89723284 0.04723628 -0.00993771 -0.00831431 - 10.0 -0.86685880 -26.00179392 -1.38458807 -1.39913472 0.00136531 0.02041813 - 10.0 -14.99514725 -9.73327401 -1.49412678 0.04580994 0.01096177 0.01022804 - 10.0 7.00887790 1.98168034 0.68812772 0.00896544 -0.00293511 0.00198547 - 10.0 14.82165676 -26.61468332 -0.63832974 -2.10322539 -0.00891726 0.01991691 - 10.0 36.97393038 41.34508248 3.24972457 -0.53759403 -0.01886630 -0.02264741 - 10.0 13.20164819 -5.94173158 0.74976608 -0.99205532 -0.00725503 0.00697320 - 10.0 -27.55525109 11.38230453 -0.82867230 2.04896832 0.02021279 -0.00334846 - 10.0 44.22611452 7.91205992 2.08170876 -1.97441862 -0.02553919 -0.00334242 - 10.0 -30.78228408 -9.00330845 -1.98277752 1.19492292 0.02083894 0.00999898 - 10.0 21.23162596 1.68817791 1.43493089 -0.91572699 -0.01244008 0.00145281 - 10.0 43.83049777 17.41111171 2.48943804 -1.60943360 -0.02478736 -0.00913389 - 10.0 18.27076095 14.11054567 1.82221570 -0.03605102 -0.01008131 -0.00688670 - 10.0 -23.16386718 14.98115804 -0.48627528 2.03701218 0.01725857 -0.00604352 - 10.0 17.66869644 37.69009924 2.68456831 0.61313519 -0.00829888 -0.02182563 - 10.0 -13.13453980 43.06229834 1.74152194 2.32880687 0.01088136 -0.02345547 - 10.0 17.04551969 -8.51968300 0.74199110 -1.36393081 -0.00992090 0.00843742 - 10.0 -12.74957582 2.86610039 -0.88706993 0.76014301 0.01004519 0.00183585 - 10.0 -11.57352997 -3.93218467 -1.08155095 0.15539312 0.00900597 0.00634724 - 10.0 -0.43691930 11.99128730 0.42464351 1.00896428 0.00223775 -0.00474195 - 10.0 -18.84718297 2.59155114 -1.14765946 1.09328119 0.01395275 0.00224813 - 10.0 26.50822037 34.91831202 2.84251996 -0.01459342 -0.01374681 -0.02010543 - 10.0 -1.83862732 -27.40591387 -1.51844281 -1.37417813 0.00190638 0.02119551 - 10.0 -29.61534814 -11.34773579 -2.05992588 1.01365241 0.02001716 0.01147311 - 10.0 -1.58282077 2.69811157 -0.11418406 0.29617314 0.00265977 0.00167764 - 10.0 2.81028701 8.79669118 0.52804717 0.69094215 -0.00005422 -0.00258329 - 10.0 -46.98701557 11.56383052 -1.07690408 2.84555950 0.02883999 -0.00259972 - 10.0 -3.40737443 -56.06838909 -2.91291405 -1.56839602 0.00150420 0.03217266 - 10.0 -19.98158539 39.46428514 1.28835283 2.57214878 0.01493065 -0.02105105 - 10.0 -44.66881930 12.46139603 -1.00158524 2.78765137 0.02804667 -0.00323063 - 10.0 -16.39650937 23.16371517 0.32747014 2.11248239 0.01323682 -0.01177621 - 10.0 21.95611509 7.76064067 1.72075828 -0.61228724 -0.01269236 -0.00269100 - 10.0 -10.50904475 12.60669705 -0.19243723 1.40501570 0.00897813 -0.00484325 - 10.0 -14.30586541 -0.91198946 -1.12740574 0.55739977 0.01090470 0.00440092 - 10.0 -46.00705467 -6.85206507 -2.04591400 2.14319881 0.02767905 0.00814089 - 10.0 30.41289215 -6.97966533 1.15654150 -1.91885498 -0.01852614 0.00680537 - 10.0 -48.27660341 27.60241976 -0.13762372 3.31622222 0.02879885 -0.01161224 - 10.0 -17.74747450 10.50189167 -0.63686673 1.56720699 0.01384037 -0.00328594 - 10.0 54.39641806 -0.37738366 1.72976962 -2.73607215 -0.02940059 0.00129876 - 10.0 6.47050061 -29.43922970 -1.20659479 -1.82090480 -0.00359394 0.02244751 - 10.0 0.58954963 -13.25292294 -0.49482500 -1.03808365 0.00082873 0.01218738 - 10.0 -12.31468078 -40.73604077 -2.60912850 -0.94516629 0.00720515 0.02765879 - 10.0 38.13312568 24.34484548 2.69648135 -1.04260079 -0.02152543 -0.01341969 - 10.0 -13.70564154 27.92937950 0.77625108 2.14221048 0.01158560 -0.01492998 - 10.0 40.53583366 -0.14911602 1.65704468 -2.10583120 -0.02408788 0.00179315 - 10.0 8.39984292 -15.41302717 -0.12676090 -1.44483730 -0.00437128 0.01330585 - 10.0 22.44930397 -38.06973908 -1.11496697 -2.59958621 -0.01287940 0.02515562 - 10.0 47.41809427 3.44198464 1.88610439 -2.29818650 -0.02696432 -0.00068958 - 10.0 27.36675414 46.97814868 3.25532655 0.14568231 -0.01291442 -0.02560627 - 10.0 -10.16897115 -22.40458265 -1.73420047 -0.76737649 0.00741932 0.01846132 - 10.0 40.36029012 -18.88517950 0.55513182 -2.79063722 -0.02344201 0.01302615 - 10.0 -14.39025584 20.54575351 0.21589623 1.94610689 0.01196694 -0.01021320 - 10.0 19.64156343 34.26658662 2.62377284 0.42861126 -0.00976569 -0.01997954 - 10.0 -33.50298072 43.14541702 1.10503992 3.09224158 0.02172220 -0.02121984 - 10.0 -20.79202850 -24.09713162 -2.28882549 -0.07479119 0.01364036 0.01919977 diff --git a/testsuite/tests/dph/nbody/dph-nbody-copy-opt.stdout b/testsuite/tests/dph/nbody/dph-nbody-copy-opt.stdout deleted file mode 100644 index 69fdd8b303..0000000000 --- a/testsuite/tests/dph/nbody/dph-nbody-copy-opt.stdout +++ /dev/null @@ -1,100 +0,0 @@ - 10.0 -7.88876745 14.40403609 0.07781862 1.41725313 0.00728077 -0.00615418 - 10.0 -20.39602554 -5.40256368 -1.56824530 0.67893475 0.01493099 0.00782011 - 10.0 -0.05794753 10.34183386 0.35651327 0.89460951 0.00188899 -0.00356931 - 10.0 -4.75609397 34.74782948 1.61195437 1.87077953 0.00587195 -0.01975082 - 10.0 36.25896362 10.82337782 2.14170846 -1.41319743 -0.02163268 -0.00507727 - 10.0 4.02674361 -9.00872919 0.03617254 -0.88316283 -0.00122400 0.00926493 - 10.0 42.00406508 -40.85785845 -0.76014767 -3.29738763 -0.02191949 0.02332737 - 10.0 -22.63186030 5.80994447 -1.07420146 1.51160117 0.01670201 0.00006355 - 10.0 16.53870540 16.94639077 1.84926442 0.20378411 -0.00879785 -0.00880553 - 10.0 39.92854878 29.06425991 2.88523318 -1.01552251 -0.02189971 -0.01632925 - 10.0 -17.45501954 11.39301477 -0.56641470 1.60906365 0.01371008 -0.00396360 - 10.0 26.25934753 8.00486951 1.85024443 -0.89918952 -0.01562756 -0.00309898 - 10.0 -9.33900099 9.24549389 -0.36060159 1.12461927 0.00801307 -0.00255620 - 10.0 -46.47873679 -28.36980232 -2.92763912 1.44708065 0.02528654 0.01949016 - 10.0 -12.54370842 34.21722863 1.24120256 2.21072951 0.01080973 -0.01869097 - 10.0 -7.14048930 7.10420057 -0.36081624 0.86670872 0.00647863 -0.00118788 - 10.0 -49.88492485 -23.33817148 -2.76602163 1.78294227 0.02720067 0.01682362 - 10.0 -19.81399282 53.52954568 2.07232227 2.65936299 0.01424146 -0.02727658 - 10.0 23.77418551 14.68227128 2.04725863 -0.41772276 -0.01379116 -0.00752371 - 10.0 -5.73673778 8.93192786 -0.16259409 0.97138466 0.00562305 -0.00245174 - 10.0 10.54277542 -1.02674862 0.84834041 -0.44100517 -0.00531874 0.00383461 - 10.0 23.01197723 21.12299112 2.25990543 -0.12607295 -0.01291140 -0.01176114 - 10.0 -44.78532667 12.05197921 -1.02696812 2.77848076 0.02808850 -0.00298275 - 10.0 31.46388060 -49.75461307 -1.52046945 -3.03579919 -0.01637469 0.02786471 - 10.0 24.84943257 -25.92687211 -0.24060772 -2.45045466 -0.01484349 0.01860299 - 10.0 25.91948874 -30.60444211 -0.52684367 -2.60005186 -0.01516185 0.02084074 - 10.0 -10.85946929 20.87407647 0.39902427 1.82589346 0.00972306 -0.01062660 - 10.0 -38.51435867 1.59076858 -1.56374573 2.10935343 0.02533138 0.00325720 - 10.0 48.51766969 -21.77175738 0.49039776 -3.14884736 -0.02642908 0.01352300 - 10.0 5.74566172 46.44110258 2.61301762 1.41963745 -0.00049448 -0.02602402 - 10.0 -22.88917903 -27.97906439 -2.49898486 -0.03157484 0.01438842 0.02110301 - 10.0 31.73261776 -6.28614087 1.21728705 -1.94829313 -0.01955786 0.00624200 - 10.0 4.24232124 19.44671943 1.21964188 1.10199242 -0.00052277 -0.01009959 - 10.0 0.91334970 48.66777413 2.53737735 1.69247032 0.00244742 -0.02680742 - 10.0 10.67139892 31.69558668 2.17625638 0.97201541 -0.00424894 -0.01856619 - 10.0 12.94163719 58.29627746 3.27732262 1.10311871 -0.00411829 -0.03016643 - 10.0 39.19514702 34.09017661 3.04651632 -0.83806079 -0.02092181 -0.01899392 - 10.0 -24.13067759 -32.16302812 -2.68262548 -0.04506858 0.01454248 0.02301772 - 10.0 51.78333979 -13.45956325 1.00920828 -3.03719366 -0.02816357 0.00875884 - 10.0 -18.73188233 -17.30379387 -1.95701398 -0.00677590 0.01307052 0.01538889 - 10.0 24.70514705 -49.06503148 -1.67808526 -2.78661149 -0.01337746 0.02867654 - 10.0 -51.06940692 -15.61458174 -2.46357376 2.08982818 0.02835174 0.01252356 - 10.0 -4.29154911 -29.69366786 -1.77081329 -1.27717018 0.00330457 0.02241695 - 10.0 2.11752441 33.61609431 1.87012243 1.50451828 0.00141129 -0.01940596 - 10.0 37.73902003 -20.32722331 0.42253535 -2.74138534 -0.02210996 0.01412198 - 10.0 18.24940441 16.13909492 1.89723284 0.04723628 -0.00993771 -0.00831431 - 10.0 -0.86685880 -26.00179392 -1.38458807 -1.39913472 0.00136531 0.02041813 - 10.0 -14.99514725 -9.73327401 -1.49412678 0.04580994 0.01096177 0.01022804 - 10.0 7.00887790 1.98168034 0.68812772 0.00896544 -0.00293511 0.00198547 - 10.0 14.82165676 -26.61468332 -0.63832974 -2.10322539 -0.00891726 0.01991691 - 10.0 36.97393038 41.34508248 3.24972457 -0.53759403 -0.01886630 -0.02264741 - 10.0 13.20164819 -5.94173158 0.74976608 -0.99205532 -0.00725503 0.00697320 - 10.0 -27.55525109 11.38230453 -0.82867230 2.04896832 0.02021279 -0.00334846 - 10.0 44.22611452 7.91205992 2.08170876 -1.97441862 -0.02553919 -0.00334242 - 10.0 -30.78228408 -9.00330845 -1.98277752 1.19492292 0.02083894 0.00999898 - 10.0 21.23162596 1.68817791 1.43493089 -0.91572699 -0.01244008 0.00145281 - 10.0 43.83049777 17.41111171 2.48943804 -1.60943360 -0.02478736 -0.00913389 - 10.0 18.27076095 14.11054567 1.82221570 -0.03605102 -0.01008131 -0.00688670 - 10.0 -23.16386718 14.98115804 -0.48627528 2.03701218 0.01725857 -0.00604352 - 10.0 17.66869644 37.69009924 2.68456831 0.61313519 -0.00829888 -0.02182563 - 10.0 -13.13453980 43.06229834 1.74152194 2.32880687 0.01088136 -0.02345547 - 10.0 17.04551969 -8.51968300 0.74199110 -1.36393081 -0.00992090 0.00843742 - 10.0 -12.74957582 2.86610039 -0.88706993 0.76014301 0.01004519 0.00183585 - 10.0 -11.57352997 -3.93218467 -1.08155095 0.15539312 0.00900597 0.00634724 - 10.0 -0.43691930 11.99128730 0.42464351 1.00896428 0.00223775 -0.00474195 - 10.0 -18.84718297 2.59155114 -1.14765946 1.09328119 0.01395275 0.00224813 - 10.0 26.50822037 34.91831202 2.84251996 -0.01459342 -0.01374681 -0.02010543 - 10.0 -1.83862732 -27.40591387 -1.51844281 -1.37417813 0.00190638 0.02119551 - 10.0 -29.61534814 -11.34773579 -2.05992588 1.01365241 0.02001716 0.01147311 - 10.0 -1.58282077 2.69811157 -0.11418406 0.29617314 0.00265977 0.00167764 - 10.0 2.81028701 8.79669118 0.52804717 0.69094215 -0.00005422 -0.00258329 - 10.0 -46.98701557 11.56383052 -1.07690408 2.84555950 0.02883999 -0.00259972 - 10.0 -3.40737443 -56.06838909 -2.91291405 -1.56839602 0.00150420 0.03217266 - 10.0 -19.98158539 39.46428514 1.28835283 2.57214878 0.01493065 -0.02105105 - 10.0 -44.66881930 12.46139603 -1.00158524 2.78765137 0.02804667 -0.00323063 - 10.0 -16.39650937 23.16371517 0.32747014 2.11248239 0.01323682 -0.01177621 - 10.0 21.95611509 7.76064067 1.72075828 -0.61228724 -0.01269236 -0.00269100 - 10.0 -10.50904475 12.60669705 -0.19243723 1.40501570 0.00897813 -0.00484325 - 10.0 -14.30586541 -0.91198946 -1.12740574 0.55739977 0.01090470 0.00440092 - 10.0 -46.00705467 -6.85206507 -2.04591400 2.14319881 0.02767905 0.00814089 - 10.0 30.41289215 -6.97966533 1.15654150 -1.91885498 -0.01852614 0.00680537 - 10.0 -48.27660341 27.60241976 -0.13762372 3.31622222 0.02879885 -0.01161224 - 10.0 -17.74747450 10.50189167 -0.63686673 1.56720699 0.01384037 -0.00328594 - 10.0 54.39641806 -0.37738366 1.72976962 -2.73607215 -0.02940059 0.00129876 - 10.0 6.47050061 -29.43922970 -1.20659479 -1.82090480 -0.00359394 0.02244751 - 10.0 0.58954963 -13.25292294 -0.49482500 -1.03808365 0.00082873 0.01218738 - 10.0 -12.31468078 -40.73604077 -2.60912850 -0.94516629 0.00720515 0.02765879 - 10.0 38.13312568 24.34484548 2.69648135 -1.04260079 -0.02152543 -0.01341969 - 10.0 -13.70564154 27.92937950 0.77625108 2.14221048 0.01158560 -0.01492998 - 10.0 40.53583366 -0.14911602 1.65704468 -2.10583120 -0.02408788 0.00179315 - 10.0 8.39984292 -15.41302717 -0.12676090 -1.44483730 -0.00437128 0.01330585 - 10.0 22.44930397 -38.06973908 -1.11496697 -2.59958621 -0.01287940 0.02515562 - 10.0 47.41809427 3.44198464 1.88610439 -2.29818650 -0.02696432 -0.00068958 - 10.0 27.36675414 46.97814868 3.25532655 0.14568231 -0.01291442 -0.02560627 - 10.0 -10.16897115 -22.40458265 -1.73420047 -0.76737649 0.00741932 0.01846132 - 10.0 40.36029012 -18.88517950 0.55513182 -2.79063722 -0.02344201 0.01302615 - 10.0 -14.39025584 20.54575351 0.21589623 1.94610689 0.01196694 -0.01021320 - 10.0 19.64156343 34.26658662 2.62377284 0.42861126 -0.00976569 -0.01997954 - 10.0 -33.50298072 43.14541702 1.10503992 3.09224158 0.02172220 -0.02121984 - 10.0 -20.79202850 -24.09713162 -2.28882549 -0.07479119 0.01364036 0.01919977 diff --git a/testsuite/tests/dph/nbody/dph-nbody-vseg-fast.stdout b/testsuite/tests/dph/nbody/dph-nbody-vseg-fast.stdout deleted file mode 100644 index 69fdd8b303..0000000000 --- a/testsuite/tests/dph/nbody/dph-nbody-vseg-fast.stdout +++ /dev/null @@ -1,100 +0,0 @@ - 10.0 -7.88876745 14.40403609 0.07781862 1.41725313 0.00728077 -0.00615418 - 10.0 -20.39602554 -5.40256368 -1.56824530 0.67893475 0.01493099 0.00782011 - 10.0 -0.05794753 10.34183386 0.35651327 0.89460951 0.00188899 -0.00356931 - 10.0 -4.75609397 34.74782948 1.61195437 1.87077953 0.00587195 -0.01975082 - 10.0 36.25896362 10.82337782 2.14170846 -1.41319743 -0.02163268 -0.00507727 - 10.0 4.02674361 -9.00872919 0.03617254 -0.88316283 -0.00122400 0.00926493 - 10.0 42.00406508 -40.85785845 -0.76014767 -3.29738763 -0.02191949 0.02332737 - 10.0 -22.63186030 5.80994447 -1.07420146 1.51160117 0.01670201 0.00006355 - 10.0 16.53870540 16.94639077 1.84926442 0.20378411 -0.00879785 -0.00880553 - 10.0 39.92854878 29.06425991 2.88523318 -1.01552251 -0.02189971 -0.01632925 - 10.0 -17.45501954 11.39301477 -0.56641470 1.60906365 0.01371008 -0.00396360 - 10.0 26.25934753 8.00486951 1.85024443 -0.89918952 -0.01562756 -0.00309898 - 10.0 -9.33900099 9.24549389 -0.36060159 1.12461927 0.00801307 -0.00255620 - 10.0 -46.47873679 -28.36980232 -2.92763912 1.44708065 0.02528654 0.01949016 - 10.0 -12.54370842 34.21722863 1.24120256 2.21072951 0.01080973 -0.01869097 - 10.0 -7.14048930 7.10420057 -0.36081624 0.86670872 0.00647863 -0.00118788 - 10.0 -49.88492485 -23.33817148 -2.76602163 1.78294227 0.02720067 0.01682362 - 10.0 -19.81399282 53.52954568 2.07232227 2.65936299 0.01424146 -0.02727658 - 10.0 23.77418551 14.68227128 2.04725863 -0.41772276 -0.01379116 -0.00752371 - 10.0 -5.73673778 8.93192786 -0.16259409 0.97138466 0.00562305 -0.00245174 - 10.0 10.54277542 -1.02674862 0.84834041 -0.44100517 -0.00531874 0.00383461 - 10.0 23.01197723 21.12299112 2.25990543 -0.12607295 -0.01291140 -0.01176114 - 10.0 -44.78532667 12.05197921 -1.02696812 2.77848076 0.02808850 -0.00298275 - 10.0 31.46388060 -49.75461307 -1.52046945 -3.03579919 -0.01637469 0.02786471 - 10.0 24.84943257 -25.92687211 -0.24060772 -2.45045466 -0.01484349 0.01860299 - 10.0 25.91948874 -30.60444211 -0.52684367 -2.60005186 -0.01516185 0.02084074 - 10.0 -10.85946929 20.87407647 0.39902427 1.82589346 0.00972306 -0.01062660 - 10.0 -38.51435867 1.59076858 -1.56374573 2.10935343 0.02533138 0.00325720 - 10.0 48.51766969 -21.77175738 0.49039776 -3.14884736 -0.02642908 0.01352300 - 10.0 5.74566172 46.44110258 2.61301762 1.41963745 -0.00049448 -0.02602402 - 10.0 -22.88917903 -27.97906439 -2.49898486 -0.03157484 0.01438842 0.02110301 - 10.0 31.73261776 -6.28614087 1.21728705 -1.94829313 -0.01955786 0.00624200 - 10.0 4.24232124 19.44671943 1.21964188 1.10199242 -0.00052277 -0.01009959 - 10.0 0.91334970 48.66777413 2.53737735 1.69247032 0.00244742 -0.02680742 - 10.0 10.67139892 31.69558668 2.17625638 0.97201541 -0.00424894 -0.01856619 - 10.0 12.94163719 58.29627746 3.27732262 1.10311871 -0.00411829 -0.03016643 - 10.0 39.19514702 34.09017661 3.04651632 -0.83806079 -0.02092181 -0.01899392 - 10.0 -24.13067759 -32.16302812 -2.68262548 -0.04506858 0.01454248 0.02301772 - 10.0 51.78333979 -13.45956325 1.00920828 -3.03719366 -0.02816357 0.00875884 - 10.0 -18.73188233 -17.30379387 -1.95701398 -0.00677590 0.01307052 0.01538889 - 10.0 24.70514705 -49.06503148 -1.67808526 -2.78661149 -0.01337746 0.02867654 - 10.0 -51.06940692 -15.61458174 -2.46357376 2.08982818 0.02835174 0.01252356 - 10.0 -4.29154911 -29.69366786 -1.77081329 -1.27717018 0.00330457 0.02241695 - 10.0 2.11752441 33.61609431 1.87012243 1.50451828 0.00141129 -0.01940596 - 10.0 37.73902003 -20.32722331 0.42253535 -2.74138534 -0.02210996 0.01412198 - 10.0 18.24940441 16.13909492 1.89723284 0.04723628 -0.00993771 -0.00831431 - 10.0 -0.86685880 -26.00179392 -1.38458807 -1.39913472 0.00136531 0.02041813 - 10.0 -14.99514725 -9.73327401 -1.49412678 0.04580994 0.01096177 0.01022804 - 10.0 7.00887790 1.98168034 0.68812772 0.00896544 -0.00293511 0.00198547 - 10.0 14.82165676 -26.61468332 -0.63832974 -2.10322539 -0.00891726 0.01991691 - 10.0 36.97393038 41.34508248 3.24972457 -0.53759403 -0.01886630 -0.02264741 - 10.0 13.20164819 -5.94173158 0.74976608 -0.99205532 -0.00725503 0.00697320 - 10.0 -27.55525109 11.38230453 -0.82867230 2.04896832 0.02021279 -0.00334846 - 10.0 44.22611452 7.91205992 2.08170876 -1.97441862 -0.02553919 -0.00334242 - 10.0 -30.78228408 -9.00330845 -1.98277752 1.19492292 0.02083894 0.00999898 - 10.0 21.23162596 1.68817791 1.43493089 -0.91572699 -0.01244008 0.00145281 - 10.0 43.83049777 17.41111171 2.48943804 -1.60943360 -0.02478736 -0.00913389 - 10.0 18.27076095 14.11054567 1.82221570 -0.03605102 -0.01008131 -0.00688670 - 10.0 -23.16386718 14.98115804 -0.48627528 2.03701218 0.01725857 -0.00604352 - 10.0 17.66869644 37.69009924 2.68456831 0.61313519 -0.00829888 -0.02182563 - 10.0 -13.13453980 43.06229834 1.74152194 2.32880687 0.01088136 -0.02345547 - 10.0 17.04551969 -8.51968300 0.74199110 -1.36393081 -0.00992090 0.00843742 - 10.0 -12.74957582 2.86610039 -0.88706993 0.76014301 0.01004519 0.00183585 - 10.0 -11.57352997 -3.93218467 -1.08155095 0.15539312 0.00900597 0.00634724 - 10.0 -0.43691930 11.99128730 0.42464351 1.00896428 0.00223775 -0.00474195 - 10.0 -18.84718297 2.59155114 -1.14765946 1.09328119 0.01395275 0.00224813 - 10.0 26.50822037 34.91831202 2.84251996 -0.01459342 -0.01374681 -0.02010543 - 10.0 -1.83862732 -27.40591387 -1.51844281 -1.37417813 0.00190638 0.02119551 - 10.0 -29.61534814 -11.34773579 -2.05992588 1.01365241 0.02001716 0.01147311 - 10.0 -1.58282077 2.69811157 -0.11418406 0.29617314 0.00265977 0.00167764 - 10.0 2.81028701 8.79669118 0.52804717 0.69094215 -0.00005422 -0.00258329 - 10.0 -46.98701557 11.56383052 -1.07690408 2.84555950 0.02883999 -0.00259972 - 10.0 -3.40737443 -56.06838909 -2.91291405 -1.56839602 0.00150420 0.03217266 - 10.0 -19.98158539 39.46428514 1.28835283 2.57214878 0.01493065 -0.02105105 - 10.0 -44.66881930 12.46139603 -1.00158524 2.78765137 0.02804667 -0.00323063 - 10.0 -16.39650937 23.16371517 0.32747014 2.11248239 0.01323682 -0.01177621 - 10.0 21.95611509 7.76064067 1.72075828 -0.61228724 -0.01269236 -0.00269100 - 10.0 -10.50904475 12.60669705 -0.19243723 1.40501570 0.00897813 -0.00484325 - 10.0 -14.30586541 -0.91198946 -1.12740574 0.55739977 0.01090470 0.00440092 - 10.0 -46.00705467 -6.85206507 -2.04591400 2.14319881 0.02767905 0.00814089 - 10.0 30.41289215 -6.97966533 1.15654150 -1.91885498 -0.01852614 0.00680537 - 10.0 -48.27660341 27.60241976 -0.13762372 3.31622222 0.02879885 -0.01161224 - 10.0 -17.74747450 10.50189167 -0.63686673 1.56720699 0.01384037 -0.00328594 - 10.0 54.39641806 -0.37738366 1.72976962 -2.73607215 -0.02940059 0.00129876 - 10.0 6.47050061 -29.43922970 -1.20659479 -1.82090480 -0.00359394 0.02244751 - 10.0 0.58954963 -13.25292294 -0.49482500 -1.03808365 0.00082873 0.01218738 - 10.0 -12.31468078 -40.73604077 -2.60912850 -0.94516629 0.00720515 0.02765879 - 10.0 38.13312568 24.34484548 2.69648135 -1.04260079 -0.02152543 -0.01341969 - 10.0 -13.70564154 27.92937950 0.77625108 2.14221048 0.01158560 -0.01492998 - 10.0 40.53583366 -0.14911602 1.65704468 -2.10583120 -0.02408788 0.00179315 - 10.0 8.39984292 -15.41302717 -0.12676090 -1.44483730 -0.00437128 0.01330585 - 10.0 22.44930397 -38.06973908 -1.11496697 -2.59958621 -0.01287940 0.02515562 - 10.0 47.41809427 3.44198464 1.88610439 -2.29818650 -0.02696432 -0.00068958 - 10.0 27.36675414 46.97814868 3.25532655 0.14568231 -0.01291442 -0.02560627 - 10.0 -10.16897115 -22.40458265 -1.73420047 -0.76737649 0.00741932 0.01846132 - 10.0 40.36029012 -18.88517950 0.55513182 -2.79063722 -0.02344201 0.01302615 - 10.0 -14.39025584 20.54575351 0.21589623 1.94610689 0.01196694 -0.01021320 - 10.0 19.64156343 34.26658662 2.62377284 0.42861126 -0.00976569 -0.01997954 - 10.0 -33.50298072 43.14541702 1.10503992 3.09224158 0.02172220 -0.02121984 - 10.0 -20.79202850 -24.09713162 -2.28882549 -0.07479119 0.01364036 0.01919977 diff --git a/testsuite/tests/dph/nbody/dph-nbody-vseg-opt.stdout b/testsuite/tests/dph/nbody/dph-nbody-vseg-opt.stdout deleted file mode 100644 index 69fdd8b303..0000000000 --- a/testsuite/tests/dph/nbody/dph-nbody-vseg-opt.stdout +++ /dev/null @@ -1,100 +0,0 @@ - 10.0 -7.88876745 14.40403609 0.07781862 1.41725313 0.00728077 -0.00615418 - 10.0 -20.39602554 -5.40256368 -1.56824530 0.67893475 0.01493099 0.00782011 - 10.0 -0.05794753 10.34183386 0.35651327 0.89460951 0.00188899 -0.00356931 - 10.0 -4.75609397 34.74782948 1.61195437 1.87077953 0.00587195 -0.01975082 - 10.0 36.25896362 10.82337782 2.14170846 -1.41319743 -0.02163268 -0.00507727 - 10.0 4.02674361 -9.00872919 0.03617254 -0.88316283 -0.00122400 0.00926493 - 10.0 42.00406508 -40.85785845 -0.76014767 -3.29738763 -0.02191949 0.02332737 - 10.0 -22.63186030 5.80994447 -1.07420146 1.51160117 0.01670201 0.00006355 - 10.0 16.53870540 16.94639077 1.84926442 0.20378411 -0.00879785 -0.00880553 - 10.0 39.92854878 29.06425991 2.88523318 -1.01552251 -0.02189971 -0.01632925 - 10.0 -17.45501954 11.39301477 -0.56641470 1.60906365 0.01371008 -0.00396360 - 10.0 26.25934753 8.00486951 1.85024443 -0.89918952 -0.01562756 -0.00309898 - 10.0 -9.33900099 9.24549389 -0.36060159 1.12461927 0.00801307 -0.00255620 - 10.0 -46.47873679 -28.36980232 -2.92763912 1.44708065 0.02528654 0.01949016 - 10.0 -12.54370842 34.21722863 1.24120256 2.21072951 0.01080973 -0.01869097 - 10.0 -7.14048930 7.10420057 -0.36081624 0.86670872 0.00647863 -0.00118788 - 10.0 -49.88492485 -23.33817148 -2.76602163 1.78294227 0.02720067 0.01682362 - 10.0 -19.81399282 53.52954568 2.07232227 2.65936299 0.01424146 -0.02727658 - 10.0 23.77418551 14.68227128 2.04725863 -0.41772276 -0.01379116 -0.00752371 - 10.0 -5.73673778 8.93192786 -0.16259409 0.97138466 0.00562305 -0.00245174 - 10.0 10.54277542 -1.02674862 0.84834041 -0.44100517 -0.00531874 0.00383461 - 10.0 23.01197723 21.12299112 2.25990543 -0.12607295 -0.01291140 -0.01176114 - 10.0 -44.78532667 12.05197921 -1.02696812 2.77848076 0.02808850 -0.00298275 - 10.0 31.46388060 -49.75461307 -1.52046945 -3.03579919 -0.01637469 0.02786471 - 10.0 24.84943257 -25.92687211 -0.24060772 -2.45045466 -0.01484349 0.01860299 - 10.0 25.91948874 -30.60444211 -0.52684367 -2.60005186 -0.01516185 0.02084074 - 10.0 -10.85946929 20.87407647 0.39902427 1.82589346 0.00972306 -0.01062660 - 10.0 -38.51435867 1.59076858 -1.56374573 2.10935343 0.02533138 0.00325720 - 10.0 48.51766969 -21.77175738 0.49039776 -3.14884736 -0.02642908 0.01352300 - 10.0 5.74566172 46.44110258 2.61301762 1.41963745 -0.00049448 -0.02602402 - 10.0 -22.88917903 -27.97906439 -2.49898486 -0.03157484 0.01438842 0.02110301 - 10.0 31.73261776 -6.28614087 1.21728705 -1.94829313 -0.01955786 0.00624200 - 10.0 4.24232124 19.44671943 1.21964188 1.10199242 -0.00052277 -0.01009959 - 10.0 0.91334970 48.66777413 2.53737735 1.69247032 0.00244742 -0.02680742 - 10.0 10.67139892 31.69558668 2.17625638 0.97201541 -0.00424894 -0.01856619 - 10.0 12.94163719 58.29627746 3.27732262 1.10311871 -0.00411829 -0.03016643 - 10.0 39.19514702 34.09017661 3.04651632 -0.83806079 -0.02092181 -0.01899392 - 10.0 -24.13067759 -32.16302812 -2.68262548 -0.04506858 0.01454248 0.02301772 - 10.0 51.78333979 -13.45956325 1.00920828 -3.03719366 -0.02816357 0.00875884 - 10.0 -18.73188233 -17.30379387 -1.95701398 -0.00677590 0.01307052 0.01538889 - 10.0 24.70514705 -49.06503148 -1.67808526 -2.78661149 -0.01337746 0.02867654 - 10.0 -51.06940692 -15.61458174 -2.46357376 2.08982818 0.02835174 0.01252356 - 10.0 -4.29154911 -29.69366786 -1.77081329 -1.27717018 0.00330457 0.02241695 - 10.0 2.11752441 33.61609431 1.87012243 1.50451828 0.00141129 -0.01940596 - 10.0 37.73902003 -20.32722331 0.42253535 -2.74138534 -0.02210996 0.01412198 - 10.0 18.24940441 16.13909492 1.89723284 0.04723628 -0.00993771 -0.00831431 - 10.0 -0.86685880 -26.00179392 -1.38458807 -1.39913472 0.00136531 0.02041813 - 10.0 -14.99514725 -9.73327401 -1.49412678 0.04580994 0.01096177 0.01022804 - 10.0 7.00887790 1.98168034 0.68812772 0.00896544 -0.00293511 0.00198547 - 10.0 14.82165676 -26.61468332 -0.63832974 -2.10322539 -0.00891726 0.01991691 - 10.0 36.97393038 41.34508248 3.24972457 -0.53759403 -0.01886630 -0.02264741 - 10.0 13.20164819 -5.94173158 0.74976608 -0.99205532 -0.00725503 0.00697320 - 10.0 -27.55525109 11.38230453 -0.82867230 2.04896832 0.02021279 -0.00334846 - 10.0 44.22611452 7.91205992 2.08170876 -1.97441862 -0.02553919 -0.00334242 - 10.0 -30.78228408 -9.00330845 -1.98277752 1.19492292 0.02083894 0.00999898 - 10.0 21.23162596 1.68817791 1.43493089 -0.91572699 -0.01244008 0.00145281 - 10.0 43.83049777 17.41111171 2.48943804 -1.60943360 -0.02478736 -0.00913389 - 10.0 18.27076095 14.11054567 1.82221570 -0.03605102 -0.01008131 -0.00688670 - 10.0 -23.16386718 14.98115804 -0.48627528 2.03701218 0.01725857 -0.00604352 - 10.0 17.66869644 37.69009924 2.68456831 0.61313519 -0.00829888 -0.02182563 - 10.0 -13.13453980 43.06229834 1.74152194 2.32880687 0.01088136 -0.02345547 - 10.0 17.04551969 -8.51968300 0.74199110 -1.36393081 -0.00992090 0.00843742 - 10.0 -12.74957582 2.86610039 -0.88706993 0.76014301 0.01004519 0.00183585 - 10.0 -11.57352997 -3.93218467 -1.08155095 0.15539312 0.00900597 0.00634724 - 10.0 -0.43691930 11.99128730 0.42464351 1.00896428 0.00223775 -0.00474195 - 10.0 -18.84718297 2.59155114 -1.14765946 1.09328119 0.01395275 0.00224813 - 10.0 26.50822037 34.91831202 2.84251996 -0.01459342 -0.01374681 -0.02010543 - 10.0 -1.83862732 -27.40591387 -1.51844281 -1.37417813 0.00190638 0.02119551 - 10.0 -29.61534814 -11.34773579 -2.05992588 1.01365241 0.02001716 0.01147311 - 10.0 -1.58282077 2.69811157 -0.11418406 0.29617314 0.00265977 0.00167764 - 10.0 2.81028701 8.79669118 0.52804717 0.69094215 -0.00005422 -0.00258329 - 10.0 -46.98701557 11.56383052 -1.07690408 2.84555950 0.02883999 -0.00259972 - 10.0 -3.40737443 -56.06838909 -2.91291405 -1.56839602 0.00150420 0.03217266 - 10.0 -19.98158539 39.46428514 1.28835283 2.57214878 0.01493065 -0.02105105 - 10.0 -44.66881930 12.46139603 -1.00158524 2.78765137 0.02804667 -0.00323063 - 10.0 -16.39650937 23.16371517 0.32747014 2.11248239 0.01323682 -0.01177621 - 10.0 21.95611509 7.76064067 1.72075828 -0.61228724 -0.01269236 -0.00269100 - 10.0 -10.50904475 12.60669705 -0.19243723 1.40501570 0.00897813 -0.00484325 - 10.0 -14.30586541 -0.91198946 -1.12740574 0.55739977 0.01090470 0.00440092 - 10.0 -46.00705467 -6.85206507 -2.04591400 2.14319881 0.02767905 0.00814089 - 10.0 30.41289215 -6.97966533 1.15654150 -1.91885498 -0.01852614 0.00680537 - 10.0 -48.27660341 27.60241976 -0.13762372 3.31622222 0.02879885 -0.01161224 - 10.0 -17.74747450 10.50189167 -0.63686673 1.56720699 0.01384037 -0.00328594 - 10.0 54.39641806 -0.37738366 1.72976962 -2.73607215 -0.02940059 0.00129876 - 10.0 6.47050061 -29.43922970 -1.20659479 -1.82090480 -0.00359394 0.02244751 - 10.0 0.58954963 -13.25292294 -0.49482500 -1.03808365 0.00082873 0.01218738 - 10.0 -12.31468078 -40.73604077 -2.60912850 -0.94516629 0.00720515 0.02765879 - 10.0 38.13312568 24.34484548 2.69648135 -1.04260079 -0.02152543 -0.01341969 - 10.0 -13.70564154 27.92937950 0.77625108 2.14221048 0.01158560 -0.01492998 - 10.0 40.53583366 -0.14911602 1.65704468 -2.10583120 -0.02408788 0.00179315 - 10.0 8.39984292 -15.41302717 -0.12676090 -1.44483730 -0.00437128 0.01330585 - 10.0 22.44930397 -38.06973908 -1.11496697 -2.59958621 -0.01287940 0.02515562 - 10.0 47.41809427 3.44198464 1.88610439 -2.29818650 -0.02696432 -0.00068958 - 10.0 27.36675414 46.97814868 3.25532655 0.14568231 -0.01291442 -0.02560627 - 10.0 -10.16897115 -22.40458265 -1.73420047 -0.76737649 0.00741932 0.01846132 - 10.0 40.36029012 -18.88517950 0.55513182 -2.79063722 -0.02344201 0.01302615 - 10.0 -14.39025584 20.54575351 0.21589623 1.94610689 0.01196694 -0.01021320 - 10.0 19.64156343 34.26658662 2.62377284 0.42861126 -0.00976569 -0.01997954 - 10.0 -33.50298072 43.14541702 1.10503992 3.09224158 0.02172220 -0.02121984 - 10.0 -20.79202850 -24.09713162 -2.28882549 -0.07479119 0.01364036 0.01919977 diff --git a/testsuite/tests/dph/nbody/dph-nbody.T b/testsuite/tests/dph/nbody/dph-nbody.T deleted file mode 100644 index 11ee313882..0000000000 --- a/testsuite/tests/dph/nbody/dph-nbody.T +++ /dev/null @@ -1,19 +0,0 @@ - -test ('dph-nbody-vseg-fast' - , [ outputdir('vseg-fast') - , reqlib('dph-lifted-vseg') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-vseg -package dph-prim-par']) - - -test ('dph-nbody-copy-fast' - , [ outputdir('copy-fast') - , reqlib('dph-lifted-copy') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -fno-vectorisation-avoidance -package dph-lifted-copy -package dph-prim-par']) diff --git a/testsuite/tests/dph/primespj/Main.hs b/testsuite/tests/dph/primespj/Main.hs deleted file mode 100644 index f7a3ed1fe5..0000000000 --- a/testsuite/tests/dph/primespj/Main.hs +++ /dev/null @@ -1,30 +0,0 @@ -import Control.Exception (evaluate) -import System.Console.GetOpt - -import Data.Array.Parallel.PArray (PArray) -import qualified Data.Array.Parallel.PArray as P - -import PrimesVect (primesVect) -import Debug.Trace - - -primesList :: Int -> [Int] -primesList 1 = [] -primesList n = sps ++ [ i | i <- [sq+1..n], multiple sps i ] - where - sps = primesList sq - sq = floor $ sqrt $ fromIntegral n - - multiple :: [Int] -> Int -> Bool - multiple ps i = and [i `mod` p /= 0 | p <- ps] - - -main - = do let n = 1000 - let resultViaNDP = P.toList $ primesVect n - let resultViaLists = primesList n - - print resultViaNDP - print resultViaLists - print $ resultViaNDP == resultViaLists - diff --git a/testsuite/tests/dph/primespj/Makefile b/testsuite/tests/dph/primespj/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/primespj/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/primespj/PrimesVect.hs b/testsuite/tests/dph/primespj/PrimesVect.hs deleted file mode 100644 index 34b3a568b7..0000000000 --- a/testsuite/tests/dph/primespj/PrimesVect.hs +++ /dev/null @@ -1,25 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS -fvectorise #-} -module PrimesVect (primesVect) - -where -import Data.Array.Parallel -import Data.Array.Parallel.Prelude.Int -import qualified Prelude - -primesVect:: Int -> PArray Int -primesVect n = toPArrayP (primesVect' n) - -primesVect':: Int -> [:Int:] -primesVect' n - | n == 1 = emptyP - | n == 2 = singletonP 2 - | otherwise = sps +:+ [: i | i <- enumFromToP (sq+1) n, notMultiple sps i:] - where - - sps = primesVect' sq - sq = sqrt n - - notMultiple :: [:Int:] -> Int -> Bool - notMultiple ps i = andP [: mod i p /= 0 | p <- ps:] - diff --git a/testsuite/tests/dph/primespj/dph-primespj-copy-fast.stdout b/testsuite/tests/dph/primespj/dph-primespj-copy-fast.stdout deleted file mode 100644 index d935f68b11..0000000000 --- a/testsuite/tests/dph/primespj/dph-primespj-copy-fast.stdout +++ /dev/null @@ -1,3 +0,0 @@ -[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997] -[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997] -True diff --git a/testsuite/tests/dph/primespj/dph-primespj-copy-opt.stdout b/testsuite/tests/dph/primespj/dph-primespj-copy-opt.stdout deleted file mode 100644 index d935f68b11..0000000000 --- a/testsuite/tests/dph/primespj/dph-primespj-copy-opt.stdout +++ /dev/null @@ -1,3 +0,0 @@ -[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997] -[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997] -True diff --git a/testsuite/tests/dph/primespj/dph-primespj-vseg-fast.stdout b/testsuite/tests/dph/primespj/dph-primespj-vseg-fast.stdout deleted file mode 100644 index d935f68b11..0000000000 --- a/testsuite/tests/dph/primespj/dph-primespj-vseg-fast.stdout +++ /dev/null @@ -1,3 +0,0 @@ -[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997] -[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997] -True diff --git a/testsuite/tests/dph/primespj/dph-primespj-vseg-opt.stdout b/testsuite/tests/dph/primespj/dph-primespj-vseg-opt.stdout deleted file mode 100644 index d935f68b11..0000000000 --- a/testsuite/tests/dph/primespj/dph-primespj-vseg-opt.stdout +++ /dev/null @@ -1,3 +0,0 @@ -[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997] -[2,3,5,7,11,13,17,19,23,29,31,37,41,43,47,53,59,61,67,71,73,79,83,89,97,101,103,107,109,113,127,131,137,139,149,151,157,163,167,173,179,181,191,193,197,199,211,223,227,229,233,239,241,251,257,263,269,271,277,281,283,293,307,311,313,317,331,337,347,349,353,359,367,373,379,383,389,397,401,409,419,421,431,433,439,443,449,457,461,463,467,479,487,491,499,503,509,521,523,541,547,557,563,569,571,577,587,593,599,601,607,613,617,619,631,641,643,647,653,659,661,673,677,683,691,701,709,719,727,733,739,743,751,757,761,769,773,787,797,809,811,821,823,827,829,839,853,857,859,863,877,881,883,887,907,911,919,929,937,941,947,953,967,971,977,983,991,997] -True diff --git a/testsuite/tests/dph/primespj/dph-primespj.T b/testsuite/tests/dph/primespj/dph-primespj.T deleted file mode 100644 index 8b45cc80e7..0000000000 --- a/testsuite/tests/dph/primespj/dph-primespj.T +++ /dev/null @@ -1,11 +0,0 @@ - -test ('dph-primespj-copy-fast' - , [ outputdir('fast') - , reqlib('dph-lifted-copy') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-copy']) - - diff --git a/testsuite/tests/dph/quickhull/Main.hs b/testsuite/tests/dph/quickhull/Main.hs deleted file mode 100644 index e1dc04ba24..0000000000 --- a/testsuite/tests/dph/quickhull/Main.hs +++ /dev/null @@ -1,43 +0,0 @@ - -import qualified Types as QH -import QuickHullVect (quickhull) - -import qualified Data.Array.Parallel.Unlifted as U -import qualified Data.Array.Parallel.Prelude as P - -import qualified Data.Array.Parallel.PArray as P -import Data.Array.Parallel.PArray (PArray) - -import System.Environment -import Data.List - -import SVG -import TestData - - ------ -runQuickhull :: PArray QH.Point -> [(Double, Double)] -runQuickhull pts - = let result = quickhull pts - resxs = P.toUArray (QH.xsOf result) - resys = P.toUArray (QH.ysOf result) - in U.index "runQuickhull" resxs 0 `seq` (zip (U.toList resxs) (U.toList resys)) - - --- Main Program --------------------------------------------------------------- -main - = do args <- getArgs - let n = case args of - [s] -> read s - _ -> 1000 - - paInput <- toPArrayPoints - $ genPointsCombo n - - let psHull = runQuickhull paInput - psInput = P.toList paInput - - putStr - $ makeSVG - (roundPoints psInput) - (roundPoints psHull) diff --git a/testsuite/tests/dph/quickhull/Makefile b/testsuite/tests/dph/quickhull/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/quickhull/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/quickhull/QuickHullVect.hs b/testsuite/tests/dph/quickhull/QuickHullVect.hs deleted file mode 100644 index e0ad75858d..0000000000 --- a/testsuite/tests/dph/quickhull/QuickHullVect.hs +++ /dev/null @@ -1,41 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS -fvectorise #-} - -module QuickHullVect (quickhull) where - -import Types - -import Data.Array.Parallel -import Data.Array.Parallel.Prelude.Double as D -import qualified Data.Array.Parallel.Prelude.Int as Int - -import qualified Prelude as P - -distance :: Point -> Line -> Double -distance (xo, yo) ((x1, y1), (x2, y2)) - = (x1 D.- xo) D.* (y2 D.- yo) D.- (y1 D.- yo) D.* (x2 D.- xo) - -hsplit :: [:Point:] -> Line -> [:Point:] -hsplit points line@(p1, p2) - | lengthP packed Int.< 2 = singletonP p1 +:+ packed - | otherwise - = concatP [: hsplit packed ends | ends <- [:(p1, pm), (pm, p2):] :] - where - cross = [: distance p line | p <- points :] - packed = [: p | (p,c) <- zipP points cross, c D.> 0.0 :] - pm = points !: maxIndexP cross - -quickHull' :: [:Point:] -> [:Point:] -quickHull' points - | lengthP points Int.== 0 = points - | otherwise - = concatP [: hsplit points ends | ends <- [: (minx, maxx), (maxx, minx) :] :] - where - xs = [: x | (x, y) <- points :] - minx = points !: minIndexP xs - maxx = points !: maxIndexP xs - -quickhull :: PArray Point -> PArray Point -{-# NOINLINE quickhull #-} -quickhull ps = toPArrayP (quickHull' (fromPArrayP ps)) - diff --git a/testsuite/tests/dph/quickhull/SVG.hs b/testsuite/tests/dph/quickhull/SVG.hs deleted file mode 100644 index c750fb06f5..0000000000 --- a/testsuite/tests/dph/quickhull/SVG.hs +++ /dev/null @@ -1,34 +0,0 @@ - -module SVG where - --- Making a SVG diagram of the points and hull -makeSVG :: [(Int, Int)] -> [(Int, Int)] -> String -makeSVG points hull - = unlines - $ [ "<svg width=\"100%\" height=\"100%\" version=\"1.1\" xmlns=\"http://www.w3.org/2000/svg\">" ] - ++ [svgPolygon hull] - ++ map svgPoint points - ++ map svgPointHull hull - ++ ["</svg>"] - -svgPolygon :: [(Int, Int)] -> String -svgPolygon points - = "<polygon" - ++ " points=\"" ++ (concat [show x ++ "," ++ show y ++ " " | (x, y) <- points]) ++ "\"" - ++ " style=\"fill:#d0d0ff;stroke:#000000;stroke-width:1\"" - ++ "/>" - -svgPoint :: (Int, Int) -> String -svgPoint (x, y) - = "<circle cx=\"" ++ show x ++ "\" cy=\"" ++ show y ++ "\" r=\"0.5\"" - ++ " style=\"stroke:#000000\"" - ++ "/>" - -svgPointHull :: (Int, Int) -> String -svgPointHull (x, y) - = "<circle cx=\"" ++ show x ++ "\" cy=\"" ++ show y ++ "\" r=\"1\"" - ++ " style=\"stroke:#ff0000\"" - ++ "/>" - -roundPoints :: [(Double, Double)] -> [(Int, Int)] -roundPoints ps = [(round x, round y) | (x, y) <- ps] diff --git a/testsuite/tests/dph/quickhull/TestData.hs b/testsuite/tests/dph/quickhull/TestData.hs deleted file mode 100644 index 938c9fea91..0000000000 --- a/testsuite/tests/dph/quickhull/TestData.hs +++ /dev/null @@ -1,92 +0,0 @@ - -module TestData - ( genPointsUniform - , genPointsDisc - , genPointsCombo - , toPArrayPoints ) -where - -import qualified Types as QH -import qualified Data.Array.Parallel.Unlifted as U -import qualified Data.Array.Parallel.Prelude as P -import qualified Data.Array.Parallel.Prelude.Double as D -import qualified Data.Array.Parallel.PArray as P -import Data.Array.Parallel.PArray (PArray) - -import System.Random -import Control.Exception - --- Random points generation --- IMPORTANT: We use the same seed with the same random generator in all --- quickhull codes. The asymptotic work complexity of quickhull --- is between O (N) and O (N^2) depending on the input. --- To compare benchmark results, they always need to use the same --- input. -seed = 42742 - --- | Some uniformly distributed points -genPointsUniform - :: Int -- ^ number of points - -> Double -- ^ minimum coordinate - -> Double -- ^ maximum coordinate - -> [(Double, Double)] - -genPointsUniform n minXY maxXY - = let - pointMin = 10 - pointMax = 510 - gen = mkStdGen seed - in toPairs $ take (2*n) $ randomRs (pointMin, pointMax) gen - -toPairs [] = [] -toPairs (x:y:pts) = (x, y) : toPairs pts - - --- | Some points distributed as a disc -genPointsDisc - :: Int -- ^ number of points - -> (Double, Double) -- ^ center of disc - -> Double -- ^ radius of disc - -> [(Double, Double)] - -genPointsDisc n (originX, originY) radiusMax - = let (genRadius, genAngle) - = split $ mkStdGen seed - - radius = take n $ randomRs (0, radiusMax) genRadius - angle = take n $ randomRs (- pi, pi) genAngle - - makeXY (r, a) - = ( originX + r * cos a - , originY + r * sin a) - - in map makeXY $ zip radius angle - - --- | A point cloud with areas of high and low density -genPointsCombo - :: Int -- ^ number of points - -> [(Double, Double)] - -genPointsCombo n - = genPointsDisc (n `div` 5) (250, 250) 200 - ++ genPointsDisc (n `div` 5) (100, 100) 80 - ++ genPointsDisc (n `div` 5) (150, 300) 30 - ++ genPointsDisc (n `div` 5) (500, 120) 30 - ++ genPointsDisc (n `div` 5) (300, 200) 150 - - --- | Convert a list of points to a PArray -toPArrayPoints :: [(Double, Double)] -> IO (PArray QH.Point) -toPArrayPoints ps - = do let pts = QH.points (P.fromList (map fst ps)) - (P.fromList (map snd ps)) - evaluate $ force pts - return pts - --- | Force points to be evaluated -force pts - = U.index "TestData" (P.toUArray (QH.xsOf pts)) 0 D.+ - U.index "TestData" (P.toUArray (QH.ysOf pts)) 0 - - diff --git a/testsuite/tests/dph/quickhull/Types.hs b/testsuite/tests/dph/quickhull/Types.hs deleted file mode 100644 index 6b19ef1ab3..0000000000 --- a/testsuite/tests/dph/quickhull/Types.hs +++ /dev/null @@ -1,33 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS -fvectorise #-} - -module Types ( Point, Line, points, xsOf, ysOf) where - -import Data.Array.Parallel -import Data.Array.Parallel.Prelude.Double - -type Point = (Double, Double) -type Line = (Point, Point) - -points' :: [:Double:] -> [:Double:] -> [:Point:] -points' = zipP - -points :: PArray Double -> PArray Double -> PArray Point -{-# NOINLINE points #-} -points xs ys = toPArrayP (points' (fromPArrayP xs) (fromPArrayP ys)) - -xsOf' :: [:Point:] -> [:Double:] -xsOf' ps = [: x | (x, _) <- ps :] - -xsOf :: PArray Point -> PArray Double -{-# NOINLINE xsOf #-} -xsOf ps = toPArrayP (xsOf' (fromPArrayP ps)) - -ysOf' :: [:Point:] -> [:Double:] -ysOf' ps = [: y | (_, y) <- ps :] - -ysOf :: PArray Point -> PArray Double -{-# NOINLINE ysOf #-} -ysOf ps = toPArrayP (ysOf' (fromPArrayP ps)) - - diff --git a/testsuite/tests/dph/quickhull/dph-quickhull-copy-fast.stdout b/testsuite/tests/dph/quickhull/dph-quickhull-copy-fast.stdout deleted file mode 100644 index f6b2d92e9a..0000000000 --- a/testsuite/tests/dph/quickhull/dph-quickhull-copy-fast.stdout +++ /dev/null @@ -1,1019 +0,0 @@ -<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"> -<polygon points="20,98 50,246 83,354 164,416 236,434 343,427 366,412 379,402 519,143 528,126 529,115 510,96 506,95 117,33 85,28 40,64 " style="fill:#d0d0ff;stroke:#000000;stroke-width:1"/> -<circle cx="217" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="266" r="0.5" style="stroke:#000000"/> -<circle cx="191" cy="353" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="416" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="257" r="0.5" style="stroke:#000000"/> -<circle cx="266" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="350" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="334" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="189" cy="151" r="0.5" style="stroke:#000000"/> -<circle cx="308" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="347" cy="160" r="0.5" style="stroke:#000000"/> -<circle cx="251" cy="251" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="397" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="220" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="252" r="0.5" style="stroke:#000000"/> -<circle cx="191" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="84" r="0.5" style="stroke:#000000"/> -<circle cx="90" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="391" cy="360" r="0.5" style="stroke:#000000"/> -<circle cx="277" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="421" r="0.5" style="stroke:#000000"/> -<circle cx="274" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="187" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="343" cy="427" r="0.5" style="stroke:#000000"/> -<circle cx="255" cy="170" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="329" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="261" r="0.5" style="stroke:#000000"/> -<circle cx="214" cy="361" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="219" r="0.5" style="stroke:#000000"/> -<circle cx="227" cy="351" r="0.5" style="stroke:#000000"/> -<circle cx="228" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="314" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="209" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="367" cy="217" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="194" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="251" r="0.5" style="stroke:#000000"/> -<circle cx="355" cy="406" r="0.5" style="stroke:#000000"/> -<circle cx="252" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="219" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="217" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="220" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="207" r="0.5" style="stroke:#000000"/> -<circle cx="266" cy="255" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="200" cy="248" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="360" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="255" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="50" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="231" cy="340" r="0.5" style="stroke:#000000"/> -<circle cx="189" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="188" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="366" cy="412" r="0.5" style="stroke:#000000"/> -<circle cx="183" cy="139" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="399" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="289" cy="404" r="0.5" style="stroke:#000000"/> -<circle cx="346" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="181" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="274" r="0.5" style="stroke:#000000"/> -<circle cx="246" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="201" cy="395" r="0.5" style="stroke:#000000"/> -<circle cx="192" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="399" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="202" cy="221" r="0.5" style="stroke:#000000"/> -<circle cx="361" cy="406" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="180" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="258" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="408" r="0.5" style="stroke:#000000"/> -<circle cx="247" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="174" cy="346" r="0.5" style="stroke:#000000"/> -<circle cx="373" cy="334" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="82" r="0.5" style="stroke:#000000"/> -<circle cx="240" cy="388" r="0.5" style="stroke:#000000"/> -<circle cx="263" cy="225" r="0.5" style="stroke:#000000"/> -<circle cx="252" cy="207" r="0.5" style="stroke:#000000"/> -<circle cx="233" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="234" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="285" cy="264" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="259" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="233" cy="258" r="0.5" style="stroke:#000000"/> -<circle cx="108" cy="336" r="0.5" style="stroke:#000000"/> -<circle cx="379" cy="402" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="432" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="347" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="213" r="0.5" style="stroke:#000000"/> -<circle cx="330" cy="370" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="320" r="0.5" style="stroke:#000000"/> -<circle cx="280" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="304" cy="209" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="304" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="188" cy="215" r="0.5" style="stroke:#000000"/> -<circle cx="263" cy="218" r="0.5" style="stroke:#000000"/> -<circle cx="196" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="371" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="285" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="217" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="335" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="182" r="0.5" style="stroke:#000000"/> -<circle cx="221" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="333" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="199" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="153" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="419" r="0.5" style="stroke:#000000"/> -<circle cx="227" cy="173" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="242" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="377" cy="388" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="215" r="0.5" style="stroke:#000000"/> -<circle cx="438" cy="229" r="0.5" style="stroke:#000000"/> -<circle cx="446" cy="216" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="238" r="0.5" style="stroke:#000000"/> -<circle cx="224" cy="229" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="181" r="0.5" style="stroke:#000000"/> -<circle cx="270" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="416" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="366" cy="244" r="0.5" style="stroke:#000000"/> -<circle cx="279" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="353" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="70" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="92" r="0.5" style="stroke:#000000"/> -<circle cx="196" cy="362" r="0.5" style="stroke:#000000"/> -<circle cx="234" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="321" cy="367" r="0.5" style="stroke:#000000"/> -<circle cx="251" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="154" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="216" r="0.5" style="stroke:#000000"/> -<circle cx="421" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="215" cy="269" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="224" r="0.5" style="stroke:#000000"/> -<circle cx="79" cy="327" r="0.5" style="stroke:#000000"/> -<circle cx="424" cy="266" r="0.5" style="stroke:#000000"/> -<circle cx="237" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="355" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="239" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="396" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="83" cy="354" r="0.5" style="stroke:#000000"/> -<circle cx="236" cy="434" r="0.5" style="stroke:#000000"/> -<circle cx="439" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="181" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="404" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="362" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="87" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="65" cy="166" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="107" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="60" r="0.5" style="stroke:#000000"/> -<circle cx="123" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="67" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="37" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="62" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="34" r="0.5" style="stroke:#000000"/> -<circle cx="36" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="60" cy="70" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="111" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="55" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="171" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="68" r="0.5" style="stroke:#000000"/> -<circle cx="63" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="86" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="123" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="140" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/> -<circle cx="47" cy="77" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="88" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="87" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="113" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="83" r="0.5" style="stroke:#000000"/> -<circle cx="106" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="80" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="59" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="50" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="20" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="165" r="0.5" style="stroke:#000000"/> -<circle cx="73" cy="56" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="45" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="59" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="116" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="57" r="0.5" style="stroke:#000000"/> -<circle cx="89" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="72" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="53" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="81" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="77" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="104" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="98" cy="160" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="81" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="72" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="89" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="98" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="33" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="105" cy="90" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="83" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="43" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="104" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="47" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="112" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="84" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="77" r="0.5" style="stroke:#000000"/> -<circle cx="121" cy="44" r="0.5" style="stroke:#000000"/> -<circle cx="48" cy="72" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="105" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="79" cy="91" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="58" r="0.5" style="stroke:#000000"/> -<circle cx="97" cy="73" r="0.5" style="stroke:#000000"/> -<circle cx="88" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="80" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="61" r="0.5" style="stroke:#000000"/> -<circle cx="109" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="69" r="0.5" style="stroke:#000000"/> -<circle cx="68" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="121" cy="62" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="50" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="109" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="91" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="97" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="90" cy="92" r="0.5" style="stroke:#000000"/> -<circle cx="53" cy="72" r="0.5" style="stroke:#000000"/> -<circle cx="108" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="64" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="166" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="112" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="54" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="40" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="76" r="0.5" style="stroke:#000000"/> -<circle cx="85" cy="28" r="0.5" style="stroke:#000000"/> -<circle cx="49" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="37" r="0.5" style="stroke:#000000"/> -<circle cx="78" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="128" cy="147" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="56" cy="62" r="0.5" style="stroke:#000000"/> -<circle cx="61" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="44" cy="71" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="86" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="106" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="32" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="170" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="57" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="62" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="61" r="0.5" style="stroke:#000000"/> -<circle cx="33" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="69" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="73" cy="57" r="0.5" style="stroke:#000000"/> -<circle cx="162" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="69" cy="71" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="325" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="171" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="288" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="312" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="166" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="171" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="120" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="172" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="143" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="143" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="313" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="321" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="129" cy="313" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="162" cy="318" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="291" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="325" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="157" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="281" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="321" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="179" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="157" cy="291" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="273" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="276" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="161" cy="318" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="129" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="125" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="328" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="487" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="521" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="108" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="516" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="521" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="470" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="522" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="483" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="493" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="493" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="479" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="519" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="527" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="512" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="507" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="519" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="528" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="529" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="525" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="483" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="477" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="507" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="511" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="484" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="479" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="526" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="474" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="526" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="484" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="475" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="528" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="523" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="277" r="0.5" style="stroke:#000000"/> -<circle cx="235" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="312" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="375" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="363" cy="164" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="343" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="372" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="376" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="299" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="182" cy="162" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="328" cy="75" r="0.5" style="stroke:#000000"/> -<circle cx="180" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="225" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="406" cy="282" r="0.5" style="stroke:#000000"/> -<circle cx="320" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="328" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="221" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="332" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="140" r="0.5" style="stroke:#000000"/> -<circle cx="231" cy="259" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="348" cy="208" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="276" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="348" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="269" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="388" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="172" r="0.5" style="stroke:#000000"/> -<circle cx="200" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="379" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="277" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="187" r="0.5" style="stroke:#000000"/> -<circle cx="324" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="312" cy="204" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="255" r="0.5" style="stroke:#000000"/> -<circle cx="262" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="403" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="207" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="268" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="327" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="412" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="329" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="372" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="328" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="279" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="218" r="0.5" style="stroke:#000000"/> -<circle cx="297" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="308" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="296" cy="312" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="240" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="383" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="247" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="319" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="280" cy="211" r="0.5" style="stroke:#000000"/> -<circle cx="296" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="243" cy="272" r="0.5" style="stroke:#000000"/> -<circle cx="392" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="331" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="181" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="288" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="325" cy="205" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="194" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="397" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="307" cy="204" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="436" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="373" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="172" r="0.5" style="stroke:#000000"/> -<circle cx="360" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="299" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="201" cy="252" r="0.5" style="stroke:#000000"/> -<circle cx="323" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="350" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="170" r="0.5" style="stroke:#000000"/> -<circle cx="349" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="340" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="202" cy="147" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="309" cy="176" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="183" r="0.5" style="stroke:#000000"/> -<circle cx="391" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="210" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="364" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="271" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="149" r="0.5" style="stroke:#000000"/> -<circle cx="278" cy="205" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="363" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="262" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="327" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="194" r="0.5" style="stroke:#000000"/> -<circle cx="333" cy="231" r="0.5" style="stroke:#000000"/> -<circle cx="340" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="271" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="395" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="210" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="441" cy="184" r="0.5" style="stroke:#000000"/> -<circle cx="447" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="191" r="0.5" style="stroke:#000000"/> -<circle cx="281" cy="184" r="0.5" style="stroke:#000000"/> -<circle cx="212" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="164" r="0.5" style="stroke:#000000"/> -<circle cx="425" cy="239" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="322" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="187" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="336" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="272" cy="65" r="0.5" style="stroke:#000000"/> -<circle cx="204" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="82" r="0.5" style="stroke:#000000"/> -<circle cx="259" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="288" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="353" cy="288" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="218" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="226" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="195" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="428" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="274" cy="214" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="180" r="0.5" style="stroke:#000000"/> -<circle cx="172" cy="257" r="0.5" style="stroke:#000000"/> -<circle cx="431" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="290" cy="187" r="0.5" style="stroke:#000000"/> -<circle cx="219" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="230" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="192" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="289" cy="338" r="0.5" style="stroke:#000000"/> -<circle cx="442" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="415" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="384" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="20" cy="98" r="1" style="stroke:#ff0000"/> -<circle cx="50" cy="246" r="1" style="stroke:#ff0000"/> -<circle cx="83" cy="354" r="1" style="stroke:#ff0000"/> -<circle cx="164" cy="416" r="1" style="stroke:#ff0000"/> -<circle cx="236" cy="434" r="1" style="stroke:#ff0000"/> -<circle cx="343" cy="427" r="1" style="stroke:#ff0000"/> -<circle cx="366" cy="412" r="1" style="stroke:#ff0000"/> -<circle cx="379" cy="402" r="1" style="stroke:#ff0000"/> -<circle cx="519" cy="143" r="1" style="stroke:#ff0000"/> -<circle cx="528" cy="126" r="1" style="stroke:#ff0000"/> -<circle cx="529" cy="115" r="1" style="stroke:#ff0000"/> -<circle cx="510" cy="96" r="1" style="stroke:#ff0000"/> -<circle cx="506" cy="95" r="1" style="stroke:#ff0000"/> -<circle cx="117" cy="33" r="1" style="stroke:#ff0000"/> -<circle cx="85" cy="28" r="1" style="stroke:#ff0000"/> -<circle cx="40" cy="64" r="1" style="stroke:#ff0000"/> -</svg> diff --git a/testsuite/tests/dph/quickhull/dph-quickhull-copy-opt.stdout b/testsuite/tests/dph/quickhull/dph-quickhull-copy-opt.stdout deleted file mode 100644 index f6b2d92e9a..0000000000 --- a/testsuite/tests/dph/quickhull/dph-quickhull-copy-opt.stdout +++ /dev/null @@ -1,1019 +0,0 @@ -<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"> -<polygon points="20,98 50,246 83,354 164,416 236,434 343,427 366,412 379,402 519,143 528,126 529,115 510,96 506,95 117,33 85,28 40,64 " style="fill:#d0d0ff;stroke:#000000;stroke-width:1"/> -<circle cx="217" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="266" r="0.5" style="stroke:#000000"/> -<circle cx="191" cy="353" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="416" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="257" r="0.5" style="stroke:#000000"/> -<circle cx="266" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="350" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="334" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="189" cy="151" r="0.5" style="stroke:#000000"/> -<circle cx="308" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="347" cy="160" r="0.5" style="stroke:#000000"/> -<circle cx="251" cy="251" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="397" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="220" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="252" r="0.5" style="stroke:#000000"/> -<circle cx="191" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="84" r="0.5" style="stroke:#000000"/> -<circle cx="90" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="391" cy="360" r="0.5" style="stroke:#000000"/> -<circle cx="277" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="421" r="0.5" style="stroke:#000000"/> -<circle cx="274" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="187" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="343" cy="427" r="0.5" style="stroke:#000000"/> -<circle cx="255" cy="170" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="329" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="261" r="0.5" style="stroke:#000000"/> -<circle cx="214" cy="361" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="219" r="0.5" style="stroke:#000000"/> -<circle cx="227" cy="351" r="0.5" style="stroke:#000000"/> -<circle cx="228" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="314" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="209" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="367" cy="217" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="194" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="251" r="0.5" style="stroke:#000000"/> -<circle cx="355" cy="406" r="0.5" style="stroke:#000000"/> -<circle cx="252" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="219" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="217" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="220" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="207" r="0.5" style="stroke:#000000"/> -<circle cx="266" cy="255" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="200" cy="248" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="360" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="255" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="50" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="231" cy="340" r="0.5" style="stroke:#000000"/> -<circle cx="189" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="188" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="366" cy="412" r="0.5" style="stroke:#000000"/> -<circle cx="183" cy="139" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="399" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="289" cy="404" r="0.5" style="stroke:#000000"/> -<circle cx="346" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="181" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="274" r="0.5" style="stroke:#000000"/> -<circle cx="246" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="201" cy="395" r="0.5" style="stroke:#000000"/> -<circle cx="192" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="399" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="202" cy="221" r="0.5" style="stroke:#000000"/> -<circle cx="361" cy="406" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="180" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="258" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="408" r="0.5" style="stroke:#000000"/> -<circle cx="247" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="174" cy="346" r="0.5" style="stroke:#000000"/> -<circle cx="373" cy="334" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="82" r="0.5" style="stroke:#000000"/> -<circle cx="240" cy="388" r="0.5" style="stroke:#000000"/> -<circle cx="263" cy="225" r="0.5" style="stroke:#000000"/> -<circle cx="252" cy="207" r="0.5" style="stroke:#000000"/> -<circle cx="233" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="234" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="285" cy="264" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="259" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="233" cy="258" r="0.5" style="stroke:#000000"/> -<circle cx="108" cy="336" r="0.5" style="stroke:#000000"/> -<circle cx="379" cy="402" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="432" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="347" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="213" r="0.5" style="stroke:#000000"/> -<circle cx="330" cy="370" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="320" r="0.5" style="stroke:#000000"/> -<circle cx="280" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="304" cy="209" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="304" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="188" cy="215" r="0.5" style="stroke:#000000"/> -<circle cx="263" cy="218" r="0.5" style="stroke:#000000"/> -<circle cx="196" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="371" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="285" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="217" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="335" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="182" r="0.5" style="stroke:#000000"/> -<circle cx="221" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="333" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="199" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="153" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="419" r="0.5" style="stroke:#000000"/> -<circle cx="227" cy="173" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="242" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="377" cy="388" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="215" r="0.5" style="stroke:#000000"/> -<circle cx="438" cy="229" r="0.5" style="stroke:#000000"/> -<circle cx="446" cy="216" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="238" r="0.5" style="stroke:#000000"/> -<circle cx="224" cy="229" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="181" r="0.5" style="stroke:#000000"/> -<circle cx="270" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="416" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="366" cy="244" r="0.5" style="stroke:#000000"/> -<circle cx="279" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="353" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="70" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="92" r="0.5" style="stroke:#000000"/> -<circle cx="196" cy="362" r="0.5" style="stroke:#000000"/> -<circle cx="234" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="321" cy="367" r="0.5" style="stroke:#000000"/> -<circle cx="251" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="154" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="216" r="0.5" style="stroke:#000000"/> -<circle cx="421" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="215" cy="269" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="224" r="0.5" style="stroke:#000000"/> -<circle cx="79" cy="327" r="0.5" style="stroke:#000000"/> -<circle cx="424" cy="266" r="0.5" style="stroke:#000000"/> -<circle cx="237" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="355" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="239" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="396" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="83" cy="354" r="0.5" style="stroke:#000000"/> -<circle cx="236" cy="434" r="0.5" style="stroke:#000000"/> -<circle cx="439" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="181" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="404" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="362" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="87" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="65" cy="166" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="107" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="60" r="0.5" style="stroke:#000000"/> -<circle cx="123" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="67" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="37" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="62" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="34" r="0.5" style="stroke:#000000"/> -<circle cx="36" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="60" cy="70" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="111" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="55" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="171" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="68" r="0.5" style="stroke:#000000"/> -<circle cx="63" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="86" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="123" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="140" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/> -<circle cx="47" cy="77" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="88" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="87" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="113" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="83" r="0.5" style="stroke:#000000"/> -<circle cx="106" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="80" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="59" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="50" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="20" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="165" r="0.5" style="stroke:#000000"/> -<circle cx="73" cy="56" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="45" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="59" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="116" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="57" r="0.5" style="stroke:#000000"/> -<circle cx="89" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="72" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="53" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="81" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="77" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="104" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="98" cy="160" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="81" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="72" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="89" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="98" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="33" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="105" cy="90" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="83" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="43" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="104" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="47" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="112" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="84" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="77" r="0.5" style="stroke:#000000"/> -<circle cx="121" cy="44" r="0.5" style="stroke:#000000"/> -<circle cx="48" cy="72" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="105" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="79" cy="91" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="58" r="0.5" style="stroke:#000000"/> -<circle cx="97" cy="73" r="0.5" style="stroke:#000000"/> -<circle cx="88" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="80" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="61" r="0.5" style="stroke:#000000"/> -<circle cx="109" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="69" r="0.5" style="stroke:#000000"/> -<circle cx="68" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="121" cy="62" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="50" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="109" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="91" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="97" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="90" cy="92" r="0.5" style="stroke:#000000"/> -<circle cx="53" cy="72" r="0.5" style="stroke:#000000"/> -<circle cx="108" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="64" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="166" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="112" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="54" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="40" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="76" r="0.5" style="stroke:#000000"/> -<circle cx="85" cy="28" r="0.5" style="stroke:#000000"/> -<circle cx="49" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="37" r="0.5" style="stroke:#000000"/> -<circle cx="78" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="128" cy="147" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="56" cy="62" r="0.5" style="stroke:#000000"/> -<circle cx="61" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="44" cy="71" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="86" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="106" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="32" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="170" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="57" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="62" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="61" r="0.5" style="stroke:#000000"/> -<circle cx="33" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="69" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="73" cy="57" r="0.5" style="stroke:#000000"/> -<circle cx="162" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="69" cy="71" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="325" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="171" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="288" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="312" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="166" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="171" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="120" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="172" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="143" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="143" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="313" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="321" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="129" cy="313" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="162" cy="318" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="291" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="325" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="157" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="281" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="321" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="179" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="157" cy="291" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="273" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="276" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="161" cy="318" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="129" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="125" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="328" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="487" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="521" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="108" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="516" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="521" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="470" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="522" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="483" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="493" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="493" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="479" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="519" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="527" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="512" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="507" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="519" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="528" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="529" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="525" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="483" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="477" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="507" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="511" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="484" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="479" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="526" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="474" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="526" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="484" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="475" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="528" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="523" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="277" r="0.5" style="stroke:#000000"/> -<circle cx="235" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="312" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="375" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="363" cy="164" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="343" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="372" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="376" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="299" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="182" cy="162" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="328" cy="75" r="0.5" style="stroke:#000000"/> -<circle cx="180" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="225" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="406" cy="282" r="0.5" style="stroke:#000000"/> -<circle cx="320" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="328" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="221" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="332" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="140" r="0.5" style="stroke:#000000"/> -<circle cx="231" cy="259" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="348" cy="208" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="276" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="348" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="269" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="388" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="172" r="0.5" style="stroke:#000000"/> -<circle cx="200" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="379" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="277" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="187" r="0.5" style="stroke:#000000"/> -<circle cx="324" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="312" cy="204" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="255" r="0.5" style="stroke:#000000"/> -<circle cx="262" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="403" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="207" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="268" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="327" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="412" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="329" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="372" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="328" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="279" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="218" r="0.5" style="stroke:#000000"/> -<circle cx="297" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="308" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="296" cy="312" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="240" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="383" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="247" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="319" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="280" cy="211" r="0.5" style="stroke:#000000"/> -<circle cx="296" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="243" cy="272" r="0.5" style="stroke:#000000"/> -<circle cx="392" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="331" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="181" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="288" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="325" cy="205" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="194" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="397" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="307" cy="204" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="436" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="373" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="172" r="0.5" style="stroke:#000000"/> -<circle cx="360" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="299" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="201" cy="252" r="0.5" style="stroke:#000000"/> -<circle cx="323" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="350" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="170" r="0.5" style="stroke:#000000"/> -<circle cx="349" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="340" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="202" cy="147" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="309" cy="176" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="183" r="0.5" style="stroke:#000000"/> -<circle cx="391" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="210" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="364" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="271" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="149" r="0.5" style="stroke:#000000"/> -<circle cx="278" cy="205" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="363" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="262" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="327" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="194" r="0.5" style="stroke:#000000"/> -<circle cx="333" cy="231" r="0.5" style="stroke:#000000"/> -<circle cx="340" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="271" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="395" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="210" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="441" cy="184" r="0.5" style="stroke:#000000"/> -<circle cx="447" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="191" r="0.5" style="stroke:#000000"/> -<circle cx="281" cy="184" r="0.5" style="stroke:#000000"/> -<circle cx="212" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="164" r="0.5" style="stroke:#000000"/> -<circle cx="425" cy="239" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="322" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="187" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="336" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="272" cy="65" r="0.5" style="stroke:#000000"/> -<circle cx="204" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="82" r="0.5" style="stroke:#000000"/> -<circle cx="259" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="288" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="353" cy="288" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="218" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="226" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="195" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="428" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="274" cy="214" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="180" r="0.5" style="stroke:#000000"/> -<circle cx="172" cy="257" r="0.5" style="stroke:#000000"/> -<circle cx="431" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="290" cy="187" r="0.5" style="stroke:#000000"/> -<circle cx="219" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="230" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="192" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="289" cy="338" r="0.5" style="stroke:#000000"/> -<circle cx="442" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="415" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="384" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="20" cy="98" r="1" style="stroke:#ff0000"/> -<circle cx="50" cy="246" r="1" style="stroke:#ff0000"/> -<circle cx="83" cy="354" r="1" style="stroke:#ff0000"/> -<circle cx="164" cy="416" r="1" style="stroke:#ff0000"/> -<circle cx="236" cy="434" r="1" style="stroke:#ff0000"/> -<circle cx="343" cy="427" r="1" style="stroke:#ff0000"/> -<circle cx="366" cy="412" r="1" style="stroke:#ff0000"/> -<circle cx="379" cy="402" r="1" style="stroke:#ff0000"/> -<circle cx="519" cy="143" r="1" style="stroke:#ff0000"/> -<circle cx="528" cy="126" r="1" style="stroke:#ff0000"/> -<circle cx="529" cy="115" r="1" style="stroke:#ff0000"/> -<circle cx="510" cy="96" r="1" style="stroke:#ff0000"/> -<circle cx="506" cy="95" r="1" style="stroke:#ff0000"/> -<circle cx="117" cy="33" r="1" style="stroke:#ff0000"/> -<circle cx="85" cy="28" r="1" style="stroke:#ff0000"/> -<circle cx="40" cy="64" r="1" style="stroke:#ff0000"/> -</svg> diff --git a/testsuite/tests/dph/quickhull/dph-quickhull-vseg-fast.stdout b/testsuite/tests/dph/quickhull/dph-quickhull-vseg-fast.stdout deleted file mode 100644 index f6b2d92e9a..0000000000 --- a/testsuite/tests/dph/quickhull/dph-quickhull-vseg-fast.stdout +++ /dev/null @@ -1,1019 +0,0 @@ -<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"> -<polygon points="20,98 50,246 83,354 164,416 236,434 343,427 366,412 379,402 519,143 528,126 529,115 510,96 506,95 117,33 85,28 40,64 " style="fill:#d0d0ff;stroke:#000000;stroke-width:1"/> -<circle cx="217" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="266" r="0.5" style="stroke:#000000"/> -<circle cx="191" cy="353" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="416" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="257" r="0.5" style="stroke:#000000"/> -<circle cx="266" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="350" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="334" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="189" cy="151" r="0.5" style="stroke:#000000"/> -<circle cx="308" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="347" cy="160" r="0.5" style="stroke:#000000"/> -<circle cx="251" cy="251" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="397" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="220" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="252" r="0.5" style="stroke:#000000"/> -<circle cx="191" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="84" r="0.5" style="stroke:#000000"/> -<circle cx="90" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="391" cy="360" r="0.5" style="stroke:#000000"/> -<circle cx="277" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="421" r="0.5" style="stroke:#000000"/> -<circle cx="274" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="187" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="343" cy="427" r="0.5" style="stroke:#000000"/> -<circle cx="255" cy="170" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="329" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="261" r="0.5" style="stroke:#000000"/> -<circle cx="214" cy="361" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="219" r="0.5" style="stroke:#000000"/> -<circle cx="227" cy="351" r="0.5" style="stroke:#000000"/> -<circle cx="228" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="314" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="209" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="367" cy="217" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="194" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="251" r="0.5" style="stroke:#000000"/> -<circle cx="355" cy="406" r="0.5" style="stroke:#000000"/> -<circle cx="252" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="219" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="217" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="220" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="207" r="0.5" style="stroke:#000000"/> -<circle cx="266" cy="255" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="200" cy="248" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="360" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="255" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="50" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="231" cy="340" r="0.5" style="stroke:#000000"/> -<circle cx="189" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="188" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="366" cy="412" r="0.5" style="stroke:#000000"/> -<circle cx="183" cy="139" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="399" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="289" cy="404" r="0.5" style="stroke:#000000"/> -<circle cx="346" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="181" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="274" r="0.5" style="stroke:#000000"/> -<circle cx="246" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="201" cy="395" r="0.5" style="stroke:#000000"/> -<circle cx="192" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="399" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="202" cy="221" r="0.5" style="stroke:#000000"/> -<circle cx="361" cy="406" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="180" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="258" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="408" r="0.5" style="stroke:#000000"/> -<circle cx="247" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="174" cy="346" r="0.5" style="stroke:#000000"/> -<circle cx="373" cy="334" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="82" r="0.5" style="stroke:#000000"/> -<circle cx="240" cy="388" r="0.5" style="stroke:#000000"/> -<circle cx="263" cy="225" r="0.5" style="stroke:#000000"/> -<circle cx="252" cy="207" r="0.5" style="stroke:#000000"/> -<circle cx="233" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="234" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="285" cy="264" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="259" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="233" cy="258" r="0.5" style="stroke:#000000"/> -<circle cx="108" cy="336" r="0.5" style="stroke:#000000"/> -<circle cx="379" cy="402" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="432" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="347" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="213" r="0.5" style="stroke:#000000"/> -<circle cx="330" cy="370" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="320" r="0.5" style="stroke:#000000"/> -<circle cx="280" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="304" cy="209" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="304" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="188" cy="215" r="0.5" style="stroke:#000000"/> -<circle cx="263" cy="218" r="0.5" style="stroke:#000000"/> -<circle cx="196" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="371" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="285" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="217" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="335" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="182" r="0.5" style="stroke:#000000"/> -<circle cx="221" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="333" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="199" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="153" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="419" r="0.5" style="stroke:#000000"/> -<circle cx="227" cy="173" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="242" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="377" cy="388" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="215" r="0.5" style="stroke:#000000"/> -<circle cx="438" cy="229" r="0.5" style="stroke:#000000"/> -<circle cx="446" cy="216" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="238" r="0.5" style="stroke:#000000"/> -<circle cx="224" cy="229" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="181" r="0.5" style="stroke:#000000"/> -<circle cx="270" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="416" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="366" cy="244" r="0.5" style="stroke:#000000"/> -<circle cx="279" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="353" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="70" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="92" r="0.5" style="stroke:#000000"/> -<circle cx="196" cy="362" r="0.5" style="stroke:#000000"/> -<circle cx="234" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="321" cy="367" r="0.5" style="stroke:#000000"/> -<circle cx="251" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="154" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="216" r="0.5" style="stroke:#000000"/> -<circle cx="421" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="215" cy="269" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="224" r="0.5" style="stroke:#000000"/> -<circle cx="79" cy="327" r="0.5" style="stroke:#000000"/> -<circle cx="424" cy="266" r="0.5" style="stroke:#000000"/> -<circle cx="237" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="355" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="239" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="396" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="83" cy="354" r="0.5" style="stroke:#000000"/> -<circle cx="236" cy="434" r="0.5" style="stroke:#000000"/> -<circle cx="439" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="181" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="404" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="362" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="87" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="65" cy="166" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="107" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="60" r="0.5" style="stroke:#000000"/> -<circle cx="123" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="67" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="37" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="62" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="34" r="0.5" style="stroke:#000000"/> -<circle cx="36" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="60" cy="70" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="111" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="55" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="171" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="68" r="0.5" style="stroke:#000000"/> -<circle cx="63" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="86" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="123" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="140" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/> -<circle cx="47" cy="77" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="88" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="87" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="113" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="83" r="0.5" style="stroke:#000000"/> -<circle cx="106" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="80" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="59" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="50" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="20" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="165" r="0.5" style="stroke:#000000"/> -<circle cx="73" cy="56" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="45" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="59" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="116" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="57" r="0.5" style="stroke:#000000"/> -<circle cx="89" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="72" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="53" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="81" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="77" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="104" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="98" cy="160" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="81" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="72" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="89" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="98" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="33" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="105" cy="90" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="83" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="43" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="104" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="47" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="112" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="84" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="77" r="0.5" style="stroke:#000000"/> -<circle cx="121" cy="44" r="0.5" style="stroke:#000000"/> -<circle cx="48" cy="72" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="105" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="79" cy="91" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="58" r="0.5" style="stroke:#000000"/> -<circle cx="97" cy="73" r="0.5" style="stroke:#000000"/> -<circle cx="88" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="80" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="61" r="0.5" style="stroke:#000000"/> -<circle cx="109" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="69" r="0.5" style="stroke:#000000"/> -<circle cx="68" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="121" cy="62" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="50" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="109" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="91" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="97" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="90" cy="92" r="0.5" style="stroke:#000000"/> -<circle cx="53" cy="72" r="0.5" style="stroke:#000000"/> -<circle cx="108" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="64" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="166" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="112" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="54" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="40" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="76" r="0.5" style="stroke:#000000"/> -<circle cx="85" cy="28" r="0.5" style="stroke:#000000"/> -<circle cx="49" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="37" r="0.5" style="stroke:#000000"/> -<circle cx="78" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="128" cy="147" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="56" cy="62" r="0.5" style="stroke:#000000"/> -<circle cx="61" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="44" cy="71" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="86" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="106" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="32" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="170" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="57" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="62" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="61" r="0.5" style="stroke:#000000"/> -<circle cx="33" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="69" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="73" cy="57" r="0.5" style="stroke:#000000"/> -<circle cx="162" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="69" cy="71" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="325" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="171" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="288" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="312" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="166" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="171" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="120" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="172" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="143" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="143" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="313" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="321" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="129" cy="313" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="162" cy="318" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="291" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="325" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="157" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="281" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="321" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="179" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="157" cy="291" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="273" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="276" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="161" cy="318" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="129" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="125" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="328" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="487" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="521" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="108" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="516" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="521" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="470" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="522" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="483" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="493" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="493" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="479" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="519" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="527" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="512" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="507" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="519" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="528" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="529" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="525" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="483" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="477" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="507" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="511" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="484" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="479" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="526" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="474" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="526" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="484" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="475" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="528" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="523" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="277" r="0.5" style="stroke:#000000"/> -<circle cx="235" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="312" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="375" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="363" cy="164" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="343" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="372" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="376" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="299" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="182" cy="162" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="328" cy="75" r="0.5" style="stroke:#000000"/> -<circle cx="180" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="225" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="406" cy="282" r="0.5" style="stroke:#000000"/> -<circle cx="320" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="328" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="221" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="332" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="140" r="0.5" style="stroke:#000000"/> -<circle cx="231" cy="259" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="348" cy="208" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="276" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="348" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="269" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="388" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="172" r="0.5" style="stroke:#000000"/> -<circle cx="200" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="379" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="277" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="187" r="0.5" style="stroke:#000000"/> -<circle cx="324" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="312" cy="204" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="255" r="0.5" style="stroke:#000000"/> -<circle cx="262" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="403" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="207" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="268" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="327" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="412" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="329" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="372" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="328" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="279" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="218" r="0.5" style="stroke:#000000"/> -<circle cx="297" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="308" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="296" cy="312" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="240" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="383" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="247" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="319" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="280" cy="211" r="0.5" style="stroke:#000000"/> -<circle cx="296" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="243" cy="272" r="0.5" style="stroke:#000000"/> -<circle cx="392" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="331" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="181" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="288" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="325" cy="205" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="194" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="397" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="307" cy="204" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="436" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="373" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="172" r="0.5" style="stroke:#000000"/> -<circle cx="360" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="299" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="201" cy="252" r="0.5" style="stroke:#000000"/> -<circle cx="323" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="350" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="170" r="0.5" style="stroke:#000000"/> -<circle cx="349" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="340" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="202" cy="147" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="309" cy="176" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="183" r="0.5" style="stroke:#000000"/> -<circle cx="391" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="210" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="364" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="271" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="149" r="0.5" style="stroke:#000000"/> -<circle cx="278" cy="205" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="363" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="262" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="327" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="194" r="0.5" style="stroke:#000000"/> -<circle cx="333" cy="231" r="0.5" style="stroke:#000000"/> -<circle cx="340" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="271" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="395" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="210" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="441" cy="184" r="0.5" style="stroke:#000000"/> -<circle cx="447" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="191" r="0.5" style="stroke:#000000"/> -<circle cx="281" cy="184" r="0.5" style="stroke:#000000"/> -<circle cx="212" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="164" r="0.5" style="stroke:#000000"/> -<circle cx="425" cy="239" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="322" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="187" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="336" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="272" cy="65" r="0.5" style="stroke:#000000"/> -<circle cx="204" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="82" r="0.5" style="stroke:#000000"/> -<circle cx="259" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="288" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="353" cy="288" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="218" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="226" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="195" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="428" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="274" cy="214" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="180" r="0.5" style="stroke:#000000"/> -<circle cx="172" cy="257" r="0.5" style="stroke:#000000"/> -<circle cx="431" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="290" cy="187" r="0.5" style="stroke:#000000"/> -<circle cx="219" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="230" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="192" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="289" cy="338" r="0.5" style="stroke:#000000"/> -<circle cx="442" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="415" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="384" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="20" cy="98" r="1" style="stroke:#ff0000"/> -<circle cx="50" cy="246" r="1" style="stroke:#ff0000"/> -<circle cx="83" cy="354" r="1" style="stroke:#ff0000"/> -<circle cx="164" cy="416" r="1" style="stroke:#ff0000"/> -<circle cx="236" cy="434" r="1" style="stroke:#ff0000"/> -<circle cx="343" cy="427" r="1" style="stroke:#ff0000"/> -<circle cx="366" cy="412" r="1" style="stroke:#ff0000"/> -<circle cx="379" cy="402" r="1" style="stroke:#ff0000"/> -<circle cx="519" cy="143" r="1" style="stroke:#ff0000"/> -<circle cx="528" cy="126" r="1" style="stroke:#ff0000"/> -<circle cx="529" cy="115" r="1" style="stroke:#ff0000"/> -<circle cx="510" cy="96" r="1" style="stroke:#ff0000"/> -<circle cx="506" cy="95" r="1" style="stroke:#ff0000"/> -<circle cx="117" cy="33" r="1" style="stroke:#ff0000"/> -<circle cx="85" cy="28" r="1" style="stroke:#ff0000"/> -<circle cx="40" cy="64" r="1" style="stroke:#ff0000"/> -</svg> diff --git a/testsuite/tests/dph/quickhull/dph-quickhull-vseg-opt.stdout b/testsuite/tests/dph/quickhull/dph-quickhull-vseg-opt.stdout deleted file mode 100644 index f6b2d92e9a..0000000000 --- a/testsuite/tests/dph/quickhull/dph-quickhull-vseg-opt.stdout +++ /dev/null @@ -1,1019 +0,0 @@ -<svg width="100%" height="100%" version="1.1" xmlns="http://www.w3.org/2000/svg"> -<polygon points="20,98 50,246 83,354 164,416 236,434 343,427 366,412 379,402 519,143 528,126 529,115 510,96 506,95 117,33 85,28 40,64 " style="fill:#d0d0ff;stroke:#000000;stroke-width:1"/> -<circle cx="217" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="266" r="0.5" style="stroke:#000000"/> -<circle cx="191" cy="353" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="416" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="257" r="0.5" style="stroke:#000000"/> -<circle cx="266" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="350" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="334" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="189" cy="151" r="0.5" style="stroke:#000000"/> -<circle cx="308" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="347" cy="160" r="0.5" style="stroke:#000000"/> -<circle cx="251" cy="251" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="397" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="220" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="252" r="0.5" style="stroke:#000000"/> -<circle cx="191" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="84" r="0.5" style="stroke:#000000"/> -<circle cx="90" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="391" cy="360" r="0.5" style="stroke:#000000"/> -<circle cx="277" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="421" r="0.5" style="stroke:#000000"/> -<circle cx="274" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="187" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="343" cy="427" r="0.5" style="stroke:#000000"/> -<circle cx="255" cy="170" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="329" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="261" r="0.5" style="stroke:#000000"/> -<circle cx="214" cy="361" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="219" r="0.5" style="stroke:#000000"/> -<circle cx="227" cy="351" r="0.5" style="stroke:#000000"/> -<circle cx="228" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="314" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="209" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="367" cy="217" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="194" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="251" r="0.5" style="stroke:#000000"/> -<circle cx="355" cy="406" r="0.5" style="stroke:#000000"/> -<circle cx="252" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="219" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="217" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="220" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="207" r="0.5" style="stroke:#000000"/> -<circle cx="266" cy="255" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="200" cy="248" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="360" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="255" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="50" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="231" cy="340" r="0.5" style="stroke:#000000"/> -<circle cx="189" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="188" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="366" cy="412" r="0.5" style="stroke:#000000"/> -<circle cx="183" cy="139" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="399" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="289" cy="404" r="0.5" style="stroke:#000000"/> -<circle cx="346" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="181" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="274" r="0.5" style="stroke:#000000"/> -<circle cx="246" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="201" cy="395" r="0.5" style="stroke:#000000"/> -<circle cx="192" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="399" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="202" cy="221" r="0.5" style="stroke:#000000"/> -<circle cx="361" cy="406" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="180" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="258" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="408" r="0.5" style="stroke:#000000"/> -<circle cx="247" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="174" cy="346" r="0.5" style="stroke:#000000"/> -<circle cx="373" cy="334" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="82" r="0.5" style="stroke:#000000"/> -<circle cx="240" cy="388" r="0.5" style="stroke:#000000"/> -<circle cx="263" cy="225" r="0.5" style="stroke:#000000"/> -<circle cx="252" cy="207" r="0.5" style="stroke:#000000"/> -<circle cx="233" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="234" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="285" cy="264" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="259" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="233" cy="258" r="0.5" style="stroke:#000000"/> -<circle cx="108" cy="336" r="0.5" style="stroke:#000000"/> -<circle cx="379" cy="402" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="432" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="347" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="213" r="0.5" style="stroke:#000000"/> -<circle cx="330" cy="370" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="320" r="0.5" style="stroke:#000000"/> -<circle cx="280" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="304" cy="209" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="304" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="188" cy="215" r="0.5" style="stroke:#000000"/> -<circle cx="263" cy="218" r="0.5" style="stroke:#000000"/> -<circle cx="196" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="371" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="285" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="217" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="335" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="182" r="0.5" style="stroke:#000000"/> -<circle cx="221" cy="256" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="398" r="0.5" style="stroke:#000000"/> -<circle cx="333" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="199" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="153" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="419" r="0.5" style="stroke:#000000"/> -<circle cx="227" cy="173" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="242" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="246" r="0.5" style="stroke:#000000"/> -<circle cx="377" cy="388" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="215" r="0.5" style="stroke:#000000"/> -<circle cx="438" cy="229" r="0.5" style="stroke:#000000"/> -<circle cx="446" cy="216" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="238" r="0.5" style="stroke:#000000"/> -<circle cx="224" cy="229" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="181" r="0.5" style="stroke:#000000"/> -<circle cx="270" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="416" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="366" cy="244" r="0.5" style="stroke:#000000"/> -<circle cx="279" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="353" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="70" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="92" r="0.5" style="stroke:#000000"/> -<circle cx="196" cy="362" r="0.5" style="stroke:#000000"/> -<circle cx="234" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="321" cy="367" r="0.5" style="stroke:#000000"/> -<circle cx="251" cy="249" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="154" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="216" r="0.5" style="stroke:#000000"/> -<circle cx="421" cy="250" r="0.5" style="stroke:#000000"/> -<circle cx="215" cy="269" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="224" r="0.5" style="stroke:#000000"/> -<circle cx="79" cy="327" r="0.5" style="stroke:#000000"/> -<circle cx="424" cy="266" r="0.5" style="stroke:#000000"/> -<circle cx="237" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="253" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="355" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="239" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="396" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="83" cy="354" r="0.5" style="stroke:#000000"/> -<circle cx="236" cy="434" r="0.5" style="stroke:#000000"/> -<circle cx="439" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="181" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="404" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="362" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="87" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="65" cy="166" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="107" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="60" r="0.5" style="stroke:#000000"/> -<circle cx="123" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="67" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="76" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="37" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="62" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="34" r="0.5" style="stroke:#000000"/> -<circle cx="36" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="60" cy="70" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="111" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="55" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="171" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="68" r="0.5" style="stroke:#000000"/> -<circle cx="63" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="86" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="123" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="140" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="78" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/> -<circle cx="47" cy="77" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="88" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="87" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="113" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="83" r="0.5" style="stroke:#000000"/> -<circle cx="106" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="80" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="59" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="50" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="20" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="165" r="0.5" style="stroke:#000000"/> -<circle cx="73" cy="56" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="45" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="59" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="116" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="115" cy="57" r="0.5" style="stroke:#000000"/> -<circle cx="89" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="72" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="53" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="81" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="77" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="104" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="98" cy="160" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="81" cy="88" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="72" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="103" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="89" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="98" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="33" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="105" cy="90" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="83" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="43" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="104" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="93" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="70" cy="85" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="99" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="47" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="112" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="122" cy="84" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="77" r="0.5" style="stroke:#000000"/> -<circle cx="121" cy="44" r="0.5" style="stroke:#000000"/> -<circle cx="48" cy="72" r="0.5" style="stroke:#000000"/> -<circle cx="75" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="105" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="79" cy="91" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="114" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="80" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="58" r="0.5" style="stroke:#000000"/> -<circle cx="97" cy="73" r="0.5" style="stroke:#000000"/> -<circle cx="88" cy="102" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="80" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="61" r="0.5" style="stroke:#000000"/> -<circle cx="109" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="91" cy="69" r="0.5" style="stroke:#000000"/> -<circle cx="68" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="117" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="121" cy="62" r="0.5" style="stroke:#000000"/> -<circle cx="84" cy="50" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="46" r="0.5" style="stroke:#000000"/> -<circle cx="102" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="109" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="91" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="87" r="0.5" style="stroke:#000000"/> -<circle cx="97" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="90" cy="92" r="0.5" style="stroke:#000000"/> -<circle cx="53" cy="72" r="0.5" style="stroke:#000000"/> -<circle cx="108" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="110" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="64" cy="81" r="0.5" style="stroke:#000000"/> -<circle cx="166" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="112" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="54" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="40" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="79" r="0.5" style="stroke:#000000"/> -<circle cx="96" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="119" cy="76" r="0.5" style="stroke:#000000"/> -<circle cx="85" cy="28" r="0.5" style="stroke:#000000"/> -<circle cx="49" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="37" r="0.5" style="stroke:#000000"/> -<circle cx="78" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="100" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="128" cy="147" r="0.5" style="stroke:#000000"/> -<circle cx="101" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="56" cy="62" r="0.5" style="stroke:#000000"/> -<circle cx="61" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="44" cy="71" r="0.5" style="stroke:#000000"/> -<circle cx="92" cy="86" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="86" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="52" cy="63" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="98" r="0.5" style="stroke:#000000"/> -<circle cx="106" cy="89" r="0.5" style="stroke:#000000"/> -<circle cx="32" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="170" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="57" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="62" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="95" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="71" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="61" r="0.5" style="stroke:#000000"/> -<circle cx="33" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="94" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="69" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="73" cy="57" r="0.5" style="stroke:#000000"/> -<circle cx="162" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="69" cy="71" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="64" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="137" cy="325" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/> -<circle cx="126" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="171" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="326" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="288" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="312" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="166" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="171" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="120" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="172" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="304" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="143" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="143" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="313" r="0.5" style="stroke:#000000"/> -<circle cx="156" cy="275" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="321" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="129" cy="313" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="323" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="177" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="165" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="162" cy="318" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="294" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="291" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="130" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="141" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="168" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="155" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="163" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="307" r="0.5" style="stroke:#000000"/> -<circle cx="164" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="325" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="157" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="158" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="281" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="280" r="0.5" style="stroke:#000000"/> -<circle cx="151" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="169" cy="321" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="305" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="179" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="149" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="146" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="153" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="293" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="308" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="154" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="133" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="127" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="292" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="157" cy="291" r="0.5" style="stroke:#000000"/> -<circle cx="144" cy="273" r="0.5" style="stroke:#000000"/> -<circle cx="131" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="160" cy="276" r="0.5" style="stroke:#000000"/> -<circle cx="142" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="161" cy="318" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="135" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="129" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="147" cy="295" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="300" r="0.5" style="stroke:#000000"/> -<circle cx="145" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="132" cy="286" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="299" r="0.5" style="stroke:#000000"/> -<circle cx="152" cy="296" r="0.5" style="stroke:#000000"/> -<circle cx="124" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="176" cy="302" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="134" cy="301" r="0.5" style="stroke:#000000"/> -<circle cx="136" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="298" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="139" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="159" cy="285" r="0.5" style="stroke:#000000"/> -<circle cx="125" cy="316" r="0.5" style="stroke:#000000"/> -<circle cx="148" cy="328" r="0.5" style="stroke:#000000"/> -<circle cx="178" cy="306" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="140" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="173" cy="297" r="0.5" style="stroke:#000000"/> -<circle cx="138" cy="289" r="0.5" style="stroke:#000000"/> -<circle cx="167" cy="287" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="487" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="476" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="521" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="108" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="135" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="516" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="521" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="470" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="103" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="522" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="483" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="124" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="493" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="493" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="134" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="506" cy="95" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="479" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="519" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="527" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="515" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="512" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="114" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="480" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="491" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="518" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="505" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="513" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="127" r="0.5" style="stroke:#000000"/> -<circle cx="514" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="507" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="508" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="101" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="501" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="519" cy="141" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="125" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="528" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="529" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="499" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="496" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="503" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="113" r="0.5" style="stroke:#000000"/> -<circle cx="525" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="504" cy="110" r="0.5" style="stroke:#000000"/> -<circle cx="483" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="477" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="112" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="507" cy="111" r="0.5" style="stroke:#000000"/> -<circle cx="494" cy="93" r="0.5" style="stroke:#000000"/> -<circle cx="481" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="510" cy="96" r="0.5" style="stroke:#000000"/> -<circle cx="492" cy="137" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="511" cy="138" r="0.5" style="stroke:#000000"/> -<circle cx="500" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="484" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="485" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="479" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="497" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="526" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="495" cy="123" r="0.5" style="stroke:#000000"/> -<circle cx="482" cy="106" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="119" r="0.5" style="stroke:#000000"/> -<circle cx="502" cy="116" r="0.5" style="stroke:#000000"/> -<circle cx="474" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="526" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="484" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="486" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="118" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="489" cy="142" r="0.5" style="stroke:#000000"/> -<circle cx="509" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="475" cy="136" r="0.5" style="stroke:#000000"/> -<circle cx="498" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="528" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="490" cy="104" r="0.5" style="stroke:#000000"/> -<circle cx="523" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="488" cy="109" r="0.5" style="stroke:#000000"/> -<circle cx="517" cy="107" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="277" r="0.5" style="stroke:#000000"/> -<circle cx="235" cy="324" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="312" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="375" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="363" cy="164" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="343" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="372" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="238" cy="232" r="0.5" style="stroke:#000000"/> -<circle cx="376" cy="310" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="299" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="256" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="182" cy="162" r="0.5" style="stroke:#000000"/> -<circle cx="229" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="328" cy="75" r="0.5" style="stroke:#000000"/> -<circle cx="180" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="225" cy="144" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="406" cy="282" r="0.5" style="stroke:#000000"/> -<circle cx="320" cy="245" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="328" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="115" r="0.5" style="stroke:#000000"/> -<circle cx="253" cy="221" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="332" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="140" r="0.5" style="stroke:#000000"/> -<circle cx="231" cy="259" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="348" cy="208" r="0.5" style="stroke:#000000"/> -<circle cx="273" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="342" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="177" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="276" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="348" cy="222" r="0.5" style="stroke:#000000"/> -<circle cx="269" cy="159" r="0.5" style="stroke:#000000"/> -<circle cx="388" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="172" r="0.5" style="stroke:#000000"/> -<circle cx="200" cy="158" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="99" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="201" r="0.5" style="stroke:#000000"/> -<circle cx="379" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="277" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="275" cy="187" r="0.5" style="stroke:#000000"/> -<circle cx="324" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="312" cy="204" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="255" r="0.5" style="stroke:#000000"/> -<circle cx="262" cy="198" r="0.5" style="stroke:#000000"/> -<circle cx="403" cy="283" r="0.5" style="stroke:#000000"/> -<circle cx="223" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="207" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="237" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="150" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="268" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="322" r="0.5" style="stroke:#000000"/> -<circle cx="250" cy="117" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="97" r="0.5" style="stroke:#000000"/> -<circle cx="327" cy="122" r="0.5" style="stroke:#000000"/> -<circle cx="412" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="329" cy="315" r="0.5" style="stroke:#000000"/> -<circle cx="372" cy="130" r="0.5" style="stroke:#000000"/> -<circle cx="328" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="279" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="248" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="218" r="0.5" style="stroke:#000000"/> -<circle cx="297" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="257" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="308" cy="235" r="0.5" style="stroke:#000000"/> -<circle cx="296" cy="312" r="0.5" style="stroke:#000000"/> -<circle cx="305" cy="240" r="0.5" style="stroke:#000000"/> -<circle cx="264" cy="178" r="0.5" style="stroke:#000000"/> -<circle cx="383" cy="317" r="0.5" style="stroke:#000000"/> -<circle cx="319" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="247" cy="241" r="0.5" style="stroke:#000000"/> -<circle cx="306" cy="193" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="319" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="280" cy="211" r="0.5" style="stroke:#000000"/> -<circle cx="296" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="243" cy="272" r="0.5" style="stroke:#000000"/> -<circle cx="392" cy="263" r="0.5" style="stroke:#000000"/> -<circle cx="331" cy="74" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="181" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="168" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="288" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="325" cy="205" r="0.5" style="stroke:#000000"/> -<circle cx="287" cy="206" r="0.5" style="stroke:#000000"/> -<circle cx="194" cy="265" r="0.5" style="stroke:#000000"/> -<circle cx="397" cy="314" r="0.5" style="stroke:#000000"/> -<circle cx="307" cy="204" r="0.5" style="stroke:#000000"/> -<circle cx="286" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="436" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="373" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="298" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="244" cy="172" r="0.5" style="stroke:#000000"/> -<circle cx="360" cy="290" r="0.5" style="stroke:#000000"/> -<circle cx="299" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="201" cy="252" r="0.5" style="stroke:#000000"/> -<circle cx="323" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="350" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="341" cy="170" r="0.5" style="stroke:#000000"/> -<circle cx="349" cy="157" r="0.5" style="stroke:#000000"/> -<circle cx="340" cy="94" r="0.5" style="stroke:#000000"/> -<circle cx="202" cy="147" r="0.5" style="stroke:#000000"/> -<circle cx="254" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="309" cy="176" r="0.5" style="stroke:#000000"/> -<circle cx="260" cy="183" r="0.5" style="stroke:#000000"/> -<circle cx="391" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="326" cy="210" r="0.5" style="stroke:#000000"/> -<circle cx="210" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="364" cy="163" r="0.5" style="stroke:#000000"/> -<circle cx="271" cy="121" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="149" r="0.5" style="stroke:#000000"/> -<circle cx="278" cy="205" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="311" r="0.5" style="stroke:#000000"/> -<circle cx="363" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="262" cy="236" r="0.5" style="stroke:#000000"/> -<circle cx="369" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="327" r="0.5" style="stroke:#000000"/> -<circle cx="283" cy="143" r="0.5" style="stroke:#000000"/> -<circle cx="239" cy="194" r="0.5" style="stroke:#000000"/> -<circle cx="333" cy="231" r="0.5" style="stroke:#000000"/> -<circle cx="340" cy="129" r="0.5" style="stroke:#000000"/> -<circle cx="271" cy="105" r="0.5" style="stroke:#000000"/> -<circle cx="302" cy="100" r="0.5" style="stroke:#000000"/> -<circle cx="303" cy="197" r="0.5" style="stroke:#000000"/> -<circle cx="395" cy="303" r="0.5" style="stroke:#000000"/> -<circle cx="210" cy="227" r="0.5" style="stroke:#000000"/> -<circle cx="317" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="441" cy="184" r="0.5" style="stroke:#000000"/> -<circle cx="447" cy="175" r="0.5" style="stroke:#000000"/> -<circle cx="294" cy="191" r="0.5" style="stroke:#000000"/> -<circle cx="281" cy="184" r="0.5" style="stroke:#000000"/> -<circle cx="212" cy="148" r="0.5" style="stroke:#000000"/> -<circle cx="315" cy="179" r="0.5" style="stroke:#000000"/> -<circle cx="318" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="232" cy="164" r="0.5" style="stroke:#000000"/> -<circle cx="425" cy="239" r="0.5" style="stroke:#000000"/> -<circle cx="387" cy="195" r="0.5" style="stroke:#000000"/> -<circle cx="322" cy="152" r="0.5" style="stroke:#000000"/> -<circle cx="213" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="187" cy="132" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="161" r="0.5" style="stroke:#000000"/> -<circle cx="292" cy="202" r="0.5" style="stroke:#000000"/> -<circle cx="336" cy="155" r="0.5" style="stroke:#000000"/> -<circle cx="272" cy="65" r="0.5" style="stroke:#000000"/> -<circle cx="204" cy="190" r="0.5" style="stroke:#000000"/> -<circle cx="351" cy="82" r="0.5" style="stroke:#000000"/> -<circle cx="259" cy="284" r="0.5" style="stroke:#000000"/> -<circle cx="288" cy="189" r="0.5" style="stroke:#000000"/> -<circle cx="300" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="353" cy="288" r="0.5" style="stroke:#000000"/> -<circle cx="301" cy="199" r="0.5" style="stroke:#000000"/> -<circle cx="218" cy="128" r="0.5" style="stroke:#000000"/> -<circle cx="226" cy="243" r="0.5" style="stroke:#000000"/> -<circle cx="195" cy="146" r="0.5" style="stroke:#000000"/> -<circle cx="284" cy="174" r="0.5" style="stroke:#000000"/> -<circle cx="428" cy="200" r="0.5" style="stroke:#000000"/> -<circle cx="274" cy="214" r="0.5" style="stroke:#000000"/> -<circle cx="211" cy="131" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="196" r="0.5" style="stroke:#000000"/> -<circle cx="310" cy="180" r="0.5" style="stroke:#000000"/> -<circle cx="172" cy="257" r="0.5" style="stroke:#000000"/> -<circle cx="431" cy="212" r="0.5" style="stroke:#000000"/> -<circle cx="290" cy="187" r="0.5" style="stroke:#000000"/> -<circle cx="219" cy="203" r="0.5" style="stroke:#000000"/> -<circle cx="230" cy="279" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="192" r="0.5" style="stroke:#000000"/> -<circle cx="291" cy="254" r="0.5" style="stroke:#000000"/> -<circle cx="245" cy="309" r="0.5" style="stroke:#000000"/> -<circle cx="345" cy="126" r="0.5" style="stroke:#000000"/> -<circle cx="175" cy="278" r="0.5" style="stroke:#000000"/> -<circle cx="289" cy="338" r="0.5" style="stroke:#000000"/> -<circle cx="442" cy="228" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="249" cy="120" r="0.5" style="stroke:#000000"/> -<circle cx="415" cy="186" r="0.5" style="stroke:#000000"/> -<circle cx="242" cy="145" r="0.5" style="stroke:#000000"/> -<circle cx="384" cy="133" r="0.5" style="stroke:#000000"/> -<circle cx="20" cy="98" r="1" style="stroke:#ff0000"/> -<circle cx="50" cy="246" r="1" style="stroke:#ff0000"/> -<circle cx="83" cy="354" r="1" style="stroke:#ff0000"/> -<circle cx="164" cy="416" r="1" style="stroke:#ff0000"/> -<circle cx="236" cy="434" r="1" style="stroke:#ff0000"/> -<circle cx="343" cy="427" r="1" style="stroke:#ff0000"/> -<circle cx="366" cy="412" r="1" style="stroke:#ff0000"/> -<circle cx="379" cy="402" r="1" style="stroke:#ff0000"/> -<circle cx="519" cy="143" r="1" style="stroke:#ff0000"/> -<circle cx="528" cy="126" r="1" style="stroke:#ff0000"/> -<circle cx="529" cy="115" r="1" style="stroke:#ff0000"/> -<circle cx="510" cy="96" r="1" style="stroke:#ff0000"/> -<circle cx="506" cy="95" r="1" style="stroke:#ff0000"/> -<circle cx="117" cy="33" r="1" style="stroke:#ff0000"/> -<circle cx="85" cy="28" r="1" style="stroke:#ff0000"/> -<circle cx="40" cy="64" r="1" style="stroke:#ff0000"/> -</svg> diff --git a/testsuite/tests/dph/quickhull/dph-quickhull.T b/testsuite/tests/dph/quickhull/dph-quickhull.T deleted file mode 100644 index 7d8cf322ab..0000000000 --- a/testsuite/tests/dph/quickhull/dph-quickhull.T +++ /dev/null @@ -1,20 +0,0 @@ - -test ('dph-quickhull-copy-fast' - , [ outputdir('copy-fast') - , reqlib('dph-lifted-copy') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -fno-vectorisation-avoidance -package dph-lifted-copy -package dph-prim-par']) - - -test ('dph-quickhull-vseg-fast' - , [ outputdir('vseg-fast') - , reqlib('dph-lifted-vseg') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-vseg -package dph-prim-par']) - diff --git a/testsuite/tests/dph/smvm/Main.hs b/testsuite/tests/dph/smvm/Main.hs deleted file mode 100644 index d6b9a0f55c..0000000000 --- a/testsuite/tests/dph/smvm/Main.hs +++ /dev/null @@ -1,60 +0,0 @@ -{-# LANGUAGE TypeOperators #-} - -import SMVMVect (smvm) - -import Control.Exception (evaluate) -import System.IO -import System.Environment - -import qualified Data.Array.Parallel.Unlifted as U -import Data.Array.Parallel.Prelude -import Data.Array.Parallel.PArray as P - - --- Load sparse matrix from a file -loadSM :: String - -> IO (PArray (PArray (Int, Double)), PArray Double) - -loadSM s - = do - (segd, m, v) <- loadSM' s - return $ (nestUSegd segd (fromUArray2 m), fromUArray v) - - -loadSM' :: String - -> IO ( U.Segd - , U.Array (Int, Double) - , U.Array Double) -loadSM' fname = - do - h <- openBinaryFile fname ReadMode - lengths <- U.hGet h - indices <- U.hGet h - values <- U.hGet h - dv <- U.hGet h - let segd = U.lengthsToSegd lengths - m = U.zip indices values - evaluate lengths - evaluate indices - evaluate values - evaluate dv - return (segd, m, dv) - -main - = do [inFile, outFile] <- getArgs - (m, v) <- loadSM inFile - let result = smvm m v - - -- ignore wibbles in low-order bits - let output - = (unlines - $ map (take 12) - $ map show - $ P.toList result) - ++ ("SUM = " - ++ (take 12 $ show $ sum $ P.toList result) - ++ "\n") - - -- check our result against the provided outFile - outputCheck <- readFile outFile - print $ output == outputCheck diff --git a/testsuite/tests/dph/smvm/Makefile b/testsuite/tests/dph/smvm/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/smvm/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/smvm/SMVMVect.hs b/testsuite/tests/dph/smvm/SMVMVect.hs deleted file mode 100644 index 93f3775741..0000000000 --- a/testsuite/tests/dph/smvm/SMVMVect.hs +++ /dev/null @@ -1,17 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS -fvectorise #-} -module SMVMVect (smvm) where - -import Data.Array.Parallel -import Data.Array.Parallel.Prelude.Double as D -import Data.Array.Parallel.Prelude.Int as I - -import qualified Prelude as P - -smvm :: PArray (PArray (Int, Double)) -> PArray Double -> PArray Double -{-# NOINLINE smvm #-} -smvm m v = toPArrayP (smvm' (fromNestedPArrayP m) (fromPArrayP v)) - -smvm' :: [:[: (Int, Double) :]:] -> [:Double:] -> [:Double:] -smvm' m v = [: D.sumP [: x D.* (v !: i) | (i,x) <- row :] | row <- m :] - diff --git a/testsuite/tests/dph/smvm/dph-smvm-copy.stdout b/testsuite/tests/dph/smvm/dph-smvm-copy.stdout deleted file mode 100644 index 0ca95142bb..0000000000 --- a/testsuite/tests/dph/smvm/dph-smvm-copy.stdout +++ /dev/null @@ -1 +0,0 @@ -True diff --git a/testsuite/tests/dph/smvm/dph-smvm-vseg.stdout b/testsuite/tests/dph/smvm/dph-smvm-vseg.stdout deleted file mode 100644 index 0ca95142bb..0000000000 --- a/testsuite/tests/dph/smvm/dph-smvm-vseg.stdout +++ /dev/null @@ -1 +0,0 @@ -True diff --git a/testsuite/tests/dph/smvm/dph-smvm.T b/testsuite/tests/dph/smvm/dph-smvm.T deleted file mode 100644 index f2bf31ab82..0000000000 --- a/testsuite/tests/dph/smvm/dph-smvm.T +++ /dev/null @@ -1,41 +0,0 @@ - - -testFile = 'nothing' -if config.platform.startswith('i386-'): - testFile = 'test-i386.dat' - outFile = 'result-i386.txt' - -elif config.platform.startswith('x86_64-'): - testFile = 'test-x86_64.dat' - outFile = 'result-x86_64.txt' - -elif config.platform.startswith('sparc-'): - testFile = 'test-sparc.dat' - outFile = 'result-sparc.txt' - - -if testFile != 'nothing': - test ('dph-smvm-copy' - , [ outputdir('copy') - , when(fast(), skip) - , reqlib('dph-lifted-copy') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) - , extra_run_opts(testFile + " " + outFile) - ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-copy -package dph-prim-par']) - - test ('dph-smvm-vseg' - , [ outputdir('vseg') - , when(fast(), skip) - , reqlib('dph-lifted-vseg') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) - , extra_run_opts(testFile + " " + outFile) - ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-vseg -package dph-prim-par']) - diff --git a/testsuite/tests/dph/smvm/result-i386.txt b/testsuite/tests/dph/smvm/result-i386.txt deleted file mode 100644 index bf279482ef..0000000000 --- a/testsuite/tests/dph/smvm/result-i386.txt +++ /dev/null @@ -1,101 +0,0 @@ -70.911036010 -6.2813390683 -22.790766463 -138.15513262 -52.633427554 -23.459671609 -39.794269586 -37.387466366 -16.666309389 -86.252836326 -2.0045195528 -89.578046705 -15.195705417 -14.397637033 -9.9571970137 -12.966919776 -314.12848526 -106.92515769 -53.308659874 -187.71842503 -19.814258245 -3.5465802997 -26.462654791 -39.989634289 -27.636953710 -14.238025227 -43.040256543 -2.1571625382 -67.541648911 -24.912387408 -7.6904324146 -2.9650091269 -48.668083695 -56.313556473 -285.31615184 -25.595785904 -49.488178849 -25.310153120 -10.706428715 -80.585871589 -225.85945599 -27.813502732 -36.745192736 -157.41617010 -51.501091484 -30.457678049 -254.13030691 -17.469473192 -60.702335620 -52.376229564 -26.517446882 -46.939308590 -19.961999016 -226.11502829 -69.361878263 -206.34127990 -59.002071706 -23.815778535 -101.90955813 -0.3802732664 -41.728371059 -12.021386376 -20.282213202 -17.500045961 -19.148201048 -73.983800195 -7.6944408324 -20.993610043 -58.350721826 -67.038534218 -31.260033960 -14.283638817 -140.68179300 -31.766861701 -46.639106640 -5.2416016510 -175.49192085 -6.1624941117 -3.0550277985 -51.818892673 -7.8677940322 -22.311195092 -258.22325771 -47.475395836 -104.78223912 -38.825154663 -1.6611687222 -63.278567845 -139.86840253 -72.273773546 -71.487712807 -46.823777361 -125.50127870 -3.7203037750 -48.211248191 -79.659040149 -59.672472372 -73.220258924 -63.910310588 -23.405170831 -SUM = 6054.6294998 diff --git a/testsuite/tests/dph/smvm/result-sparc.txt b/testsuite/tests/dph/smvm/result-sparc.txt deleted file mode 100644 index 8c85795cbc..0000000000 --- a/testsuite/tests/dph/smvm/result-sparc.txt +++ /dev/null @@ -1,101 +0,0 @@ -31.171134675 -136.96399669 -99.558688941 -2.3944559306 -132.07457337 -64.316928783 -17.141482371 -363.11345177 -12.350699032 -62.403552077 -25.836846192 -488.62415222 -90.786181827 -2650.5823673 -28.153073045 -29.698154931 -280.42051630 -264.68315963 -0.0 -17.241401450 -103.44167214 -120.25222269 -0.6481556022 -3.8143291874 -57.942419415 -0.9485226158 -11.722857133 -80.685346313 -497.97232376 -7.3021493591 -0.0 -4.9013220836 -61.582851534 -104.83102162 -12.196177619 -16.799924219 -8.8828491057 -20.672947720 -0.0 -8.9693097972 -66.272730332 -145.39838263 -2.6011327691 -80.289657428 -17.075494290 -0.5897431148 -26.250003553 -114.75531349 -57.010466242 -38.222004332 -5.6130133753 -120.90679901 -106.19820538 -0.0 -22.471060597 -50.616335208 -0.7352665245 -13.632854738 -72.201368578 -54.552907983 -3.2165935380 -31.048444965 -3.3117670262 -224.93467543 -110.02973746 -2.0467456318 -0.0 -7.2930317411 -8.6809940997 -41.756667327 -118.07161086 -358.47370477 -8.1013874742 -9.1189573118 -35.367265915 -10.245691446 -25.785856741 -55.679020534 -83.594437531 -34.102347192 -0.2950061972 -16.641363479 -0.0 -29.534024840 -0.0 -26.338163918 -149.17642877 -0.1698288578 -24.176530881 -57.626923103 -33.976034955 -15.977447399 -0.0 -893.79869661 -117.52170252 -60.450794548 -0.5763239875 -4.9690229931 -14.014097678 -275.53547442 -SUM = 9808.1107603 diff --git a/testsuite/tests/dph/smvm/result-x86_64.txt b/testsuite/tests/dph/smvm/result-x86_64.txt deleted file mode 100644 index ebad60a2b0..0000000000 --- a/testsuite/tests/dph/smvm/result-x86_64.txt +++ /dev/null @@ -1,101 +0,0 @@ -2.3160849869 -26.283679649 -76.729994661 -405.68040155 -55.723673494 -33.938026665 -26.505926115 -52.261424813 -33.397325696 -1.1328178441 -5.3697979892 -9.4419428065 -28.678826876 -61.019008268 -4.5301894841 -43.464645691 -0.0 -34.335714653 -20.798359422 -16.561984995 -17.581964787 -23.948149350 -19.120544306 -30.215710069 -0.7009196726 -51.297030554 -4.4591823094 -209.96809687 -47.289681980 -32.498492600 -13.196267290 -0.9989265108 -1.0341069617 -38.917182375 -7.9955088012 -10.355804741 -20.095073245 -36.647037472 -18.786308469 -14.370553796 -6.3265152208 -28.117268967 -65.265404040 -898.53639610 -2.1015959321 -188.65890412 -31.810545943 -14.182075117 -16.239269064 -27.309800346 -126.26472539 -32.948733352 -20.290181336 -0.0 -40.083403468 -81.626718007 -141.59574874 -8.5797914307 -37.726704414 -0.5807127190 -6.3771256902 -6.3486182511 -5.8655193980 -8.1395223932 -32.695645766 -16.964781766 -5.2863815777 -31.967858939 -21.161490986 -61.257464383 -4.1240057418 -18.099623432 -2.1851562467 -3.7220913984 -55.452918211 -10.289474473 -46.276301220 -23.201718136 -7.6338488432 -45.868472148 -12.976885901 -18.483762115 -143.50458515 -24.999794955 -12.121764180 -6.7194800847 -1.8693415211 -23.848562170 -1092.0362340 -67.588787350 -248.07913042 -0.0 -38.838570262 -13.800391661 -1277.9084108 -53.491216504 -14.325720303 -10.152650478 -17.439312837 -40.696348267 -SUM = 6837.6898296 diff --git a/testsuite/tests/dph/smvm/test-i386.dat b/testsuite/tests/dph/smvm/test-i386.dat Binary files differdeleted file mode 100644 index 4db8d62620..0000000000 --- a/testsuite/tests/dph/smvm/test-i386.dat +++ /dev/null diff --git a/testsuite/tests/dph/smvm/test-sparc.dat b/testsuite/tests/dph/smvm/test-sparc.dat Binary files differdeleted file mode 100644 index 73d2c201cd..0000000000 --- a/testsuite/tests/dph/smvm/test-sparc.dat +++ /dev/null diff --git a/testsuite/tests/dph/smvm/test-x86_64.dat b/testsuite/tests/dph/smvm/test-x86_64.dat Binary files differdeleted file mode 100644 index 08a91f5ab1..0000000000 --- a/testsuite/tests/dph/smvm/test-x86_64.dat +++ /dev/null diff --git a/testsuite/tests/dph/sumnats/Main.hs b/testsuite/tests/dph/sumnats/Main.hs deleted file mode 100644 index 7c3ee7210b..0000000000 --- a/testsuite/tests/dph/sumnats/Main.hs +++ /dev/null @@ -1,21 +0,0 @@ - -import SumNatsVect (sumNats) - --- Solution for 1st Euler problem --- Add all the natural numbers below 1000 that are multiples of 3 or 5. - -solutionLists maxN - = let sumOnetoN n = n * (n+1) `div` 2 - sumStep s n = s * sumOnetoN (n `div` s) - in sumStep 3 (maxN - 1) + sumStep 5 (maxN - 1) - sumStep 15 (maxN - 1) - -solutionLists2 maxN - = sum [ x | x <- [0.. maxN - 1] - , (x `mod` 3 == 0) || (x `mod` 5 == 0) ] - -main - = do let n = 1000 - print $ solutionLists n - print $ solutionLists2 n - print $ sumNats n - diff --git a/testsuite/tests/dph/sumnats/Makefile b/testsuite/tests/dph/sumnats/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/sumnats/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/sumnats/SumNatsVect.hs b/testsuite/tests/dph/sumnats/SumNatsVect.hs deleted file mode 100644 index 187946da4e..0000000000 --- a/testsuite/tests/dph/sumnats/SumNatsVect.hs +++ /dev/null @@ -1,14 +0,0 @@ -{-# LANGUAGE ParallelArrays #-} -{-# OPTIONS -fvectorise #-} -module SumNatsVect (sumNats) where - -import Data.Array.Parallel.Prelude -import Data.Array.Parallel.Prelude.Int as I - -import qualified Prelude as P - -sumNats :: Int -> Int -sumNats maxN - = sumP [: x | x <- enumFromToP 0 (maxN I.- 1) - , (x `mod` 3 I.== 0) || (x `mod` 5 I.== 0) :] - diff --git a/testsuite/tests/dph/sumnats/dph-sumnats-copy.stdout b/testsuite/tests/dph/sumnats/dph-sumnats-copy.stdout deleted file mode 100644 index 8858be2164..0000000000 --- a/testsuite/tests/dph/sumnats/dph-sumnats-copy.stdout +++ /dev/null @@ -1,3 +0,0 @@ -233168 -233168 -233168 diff --git a/testsuite/tests/dph/sumnats/dph-sumnats-vseg.stdout b/testsuite/tests/dph/sumnats/dph-sumnats-vseg.stdout deleted file mode 100644 index 8858be2164..0000000000 --- a/testsuite/tests/dph/sumnats/dph-sumnats-vseg.stdout +++ /dev/null @@ -1,3 +0,0 @@ -233168 -233168 -233168 diff --git a/testsuite/tests/dph/sumnats/dph-sumnats.T b/testsuite/tests/dph/sumnats/dph-sumnats.T deleted file mode 100644 index 66e4b404d6..0000000000 --- a/testsuite/tests/dph/sumnats/dph-sumnats.T +++ /dev/null @@ -1,20 +0,0 @@ - -test ('dph-sumnats-copy' - , [ outputdir('copy') - , reqlib('dph-lifted-copy') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-copy']) - - -test ('dph-sumnats-vseg' - , [ outputdir('vseg') - , reqlib('dph-lifted-vseg') - , reqlib('dph-prim-par') - , only_ways(['normal', 'threaded1', 'threaded2']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-vseg']) - diff --git a/testsuite/tests/dph/words/Main.hs b/testsuite/tests/dph/words/Main.hs deleted file mode 100644 index b7c266921f..0000000000 --- a/testsuite/tests/dph/words/Main.hs +++ /dev/null @@ -1,37 +0,0 @@ - -import WordsVect -import Data.Array.Parallel -import qualified Data.Array.Parallel.Prelude.Word8 as W -import qualified Data.Array.Parallel.PArray as P -import qualified Data.Array.Parallel.Unlifted as U -import Data.Char - -main - = do -- take the filename containing the words as the first arg - let str = "When I look into the looking glass I'm always sure to see" - ++ " no matter how I dodge about, me looking back at me." - - -- convert string to a PArray - let paStr :: PArray W.Word8 - paStr = P.fromUArray $ U.map W.fromInt $ U.fromList $ map ord str - - - -- break the string into words then flatten it back - let str' :: String - str' = map chr - $ map fromIntegral - $ P.toList - $ wordsOfPArray paStr - - - -- count the number of words in the string, using the vectorised program - let wordCountVect = fromIntegral $ wordCountOfPArray paStr - - -- count the number of words with the ye'olde list way - let wordCountList = length $ words str - - -- - putStr $ show str' ++ "\n" - ++ "word count vect = " ++ show wordCountVect ++ "\n" - ++ "word count lists = " ++ show wordCountList ++ "\n" - diff --git a/testsuite/tests/dph/words/Makefile b/testsuite/tests/dph/words/Makefile deleted file mode 100644 index 9101fbd40a..0000000000 --- a/testsuite/tests/dph/words/Makefile +++ /dev/null @@ -1,3 +0,0 @@ -TOP=../../.. -include $(TOP)/mk/boilerplate.mk -include $(TOP)/mk/test.mk diff --git a/testsuite/tests/dph/words/WordsVect.hs b/testsuite/tests/dph/words/WordsVect.hs deleted file mode 100644 index 218e885dac..0000000000 --- a/testsuite/tests/dph/words/WordsVect.hs +++ /dev/null @@ -1,125 +0,0 @@ - --- Break up a string into words in parallel. --- Based on the presentation "Breaking Sequential Habits of Thought", Guy Steele. --- http://groups.csail.mit.edu/mac/users/gjs/6.945/readings/MITApril2009Steele.pdf --- --- NOTE: This is a naive implementation, and I haven't benchmarked it. --- Using parallel arrays in Seg probably isn't helpful for performance, --- but it's a stress test for the vectoriser. --- --- If we actually cared about performance we wouldn't want to recursively --- subdivide the string right down to individual characters. --- -{-# LANGUAGE ParallelArrays, ParallelListComp #-} -{-# OPTIONS -fvectorise #-} - -module WordsVect - ( wordsOfPArray - , wordCountOfPArray ) -where -import qualified Data.Array.Parallel.Prelude.Word8 as W -import Data.Array.Parallel.Prelude.Word8 (Word8) -import Data.Array.Parallel.Prelude.Int as I -import Data.Array.Parallel - -import qualified Prelude as Prel - - --- We can't use the Prelude Char and String types in vectorised code yet.. -type Char = Word8 -char_space = W.fromInt 32 - -type String = [: Char :] - - --- | Word state -data State - = Chunk String - | Seg String -- initial word chunk - [:String:] -- complete words in the middle of the segment - String -- final word chunk - - --- | Compose two wordstates. -plusState :: State -> State -> State -plusState str1 str2 - = case (str1, str2) of - (Chunk as, Chunk bs) -> Chunk (as +:+ bs) - (Chunk as, Seg bl bss br) -> Seg (as +:+ bl) bss br - (Seg al ass ar, Chunk bs) -> Seg al ass (ar +:+ bs) - (Seg al ass ar, Seg bl bss br) -> Seg al (ass +:+ joinEmpty [:ar +:+ bl:] +:+ bss) br - -joinEmpty :: [:[:Word8:]:] -> [:[:Word8:]:] -joinEmpty ws - | lengthP ws I.== 1 && lengthP (ws !: 0) I.== 0 = [::] - | otherwise = ws - - --- | Convert a single char to a wordstate. -stateOfChar :: Char -> State -stateOfChar c - | c W.== char_space = Seg [::] [::] [::] - | otherwise = Chunk [:c:] - - --- | Break this string into words. -stateOfString :: String -> State -stateOfString str - = let len = lengthP str - result - | len I.== 0 = Chunk [::] - | len I.== 1 = stateOfChar (str !: 0) - | otherwise - = let half = len `div` 2 - s1 = sliceP 0 half str - s2 = sliceP half (len I.- half) str - in plusState (stateOfString s1) (stateOfString s2) - in result - - --- | Count the number of words in a string. -countWordsOfState :: State -> Int -countWordsOfState state - = case state of - Chunk c -> wordsInChunkArr c - Seg c1 ws c2 -> wordsInChunkArr c1 I.+ lengthP ws I.+ wordsInChunkArr c2 - -wordsInChunkArr :: [:Word8:] -> Int -wordsInChunkArr arr - | lengthP arr I.== 0 = 0 - | otherwise = 1 - - --- | Flatten a state back to an array of Word8s, --- inserting spaces between the words. -flattenState :: State -> [:Word8:] -flattenState ss - = case ss of - Chunk s -> s - - Seg w1 ws w2 - -> w1 - +:+ [:char_space:] - +:+ concatP [: w +:+ [:char_space:] | w <- ws :] - +:+ w2 - --- Interface ------------------------------------------------------------------ - --- | Break up an array of chars into words then flatten it back. -wordsOfPArray :: PArray Word8 -> PArray Word8 -{-# NOINLINE wordsOfPArray #-} -wordsOfPArray arr - = let str = fromPArrayP arr - state = stateOfString str - strOut = flattenState state - in toPArrayP strOut - - --- | Count the number of words in an array -wordCountOfPArray :: PArray Word8 -> Int -{-# NOINLINE wordCountOfPArray #-} -wordCountOfPArray arr - = let str = fromPArrayP arr - state = stateOfString str - in countWordsOfState state - diff --git a/testsuite/tests/dph/words/dph-words-copy-fast.stdout b/testsuite/tests/dph/words/dph-words-copy-fast.stdout deleted file mode 100644 index a7ad9be6b6..0000000000 --- a/testsuite/tests/dph/words/dph-words-copy-fast.stdout +++ /dev/null @@ -1,3 +0,0 @@ -"When I look into the looking glass I'm always sure to see no matter how I dodge about, me looking back at me." -word count vect = 23 -word count lists = 23 diff --git a/testsuite/tests/dph/words/dph-words-copy-opt.stdout b/testsuite/tests/dph/words/dph-words-copy-opt.stdout deleted file mode 100644 index a7ad9be6b6..0000000000 --- a/testsuite/tests/dph/words/dph-words-copy-opt.stdout +++ /dev/null @@ -1,3 +0,0 @@ -"When I look into the looking glass I'm always sure to see no matter how I dodge about, me looking back at me." -word count vect = 23 -word count lists = 23 diff --git a/testsuite/tests/dph/words/dph-words-vseg-fast.stdout b/testsuite/tests/dph/words/dph-words-vseg-fast.stdout deleted file mode 100644 index a7ad9be6b6..0000000000 --- a/testsuite/tests/dph/words/dph-words-vseg-fast.stdout +++ /dev/null @@ -1,3 +0,0 @@ -"When I look into the looking glass I'm always sure to see no matter how I dodge about, me looking back at me." -word count vect = 23 -word count lists = 23 diff --git a/testsuite/tests/dph/words/dph-words-vseg-opt.stdout b/testsuite/tests/dph/words/dph-words-vseg-opt.stdout deleted file mode 100644 index a7ad9be6b6..0000000000 --- a/testsuite/tests/dph/words/dph-words-vseg-opt.stdout +++ /dev/null @@ -1,3 +0,0 @@ -"When I look into the looking glass I'm always sure to see no matter how I dodge about, me looking back at me." -word count vect = 23 -word count lists = 23 diff --git a/testsuite/tests/dph/words/dph-words.T b/testsuite/tests/dph/words/dph-words.T deleted file mode 100644 index 7173278914..0000000000 --- a/testsuite/tests/dph/words/dph-words.T +++ /dev/null @@ -1,20 +0,0 @@ - -test ('dph-words-copy-fast' - , [ outputdir('copy-fast') - , reqlib('dph-lifted-copy') - , reqlib('dph-prim-par') - , only_ways(['normal']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-copy -package dph-prim-par']) - - -test ('dph-words-vseg-fast' - , [ outputdir('vseg-fast') - , reqlib('dph-lifted-vseg') - , reqlib('dph-prim-par') - , only_ways(['normal']) ] - , multimod_compile_and_run - , [ 'Main' - , '-O0 -package dph-lifted-vseg -package dph-prim-par']) - diff --git a/testsuite/tests/ghc-api/T9015.hs b/testsuite/tests/ghc-api/T9015.hs index 6f7efec8d0..977390b88e 100644 --- a/testsuite/tests/ghc-api/T9015.hs +++ b/testsuite/tests/ghc-api/T9015.hs @@ -13,7 +13,6 @@ testStrings = [ , "add a b = a+b" , "data Foo = Foo String" , "deriving instance Show Foo" - , "{-# NOVECTORISE foo #-}" , "{-# WARNING Foo \"Just a warning\" #-}" , "{-# ANN foo (Just \"Hello\") #-}" , "{-# RULES \"map/map\" forall f g xs. map f (map g xs) = map (f.g) xs #-}" diff --git a/testsuite/tests/ghc-api/T9015.stdout b/testsuite/tests/ghc-api/T9015.stdout index 7b9b6e92de..0d0394eb39 100644 --- a/testsuite/tests/ghc-api/T9015.stdout +++ b/testsuite/tests/ghc-api/T9015.stdout @@ -5,7 +5,6 @@ import Data.Maybe (isJust): True add a b = a+b: False data Foo = Foo String: False deriving instance Show Foo: False -{-# NOVECTORISE foo #-}: False {-# WARNING Foo "Just a warning" #-}: False {-# ANN foo (Just "Hello") #-}: False {-# RULES "map/map" forall f g xs. map f (map g xs) = map (f.g) xs #-}: False @@ -34,7 +33,6 @@ import Data.Maybe (isJust): False add a b = a+b: True data Foo = Foo String: True deriving instance Show Foo: True -{-# NOVECTORISE foo #-}: True {-# WARNING Foo "Just a warning" #-}: True {-# ANN foo (Just "Hello") #-}: True {-# RULES "map/map" forall f g xs. map f (map g xs) = map (f.g) xs #-}: True @@ -63,7 +61,6 @@ import Data.Maybe (isJust): False add a b = a+b: False data Foo = Foo String: False deriving instance Show Foo: False -{-# NOVECTORISE foo #-}: False {-# WARNING Foo "Just a warning" #-}: False {-# ANN foo (Just "Hello") #-}: False {-# RULES "map/map" forall f g xs. map f (map g xs) = map (f.g) xs #-}: False @@ -84,3 +81,4 @@ x <- foo y: True a <-: False 2 +: False @#: False + diff --git a/testsuite/tests/ghci/should_run/T7253.script b/testsuite/tests/ghci/should_run/T7253.script index 0ab8337bae..cad4a19746 100644 --- a/testsuite/tests/ghci/should_run/T7253.script +++ b/testsuite/tests/ghci/should_run/T7253.script @@ -55,7 +55,6 @@ upcase foo {-# RULES "map/map" forall f g xs. map f (map g xs) = map (f.g) xs #-} {-# ANN foo (Just "Hello") #-} -{-# NOVECTORISE foo #-} :seti -XRoleAnnotations :{ diff --git a/testsuite/tests/ghci/should_run/T7253.stderr b/testsuite/tests/ghci/should_run/T7253.stderr index f7dedda51b..448f91865d 100644 --- a/testsuite/tests/ghci/should_run/T7253.stderr +++ b/testsuite/tests/ghci/should_run/T7253.stderr @@ -2,7 +2,7 @@ <interactive>:19:1: warning: [-Wunrecognised-pragmas (in -Wdefault)] Unrecognised pragma -<interactive>:62:1: error: +<interactive>:61:1: error: • Role mismatch on variable b: Annotation says phantom but role representational is required • while checking a role annotation for ‘T1’ diff --git a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr index 30c08d28b1..4ca996fde0 100644 --- a/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr +++ b/testsuite/tests/parser/should_compile/DumpRenamedAst.stderr @@ -445,7 +445,6 @@ [] [] [] - [] []) [({ DumpRenamedAst.hs:4:8-21 } (ImportDecl diff --git a/testsuite/tests/parser/should_compile/T14189.stderr b/testsuite/tests/parser/should_compile/T14189.stderr index b7c9f3c414..e8e5e6ad3d 100644 --- a/testsuite/tests/parser/should_compile/T14189.stderr +++ b/testsuite/tests/parser/should_compile/T14189.stderr @@ -99,7 +99,6 @@ [] [] [] - [] []) [({ T14189.hs:1:8-13 } (ImportDecl |