summaryrefslogtreecommitdiff
path: root/testsuite/tests/dph
diff options
context:
space:
mode:
Diffstat (limited to 'testsuite/tests/dph')
-rw-r--r--testsuite/tests/dph/Makefile3
-rw-r--r--testsuite/tests/dph/classes/DefsVect.hs53
-rw-r--r--testsuite/tests/dph/classes/Main.hs15
-rw-r--r--testsuite/tests/dph/classes/Makefile3
-rw-r--r--testsuite/tests/dph/classes/dph-classes-copy-fast.stdout1
-rw-r--r--testsuite/tests/dph/classes/dph-classes-vseg-fast.stdout1
-rw-r--r--testsuite/tests/dph/classes/dph-classes.T6
-rw-r--r--testsuite/tests/dph/diophantine/DiophantineVect.hs39
-rw-r--r--testsuite/tests/dph/diophantine/Main.hs42
-rw-r--r--testsuite/tests/dph/diophantine/Makefile3
-rw-r--r--testsuite/tests/dph/diophantine/dph-diophantine-copy-fast.stdout3
-rw-r--r--testsuite/tests/dph/diophantine/dph-diophantine-copy-opt.stdout3
-rw-r--r--testsuite/tests/dph/diophantine/dph-diophantine.T11
-rw-r--r--testsuite/tests/dph/dotp/DotPVect.hs15
-rw-r--r--testsuite/tests/dph/dotp/Main.hs54
-rw-r--r--testsuite/tests/dph/dotp/Makefile3
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp-copy-fast.stdout2
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp-copy-opt.stdout2
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp-vseg-fast.stdout2
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp-vseg-opt.stdout2
-rw-r--r--testsuite/tests/dph/dotp/dph-dotp.T20
-rw-r--r--testsuite/tests/dph/enumfromto/EnumFromToP.hs24
-rw-r--r--testsuite/tests/dph/enumfromto/Makefile3
-rw-r--r--testsuite/tests/dph/enumfromto/dph-enumfromto.T4
-rw-r--r--testsuite/tests/dph/modules/ExportList.hs33
-rw-r--r--testsuite/tests/dph/modules/Makefile3
-rw-r--r--testsuite/tests/dph/modules/dph-ExportList-vseg-fast.stderr9
-rw-r--r--testsuite/tests/dph/modules/dph-modules.T4
-rw-r--r--testsuite/tests/dph/nbody/Body.hs85
-rw-r--r--testsuite/tests/dph/nbody/Config.hs50
-rw-r--r--testsuite/tests/dph/nbody/Dump.hs46
-rw-r--r--testsuite/tests/dph/nbody/Generate.hs98
-rw-r--r--testsuite/tests/dph/nbody/Main.hs103
-rw-r--r--testsuite/tests/dph/nbody/Makefile3
-rw-r--r--testsuite/tests/dph/nbody/Randomish.hs82
-rw-r--r--testsuite/tests/dph/nbody/Solver.hs156
-rw-r--r--testsuite/tests/dph/nbody/Types.hs52
-rw-r--r--testsuite/tests/dph/nbody/Util.hs18
-rw-r--r--testsuite/tests/dph/nbody/World.hs47
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody-copy-fast.stdout100
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody-copy-opt.stdout100
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody-vseg-fast.stdout100
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody-vseg-opt.stdout100
-rw-r--r--testsuite/tests/dph/nbody/dph-nbody.T19
-rw-r--r--testsuite/tests/dph/primespj/Main.hs30
-rw-r--r--testsuite/tests/dph/primespj/Makefile3
-rw-r--r--testsuite/tests/dph/primespj/PrimesVect.hs25
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj-copy-fast.stdout3
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj-copy-opt.stdout3
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj-vseg-fast.stdout3
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj-vseg-opt.stdout3
-rw-r--r--testsuite/tests/dph/primespj/dph-primespj.T11
-rw-r--r--testsuite/tests/dph/quickhull/Main.hs43
-rw-r--r--testsuite/tests/dph/quickhull/Makefile3
-rw-r--r--testsuite/tests/dph/quickhull/QuickHullVect.hs41
-rw-r--r--testsuite/tests/dph/quickhull/SVG.hs34
-rw-r--r--testsuite/tests/dph/quickhull/TestData.hs92
-rw-r--r--testsuite/tests/dph/quickhull/Types.hs33
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull-copy-fast.stdout1019
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull-copy-opt.stdout1019
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull-vseg-fast.stdout1019
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull-vseg-opt.stdout1019
-rw-r--r--testsuite/tests/dph/quickhull/dph-quickhull.T20
-rw-r--r--testsuite/tests/dph/smvm/Main.hs60
-rw-r--r--testsuite/tests/dph/smvm/Makefile3
-rw-r--r--testsuite/tests/dph/smvm/SMVMVect.hs17
-rw-r--r--testsuite/tests/dph/smvm/dph-smvm-copy.stdout1
-rw-r--r--testsuite/tests/dph/smvm/dph-smvm-vseg.stdout1
-rw-r--r--testsuite/tests/dph/smvm/dph-smvm.T41
-rw-r--r--testsuite/tests/dph/smvm/result-i386.txt101
-rw-r--r--testsuite/tests/dph/smvm/result-sparc.txt101
-rw-r--r--testsuite/tests/dph/smvm/result-x86_64.txt101
-rw-r--r--testsuite/tests/dph/smvm/test-i386.datbin22384 -> 0 bytes
-rw-r--r--testsuite/tests/dph/smvm/test-sparc.datbin11632 -> 0 bytes
-rw-r--r--testsuite/tests/dph/smvm/test-x86_64.datbin16416 -> 0 bytes
-rw-r--r--testsuite/tests/dph/sumnats/Main.hs21
-rw-r--r--testsuite/tests/dph/sumnats/Makefile3
-rw-r--r--testsuite/tests/dph/sumnats/SumNatsVect.hs14
-rw-r--r--testsuite/tests/dph/sumnats/dph-sumnats-copy.stdout3
-rw-r--r--testsuite/tests/dph/sumnats/dph-sumnats-vseg.stdout3
-rw-r--r--testsuite/tests/dph/sumnats/dph-sumnats.T20
-rw-r--r--testsuite/tests/dph/words/Main.hs37
-rw-r--r--testsuite/tests/dph/words/Makefile3
-rw-r--r--testsuite/tests/dph/words/WordsVect.hs125
-rw-r--r--testsuite/tests/dph/words/dph-words-copy-fast.stdout3
-rw-r--r--testsuite/tests/dph/words/dph-words-copy-opt.stdout3
-rw-r--r--testsuite/tests/dph/words/dph-words-vseg-fast.stdout3
-rw-r--r--testsuite/tests/dph/words/dph-words-vseg-opt.stdout3
-rw-r--r--testsuite/tests/dph/words/dph-words.T20
89 files changed, 0 insertions, 6632 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
deleted file mode 100644
index 4db8d62620..0000000000
--- a/testsuite/tests/dph/smvm/test-i386.dat
+++ /dev/null
Binary files differ
diff --git a/testsuite/tests/dph/smvm/test-sparc.dat b/testsuite/tests/dph/smvm/test-sparc.dat
deleted file mode 100644
index 73d2c201cd..0000000000
--- a/testsuite/tests/dph/smvm/test-sparc.dat
+++ /dev/null
Binary files differ
diff --git a/testsuite/tests/dph/smvm/test-x86_64.dat b/testsuite/tests/dph/smvm/test-x86_64.dat
deleted file mode 100644
index 08a91f5ab1..0000000000
--- a/testsuite/tests/dph/smvm/test-x86_64.dat
+++ /dev/null
Binary files differ
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'])
-