[Swift-commit] r6378 - in SwiftTutorials/OSG_2013-03-11/MODIS: . bin data test.beagle test.local test.midway test.multiple test.uc3

wilde at ci.uchicago.edu wilde at ci.uchicago.edu
Wed Mar 13 17:37:53 CDT 2013


Author: wilde
Date: 2013-03-13 17:37:52 -0500 (Wed, 13 Mar 2013)
New Revision: 6378

Added:
   SwiftTutorials/OSG_2013-03-11/MODIS/README
   SwiftTutorials/OSG_2013-03-11/MODIS/bin/
   SwiftTutorials/OSG_2013-03-11/MODIS/bin/clean
   SwiftTutorials/OSG_2013-03-11/MODIS/bin/cleanall
   SwiftTutorials/OSG_2013-03-11/MODIS/bin/makeinput
   SwiftTutorials/OSG_2013-03-11/MODIS/bin/save
   SwiftTutorials/OSG_2013-03-11/MODIS/bin/showidle
   SwiftTutorials/OSG_2013-03-11/MODIS/bin/shownodes
   SwiftTutorials/OSG_2013-03-11/MODIS/bin/showsites
   SwiftTutorials/OSG_2013-03-11/MODIS/data/
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t0
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t1
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t2
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t3
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t4
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t5
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t6
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t7
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t8
   SwiftTutorials/OSG_2013-03-11/MODIS/data/t9
   SwiftTutorials/OSG_2013-03-11/MODIS/input/
   SwiftTutorials/OSG_2013-03-11/MODIS/modis.swift
   SwiftTutorials/OSG_2013-03-11/MODIS/setup.sh
   SwiftTutorials/OSG_2013-03-11/MODIS/swift.log
   SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/
   SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/beagle.xml
   SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/cf
   SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/getlanduse.pl
   SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/run
   SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/tc
   SwiftTutorials/OSG_2013-03-11/MODIS/test.local/
   SwiftTutorials/OSG_2013-03-11/MODIS/test.local/cf
   SwiftTutorials/OSG_2013-03-11/MODIS/test.local/getlanduse.pl
   SwiftTutorials/OSG_2013-03-11/MODIS/test.local/local.xml
   SwiftTutorials/OSG_2013-03-11/MODIS/test.local/run
   SwiftTutorials/OSG_2013-03-11/MODIS/test.local/tc
   SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/
   SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/cf
   SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/getlanduse.pl
   SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/run
   SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/sandyb.xml
   SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/tc
   SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/westmere.xml
   SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/
   SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/cf
   SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/getlanduse.pl
   SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/run
   SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/sites.xml
   SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/tc
   SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/
   SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/cf
   SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/getlanduse.pl
   SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/run
   SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/tc
   SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/uc3.xml
Log:
Add demo tools developed for OSG all-hands meeting

Added: SwiftTutorials/OSG_2013-03-11/MODIS/README
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/README	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/README	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,49 @@
+
+To initialize:
+
+  tar xf swiftdemo.vNN.tgz
+  cd swiftdemo
+  source setup.sh  # <======== Be sure to *source* it!
+                   # setup.sh sets PATH with swift, $PWD, and "."
+                   # and creates input files
+
+To run:
+
+  cd test.midway
+  run
+  cd ..
+
+  cd test.beagle
+  run
+  cd ..
+
+  cd test.uc3
+  run
+  showsites
+  cd ..
+
+  cd test.multiple
+  run
+  showsites
+  cd ..
+
+
+In any test dir:
+
+To erase junk and prior run logs:
+
+  clean
+
+To erase input/ dir and create a new one:
+
+  makeinput NFILES
+
+To show what sites a run used:
+
+  showsites
+
+To save run logs in /saved dir:
+
+  save
+
+

Added: SwiftTutorials/OSG_2013-03-11/MODIS/bin/clean
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/bin/clean	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/bin/clean	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+rm -rf *~ *log *.d ../*.{kml,swiftx} *.out landuse


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/bin/clean
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/bin/cleanall
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/bin/cleanall	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/bin/cleanall	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,4 @@
+#! /bin/sh
+for t in test.{local,midway,beagle,uc3,multiple}; do
+  ( cd $t; clean; rm -rf input/ )
+done


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/bin/cleanall
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/bin/makeinput
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/bin/makeinput	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/bin/makeinput	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,22 @@
+#! /bin/sh
+
+nfiles=${1:-10}
+
+rm -rf input
+mkdir input
+cp ../data/t? input/
+( cd input
+  n=0
+  for h in $(seq -w 00 99); do
+    for v in $(seq -w 00 99); do
+      n=$((n+1))
+      if [ $n -gt $nfiles ]; then
+        break;
+      else
+        f=t$(echo $RANDOM | sed -e 's/.*\(.\)/\1/')
+        ln $f h${h}v${v}.rgb
+      fi
+    done
+  done
+  rm t?
+)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/bin/makeinput
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/bin/save
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/bin/save	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/bin/save	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+mkdir -p saved
+mv *.d *log saved
+


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/bin/save
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/bin/showidle
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/bin/showidle	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/bin/showidle	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+sinfo | grep idle | egrep 'westmere|sandyb|bugmem|voth'


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/bin/showidle
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/bin/shownodes
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/bin/shownodes	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/bin/shownodes	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,3 @@
+#! /bin/sh
+
+tail -q -n 1 landuse/* | sort | uniq -c


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/bin/shownodes
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/bin/showsites
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/bin/showsites	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/bin/showsites	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,22 @@
+#! /bin/sh
+
+# tail -q -n 1 landuse/* | sed -e 's/-c...//' | | sort | uniq -c
+
+# tail -q -n 1 landuse/* | sed -e 's/-c...//' -e 's/node..../nodeNNN/' -e 's/nid...../beagle/' -e 's/midway.*/midway/' | sort | uniq -c
+
+tail -q -n 1 landuse/* | awk '
+
+/nid00.../ { beagle++ }
+/midway.*local/ { midway++}
+/uc3-.*.mwt2/      { uc3seed++ }
+/uct2-.*.mwt2/     { uc3t2++ }
+                { n++ }
+END {
+  printf("\n")
+  printf("midway   %d\n", midway);
+  printf("beagle   %d\n", beagle);
+  printf("uc3      %d\n", uc3seed);
+  printf("mwt2     %d\n", uc3t2);
+  printf("OSG      %d\n", n-midway-beagle-uc3seed-uc3t2);
+  printf("Total    %d\n\n", n);
+}'


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/bin/showsites
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t0
===================================================================
(Binary files differ)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/data/t0
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t1
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/data/t1	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/data/t1	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,13792 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+   
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+			
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+   
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+      
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+      
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+			
+
+
+
+
+
+
+
+
+			
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
    
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+   
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
 
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
 
+
+
+
+
+
+
+
+
 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 			
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+			
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
    
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+   
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+			
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+			
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+   
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+			   
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+			
+
+
+
+
+
+
+
+
+
+
+
+
    
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+			
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
    
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
+
+
+
+
+
+
+
+
+			
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
 						
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+			
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+			
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
    
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 +
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
 
 
+
+
+
 
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
 
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
 
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
 
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+   
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 			
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+   
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
       
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
 
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
 
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+   
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t2
===================================================================
(Binary files differ)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/data/t2
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t3
===================================================================
(Binary files differ)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/data/t3
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t4
===================================================================
(Binary files differ)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/data/t4
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t5
===================================================================
(Binary files differ)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/data/t5
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t6
===================================================================
(Binary files differ)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/data/t6
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t7
===================================================================
(Binary files differ)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/data/t7
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t8
===================================================================
(Binary files differ)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/data/t8
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: SwiftTutorials/OSG_2013-03-11/MODIS/data/t9
===================================================================
(Binary files differ)


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/data/t9
___________________________________________________________________
Added: svn:mime-type
   + application/octet-stream

Added: SwiftTutorials/OSG_2013-03-11/MODIS/modis.swift
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/modis.swift	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/modis.swift	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,25 @@
+type imagefile;
+type landuse;
+type perlscript;
+
+perlscript getlanduse_pl <"getlanduse.pl">;
+
+app (landuse output) getLandUse (imagefile input, perlscript ps)
+{
+  perl @ps @filename(input) stdout=@filename(output);
+}
+
+# Constants and command line arguments
+int nFiles       = @toInt(@arg("nfiles", "1000"));
+string MODISdir  = @arg("modisdir", "../data/modis/2002");
+
+# Input Dataset
+imagefile geos[] <filesys_mapper; location=MODISdir, suffix=".rgb">;
+
+# Compute the land use summary of each MODIS tile
+landuse land[] <structured_regexp_mapper; source=geos, match="(h..v..)",
+                transform=@strcat("landuse/\\1.landuse.byfreq")>;
+
+foreach g,i in geos {
+    land[i] = getLandUse(g, getlanduse_pl);
+}

Added: SwiftTutorials/OSG_2013-03-11/MODIS/setup.sh
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/setup.sh	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/setup.sh	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,34 @@
+#export SBATCH_RESERVATION=osg  # for Midway 
+
+export SWIFT_HEAP_MAX=4G
+
+SWIFTREL=/home/wilde/swift/src/0.94/cog/modules/swift/dist/rc5.1/bin
+
+if echo $PATH | sed -e 's/:/\n/g' | grep $PWD >/dev/null; then
+  echo PATH is already set, not resetting
+else
+   PATH=$PWD/bin:.:$SWIFTREL:$PATH
+fi
+
+echo -e "\\nUsing swift release from: \\c"
+which swift
+swift -version
+
+echo -e "Cleaning test.* dirs and creating input/ dirs...\\n"
+
+(cd test.local;    clean; makeinput 10)
+
+(cd test.midway;   clean; makeinput 100)
+
+(cd test.beagle;   clean; makeinput 100)
+
+(cd test.uc3;      clean; makeinput 100)
+
+(cd test.multiple; clean; makeinput 3000)
+
+for d in test.*; do
+  (cd $d; echo -e "$d: $(find input -type f -print | wc -l) files, $(grep sleep getlanduse.pl | sed -e 's/[^0-9]//g') second task duration" )
+done
+
+
+

Added: SwiftTutorials/OSG_2013-03-11/MODIS/swift.log
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/swift.log	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/swift.log	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1 @@
+2013-03-13 21:41:13,241+0000 DEBUG Loader Swift started

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/beagle.xml
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/beagle.xml	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/beagle.xml	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,21 @@
+<config>
+  <pool handle="beagle">
+    <execution provider="coaster" jobmanager="ssh-cl:pbs" url="login4.beagle.ci.uchicago.edu"/>
+    <profile namespace="globus" key="jobsPerNode">24</profile>
+    <profile namespace="globus" key="lowOverAllocation">100</profile>
+    <profile namespace="globus" key="highOverAllocation">100</profile>
+    <profile namespace="globus" key="providerAttributes">pbs.aprun;pbs.mpp;depth=24</profile>
+    <!-- to use a beage reservation, eg:
+         <profile namespace="globus" key="providerAttributes">pbs.aprun;pbs.mpp;depth=24;pbs.resource_list=advres=wilde.1768</profile>
+    -->
+    <profile namespace="globus" key="maxtime">3600</profile>
+    <profile namespace="globus" key="maxWalltime">00:05:00</profile>
+    <profile namespace="globus" key="userHomeOverride">/lustre/beagle/{env.USER}/swiftwork</profile>
+    <profile namespace="globus" key="slots">20</profile>
+    <profile namespace="globus" key="maxnodes">1</profile>
+    <profile namespace="globus" key="nodeGranularity">1</profile>
+    <profile namespace="karajan" key="jobThrottle">4.80</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <workdirectory>/tmp/{env.USER}/swiftwork</workdirectory>
+  </pool>
+</config>

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/cf
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/cf	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/cf	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,8 @@
+
+wrapperlog.always.transfer=true
+sitedir.keep=true
+execution.retries=0
+lazy.errors=false
+status.mode=provider
+use.provider.staging=true
+provider.staging.pin.swiftfiles=false

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/getlanduse.pl
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/getlanduse.pl	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/getlanduse.pl	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+
+# Input to this program should be a raw, greyscale RGB file
+# Usage: rgb_histogram.pl myfile.rgb
+
+my $image_filename = shift;
+open(IMAGEFILE, "$image_filename") || die "Unable to open $image_filename!\n";
+binmode IMAGEFILE;
+
+my @pixelcount;
+foreach my $count (0..255) { $pixelcount[$count] = 0; }
+
+# Read values, three bytes at a time
+$/ = \3; 
+foreach(<IMAGEFILE>) {
+   $pixelcount[unpack('C', $_)]++;
+}
+close(IMAGEFILE);
+
+ at sortedcount = sort {$b <=> $a} @pixelcount;
+
+foreach my $count (0..255) {
+   if($sortedcount[$count] == 0) { next; }
+   printf("%d %d %02x\n", $sortedcount[$count], $count, $count);
+}
+
+system("hostname -f 2>&1");
+
+sleep(1);


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/getlanduse.pl
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/run
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/run	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/run	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,6 @@
+#! /bin/sh
+
+set -x
+export GLOBUS_HOSTNAME="swift.rcc.uchicago.edu"
+
+swift -config cf -sites.file beagle.xml -tc.file tc ../modis.swift -modisdir=input/


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/run
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/tc
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/tc	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.beagle/tc	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1 @@
+beagle perl /usr/bin/perl null null null

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.local/cf
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.local/cf	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.local/cf	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,8 @@
+
+wrapperlog.always.transfer=true
+sitedir.keep=true
+execution.retries=0
+lazy.errors=false
+status.mode=provider
+use.provider.staging=false
+provider.staging.pin.swiftfiles=false

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.local/getlanduse.pl
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.local/getlanduse.pl	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.local/getlanduse.pl	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+
+# Input to this program should be a raw, greyscale RGB file
+# Usage: rgb_histogram.pl myfile.rgb
+
+my $image_filename = shift;
+open(IMAGEFILE, "$image_filename") || die "Unable to open $image_filename!\n";
+binmode IMAGEFILE;
+
+my @pixelcount;
+foreach my $count (0..255) { $pixelcount[$count] = 0; }
+
+# Read values, three bytes at a time
+$/ = \3; 
+foreach(<IMAGEFILE>) {
+   $pixelcount[unpack('C', $_)]++;
+}
+close(IMAGEFILE);
+
+ at sortedcount = sort {$b <=> $a} @pixelcount;
+
+foreach my $count (0..255) {
+   if($sortedcount[$count] == 0) { next; }
+   printf("%d %d %02x\n", $sortedcount[$count], $count, $count);
+}
+
+system("hostname -f 2>&1");
+
+sleep(1);


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.local/getlanduse.pl
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.local/local.xml
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.local/local.xml	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.local/local.xml	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,16 @@
+<config>
+  <pool handle="local">
+    <execution provider="coaster" jobmanager="local:local"/>
+    <profile namespace="globus" key="jobsPerNode">4</profile>
+    <profile namespace="globus" key="maxWalltime">00:05:00</profile>
+    <profile namespace="globus" key="highOverAllocation">100</profile>
+    <profile namespace="globus" key="lowOverAllocation">100</profile>
+    <profile namespace="globus" key="slots">1</profile>
+    <profile namespace="globus" key="maxNodes">1</profile>
+    <profile namespace="globus" key="nodeGranularity">1</profile>
+    <profile namespace="karajan" key="jobThrottle">0.03</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <filesystem provider="local"/>
+    <workdirectory>/scratch/midway/{env.USER}</workdirectory>
+  </pool>
+</config>

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.local/run
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.local/run	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.local/run	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,5 @@
+#! /bin/sh
+
+set -x
+
+swift -config cf -sites.file local.xml -tc.file tc ../modis.swift -modisdir=input/


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.local/run
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.local/tc
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.local/tc	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.local/tc	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1 @@
+local perl /usr/bin/perl null null null

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/cf
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/cf	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/cf	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,9 @@
+
+wrapperlog.always.transfer=true
+sitedir.keep=true
+execution.retries=0
+lazy.errors=false
+status.mode=provider
+use.provider.staging=true
+provider.staging.pin.swiftfiles=true
+

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/getlanduse.pl
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/getlanduse.pl	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/getlanduse.pl	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+
+# Input to this program should be a raw, greyscale RGB file
+# Usage: rgb_histogram.pl myfile.rgb
+
+my $image_filename = shift;
+open(IMAGEFILE, "$image_filename") || die "Unable to open $image_filename!\n";
+binmode IMAGEFILE;
+
+my @pixelcount;
+foreach my $count (0..255) { $pixelcount[$count] = 0; }
+
+# Read values, three bytes at a time
+$/ = \3; 
+foreach(<IMAGEFILE>) {
+   $pixelcount[unpack('C', $_)]++;
+}
+close(IMAGEFILE);
+
+ at sortedcount = sort {$b <=> $a} @pixelcount;
+
+foreach my $count (0..255) {
+   if($sortedcount[$count] == 0) { next; }
+   printf("%d %d %02x\n", $sortedcount[$count], $count, $count);
+}
+
+system("hostname -f 2>&1");
+
+sleep(1);


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/getlanduse.pl
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/run
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/run	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/run	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,13 @@
+#! /bin/sh
+
+queue=${1:-sandyb}
+
+echo -e '\nQueues with idle nodes are:\n'
+
+sinfo | grep idle | egrep 'sandy|west|bigmem|voth'
+
+echo -e "\\nRunning in queue $queue\\n"
+
+set -x
+
+swift -config cf -sites.file $queue.xml -tc.file tc ../modis.swift -modisdir=input/


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/run
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/sandyb.xml
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/sandyb.xml	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/sandyb.xml	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,17 @@
+<config>
+  <pool handle="midway">
+    <execution provider="coaster" jobmanager="local:slurm"/>
+    <profile namespace="globus" key="queue">sandyb</profile>
+    <profile namespace="globus" key="jobsPerNode">16</profile>
+    <profile namespace="globus" key="maxWalltime">00:05:00</profile>
+    <profile namespace="globus" key="maxTime">3600</profile>
+    <profile namespace="globus" key="highOverAllocation">100</profile>
+    <profile namespace="globus" key="lowOverAllocation">100</profile>
+    <profile namespace="globus" key="slots">4</profile>
+    <profile namespace="globus" key="maxNodes">1</profile>
+    <profile namespace="globus" key="nodeGranularity">1</profile>
+    <profile namespace="karajan" key="jobThrottle">.64</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <workdirectory>/tmp/{env.USER}</workdirectory>
+  </pool>
+</config>

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/tc
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/tc	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/tc	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1 @@
+midway perl /usr/bin/perl null null null

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/westmere.xml
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/westmere.xml	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.midway/westmere.xml	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,19 @@
+<config>
+
+  <pool handle="midway">
+    <execution provider="coaster" jobmanager="local:slurm"/>
+    <profile namespace="globus" key="queue">westmere</profile>
+    <profile namespace="globus" key="jobsPerNode">12</profile>
+    <profile namespace="globus" key="maxWalltime">00:05:00</profile>
+    <profile namespace="globus" key="maxTime">3600</profile>
+    <profile namespace="globus" key="highOverAllocation">100</profile>
+    <profile namespace="globus" key="lowOverAllocation">100</profile>
+    <profile namespace="globus" key="slots">4</profile>
+    <profile namespace="globus" key="maxNodes">1</profile>
+    <profile namespace="globus" key="nodeGranularity">1</profile>
+    <profile namespace="karajan" key="jobThrottle">.48</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <workdirectory>/tmp/{env.USER}</workdirectory>
+  </pool>
+
+</config>

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/cf
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/cf	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/cf	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,8 @@
+
+wrapperlog.always.transfer=true
+sitedir.keep=true
+execution.retries=0
+lazy.errors=false
+status.mode=provider
+use.provider.staging=true
+provider.staging.pin.swiftfiles=false

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/getlanduse.pl
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/getlanduse.pl	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/getlanduse.pl	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+
+# Input to this program should be a raw, greyscale RGB file
+# Usage: rgb_histogram.pl myfile.rgb
+
+my $image_filename = shift;
+open(IMAGEFILE, "$image_filename") || die "Unable to open $image_filename!\n";
+binmode IMAGEFILE;
+
+my @pixelcount;
+foreach my $count (0..255) { $pixelcount[$count] = 0; }
+
+# Read values, three bytes at a time
+$/ = \3; 
+foreach(<IMAGEFILE>) {
+   $pixelcount[unpack('C', $_)]++;
+}
+close(IMAGEFILE);
+
+ at sortedcount = sort {$b <=> $a} @pixelcount;
+
+foreach my $count (0..255) {
+   if($sortedcount[$count] == 0) { next; }
+   printf("%d %d %02x\n", $sortedcount[$count], $count, $count);
+}
+
+system("hostname -f 2>&1");
+
+sleep(60);


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/getlanduse.pl
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/run
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/run	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/run	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -x
+
+export GLOBUS_HOSTNAME="swift.rcc.uchicago.edu"
+
+swift -config cf -sites.file sites.xml -tc.file tc ../modis.swift -modisdir=input/


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/run
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/sites.xml
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/sites.xml	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/sites.xml	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,71 @@
+<config>
+
+  <pool handle="uc3">
+    <execution provider="coaster" url="uc3-sub.uchicago.edu" jobmanager="ssh-cl:condor"/>
+    <profile namespace="karajan" key="jobThrottle">10.00</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <profile namespace="globus"  key="jobsPerNode">1</profile>
+    <profile namespace="globus"  key="maxtime">3600</profile>
+    <profile namespace="globus"  key="maxWalltime">00:05:00</profile>
+    <profile namespace="globus"  key="highOverAllocation">100</profile>
+    <profile namespace="globus"  key="lowOverAllocation">100</profile>
+    <profile namespace="globus"  key="slots">1000</profile>
+    <profile namespace="globus"  key="maxNodes">1</profile>
+    <profile namespace="globus"  key="nodeGranularity">1</profile>
+    <profile namespace="globus"  key="condor.+AccountingGroup">"group_friends.{env.USER}"</profile>
+    <profile namespace="globus"  key="jobType">nonshared</profile>
+    <!-- <profile namespace="globus"  key="condor.+Requirements">isUndefined(GLIDECLIENT_Name) == FALSE</profile> -->
+    <workdirectory>.</workdirectory>
+  </pool>
+
+  <pool handle="beagle">
+    <execution provider="coaster" jobmanager="ssh-cl:pbs" url="login4.beagle.ci.uchicago.edu"/>
+    <profile namespace="globus" key="jobsPerNode">24</profile>
+    <profile namespace="globus" key="lowOverAllocation">100</profile>
+    <profile namespace="globus" key="highOverAllocation">100</profile>
+    <!-- <profile namespace="globus" key="providerAttributes">pbs.aprun;pbs.mpp;depth=24</profile> -->
+    <profile namespace="globus" key="providerAttributes">pbs.aprun;pbs.mpp;depth=24;pbs.resource_list=advres=wilde.1768</profile>
+    <profile namespace="globus" key="maxtime">3600</profile>
+    <profile namespace="globus" key="maxWalltime">00:05:00</profile>
+    <profile namespace="globus" key="userHomeOverride">/lustre/beagle/{env.USER}/swiftwork</profile>
+    <profile namespace="globus" key="slots">5</profile>
+    <profile namespace="globus" key="maxnodes">1</profile>
+    <profile namespace="globus" key="nodeGranularity">1</profile>
+    <profile namespace="karajan" key="jobThrottle">4.80</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <workdirectory>/tmp/{env.USER}/swiftwork</workdirectory>
+  </pool>
+
+  <pool handle="sandyb">
+    <execution provider="coaster" jobmanager="local:slurm"/>
+    <profile namespace="globus" key="queue">sandyb</profile>
+    <profile namespace="globus" key="jobsPerNode">16</profile>
+    <profile namespace="globus" key="maxWalltime">00:05:00</profile>
+    <profile namespace="globus" key="maxTime">3600</profile>
+    <profile namespace="globus" key="highOverAllocation">100</profile>
+    <profile namespace="globus" key="lowOverAllocation">100</profile>
+    <profile namespace="globus" key="slots">4</profile>
+    <profile namespace="globus" key="maxNodes">1</profile>
+    <profile namespace="globus" key="nodeGranularity">1</profile>
+    <profile namespace="karajan" key="jobThrottle">.64</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <workdirectory>/tmp/{env.USER}</workdirectory>
+  </pool>
+
+  <pool handle="westmere">
+    <execution provider="coaster" jobmanager="local:slurm"/>
+    <profile namespace="globus" key="queue">westmere</profile>
+    <profile namespace="globus" key="jobsPerNode">12</profile>
+    <profile namespace="globus" key="maxWalltime">00:05:00</profile>
+    <profile namespace="globus" key="maxTime">3600</profile>
+    <profile namespace="globus" key="highOverAllocation">100</profile>
+    <profile namespace="globus" key="lowOverAllocation">100</profile>
+    <profile namespace="globus" key="slots">4</profile>
+    <profile namespace="globus" key="maxNodes">1</profile>
+    <profile namespace="globus" key="nodeGranularity">1</profile>
+    <profile namespace="karajan" key="jobThrottle">.48</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <workdirectory>/tmp/{env.USER}</workdirectory>
+  </pool>
+
+</config>

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/tc
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/tc	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.multiple/tc	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,4 @@
+uc3      perl /usr/bin/perl null null null
+beagle   perl /usr/bin/perl null null null
+#sandy    perl /usr/bin/perl null null null
+westmere perl /usr/bin/perl null null null

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/cf
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/cf	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/cf	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,8 @@
+
+wrapperlog.always.transfer=true
+sitedir.keep=true
+execution.retries=0
+lazy.errors=false
+status.mode=provider
+use.provider.staging=true
+provider.staging.pin.swiftfiles=false

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/getlanduse.pl
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/getlanduse.pl	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/getlanduse.pl	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+
+# Input to this program should be a raw, greyscale RGB file
+# Usage: rgb_histogram.pl myfile.rgb
+
+my $image_filename = shift;
+open(IMAGEFILE, "$image_filename") || die "Unable to open $image_filename!\n";
+binmode IMAGEFILE;
+
+my @pixelcount;
+foreach my $count (0..255) { $pixelcount[$count] = 0; }
+
+# Read values, three bytes at a time
+$/ = \3; 
+foreach(<IMAGEFILE>) {
+   $pixelcount[unpack('C', $_)]++;
+}
+close(IMAGEFILE);
+
+ at sortedcount = sort {$b <=> $a} @pixelcount;
+
+foreach my $count (0..255) {
+   if($sortedcount[$count] == 0) { next; }
+   printf("%d %d %02x\n", $sortedcount[$count], $count, $count);
+}
+
+system("hostname -f 2>&1");
+
+sleep(30);


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/getlanduse.pl
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/run
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/run	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/run	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,7 @@
+#! /bin/sh
+
+set -x
+
+export GLOBUS_HOSTNAME="swift.rcc.uchicago.edu"
+
+swift -config cf -sites.file uc3.xml -tc.file tc ../modis.swift -modisdir=input/


Property changes on: SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/run
___________________________________________________________________
Added: svn:executable
   + *

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/tc
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/tc	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/tc	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1 @@
+uc3 perl /usr/bin/perl null null null

Added: SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/uc3.xml
===================================================================
--- SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/uc3.xml	                        (rev 0)
+++ SwiftTutorials/OSG_2013-03-11/MODIS/test.uc3/uc3.xml	2013-03-13 22:37:52 UTC (rev 6378)
@@ -0,0 +1,19 @@
+<config>
+  <pool handle="uc3">
+    <execution provider="coaster" url="uc3-sub.uchicago.edu" jobmanager="ssh-cl:condor"/>
+    <profile namespace="karajan" key="jobThrottle">10.00</profile>
+    <profile namespace="karajan" key="initialScore">10000</profile>
+    <profile namespace="globus"  key="jobsPerNode">1</profile>
+    <profile namespace="globus"  key="maxtime">3600</profile>
+    <profile namespace="globus"  key="maxWalltime">00:05:00</profile>
+    <profile namespace="globus"  key="highOverAllocation">100</profile>
+    <profile namespace="globus"  key="lowOverAllocation">100</profile>
+    <profile namespace="globus"  key="slots">1000</profile>
+    <profile namespace="globus"  key="maxNodes">1</profile>
+    <profile namespace="globus"  key="nodeGranularity">1</profile>
+    <profile namespace="globus"  key="condor.+AccountingGroup">"group_friends.{env.USER}"</profile>
+    <profile namespace="globus"  key="jobType">nonshared</profile>
+    <workdirectory>.</workdirectory>
+  </pool>
+
+</config>




More information about the Swift-commit mailing list