[llvm-commits] [zorg] r99117 - in /zorg/trunk/lnt: ./ import/ lnt/ lnt/import/ lnt/viewer/ lnt/viewer/js/ lnt/viewer/resources/ lnt/viewer/zview/ test/ test/DB/ test/DB/Inputs/ test/Misc/ test/Misc/Inputs/ test/Web/ tests/ tests/DB/ tests/DB/Inputs/ tests/Misc/ tests/Misc/Inputs/ tests/Web/ viewer/ viewer/js/ viewer/resources/ viewer/zview/

Daniel Dunbar daniel at zuster.org
Sun Mar 21 04:37:29 PDT 2010


Author: ddunbar
Date: Sun Mar 21 06:37:28 2010
New Revision: 99117

URL: http://llvm.org/viewvc/llvm-project?rev=99117&view=rev
Log:
LNT: Sink source into 'lnt' module, to match standard Python project layout.

Also, rename test to tests.

Added:
    zorg/trunk/lnt/lnt/
    zorg/trunk/lnt/lnt/__init__.py
      - copied, changed from r99116, zorg/trunk/lnt/viewer/__init__.py
    zorg/trunk/lnt/lnt/import/
    zorg/trunk/lnt/lnt/import/AppleOpenSSLReader.py
      - copied, changed from r99116, zorg/trunk/lnt/import/AppleOpenSSLReader.py
    zorg/trunk/lnt/lnt/import/ImportData
      - copied, changed from r99116, zorg/trunk/lnt/import/ImportData
    zorg/trunk/lnt/lnt/import/ImportXCBTimes
      - copied, changed from r99116, zorg/trunk/lnt/import/ImportXCBTimes
    zorg/trunk/lnt/lnt/import/NTAuxSubmit
      - copied, changed from r99116, zorg/trunk/lnt/import/NTAuxSubmit
    zorg/trunk/lnt/lnt/import/NTEmailReport.py
      - copied, changed from r99116, zorg/trunk/lnt/import/NTEmailReport.py
    zorg/trunk/lnt/lnt/import/NightlytestReader.py
      - copied, changed from r99116, zorg/trunk/lnt/import/NightlytestReader.py
    zorg/trunk/lnt/lnt/import/ServerUtil.py
      - copied, changed from r99116, zorg/trunk/lnt/import/ServerUtil.py
    zorg/trunk/lnt/lnt/import/SubmitData
      - copied, changed from r99116, zorg/trunk/lnt/import/SubmitData
    zorg/trunk/lnt/lnt/viewer/
    zorg/trunk/lnt/lnt/viewer/Config.py
      - copied, changed from r99116, zorg/trunk/lnt/viewer/Config.py
    zorg/trunk/lnt/lnt/viewer/NTStyleBrowser.ptl
      - copied, changed from r99116, zorg/trunk/lnt/viewer/NTStyleBrowser.ptl
    zorg/trunk/lnt/lnt/viewer/NTUtil.py
      - copied, changed from r99116, zorg/trunk/lnt/viewer/NTUtil.py
    zorg/trunk/lnt/lnt/viewer/PerfDB.py
      - copied, changed from r99116, zorg/trunk/lnt/viewer/PerfDB.py
    zorg/trunk/lnt/lnt/viewer/Util.py
      - copied, changed from r99116, zorg/trunk/lnt/viewer/Util.py
    zorg/trunk/lnt/lnt/viewer/__init__.py
      - copied, changed from r99116, zorg/trunk/lnt/viewer/zview/__init__.py
    zorg/trunk/lnt/lnt/viewer/js/
    zorg/trunk/lnt/lnt/viewer/js/View2D.js
      - copied, changed from r99116, zorg/trunk/lnt/viewer/js/View2D.js
    zorg/trunk/lnt/lnt/viewer/js/View2DTest.html
      - copied, changed from r99116, zorg/trunk/lnt/viewer/js/View2DTest.html
    zorg/trunk/lnt/lnt/viewer/machines.ptl
      - copied, changed from r99116, zorg/trunk/lnt/viewer/machines.ptl
    zorg/trunk/lnt/lnt/viewer/nightlytest.ptl
      - copied, changed from r99116, zorg/trunk/lnt/viewer/nightlytest.ptl
    zorg/trunk/lnt/lnt/viewer/publisher.py
      - copied, changed from r99116, zorg/trunk/lnt/viewer/publisher.py
    zorg/trunk/lnt/lnt/viewer/resources/
    zorg/trunk/lnt/lnt/viewer/resources/form.css
      - copied, changed from r99116, zorg/trunk/lnt/viewer/resources/form.css
    zorg/trunk/lnt/lnt/viewer/resources/mootools-1.2.4-core-nc.js
      - copied, changed from r99116, zorg/trunk/lnt/viewer/resources/mootools-1.2.4-core-nc.js
    zorg/trunk/lnt/lnt/viewer/resources/popup.js
      - copied, changed from r99116, zorg/trunk/lnt/viewer/resources/popup.js
    zorg/trunk/lnt/lnt/viewer/resources/sorttable.js
      - copied, changed from r99116, zorg/trunk/lnt/viewer/resources/sorttable.js
    zorg/trunk/lnt/lnt/viewer/resources/style.css
      - copied, changed from r99116, zorg/trunk/lnt/viewer/resources/style.css
    zorg/trunk/lnt/lnt/viewer/root.ptl
      - copied, changed from r99116, zorg/trunk/lnt/viewer/root.ptl
    zorg/trunk/lnt/lnt/viewer/runs.ptl
      - copied, changed from r99116, zorg/trunk/lnt/viewer/runs.ptl
    zorg/trunk/lnt/lnt/viewer/tests.ptl
      - copied, changed from r99116, zorg/trunk/lnt/viewer/tests.ptl
    zorg/trunk/lnt/lnt/viewer/wsgi_restart.py
      - copied, changed from r99116, zorg/trunk/lnt/viewer/wsgi_restart.py
    zorg/trunk/lnt/lnt/viewer/zorg.cfg.sample
      - copied, changed from r99116, zorg/trunk/lnt/viewer/zorg.cfg.sample
    zorg/trunk/lnt/lnt/viewer/zorg.cgi
      - copied, changed from r99116, zorg/trunk/lnt/viewer/zorg.cgi
    zorg/trunk/lnt/lnt/viewer/zorg.wsgi
      - copied, changed from r99116, zorg/trunk/lnt/viewer/zorg.wsgi
    zorg/trunk/lnt/lnt/viewer/zview/
    zorg/trunk/lnt/lnt/viewer/zview/__init__.py
      - copied, changed from r99116, zorg/trunk/lnt/viewer/__init__.py
    zorg/trunk/lnt/lnt/viewer/zview/zviewui.ptl
      - copied, changed from r99116, zorg/trunk/lnt/viewer/zview/zviewui.ptl
    zorg/trunk/lnt/tests/
    zorg/trunk/lnt/tests/DB/
    zorg/trunk/lnt/tests/DB/Create.py
      - copied, changed from r99116, zorg/trunk/lnt/test/DB/Create.py
    zorg/trunk/lnt/tests/DB/Import.py
      - copied, changed from r99116, zorg/trunk/lnt/test/DB/Import.py
    zorg/trunk/lnt/tests/DB/Inputs/
    zorg/trunk/lnt/tests/DB/Inputs/sample-a-small.plist
      - copied, changed from r99116, zorg/trunk/lnt/test/DB/Inputs/sample-a-small.plist
    zorg/trunk/lnt/tests/DB/Inputs/sample-b-small.plist
      - copied, changed from r99116, zorg/trunk/lnt/test/DB/Inputs/sample-b-small.plist
    zorg/trunk/lnt/tests/Misc/
    zorg/trunk/lnt/tests/Misc/Inputs/
    zorg/trunk/lnt/tests/Misc/Inputs/sample-a-small.plist
      - copied, changed from r99116, zorg/trunk/lnt/test/Misc/Inputs/sample-a-small.plist
    zorg/trunk/lnt/tests/Misc/SubmitAndEmail.py
      - copied, changed from r99116, zorg/trunk/lnt/test/Misc/SubmitAndEmail.py
    zorg/trunk/lnt/tests/Web/
    zorg/trunk/lnt/tests/Web/NightlytestMachinesRoot.py
      - copied, changed from r99116, zorg/trunk/lnt/test/Web/NightlytestMachinesRoot.py
    zorg/trunk/lnt/tests/Web/NightlytestRoot.py
      - copied, changed from r99116, zorg/trunk/lnt/test/Web/NightlytestRoot.py
    zorg/trunk/lnt/tests/Web/NightlytestRunRoot.py
      - copied, changed from r99116, zorg/trunk/lnt/test/Web/NightlytestRunRoot.py
    zorg/trunk/lnt/tests/Web/RootPage.py
      - copied, changed from r99116, zorg/trunk/lnt/test/Web/RootPage.py
    zorg/trunk/lnt/tests/lit.cfg
      - copied, changed from r99116, zorg/trunk/lnt/test/lit.cfg
Removed:
    zorg/trunk/lnt/import/AppleOpenSSLReader.py
    zorg/trunk/lnt/import/ImportData
    zorg/trunk/lnt/import/ImportXCBTimes
    zorg/trunk/lnt/import/NTAuxSubmit
    zorg/trunk/lnt/import/NTEmailReport.py
    zorg/trunk/lnt/import/NightlytestReader.py
    zorg/trunk/lnt/import/ServerUtil.py
    zorg/trunk/lnt/import/SubmitData
    zorg/trunk/lnt/test/DB/Create.py
    zorg/trunk/lnt/test/DB/Import.py
    zorg/trunk/lnt/test/DB/Inputs/sample-a-small.plist
    zorg/trunk/lnt/test/DB/Inputs/sample-b-small.plist
    zorg/trunk/lnt/test/Misc/Inputs/sample-a-small.plist
    zorg/trunk/lnt/test/Misc/SubmitAndEmail.py
    zorg/trunk/lnt/test/Web/NightlytestMachinesRoot.py
    zorg/trunk/lnt/test/Web/NightlytestRoot.py
    zorg/trunk/lnt/test/Web/NightlytestRunRoot.py
    zorg/trunk/lnt/test/Web/RootPage.py
    zorg/trunk/lnt/test/lit.cfg
    zorg/trunk/lnt/viewer/Config.py
    zorg/trunk/lnt/viewer/NTStyleBrowser.ptl
    zorg/trunk/lnt/viewer/NTUtil.py
    zorg/trunk/lnt/viewer/PerfDB.py
    zorg/trunk/lnt/viewer/Util.py
    zorg/trunk/lnt/viewer/__init__.py
    zorg/trunk/lnt/viewer/js/View2D.js
    zorg/trunk/lnt/viewer/js/View2DTest.html
    zorg/trunk/lnt/viewer/machines.ptl
    zorg/trunk/lnt/viewer/nightlytest.ptl
    zorg/trunk/lnt/viewer/publisher.py
    zorg/trunk/lnt/viewer/resources/form.css
    zorg/trunk/lnt/viewer/resources/mootools-1.2.4-core-nc.js
    zorg/trunk/lnt/viewer/resources/popup.js
    zorg/trunk/lnt/viewer/resources/sorttable.js
    zorg/trunk/lnt/viewer/resources/style.css
    zorg/trunk/lnt/viewer/root.ptl
    zorg/trunk/lnt/viewer/runs.ptl
    zorg/trunk/lnt/viewer/tests.ptl
    zorg/trunk/lnt/viewer/wsgi_restart.py
    zorg/trunk/lnt/viewer/zorg.cfg.sample
    zorg/trunk/lnt/viewer/zorg.cgi
    zorg/trunk/lnt/viewer/zorg.wsgi
    zorg/trunk/lnt/viewer/zview/__init__.py
    zorg/trunk/lnt/viewer/zview/zviewui.ptl
Modified:
    zorg/trunk/lnt/README.txt

Modified: zorg/trunk/lnt/README.txt
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/README.txt?rev=99117&r1=99116&r2=99117&view=diff
==============================================================================
--- zorg/trunk/lnt/README.txt (original)
+++ zorg/trunk/lnt/README.txt Sun Mar 21 06:37:28 2010
@@ -11,16 +11,18 @@
 
 The infrastructure has the following layout:
 
- lnt/db - Database schema, utilities, and examples of the LNT plist format.
+ $ROOT/lnt - Top-level source module
 
- lnt/import - Utilities for converting to the LNT plist format for test data,
-              and for submitting plists to the server.
+ $ROOT/lnt/import - Utilities for converting to the LNT plist format for test
+                    data, and for submitting plists to the server.
 
- lnt/test - Tests for the infrastructure; they currently assume they are running
-            on a system with a live instance available at
-            'http://localhost/zorg/'.
+ $ROOT/lnt/viewer - The LNT web-app itself.
 
- lnt/viewer - The LNT web-app itself.
+ $ROOT/db - Database schema, utilities, and examples of the LNT plist format.
+
+ $ROOT/tests - Tests for the infrastructure; they currently assume they are
+                  running on a system with a live instance available at
+                  'http://localhost/zorg/'.
 
 
 Installation Instructions

Removed: zorg/trunk/lnt/import/AppleOpenSSLReader.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/import/AppleOpenSSLReader.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/import/AppleOpenSSLReader.py (original)
+++ zorg/trunk/lnt/import/AppleOpenSSLReader.py (removed)
@@ -1,114 +0,0 @@
-import os
-
-def parseOpenSSLFile(path):
-    data = open(path).read()
-    lines = list(open(path))
-    lnfields = [ln.strip().split(':') for ln in lines]
-    assert(lnfields[0][0] == '+H')
-    header = lnfields[0]
-    blockSizes = map(int, header[1:])
-
-    # Cipher -> [(Block Size,Value)*]
-    data = {}
-    for fields in lnfields[1:]:
-        # Ignore other fields
-        if fields[0] != '+F':
-            continue
-
-        name = fields[2]
-        countsPerBlock = fields[3:]
-        assert len(countsPerBlock) == len(blockSizes)
-        data[name] = [(b,float(c))
-                      for b,c in zip(blockSizes,countsPerBlock)]
-
-    return data
-
-def loadData(path):
-    # Look for svn-revision and timestamps.
-
-    llvmRevision = ''
-    startTime = endTime = ''
-
-    f = os.path.join(path, 'svn-revision')
-    if os.path.exists(f):
-        svnRevisionData = open(f).read()
-        assert(svnRevisionData[0] == 'r')
-        llvmRevision = int(svnRevisionData[1:])
-
-    f = os.path.join(path, 'start.timestamp')
-    if os.path.exists(f):
-        startTime = open(f).read().strip()
-
-    f = os.path.join(path, 'finished.timestamp')
-    if os.path.exists(f):
-        endTime = open(f).read().strip()
-
-    # Look for sub directories
-    openSSLData = []
-    for file in os.listdir(path):
-        p = os.path.join(path, file)
-        if os.path.isdir(p):
-            # Look for Tests/Apple.OpenSSL.64/speed.txt
-            p = os.path.join(p, 'Tests/Apple.OpenSSL.64/speed.txt')
-            if os.path.exists(p):
-                openSSLData.append((file, parseOpenSSLFile(p)))
-
-    basename = 'apple_openssl'
-
-    machine = { 'Name' : 'dgohman.apple.com',
-                'Info' : {  } }
-
-    run = { 'Start Time' : startTime,
-            'End Time' : endTime,
-            'Info' : { 'llvm-revision' : llvmRevision,
-                       'tag' : 'apple_openssl' } }
-
-    tests = []
-    groupInfo = []
-
-    for dirName,dirData in openSSLData:
-        # Demangle compiler & flags
-        if dirName.startswith('gcc'):
-            compiler = 'gcc'
-        elif dirName.startswith('llvm-gcc'):
-            compiler = 'llvm-gcc'
-        else:
-            raise ValueError,compiler
-        assert dirName[len(compiler)] == '-'
-        flags = dirName[len(compiler)+1:]
-
-        for cipher,values in dirData.items():
-            testName = basename + '.' + cipher + '.ips'
-            for block,value in values:
-                parameters = { 'blockSize' : block,
-                               'compiler' : compiler,
-                               'compiler_flags' : flags }
-                tests.append( { 'Name' : testName,
-                                'Info' : parameters,
-                                'Data' : [value] } )
-
-    return { 'Machine' : machine,
-             'Run' : run,
-             'Tests' : tests,
-             'Group Info' : groupInfo }
-
-def main():
-    import plistlib
-    import sys
-
-    global opts
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog raw-data-path output")
-    opts,args = parser.parse_args()
-
-    if len(args) != 2:
-        parser.error("incorrect number of argments")
-
-    file,output = args
-
-    data = loadData(file)
-
-    plistlib.writePlist(data, output)
-
-if __name__=='__main__':
-    main()

Removed: zorg/trunk/lnt/import/ImportData
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/import/ImportData?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/import/ImportData (original)
+++ zorg/trunk/lnt/import/ImportData (removed)
@@ -1,113 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import plistlib
-import sys
-import time
-sys.path.append(os.path.join(os.path.dirname(__file__),'../'))
-
-import viewer
-from viewer import Util
-from viewer import PerfDB
-import NightlytestReader
-import AppleOpenSSLReader
-
-def main():
-    global opts
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog dbpath files+")
-    parser.add_option("", "--email-on-import", dest="emailOnImport", type=int,
-                      default=False)
-    parser.add_option("", "--email-base-url", dest="emailReportURL", type=str,
-                      default=None)
-    parser.add_option("", "--email-host", dest="emailReportHost", type=str,
-                      default=None)
-    parser.add_option("", "--email-from", dest="emailReportFrom", type=str,
-                      default=None)
-    parser.add_option("", "--email-to", dest="emailReportTo", type=str,
-                      default=None)
-    parser.add_option("", "--format", dest="format",
-                      choices=('plist','nightlytest','apple_openssl'),
-                      default='plist')
-    parser.add_option("", "--commit", dest="commit", type=int,
-                      default=True)
-    parser.add_option("", "--show-sql", dest="showSQL", action="store_true",
-                      default=False)
-    parser.add_option("", "--show-sample-count", dest="showSampleCount",
-                      action="store_true", default=False)
-    opts,args = parser.parse_args()
-
-    if len(args) < 2:
-        parser.error("incorrect number of argments")
-
-    dbpath = args[0]
-
-    startTime = time.time()
-    db = PerfDB.PerfDB(dbpath, echo=opts.showSQL)
-    importFiles(db, args[1:])
-    if opts.commit:
-        db.commit()
-    else:
-        db.rollback()
-    print 'TOTAL IMPORT TIME: %.2fs' % (time.time() - startTime,)
-
-def importFiles(db, files):
-    importer = { 'plist' : plistlib.readPlist,
-                 'nightlytest' : NightlytestReader.loadSentData,
-                 'apple_openssl' : AppleOpenSSLReader.loadData }[opts.format]
-
-    def consumer(file):
-        try:
-            return importer(file)
-        except KeyboardInterrupt:
-            raise
-        except:
-            print 'ERROR: %r: import failed' % file
-            import traceback
-            traceback.print_exc()
-            return None
-
-    numMachines = db.getNumMachines()
-    numRuns = db.getNumRuns()
-    numTests = db.getNumTests()
-
-    # If the database gets fragmented, count(*) in SQLite can get really slow!?!
-    if opts.showSampleCount:
-        numSamples = db.getNumSamples()
-
-    for file in files:
-        print 'IMPORT: %s' % file
-        startTime = time.time()
-        data = consumer(file)
-        print '  LOAD TIME: %.2fs' % (time.time() - startTime,)
-        if data is None:
-            continue
-
-        startTime = time.time()
-        success,(machine,run) = PerfDB.importDataFromDict(db, data)
-        print '  IMPORT TIME: %.2fs' % (time.time() - startTime,)
-        if not success:
-            print "  IGNORING DUPLICATE RUN"
-            print "    MACHINE: %d" % (run.machine_id, )
-            print "    START  : %s" % (run.start_time, )
-            print "    END    : %s" % (run.end_time, )
-            for ri in run.info.values():
-                print "    INFO   : %r = %r" % (ri.key, ri.value)
-            continue
-        else:
-            if opts.emailOnImport:
-                import NTEmailReport
-                NTEmailReport.emailReport(db, run,
-                                          opts.emailReportURL,
-                                          opts.emailReportHost,
-                                          opts.emailReportFrom,
-                                          opts.emailReportTo)
-
-    print "ADDED: %d machines" % (db.getNumMachines() - numMachines,)
-    print "ADDED: %d runs" % (db.getNumRuns() - numRuns,)
-    print "ADDED: %d tests" % (db.getNumTests() - numTests,)
-    if opts.showSampleCount:
-        print "ADDED: %d samples" % (db.getNumSamples() - numSamples)
-
-if __name__ == '__main__':
-    main()

Removed: zorg/trunk/lnt/import/ImportXCBTimes
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/import/ImportXCBTimes?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/import/ImportXCBTimes (original)
+++ zorg/trunk/lnt/import/ImportXCBTimes (removed)
@@ -1,107 +0,0 @@
-#!/usr/bin/env python
-
-import os
-import time
-import sys
-sys.path.append(os.path.join(os.path.dirname(__file__),'../'))
-import viewer
-from viewer import Util
-from viewer import PerfDB
-
-def main():
-    global opts
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog file dbpath")
-    parser.add_option("", "--test-prefix",
-                      action="store", dest="testPrefix", default=None)
-    opts,args = parser.parse_args()
-
-    if len(args) != 2:
-        parser.error("incorrect number of argments")
-    if not opts.testPrefix:
-        parser.error("must specify test prefix")
-
-    dbpath,file = args
-
-    globals = {}
-    exec open(file) in globals, globals
-
-    db = PerfDB.PerfDB(dbpath)
-
-    numMachines = db.getNumMachines()
-    numTests = db.getNumTests()
-    numSamples = db.getNumSamples()
-
-    # Hardcode some things that aren't in the file
-    machine = PerfDB.Machine(-1,
-                             name = 'lordcrumb.apple.com',
-                             arch = 'Intel i386',
-                             os = 'SnowLeopard',
-                             hwconfig = '<unknown>',
-                             compiler = '<unknown>')
-    machine = db.getOrCreateMachine(machine)
-    print "MACHINE: %r" % machine
-
-    # Treat as a single "run"; our DB format has no way to lock
-    # individual samples together. I recall now that this was the
-    # motivation in treating a sample as a group of numbers, not just
-    # one.
-
-    # Rough guess.
-    mtime = os.stat(file).st_mtime
-    timestamp = time.strftime('%Y-%m-%dT%H:%M:%Sz', time.localtime(mtime))
-
-    # FIXME: Need to extract revision. :(
-    run = db.createRun(machine, PerfDB.Run(-1, -1, timestamp=timestamp, svnRevision=None))
-    print "RUN: %r" % run
-
-    ####
-
-    runs = globals.get('runs')
-    for keys,data in runs:
-        # Mangle a test name
-        testName = '%s:threads=%s:pch=%s:mode=%s' % (opts.testPrefix,
-                                                     keys.get('threads'),
-                                                     int(keys.get('pch') == 'pch'),
-                                                     keys.get('script'))
-        compiler = keys.get('cc')
-        compiler = compiler.replace('clang_driver','clang')
-        compiler = compiler.replace('_','/')
-        compiler = compiler.replace('xcc','ccc')
-        compilerOpts = '-O0,-g'
-
-        userTest = db.getOrCreateTest(PerfDB.Test(-1,
-                                                  name = testName,
-                                                  subtest = 'user',
-                                                  kindID = None,
-                                                  groupID = None,
-                                                  compiler = compiler,
-                                                  compilerOpts = compilerOpts))
-        sysTest = db.getOrCreateTest(PerfDB.Test(-1,
-                                                  name = testName,
-                                                  subtest = 'sys',
-                                                  kindID = None,
-                                                  groupID = None,
-                                                  compiler = compiler,
-                                                  compilerOpts = compilerOpts))
-        wallTest = db.getOrCreateTest(PerfDB.Test(-1,
-                                                  name = testName,
-                                                  subtest = 'wall',
-                                                  kindID = None,
-                                                  groupID = None,
-                                                  compiler = compiler,
-                                                  compilerOpts = compilerOpts))
-        assert data['version'] == 0
-        for (mem,user,sys,wall) in data['samples']:
-            db.addSample(userTest, run, PerfDB.Sample(-1, -1, -1, '', user))
-            db.addSample(sysTest, run, PerfDB.Sample(-1, -1, -1, '', sys))
-            db.addSample(wallTest, run, PerfDB.Sample(-1, -1, -1, '', wall))
-
-    db.commit()
-
-    print "ADDED: %d machines, %d tests, and %d samples." % (db.getNumMachines() - numMachines,
-                                                             db.getNumTests() - numTests,
-                                                             db.getNumSamples() - numSamples)
-
-if __name__ == '__main__':
-    main()

Removed: zorg/trunk/lnt/import/NTAuxSubmit
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/import/NTAuxSubmit?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/import/NTAuxSubmit (original)
+++ zorg/trunk/lnt/import/NTAuxSubmit (removed)
@@ -1,42 +0,0 @@
-#!/usr/bin/env python
-
-import sys
-import NightlytestReader
-import ServerUtil
-
-def main():
-    global opts
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog {nightlytest sentdata.txt}*")
-    parser.add_option("", "--commit", dest="commit", type=int,
-                      default=True)
-    parser.add_option("", "--no-convert", dest="noConvert")
-
-    # FIXME: It would be nice to support an easy mechanism for localized
-    # instances of the LNT infrastructure to default to the correct server for
-    # their installation.
-    parser.add_option("", "--server", dest="serverUrl", type=str,
-                      default="http://llvm.org/perf/db_nt_internal/submitRun")
-
-    opts,args = parser.parse_args()
-
-    if not args:
-        parser.error("no input files")
-
-    for inputFile in args:
-        print '%s: note: submitting %s' % (sys.argv[0], inputFile)
-
-        if opts.noConvert:
-            plistPath = inputFile
-        else:
-            # Convert to the zorg format.
-            #
-            # FIXME: Avoid temp file.
-            plistPath = "/tmp/t.plist"
-            NightlytestReader.convertNTData(inputFile, plistPath)
-
-        # Send it off.
-        ServerUtil.submitFiles(opts.serverUrl, [plistPath], opts.commit)
-
-if __name__ == '__main__':
-    main()

Removed: zorg/trunk/lnt/import/NTEmailReport.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/import/NTEmailReport.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/import/NTEmailReport.py (original)
+++ zorg/trunk/lnt/import/NTEmailReport.py (removed)
@@ -1,214 +0,0 @@
-#!/usr/bin/python
-
-import os
-import smtplib
-import sys
-sys.path.append(os.path.join(os.path.dirname(__file__),'../'))
-
-import StringIO
-import viewer
-from viewer import PerfDB
-from viewer.NTUtil import *
-
-def main():
-    global opts
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog database run-id baseurl sendmail-host from to")
-    opts,args = parser.parse_args()
-
-    if len(args) != 6:
-        parser.error("incorrect number of argments")
-
-    dbpath,runID,baseurl,host,from_,to = args
-
-    db = PerfDB.PerfDB(dbpath)
-    run = db.getRun(int(runID))
-
-    emailReport(db, run, baseurl, host, from_, to)
-
-def emailReport(db, run, baseurl, host, from_, to):
-    import email.mime.text
-
-    subject, report = getReport(db, run, baseurl)
-
-    msg = email.mime.text.MIMEText(report)
-    msg['Subject'] = subject
-    msg['From'] = from_
-    msg['To'] = to
-
-    s = smtplib.SMTP(host)
-    s.sendmail(from_, [to], msg.as_string())
-    s.quit()
-
-def findPreceedingRun(query, run):
-    """findPreceedingRun - Find the most recent run in query which
-    preceeds run."""
-    best = None
-    for r in query:
-        # Restrict to nightlytest runs.
-        if 'tag' in r.info and r.info['tag'].value != 'nightlytest':
-            continue
-
-        # Select most recent run prior to the one we are reporting on.
-        if (r.start_time < run.start_time and
-            (best is None or r.start_time > best.start_time)):
-            best = r
-    return best
-
-def getReport(db, run, baseurl):
-    report = StringIO.StringIO()
-
-    machine = run.machine
-    compareTo = None
-
-    # Find comparison run.
-    # FIXME: Share this code with similar stuff in the viewer.
-    # FIXME: Scalability.
-    compareCrossesMachine = False
-    compareTo = findPreceedingRun(db.runs(machine=machine), run)
-
-    # If we didn't find a comparison run against this machine, look
-    # for a comparison run against the same machine name, and warn the
-    # user we are crosses machines.
-    if compareTo is None:
-        compareCrossesMachine = True
-        q = db.session.query(PerfDB.Run).join(PerfDB.Machine)
-        q = q.filter_by(name=machine.name)
-        compareTo = findPreceedingRun(q, run)
-
-    summary = RunSummary()
-    summary.addRun(db, run)
-    if compareTo:
-        summary.addRun(db, compareTo)
-
-    def getTestValue(run, testname, keyname):
-        fullname = 'nightlytest.' + testname + '.' + keyname
-        t = summary.testMap.get(str(fullname))
-        if t is None:
-            return None
-        samples = summary.getRunSamples(run).get(t.id)
-        if not samples:
-            return None
-        return samples[0]
-    def getTestSuccess(run, testname, keyname):
-        res = getTestValue(run, testname, keyname + '.success')
-        if res is None:
-            return res
-        return not not res
-
-    newPasses = Util.multidict()
-    newFailures = Util.multidict()
-    addedTests = Util.multidict()
-    removedTests = Util.multidict()
-    allTests = set()
-    allFailures = set()
-    allFailuresByKey = Util.multidict()
-    for keyname,title in kTSKeys.items():
-        for testname in summary.testNames:
-            curResult = getTestSuccess(run, testname, keyname)
-            prevResult = getTestSuccess(compareTo, testname, keyname)
-
-            if curResult is not None:
-                allTests.add((testname,keyname))
-                if curResult is False:
-                    allFailures.add((testname,keyname))
-                    allFailuresByKey[title] = testname
-
-            # Count as new pass if it passed, and previous result was failure.
-            if curResult and prevResult == False:
-                newPasses[testname] = title
-
-            # Count as new failure if it failed, and previous result was not
-            # failure.
-            if curResult == False and prevResult != False:
-                newFailures[testname] = title
-
-            if curResult is not None and prevResult is None:
-                addedTests[testname] = title
-            if curResult is None and prevResult is not None:
-                removedTests[testname] = title
-
-    changes = Util.multidict()
-    for i,(name,key) in enumerate(kComparisonKinds):
-        if not key:
-            # FIXME: File Size
-            continue
-
-        for testname in summary.testNames:
-            curValue = getTestValue(run, testname, key)
-            prevValue = getTestValue(compareTo, testname, key)
-
-            # Skip missing tests.
-            if curValue is None or prevValue is None:
-                continue
-
-            pct = Util.safediv(curValue, prevValue)
-            if pct is None:
-                continue
-            pctDelta = pct - 1.
-            if abs(pctDelta) < .05:
-                continue
-            if min(prevValue, curValue) <= .2:
-                continue
-
-            changes[name] = (testname, curValue, prevValue, pctDelta)
-
-    if baseurl[-1] == '/':
-        baseurl = baseurl[:-1]
-    print >>report, """%s/%d/""" % (baseurl, run.id)
-    print >>report, """Name: %s""" % (machine.info['name'].value,)
-    print >>report, """Nickname: %s:%d""" % (machine.name, machine.number)
-    print >>report
-    print >>report, """Run: %d, Start Time: %s, End Time: %s""" % (run.id, run.start_time, run.end_time)
-    if compareTo:
-        print >>report, """Comparing To: %d, Start Time: %s, End Time: %s""" % (compareTo.id, compareTo.start_time, compareTo.end_time)
-        if compareCrossesMachine:
-            print >>report, """*** WARNING ***:""",
-            print >>report, """comparison is against a different machine""",
-            print >>report, """(%s:%d)""" % (compareTo.machine.name,
-                                             compareTo.machine.number)
-    else:
-        print >>report, """Comparing To: (none)"""
-    print >>report
-
-    print >>report, """--- Changes Summary ---"""
-    for title,elts in (('New Test Passes', newPasses),
-                       ('New Test Failures', newFailures),
-                       ('Added Tests', addedTests),
-                       ('Removed Tests', removedTests)):
-        print >>report, """%s: %d""" % (title,
-                                        sum([len(values)
-                                             for key,values in elts.items()]))
-    numSignificantChanges = sum([len(changelist)
-                                 for name,changelist in changes.items()])
-    print >>report, """Significant Changes: %d""" % (numSignificantChanges,)
-    print >>report
-    print >>report, """--- Tests Summary ---"""
-    print >>report, """Total Tests: %d""" % (len(allTests),)
-    print >>report, """Total Test Failures: %d""" % (len(allFailures),)
-    print >>report
-    print >>report, """Total Test Failures By Type:"""
-    for name,items in Util.sorted(allFailuresByKey.items()):
-        print >>report, """  %s: %d""" % (name, len(set(items)))
-
-    print >>report
-    print >>report, """--- Changes Detail ---"""
-    for title,elts in (('New Test Passes', newPasses),
-                       ('New Test Failures', newFailures),
-                       ('Added Tests', addedTests),
-                       ('Removed Tests', removedTests)):
-        print >>report, """%s:""" % (title,)
-        print >>report, "".join("%s [%s]\n" % (key, ", ".join(values))
-                                for key,values in Util.sorted(elts.items()))
-    print >>report, """Significant Changes in Test Results:"""
-    for name,changelist in changes.items():
-        print >>report, """%s:""" % name
-        for name,curValue,prevValue,delta in Util.sorted(changelist):
-            print >>report, """ %s: %.2f%% (%.4f => %.4f)""" % (name, delta*100, prevValue, curValue)
-
-    # FIXME: Where is the old mailer getting the arch from?
-    subject = """%s nightly tester results""" % machine.name
-    return subject,report.getvalue()
-
-if __name__ == '__main__':
-    main()

Removed: zorg/trunk/lnt/import/NightlytestReader.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/import/NightlytestReader.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/import/NightlytestReader.py (original)
+++ zorg/trunk/lnt/import/NightlytestReader.py (removed)
@@ -1,242 +0,0 @@
-#!/usr/bin/env python
-
-import re
-
-kDataKeyStart = re.compile('(.*)  =>(.*)')
-
-def loadSentData(path):
-    def parseDGResults(text):
-        results = {}
-        if 'Dejagnu skipped by user choice' in text:
-            return results
-        for ln in text.strip().split('\n'):
-            result,value = ln.split(':',1)
-            results[result] = results.get(result,[])
-            results[result].append(value)
-        return results
-
-    basename = 'nightlytest'
-
-    # Guess the format (server side or client side) based on the first
-    # character.
-    isServerSide = (open(path).read(1) == '\'')
-
-    f = open(path)
-    data = {}
-
-    current = None
-    inData = False
-    for ln in f:
-        if inData:
-            if ln == 'EOD\n':
-                inData = False
-            else:
-                data[current] += ln
-            continue
-
-        m = kDataKeyStart.match(ln)
-        if m:
-            current,value = m.groups()
-            if isServerSide:
-                assert current[0] == current[-1] == "'"
-                current = current[1:-1]
-                assert value[0] == value[1] == ' '
-                value = value[2:]
-                if value == '<<EOD':
-                    value = ''
-                    inData = True
-                else:
-                    assert value[0] == value[-2] == '"'
-                    assert value[-1] == ','
-                    value = value[1:-2]
-            data[current] = value
-        elif isServerSide:
-            assert ln == ',\n'
-        else:
-            assert current is not None
-            data[current] += ln
-
-    # Things we are ignoring for now
-    data.pop('a_file_sizes')
-    data.pop('all_tests')
-    data.pop('build_data')
-    data.pop('cvs_dir_count')
-    data.pop('cvs_file_count')
-    data.pop('cvsaddedfiles')
-    data.pop('cvsmodifiedfiles')
-    data.pop('cvsremovedfiles')
-    data.pop('cvsusercommitlist')
-    data.pop('cvsuserupdatelist')
-    data.pop('dejagnutests_log')
-    data.pop('expfail_tests')
-    data.pop('lines_of_code')
-    data.pop('llcbeta_options')
-    data.pop('new_tests')
-    data.pop('o_file_sizes')
-    data.pop('passing_tests')
-    data.pop('removed_tests')
-    data.pop('target_triple')
-    data.pop('unexpfail_tests')
-    data.pop('warnings')
-    data.pop('warnings_added')
-    data.pop('warnings_removed')
-
-    starttime = data.pop('starttime').strip()
-    endtime = data.pop('endtime').strip()
-
-    nickname = data.pop('nickname').strip()
-    machine_data = data.pop('machine_data').strip()
-    buildstatus = data.pop('buildstatus').strip()
-    configtime_user = data.pop('configtime_cpu')
-    configtime_wall = data.pop('configtime_wall')
-    checkouttime_user = data.pop('cvscheckouttime_cpu')
-    checkouttime_wall = data.pop('cvscheckouttime_wall')
-    dgtime_user = data.pop('dejagnutime_cpu')
-    dgtime_wall = data.pop('dejagnutime_wall')
-    buildtime_wall = float(data.pop('buildtime_wall').strip())
-    buildtime_user = float(data.pop('buildtime_cpu').strip())
-    gcc_version = data.pop('gcc_version')
-    dejagnutests_results = data.pop('dejagnutests_results')
-    multisource = data.pop('multisource_programstable')
-    singlesource = data.pop('singlesource_programstable')
-    externals = data.pop('externalsource_programstable')
-
-    assert not data.keys()
-
-    machine = { 'Name' : nickname,
-                'Info' : { 'gcc_version' : gcc_version } }
-    for ln in machine_data.split('\n'):
-        ln = ln.strip()
-        if not ln:
-            continue
-        assert ':' in ln
-        key,value = ln.split(':',1)
-        machine['Info'][key] = value
-
-    # We definitely don't want these in the machine data.
-    if 'time' in machine['Info']:
-        machine['Info'].pop('time')
-    if 'date' in machine['Info']:
-        machine['Info'].pop('date')
-
-    run = { 'Start Time' : starttime,
-            'End Time' : endtime,
-            'Info' : { 'tag' : 'nightlytest' } }
-
-    tests = []
-
-    groupInfo = []
-
-    # llvm-test doesn't provide this
-    infoData = {}
-
-    # Summary test information
-    tests.append( { 'Name' : basename + '.Summary.configtime.wall',
-                    'Info' : infoData,
-                    'Data' : [configtime_wall] } )
-    tests.append( { 'Name' : basename + '.Summary.configtime.user',
-                    'Info' : infoData,
-                    'Data' : [configtime_user] } )
-    tests.append( { 'Name' : basename + '.Summary.checkouttime.wall',
-                    'Info' : infoData,
-                    'Data' : [checkouttime_wall] } )
-    tests.append( { 'Name' : basename + '.Summary.checkouttime.user',
-                    'Info' : infoData,
-                    'Data' : [checkouttime_user] } )
-    tests.append( { 'Name' : basename + '.Summary.buildtime.wall',
-                    'Info' : infoData,
-                    'Data' : [buildtime_wall] } )
-    tests.append( { 'Name' : basename + '.Summary.buildtime.user',
-                    'Info' : infoData,
-                    'Data' : [buildtime_user] } )
-    tests.append( { 'Name' : basename + '.Summary.dgtime.wall',
-                    'Info' : infoData,
-                    'Data' : [dgtime_wall] } )
-    tests.append( { 'Name' : basename + '.Summary.dgtime.user',
-                    'Info' : infoData,
-                    'Data' : [dgtime_user] } )
-    tests.append( { 'Name' : basename + '.Summary.buildstatus',
-                    'Info' : infoData,
-                    'Data' : [buildstatus == 'OK'] } )
-
-    # DejaGNU Info
-    results = parseDGResults(dejagnutests_results)
-    for name in ('PASS', 'FAIL', 'XPASS', 'XFAIL'):
-        tests.append( { 'Name' : basename + '.DejaGNU.' + name,
-                        'Info' : infoData,
-                        'Data' : [len(results.get(name,[]))] } )
-
-    # llvm-test results
-    groupInfo.append( { 'Name' : basename,
-                        'Primary' : 1 } )
-    for groupname,data in (('SingleSource', singlesource),
-                           ('MultiSource', multisource),
-                           ('Externals', externals)):
-        groupInfo.append( { 'Name' : basename + '.' + groupname,
-                            'Primary' : 1 } )
-        lines = data.split('\n')
-        header = lines[0].strip().split(',')
-        for ln in lines[1:]:
-            ln = ln.strip()
-            if not ln:
-                continue
-            entry = dict([(k,v.strip())
-                           for k,v in zip(header, ln.split(','))])
-            testname = basename + '.%s/%s' % (groupname,
-                                              entry['Program'].replace('.','_'))
-            groupInfo.append( { 'Name' : testname,
-                                'Primary' : 1 } )
-
-            for name,key,tname in (('gcc.compile', 'GCCAS', 'time'),
-                                   ('bc.compile', 'Bytecode', 'size'),
-                                   ('llc.compile', 'LLC compile', 'time'),
-                                   ('llc-beta.compile', 'LLC-BETA compile', 'time'),
-                                   ('jit.compile', 'JIT codegen', 'time'),
-                                   ('gcc.exec', 'GCC', 'time'),
-                                   ('cbe.exec', 'CBE', 'time'),
-                                   ('llc.exec', 'LLC', 'time'),
-                                   ('llc-beta.exec', 'LLC-BETA', 'time'),
-                                   ('jit.exec', 'JIT', 'time'),
-                             ):
-                time = entry[key]
-                if time == '*':
-                    tests.append( { 'Name' : testname + '.%s.success' % name,
-                                    'Info' : infoData,
-                                    'Data' : [0] } )
-                else:
-                    tests.append( { 'Name' : testname + '.%s.success' % name,
-                                    'Info' : infoData,
-                                    'Data' : [1] } )
-                    tests.append( { 'Name' : testname + '.%s.%s' % (name, tname),
-                                    'Info' : infoData,
-                                    'Data' : [float(time)] } )
-        pass
-
-    return { 'Machine' : machine,
-             'Run' : run,
-             'Tests' : tests,
-             'Group Info' : groupInfo }
-
-def convertNTData(inputPath, outputPath):
-    """convertNTData - Convert a nightlytest "sentdata.txt" file into a zorg
-    plist file."""
-    import plistlib
-
-    data = loadSentData(inputPath)
-    plistlib.writePlist(data, outputPath)
-
-def main():
-    global opts
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog file output")
-    opts,args = parser.parse_args()
-
-    if len(args) != 2:
-        parser.error("incorrect number of argments")
-
-    file,output = args
-
-    convertNTData(file, output)
-
-if __name__=='__main__':
-    main()

Removed: zorg/trunk/lnt/import/ServerUtil.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/import/ServerUtil.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/import/ServerUtil.py (original)
+++ zorg/trunk/lnt/import/ServerUtil.py (removed)
@@ -1,14 +0,0 @@
-import plistlib
-import urllib
-import urllib2
-import urllib2_file
-
-def submitFiles(url, files, commit):
-    for file in files:
-        data = { 'file' : open(file),
-                 'commit' : ("0","1")[not not commit] }
-
-        response = urllib2.urlopen(url, data)
-        the_page = response.read()
-
-        print the_page

Removed: zorg/trunk/lnt/import/SubmitData
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/import/SubmitData?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/import/SubmitData (original)
+++ zorg/trunk/lnt/import/SubmitData (removed)
@@ -1,19 +0,0 @@
-#!/usr/bin/python
-
-import ServerUtil
-
-def main():
-    global opts
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog serverUrl files+")
-    parser.add_option("", "--commit", dest="commit", type=int,
-                      default=False)
-    opts,args = parser.parse_args()
-
-    if len(args) < 2:
-        parser.error("incorrect number of argments")
-
-    ServerUtil.submitFiles(args[0], args[1:], opts.commit)
-
-if __name__ == '__main__':
-    main()

Copied: zorg/trunk/lnt/lnt/__init__.py (from r99116, zorg/trunk/lnt/viewer/__init__.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/__init__.py?p2=zorg/trunk/lnt/lnt/__init__.py&p1=zorg/trunk/lnt/viewer/__init__.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/import/AppleOpenSSLReader.py (from r99116, zorg/trunk/lnt/import/AppleOpenSSLReader.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/import/AppleOpenSSLReader.py?p2=zorg/trunk/lnt/lnt/import/AppleOpenSSLReader.py&p1=zorg/trunk/lnt/import/AppleOpenSSLReader.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/import/ImportData (from r99116, zorg/trunk/lnt/import/ImportData)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/import/ImportData?p2=zorg/trunk/lnt/lnt/import/ImportData&p1=zorg/trunk/lnt/import/ImportData&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/import/ImportXCBTimes (from r99116, zorg/trunk/lnt/import/ImportXCBTimes)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/import/ImportXCBTimes?p2=zorg/trunk/lnt/lnt/import/ImportXCBTimes&p1=zorg/trunk/lnt/import/ImportXCBTimes&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/import/NTAuxSubmit (from r99116, zorg/trunk/lnt/import/NTAuxSubmit)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/import/NTAuxSubmit?p2=zorg/trunk/lnt/lnt/import/NTAuxSubmit&p1=zorg/trunk/lnt/import/NTAuxSubmit&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/import/NTEmailReport.py (from r99116, zorg/trunk/lnt/import/NTEmailReport.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/import/NTEmailReport.py?p2=zorg/trunk/lnt/lnt/import/NTEmailReport.py&p1=zorg/trunk/lnt/import/NTEmailReport.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/import/NightlytestReader.py (from r99116, zorg/trunk/lnt/import/NightlytestReader.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/import/NightlytestReader.py?p2=zorg/trunk/lnt/lnt/import/NightlytestReader.py&p1=zorg/trunk/lnt/import/NightlytestReader.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/import/ServerUtil.py (from r99116, zorg/trunk/lnt/import/ServerUtil.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/import/ServerUtil.py?p2=zorg/trunk/lnt/lnt/import/ServerUtil.py&p1=zorg/trunk/lnt/import/ServerUtil.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/import/SubmitData (from r99116, zorg/trunk/lnt/import/SubmitData)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/import/SubmitData?p2=zorg/trunk/lnt/lnt/import/SubmitData&p1=zorg/trunk/lnt/import/SubmitData&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/Config.py (from r99116, zorg/trunk/lnt/viewer/Config.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/Config.py?p2=zorg/trunk/lnt/lnt/viewer/Config.py&p1=zorg/trunk/lnt/viewer/Config.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/NTStyleBrowser.ptl (from r99116, zorg/trunk/lnt/viewer/NTStyleBrowser.ptl)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/NTStyleBrowser.ptl?p2=zorg/trunk/lnt/lnt/viewer/NTStyleBrowser.ptl&p1=zorg/trunk/lnt/viewer/NTStyleBrowser.ptl&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/NTUtil.py (from r99116, zorg/trunk/lnt/viewer/NTUtil.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/NTUtil.py?p2=zorg/trunk/lnt/lnt/viewer/NTUtil.py&p1=zorg/trunk/lnt/viewer/NTUtil.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/PerfDB.py (from r99116, zorg/trunk/lnt/viewer/PerfDB.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/PerfDB.py?p2=zorg/trunk/lnt/lnt/viewer/PerfDB.py&p1=zorg/trunk/lnt/viewer/PerfDB.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/Util.py (from r99116, zorg/trunk/lnt/viewer/Util.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/Util.py?p2=zorg/trunk/lnt/lnt/viewer/Util.py&p1=zorg/trunk/lnt/viewer/Util.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/__init__.py (from r99116, zorg/trunk/lnt/viewer/zview/__init__.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/__init__.py?p2=zorg/trunk/lnt/lnt/viewer/__init__.py&p1=zorg/trunk/lnt/viewer/zview/__init__.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/js/View2D.js (from r99116, zorg/trunk/lnt/viewer/js/View2D.js)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/js/View2D.js?p2=zorg/trunk/lnt/lnt/viewer/js/View2D.js&p1=zorg/trunk/lnt/viewer/js/View2D.js&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/js/View2DTest.html (from r99116, zorg/trunk/lnt/viewer/js/View2DTest.html)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/js/View2DTest.html?p2=zorg/trunk/lnt/lnt/viewer/js/View2DTest.html&p1=zorg/trunk/lnt/viewer/js/View2DTest.html&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/machines.ptl (from r99116, zorg/trunk/lnt/viewer/machines.ptl)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/machines.ptl?p2=zorg/trunk/lnt/lnt/viewer/machines.ptl&p1=zorg/trunk/lnt/viewer/machines.ptl&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/nightlytest.ptl (from r99116, zorg/trunk/lnt/viewer/nightlytest.ptl)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/nightlytest.ptl?p2=zorg/trunk/lnt/lnt/viewer/nightlytest.ptl&p1=zorg/trunk/lnt/viewer/nightlytest.ptl&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/publisher.py (from r99116, zorg/trunk/lnt/viewer/publisher.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/publisher.py?p2=zorg/trunk/lnt/lnt/viewer/publisher.py&p1=zorg/trunk/lnt/viewer/publisher.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/resources/form.css (from r99116, zorg/trunk/lnt/viewer/resources/form.css)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/resources/form.css?p2=zorg/trunk/lnt/lnt/viewer/resources/form.css&p1=zorg/trunk/lnt/viewer/resources/form.css&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/resources/mootools-1.2.4-core-nc.js (from r99116, zorg/trunk/lnt/viewer/resources/mootools-1.2.4-core-nc.js)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/resources/mootools-1.2.4-core-nc.js?p2=zorg/trunk/lnt/lnt/viewer/resources/mootools-1.2.4-core-nc.js&p1=zorg/trunk/lnt/viewer/resources/mootools-1.2.4-core-nc.js&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/resources/popup.js (from r99116, zorg/trunk/lnt/viewer/resources/popup.js)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/resources/popup.js?p2=zorg/trunk/lnt/lnt/viewer/resources/popup.js&p1=zorg/trunk/lnt/viewer/resources/popup.js&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/resources/sorttable.js (from r99116, zorg/trunk/lnt/viewer/resources/sorttable.js)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/resources/sorttable.js?p2=zorg/trunk/lnt/lnt/viewer/resources/sorttable.js&p1=zorg/trunk/lnt/viewer/resources/sorttable.js&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/resources/style.css (from r99116, zorg/trunk/lnt/viewer/resources/style.css)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/resources/style.css?p2=zorg/trunk/lnt/lnt/viewer/resources/style.css&p1=zorg/trunk/lnt/viewer/resources/style.css&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/root.ptl (from r99116, zorg/trunk/lnt/viewer/root.ptl)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/root.ptl?p2=zorg/trunk/lnt/lnt/viewer/root.ptl&p1=zorg/trunk/lnt/viewer/root.ptl&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/runs.ptl (from r99116, zorg/trunk/lnt/viewer/runs.ptl)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/runs.ptl?p2=zorg/trunk/lnt/lnt/viewer/runs.ptl&p1=zorg/trunk/lnt/viewer/runs.ptl&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/tests.ptl (from r99116, zorg/trunk/lnt/viewer/tests.ptl)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/tests.ptl?p2=zorg/trunk/lnt/lnt/viewer/tests.ptl&p1=zorg/trunk/lnt/viewer/tests.ptl&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/wsgi_restart.py (from r99116, zorg/trunk/lnt/viewer/wsgi_restart.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/wsgi_restart.py?p2=zorg/trunk/lnt/lnt/viewer/wsgi_restart.py&p1=zorg/trunk/lnt/viewer/wsgi_restart.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/zorg.cfg.sample (from r99116, zorg/trunk/lnt/viewer/zorg.cfg.sample)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/zorg.cfg.sample?p2=zorg/trunk/lnt/lnt/viewer/zorg.cfg.sample&p1=zorg/trunk/lnt/viewer/zorg.cfg.sample&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/zorg.cgi (from r99116, zorg/trunk/lnt/viewer/zorg.cgi)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/zorg.cgi?p2=zorg/trunk/lnt/lnt/viewer/zorg.cgi&p1=zorg/trunk/lnt/viewer/zorg.cgi&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/zorg.wsgi (from r99116, zorg/trunk/lnt/viewer/zorg.wsgi)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/zorg.wsgi?p2=zorg/trunk/lnt/lnt/viewer/zorg.wsgi&p1=zorg/trunk/lnt/viewer/zorg.wsgi&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/zview/__init__.py (from r99116, zorg/trunk/lnt/viewer/__init__.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/zview/__init__.py?p2=zorg/trunk/lnt/lnt/viewer/zview/__init__.py&p1=zorg/trunk/lnt/viewer/__init__.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/lnt/viewer/zview/zviewui.ptl (from r99116, zorg/trunk/lnt/viewer/zview/zviewui.ptl)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/lnt/viewer/zview/zviewui.ptl?p2=zorg/trunk/lnt/lnt/viewer/zview/zviewui.ptl&p1=zorg/trunk/lnt/viewer/zview/zviewui.ptl&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Removed: zorg/trunk/lnt/test/DB/Create.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/DB/Create.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/DB/Create.py (original)
+++ zorg/trunk/lnt/test/DB/Create.py (removed)
@@ -1,73 +0,0 @@
-# RUN: rm -f %t.db
-# RUN: sqlite3 %t.db ".read %src_root/db/CreateTables.sql"
-# RUN: python %s %t.db
-
-import sys
-from viewer.PerfDB import PerfDB, Run
-
-# Check creation.
-
-db = PerfDB(sys.argv[1])
-
-assert db.getNumMachines() == 0
-assert db.getNumRuns() == 0
-assert db.getNumTests() == 0
-
-m,created = db.getOrCreateMachine("machine-0", [('m_key','m_value')])
-assert created
-
-r,created = db.getOrCreateRun(m, '2000-01-02 03:04:05', '2006-07-08 09:10:11',
-                              [('r_key','r_value')])
-
-assert created
-t,created = db.getOrCreateTest("test-0", [('t_key','t_value')])
-assert created
-
-s = db.addSample(r, t, 1.0)
-
-print m
-print r
-print t
-
-db.commit()
-
-# Check uniquing.
-
-db2 = PerfDB(sys.argv[1])
-assert [m.id] == [i.id for i in db2.machines()]
-assert [r.id] == [i.id for i in db2.runs().all()]
-assert [t.id] == [i.id for i in db2.tests().all()]
-assert [s.id] == [i.id for i in db2.samples().all()]
-
-m2,created = db2.getOrCreateMachine("machine-0", [('m_key','m_value')])
-assert m.id == m2.id and not created
-
-r2,created = db2.getOrCreateRun(m, '2000-01-02 03:04:05', '2006-07-08 09:10:11',
-                              [('r_key','r_value')])
-assert r.id == r2.id and not created
-
-t2,created = db2.getOrCreateTest("test-0", [('t_key','t_value')])
-assert t.id == t2.id and not created
-
-s2 = db2.addSample(r2, t2, 2.0)
-assert s.id != s2.id
-
-assert r.id == s.run.id == s2.run.id
-assert t.id == s.test.id == s2.test.id
-
-db2.commit()
-
-# Check load.
-
-db3 = PerfDB(sys.argv[1])
-m3 = db3.machines().one()
-r3 = db3.runs().one()
-t3 = db3.tests().one()
-s3a,s3b = db3.samples().all()
-print m3,r3,t3,s3a,s3b
-
-assert m.id == m3.id
-assert r.id == r3.id
-assert t.id == t3.id
-assert s.id == s3a.id
-assert s2.id == s3b.id

Removed: zorg/trunk/lnt/test/DB/Import.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/DB/Import.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/DB/Import.py (original)
+++ zorg/trunk/lnt/test/DB/Import.py (removed)
@@ -1,67 +0,0 @@
-# RUN: rm -f %t.db
-# RUN: sqlite3 %t.db ".read %src_root/db/CreateTables.sql"
-
-# RUN: %src_root/import/ImportData --show-sample-count \
-# RUN:     %t.db %S/Inputs/sample-a-small.plist |\
-# RUN:   FileCheck -check-prefix=IMPORT-A-1 %s
-
-# IMPORT-A-1: ADDED: 1 machines
-# IMPORT-A-1: ADDED: 1 runs
-# IMPORT-A-1: ADDED: 90 tests
-# IMPORT-A-1: ADDED: 90 samples
-
-# RUN: %src_root/import/ImportData --show-sample-count \
-# RUN:     %t.db %S/Inputs/sample-b-small.plist |\
-# RUN:   FileCheck -check-prefix=IMPORT-B %s
-
-# IMPORT-B: ADDED: 0 machines
-# IMPORT-B: ADDED: 1 runs
-# IMPORT-B: ADDED: 0 tests
-# IMPORT-B: ADDED: 90 samples
-
-# RUN: %src_root/import/ImportData --show-sample-count \
-# RUN:     %t.db %S/Inputs/sample-a-small.plist |\
-# RUN:   FileCheck -check-prefix=IMPORT-A-2 %s
-
-# IMPORT-A-2: IGNORING DUPLICATE RUN
-# IMPORT-A-2: ADDED: 0 machines
-# IMPORT-A-2: ADDED: 0 runs
-# IMPORT-A-2: ADDED: 0 tests
-# IMPORT-A-2: ADDED: 0 samples
-
-# RUN: python %s %t.db
-
-import datetime, sys
-from viewer.PerfDB import PerfDB, Run, Test
-
-db = PerfDB(sys.argv[1])
-
-m = db.machines().one()
-assert m.id == 1
-assert m.name == 'smoosh-01.apple.com'
-
-info = dict((i.key,i.value) for i in m.info.values())
-assert 'os' in info
-assert info['os'] == ' Darwin 10.2.0'
-
-runs = db.runs().all()
-assert len(runs) == 2
-rA,rB = runs
-assert rA.machine == m
-assert rB.machine == m
-assert rA.start_time == datetime.datetime(2009, 11, 17, 2, 12, 25)
-assert rA.end_time == datetime.datetime(2009, 11, 17, 3, 44, 48)
-assert rA.info['tag'].key == 'tag'
-assert rA.info['tag'].value == 'nightlytest'
-
-t = db.tests().order_by(Test.name)[20]
-assert t.name == 'nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.compile.success'
-assert t.info.values() == []
-
-samples = db.samples(test=t).all()
-assert len(samples) == 2
-sA,sB = samples
-assert sA.run == rA
-assert sB.run == rB
-assert sA.value == 1.0
-assert sB.value == 1.0

Removed: zorg/trunk/lnt/test/DB/Inputs/sample-a-small.plist
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/DB/Inputs/sample-a-small.plist?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/DB/Inputs/sample-a-small.plist (original)
+++ zorg/trunk/lnt/test/DB/Inputs/sample-a-small.plist (removed)
@@ -1,2824 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>Group Info</key>
-	<array>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/partialsums</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/puzzle</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/recursive</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/spectral-norm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/CoyoteBench/almabench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/CoyoteBench/huffbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/CoyoteBench/lpbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Dhrystone/dry</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Dhrystone/fldry</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/chomp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/exptree</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/misr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/queens</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc-C++/mandel-text</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc-C++/oopack_v1p8</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc-C++/stepanov_v1p2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/ReedSolomon</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/fbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/ffbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-4</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-5</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-6</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-7</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-8</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/himenobmtxpa</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/mandel</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/mandel-2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/oourafft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/perlin</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/pi</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/richards_benchmark</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/salsa20</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/whetstone</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/ackermann</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/ary3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/fib2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/hash</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/heapsort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/hello</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/lists</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/matrix</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/methcall</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/nestedloop</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/objinst</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/random</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/sieve</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/strcat</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Bubblesort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/IntMM</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Oscar</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Perm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Puzzle</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Queens</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Quicksort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/RealMM</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Towers</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Treesort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-05-14-array-init</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-05-14-expr_stmt</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-06-08-BaseType</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-06-08-VirtualFunctions</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-06-13-Crasher</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-08-20-EnumSizeProblem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-09-29-NonPODsByValue</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2008-01-29-ParamAliasesReturn</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/ConditionalExpr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/ctor_dtor_count</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/ctor_dtor_count-2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/dead_try_block</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/function_try_block</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/simple_rethrow</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/simple_throw</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/global_ctor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/global_type</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/pointer_member</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/pointer_method</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/short_circuit_dtor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-04-17-PrintfChar</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-ArgumentTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-ManyArguments</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-03-NotTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-19-DivTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-08-02-CastTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-08-02-CastTest2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-08-19-CodegenBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-09-ArrayResolution</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-12-StructureArgs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-12-StructureArgsSimple</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-13-BadLoad</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-12-13-MishaTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-04-22-Switch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-02-DependentPHI</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-07-VarArgs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-12-MinIntProblem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-14-AtExit</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-26-Shorts</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-31-CastToBool</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-31-LongShifts</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-06-IntOverflow</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-08-BitOpsTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-09-LoadShorts</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-09-SignedArgs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-10-SignConversions</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-08-05-CastFPToUint</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-08-11-VaListArg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-08-20-FoldBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-09-18-BitFieldTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-10-13-SwitchTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-10-29-ScalarReplBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2004-02-02-NegativeZero</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2004-06-20-StaticBitfieldInit</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2004-11-28-GlobalBoolLayout</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-05-11-Popcount-ffs-fls</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-05-12-Int64ToFP</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-05-13-SDivTwo</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-07-15-Bitfield-ABI</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-07-17-INT-To-FP</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-11-29-LongSwitch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-01-23-UnionInit</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-01-29-SimpleIndirectCall</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-02-04-DivRem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-01-float_varg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-04-DynAllocAndRestore</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-07-Compare64BitConstant</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-11-LoadConstants</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2007-01-04-KNR-Args</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2007-03-02-VaCopy</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2007-04-10-BitfieldTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2008-04-18-LoopBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2008-04-20-LoopBug2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2008-07-13-InlineSetjmp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2009-04-16-BitfieldInitialization</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/AtomicOps</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/FloatPrecision</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/cast</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/cast-bug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/cast2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/ccc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/div</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/factor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/rem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/shr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/StructModifyTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/TestLoop</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_expandfft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_isamax</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_shift</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_stepfft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/build</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/build2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/divides</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/multiplies</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/simple</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/sumarray</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/sumarray-dbl</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/printargs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/ClamAV/clamscan</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/JM/ldecod/ldecod</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/JM/lencod/lencod</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/SIBsim4/SIBsim4</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/SPASS/SPASS</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/aha/aha</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/d/make_dparser</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/hbd/hbd</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/lambda-0_1_3/lambda</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/lemon/lemon</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/lua/lua</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/oggenc/oggenc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/sgefa/sgefa</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/siod/siod</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/spiff/spiff</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/sqlite3/sqlite3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/treecc/treecc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/viterbi/viterbi</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASCI_Purple/SMG2000/smg2000</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASC_Sequoia/AMGmk/AMGmk</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASC_Sequoia/CrystalMk/CrystalMk</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASC_Sequoia/IRSmk/IRSmk</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/drop3/drop3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/five11/five11</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/uudecode/uudecode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/uuencode/uuencode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Fhourstones-3_1/fhourstones3_1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Fhourstones/fhourstones</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/analyzer/analyzer</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/distray/distray</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/mason/mason</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/neural/neural</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/pcompress2/pcompress2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/pifft/pifft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MallocBench/cfrac/cfrac</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MallocBench/espresso/espresso</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MallocBench/gs/gs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/01-qbsort/qbsort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/03-testtrie/testtrie</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/04-bisect/bisect</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/05-eks/eks</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/08-main/main</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/09-vor/vor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/12-IOtest/iotest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/15-trie/trie</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/17-bintr/bintr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/18-imp/imp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/automotive-basicmath/automotive-basicmath</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/automotive-bitcount/automotive-bitcount</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/automotive-susan/automotive-susan</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/consumer-jpeg/consumer-jpeg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/consumer-lame/consumer-lame</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/consumer-typeset/consumer-typeset</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/network-dijkstra/network-dijkstra</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/network-patricia/network-patricia</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/office-ispell/office-ispell</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/office-stringsearch/office-stringsearch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/security-blowfish/security-blowfish</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/security-rijndael/security-rijndael</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/security-sha/security-sha</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-CRC32/telecomm-CRC32</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-FFT/telecomm-fft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-adpcm/telecomm-adpcm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-gsm/telecomm-gsm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/NPB-serial/is/is</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/bh/bh</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/bisort/bisort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/em3d/em3d</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/health/health</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/mst/mst</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/perimeter/perimeter</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/power/power</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/treeadd/treeadd</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/tsp/tsp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/voronoi/voronoi</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/OptimizerEval/optimizer-eval</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/PAQ8p/paq8p</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/family/family</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/fsm/fsm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/garage/garage</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/life/life</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/objects/objects</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/primes/primes</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/simul/simul</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/trees/trees</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/vcirc/vcirc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/TimberWolfMC/timberwolfmc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/agrep/agrep</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/allroots/allroots</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/assembler/assembler</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/bison/mybison</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/cdecl/cdecl</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/compiler/compiler</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/fixoutput/fixoutput</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/football/football</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/gnugo/gnugo</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/loader/loader</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/simulator/simulator</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/unix-smail/unix-smail</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/unix-tbl/unix-tbl</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/anagram/anagram</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/bc/bc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/ft/ft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/ks/ks</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/yacr2/yacr2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/SciMark2-C/scimark2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-3des/enc-3des</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-md5/enc-md5</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-rc4/enc-rc4</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/netbench-crc/netbench-crc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/netbench-url/netbench-url</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/8b10b/8b10b</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/beamformer/beamformer</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/bmm/bmm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/dbms/dbms</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/ecbdes/ecbdes</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/llubenchmark/llu</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mafft/pairlocalalign</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/adpcm/rawcaudio/rawcaudio</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/adpcm/rawdaudio/rawdaudio</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/g721/g721encode/encode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/gsm/toast/toast</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/jpeg/jpeg-6a/cjpeg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/mpeg2/mpeg2dec/mpeg2decode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/sim/sim</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.Externals</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-	</array>
-	<key>Machine</key>
-	<dict>
-		<key>Info</key>
-		<dict>
-			<key>gcc_version</key>
-			<string> i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646)</string>
-			<key>name</key>
-			<string> smoosh-01</string>
-			<key>os</key>
-			<string> Darwin 10.2.0</string>
-			<key>uname</key>
-			<string> Darwin smoosh-01 10.2.0 Darwin Kernel Version 10.2.0: Tue Nov  3 10:37:10 PST 2009; root:xnu-1486.2.11~1/RELEASE_I386 i386hardware: i386</string>
-		</dict>
-		<key>Name</key>
-		<string>smoosh-01.apple.com</string>
-	</dict>
-	<key>Run</key>
-	<dict>
-		<key>End Time</key>
-		<string>2009-11-17 03:44:48</string>
-		<key>Info</key>
-		<dict>
-			<key>tag</key>
-			<string>nightlytest</string>
-		</dict>
-		<key>Start Time</key>
-		<string>2009-11-17 02:12:25</string>
-	</dict>
-	<key>Tests</key>
-	<array>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 24.50</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.configtime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 22.59</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.configtime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 168.04</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.checkouttime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 0</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.checkouttime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>209.99000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.buildtime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>2501.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.buildtime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 0.0</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.dgtime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 0.0</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.dgtime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<true/>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.buildstatus</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.PASS</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.FAIL</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.XPASS</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.XFAIL</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.019300000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>2912.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.010800000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.010800000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.011299999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.25</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.2200000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.2200000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.2200000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.0899999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0137</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>2848.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.013299999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0135</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0144</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1699999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3400000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1499999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1599999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1799999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.013599999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3248.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.012699999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.012800000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0121</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3200000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3500000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3999999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3999999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.4299999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0058999999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1264.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0067000000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0067999999999999996</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0071999999999999998</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.92000000000000004</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.93999999999999995</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.93999999999999995</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc-beta.exec.success</string>
-		</dict>
-	</array>
-</dict>
-</plist>

Removed: zorg/trunk/lnt/test/DB/Inputs/sample-b-small.plist
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/DB/Inputs/sample-b-small.plist?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/DB/Inputs/sample-b-small.plist (original)
+++ zorg/trunk/lnt/test/DB/Inputs/sample-b-small.plist (removed)
@@ -1,2824 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>Group Info</key>
-	<array>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/partialsums</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/puzzle</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/recursive</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/spectral-norm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/CoyoteBench/almabench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/CoyoteBench/huffbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/CoyoteBench/lpbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Dhrystone/dry</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Dhrystone/fldry</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/chomp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/exptree</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/misr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/queens</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc-C++/mandel-text</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc-C++/oopack_v1p8</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc-C++/stepanov_v1p2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/ReedSolomon</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/fbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/ffbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-4</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-5</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-6</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-7</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-8</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/himenobmtxpa</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/mandel</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/mandel-2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/oourafft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/perlin</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/pi</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/richards_benchmark</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/salsa20</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/whetstone</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/ackermann</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/ary3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/fib2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/hash</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/heapsort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/hello</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/lists</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/matrix</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/methcall</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/nestedloop</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/objinst</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/random</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/sieve</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/strcat</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Bubblesort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/IntMM</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Oscar</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Perm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Puzzle</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Queens</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Quicksort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/RealMM</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Towers</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Treesort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-05-14-array-init</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-05-14-expr_stmt</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-06-08-BaseType</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-06-08-VirtualFunctions</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-06-13-Crasher</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-08-20-EnumSizeProblem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-09-29-NonPODsByValue</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2008-01-29-ParamAliasesReturn</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/ConditionalExpr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/ctor_dtor_count</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/ctor_dtor_count-2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/dead_try_block</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/function_try_block</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/simple_rethrow</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/simple_throw</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/global_ctor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/global_type</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/pointer_member</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/pointer_method</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/short_circuit_dtor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-04-17-PrintfChar</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-ArgumentTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-ManyArguments</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-03-NotTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-19-DivTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-08-02-CastTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-08-02-CastTest2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-08-19-CodegenBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-09-ArrayResolution</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-12-StructureArgs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-12-StructureArgsSimple</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-13-BadLoad</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-12-13-MishaTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-04-22-Switch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-02-DependentPHI</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-07-VarArgs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-12-MinIntProblem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-14-AtExit</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-26-Shorts</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-31-CastToBool</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-31-LongShifts</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-06-IntOverflow</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-08-BitOpsTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-09-LoadShorts</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-09-SignedArgs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-10-SignConversions</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-08-05-CastFPToUint</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-08-11-VaListArg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-08-20-FoldBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-09-18-BitFieldTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-10-13-SwitchTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-10-29-ScalarReplBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2004-02-02-NegativeZero</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2004-06-20-StaticBitfieldInit</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2004-11-28-GlobalBoolLayout</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-05-11-Popcount-ffs-fls</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-05-12-Int64ToFP</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-05-13-SDivTwo</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-07-15-Bitfield-ABI</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-07-17-INT-To-FP</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-11-29-LongSwitch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-01-23-UnionInit</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-01-29-SimpleIndirectCall</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-02-04-DivRem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-01-float_varg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-04-DynAllocAndRestore</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-07-Compare64BitConstant</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-11-LoadConstants</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2007-01-04-KNR-Args</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2007-03-02-VaCopy</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2007-04-10-BitfieldTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2008-04-18-LoopBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2008-04-20-LoopBug2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2008-07-13-InlineSetjmp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2009-04-16-BitfieldInitialization</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/AtomicOps</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/FloatPrecision</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/cast</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/cast-bug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/cast2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/ccc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/div</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/factor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/rem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/shr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/StructModifyTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/TestLoop</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_expandfft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_isamax</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_shift</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_stepfft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/build</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/build2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/divides</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/multiplies</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/simple</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/sumarray</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/sumarray-dbl</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/printargs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/ClamAV/clamscan</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/JM/ldecod/ldecod</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/JM/lencod/lencod</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/SIBsim4/SIBsim4</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/SPASS/SPASS</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/aha/aha</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/d/make_dparser</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/hbd/hbd</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/lambda-0_1_3/lambda</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/lemon/lemon</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/lua/lua</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/oggenc/oggenc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/sgefa/sgefa</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/siod/siod</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/spiff/spiff</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/sqlite3/sqlite3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/treecc/treecc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/viterbi/viterbi</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASCI_Purple/SMG2000/smg2000</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASC_Sequoia/AMGmk/AMGmk</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASC_Sequoia/CrystalMk/CrystalMk</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASC_Sequoia/IRSmk/IRSmk</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/drop3/drop3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/five11/five11</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/uudecode/uudecode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/uuencode/uuencode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Fhourstones-3_1/fhourstones3_1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Fhourstones/fhourstones</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/analyzer/analyzer</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/distray/distray</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/mason/mason</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/neural/neural</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/pcompress2/pcompress2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/pifft/pifft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MallocBench/cfrac/cfrac</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MallocBench/espresso/espresso</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MallocBench/gs/gs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/01-qbsort/qbsort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/03-testtrie/testtrie</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/04-bisect/bisect</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/05-eks/eks</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/08-main/main</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/09-vor/vor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/12-IOtest/iotest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/15-trie/trie</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/17-bintr/bintr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/18-imp/imp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/automotive-basicmath/automotive-basicmath</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/automotive-bitcount/automotive-bitcount</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/automotive-susan/automotive-susan</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/consumer-jpeg/consumer-jpeg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/consumer-lame/consumer-lame</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/consumer-typeset/consumer-typeset</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/network-dijkstra/network-dijkstra</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/network-patricia/network-patricia</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/office-ispell/office-ispell</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/office-stringsearch/office-stringsearch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/security-blowfish/security-blowfish</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/security-rijndael/security-rijndael</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/security-sha/security-sha</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-CRC32/telecomm-CRC32</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-FFT/telecomm-fft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-adpcm/telecomm-adpcm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-gsm/telecomm-gsm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/NPB-serial/is/is</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/bh/bh</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/bisort/bisort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/em3d/em3d</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/health/health</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/mst/mst</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/perimeter/perimeter</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/power/power</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/treeadd/treeadd</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/tsp/tsp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/voronoi/voronoi</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/OptimizerEval/optimizer-eval</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/PAQ8p/paq8p</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/family/family</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/fsm/fsm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/garage/garage</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/life/life</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/objects/objects</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/primes/primes</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/simul/simul</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/trees/trees</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/vcirc/vcirc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/TimberWolfMC/timberwolfmc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/agrep/agrep</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/allroots/allroots</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/assembler/assembler</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/bison/mybison</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/cdecl/cdecl</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/compiler/compiler</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/fixoutput/fixoutput</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/football/football</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/gnugo/gnugo</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/loader/loader</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/simulator/simulator</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/unix-smail/unix-smail</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/unix-tbl/unix-tbl</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/anagram/anagram</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/bc/bc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/ft/ft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/ks/ks</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/yacr2/yacr2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/SciMark2-C/scimark2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-3des/enc-3des</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-md5/enc-md5</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-rc4/enc-rc4</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/netbench-crc/netbench-crc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/netbench-url/netbench-url</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/8b10b/8b10b</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/beamformer/beamformer</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/bmm/bmm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/dbms/dbms</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/ecbdes/ecbdes</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/llubenchmark/llu</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mafft/pairlocalalign</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/adpcm/rawcaudio/rawcaudio</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/adpcm/rawdaudio/rawdaudio</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/g721/g721encode/encode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/gsm/toast/toast</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/jpeg/jpeg-6a/cjpeg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/mpeg2/mpeg2dec/mpeg2decode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/sim/sim</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.Externals</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-	</array>
-	<key>Machine</key>
-	<dict>
-		<key>Info</key>
-		<dict>
-			<key>gcc_version</key>
-			<string> i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646)</string>
-			<key>name</key>
-			<string> smoosh-01</string>
-			<key>os</key>
-			<string> Darwin 10.2.0</string>
-			<key>uname</key>
-			<string> Darwin smoosh-01 10.2.0 Darwin Kernel Version 10.2.0: Tue Nov  3 10:37:10 PST 2009; root:xnu-1486.2.11~1/RELEASE_I386 i386hardware: i386</string>
-		</dict>
-		<key>Name</key>
-		<string>smoosh-01.apple.com</string>
-	</dict>
-	<key>Run</key>
-	<dict>
-		<key>End Time</key>
-		<string>2009-11-19 03:00:12</string>
-		<key>Info</key>
-		<dict>
-			<key>tag</key>
-			<string>nightlytest</string>
-		</dict>
-		<key>Start Time</key>
-		<string>2009-11-19 01:27:49</string>
-	</dict>
-	<key>Tests</key>
-	<array>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 24.36</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.configtime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 22.62</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.configtime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 146.27</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.checkouttime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 0</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.checkouttime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>204.41999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.buildtime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>2508.75</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.buildtime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 0.0</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.dgtime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 0.0</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.dgtime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<true/>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.buildstatus</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.PASS</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.FAIL</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.XPASS</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.XFAIL</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.019199999999999998</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>2912.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0111</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0111</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0114</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.25</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.2200000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.1499999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.1600000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.3700000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0135</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>2848.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.014</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0138</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0146</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1699999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3400000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1699999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1699999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1899999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0135</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3248.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.012800000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0129</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.011900000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3200000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3500000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3999999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3999999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.4199999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0057000000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1264.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0068999999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0070000000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0074000000000000003</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.92000000000000004</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.93999999999999995</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.93000000000000005</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc-beta.exec.success</string>
-		</dict>
-	</array>
-</dict>
-</plist>

Removed: zorg/trunk/lnt/test/Misc/Inputs/sample-a-small.plist
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/Misc/Inputs/sample-a-small.plist?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/Misc/Inputs/sample-a-small.plist (original)
+++ zorg/trunk/lnt/test/Misc/Inputs/sample-a-small.plist (removed)
@@ -1,2824 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>Group Info</key>
-	<array>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/partialsums</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/puzzle</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/recursive</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/spectral-norm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/CoyoteBench/almabench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/CoyoteBench/huffbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/CoyoteBench/lpbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Dhrystone/dry</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Dhrystone/fldry</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/chomp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/exptree</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/misr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/McGill/queens</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc-C++/mandel-text</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc-C++/oopack_v1p8</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc-C++/stepanov_v1p2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/ReedSolomon</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/fbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/ffbench</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-4</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-5</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-6</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-7</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/flops-8</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/himenobmtxpa</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/mandel</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/mandel-2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/oourafft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/perlin</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/pi</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/richards_benchmark</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/salsa20</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Misc/whetstone</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/ackermann</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/ary3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/fib2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/hash</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/heapsort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/hello</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/lists</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/matrix</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/methcall</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/nestedloop</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/objinst</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/random</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/sieve</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Shootout/strcat</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Bubblesort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/IntMM</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Oscar</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Perm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Puzzle</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Queens</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Quicksort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/RealMM</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Towers</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/Stanford/Treesort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-05-14-array-init</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-05-14-expr_stmt</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-06-08-BaseType</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-06-08-VirtualFunctions</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-06-13-Crasher</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-08-20-EnumSizeProblem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2003-09-29-NonPODsByValue</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/2008-01-29-ParamAliasesReturn</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/ConditionalExpr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/ctor_dtor_count</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/ctor_dtor_count-2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/dead_try_block</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/function_try_block</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/simple_rethrow</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/EH/simple_throw</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/global_ctor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/global_type</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/pointer_member</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/pointer_method</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Regression/C++/short_circuit_dtor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-04-17-PrintfChar</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-ArgumentTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-CastTest3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-02-ManyArguments</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-03-NotTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-05-19-DivTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-08-02-CastTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-08-02-CastTest2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-08-19-CodegenBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-09-ArrayResolution</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-12-StructureArgs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-12-StructureArgsSimple</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-10-13-BadLoad</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2002-12-13-MishaTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-04-22-Switch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-02-DependentPHI</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-07-VarArgs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-12-MinIntProblem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-14-AtExit</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-26-Shorts</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-31-CastToBool</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-05-31-LongShifts</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-06-IntOverflow</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-08-BitOpsTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-09-LoadShorts</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-09-SignedArgs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-07-10-SignConversions</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-08-05-CastFPToUint</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-08-11-VaListArg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-08-20-FoldBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-09-18-BitFieldTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-10-13-SwitchTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2003-10-29-ScalarReplBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2004-02-02-NegativeZero</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2004-06-20-StaticBitfieldInit</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2004-11-28-GlobalBoolLayout</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-05-11-Popcount-ffs-fls</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-05-12-Int64ToFP</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-05-13-SDivTwo</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-07-15-Bitfield-ABI</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-07-17-INT-To-FP</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2005-11-29-LongSwitch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-01-23-UnionInit</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-01-29-SimpleIndirectCall</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-02-04-DivRem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-01-float_varg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-04-DynAllocAndRestore</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-07-Compare64BitConstant</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2006-12-11-LoadConstants</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2007-01-04-KNR-Args</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2007-03-02-VaCopy</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2007-04-10-BitfieldTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2008-04-18-LoopBug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2008-04-20-LoopBug2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2008-07-13-InlineSetjmp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/2009-04-16-BitfieldInitialization</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/AtomicOps</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/FloatPrecision</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/cast</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/cast-bug</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/cast2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/ccc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/div</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/factor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/rem</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/SignlessTypes/shr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/StructModifyTest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/TestLoop</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_expandfft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_isamax</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_shift</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/SSE/sse_stepfft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/build</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/build2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/divides</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/multiplies</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/simple</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/sumarray</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/Vector/sumarray-dbl</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/UnitTests/printargs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/ClamAV/clamscan</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/JM/ldecod/ldecod</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/JM/lencod/lencod</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/SIBsim4/SIBsim4</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/SPASS/SPASS</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/aha/aha</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/d/make_dparser</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/hbd/hbd</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/lambda-0_1_3/lambda</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/lemon/lemon</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/lua/lua</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/oggenc/oggenc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/sgefa/sgefa</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/siod/siod</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/spiff/spiff</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/sqlite3/sqlite3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/treecc/treecc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Applications/viterbi/viterbi</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASCI_Purple/SMG2000/smg2000</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASC_Sequoia/AMGmk/AMGmk</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASC_Sequoia/CrystalMk/CrystalMk</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/ASC_Sequoia/IRSmk/IRSmk</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/drop3/drop3</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/five11/five11</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/uudecode/uudecode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/BitBench/uuencode/uuencode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Fhourstones-3_1/fhourstones3_1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Fhourstones/fhourstones</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/analyzer/analyzer</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/distray/distray</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/fourinarow/fourinarow</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/mason/mason</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/neural/neural</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/pcompress2/pcompress2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/FreeBench/pifft/pifft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MallocBench/cfrac/cfrac</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MallocBench/espresso/espresso</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MallocBench/gs/gs</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/01-qbsort/qbsort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/03-testtrie/testtrie</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/04-bisect/bisect</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/05-eks/eks</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/08-main/main</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/09-vor/vor</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/12-IOtest/iotest</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/15-trie/trie</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/17-bintr/bintr</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/McCat/18-imp/imp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/automotive-basicmath/automotive-basicmath</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/automotive-bitcount/automotive-bitcount</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/automotive-susan/automotive-susan</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/consumer-jpeg/consumer-jpeg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/consumer-lame/consumer-lame</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/consumer-typeset/consumer-typeset</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/network-dijkstra/network-dijkstra</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/network-patricia/network-patricia</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/office-ispell/office-ispell</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/office-stringsearch/office-stringsearch</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/security-blowfish/security-blowfish</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/security-rijndael/security-rijndael</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/security-sha/security-sha</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-CRC32/telecomm-CRC32</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-FFT/telecomm-fft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-adpcm/telecomm-adpcm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/MiBench/telecomm-gsm/telecomm-gsm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/NPB-serial/is/is</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/bh/bh</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/bisort/bisort</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/em3d/em3d</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/health/health</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/mst/mst</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/perimeter/perimeter</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/power/power</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/treeadd/treeadd</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/tsp/tsp</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Olden/voronoi/voronoi</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/OptimizerEval/optimizer-eval</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/PAQ8p/paq8p</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/family/family</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/fsm/fsm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/garage/garage</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/life/life</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/objects/objects</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/primes/primes</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/simul/simul</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/trees/trees</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C++/vcirc/vcirc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/TimberWolfMC/timberwolfmc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/agrep/agrep</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/allroots/allroots</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/assembler/assembler</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/bison/mybison</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/cdecl/cdecl</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/compiler/compiler</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/fixoutput/fixoutput</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/football/football</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/gnugo/gnugo</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/loader/loader</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/simulator/simulator</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/unix-smail/unix-smail</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Prolangs-C/unix-tbl/unix-tbl</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/anagram/anagram</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/bc/bc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/ft/ft</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/ks/ks</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Ptrdist/yacr2/yacr2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/SciMark2-C/scimark2</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-3des/enc-3des</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-md5/enc-md5</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-pc1/enc-pc1</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/enc-rc4/enc-rc4</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/netbench-crc/netbench-crc</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/Trimaran/netbench-url/netbench-url</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/8b10b/8b10b</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/beamformer/beamformer</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/bmm/bmm</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/dbms/dbms</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/VersaBench/ecbdes/ecbdes</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/llubenchmark/llu</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mafft/pairlocalalign</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/adpcm/rawcaudio/rawcaudio</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/adpcm/rawdaudio/rawdaudio</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/g721/g721encode/encode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/gsm/toast/toast</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/jpeg/jpeg-6a/cjpeg</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/mediabench/mpeg2/mpeg2dec/mpeg2decode</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.MultiSource/Benchmarks/sim/sim</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Name</key>
-			<string>nightlytest.Externals</string>
-			<key>Primary</key>
-			<integer>1</integer>
-		</dict>
-	</array>
-	<key>Machine</key>
-	<dict>
-		<key>Info</key>
-		<dict>
-			<key>gcc_version</key>
-			<string> i686-apple-darwin10-gcc-4.2.1 (GCC) 4.2.1 (Apple Inc. build 5646)</string>
-			<key>name</key>
-			<string> ZORG SAMPLE MACHINE NICKNAME </string>
-			<key>os</key>
-			<string> Darwin 10.2.0</string>
-			<key>uname</key>
-			<string> Darwin smoosh-01 10.2.0 Darwin Kernel Version 10.2.0: Tue Nov  3 10:37:10 PST 2009; root:xnu-1486.2.11~1/RELEASE_I386 i386hardware: i386</string>
-		</dict>
-		<key>Name</key>
-		<string>ZORG SAMPLE MACHINE</string>
-	</dict>
-	<key>Run</key>
-	<dict>
-		<key>End Time</key>
-		<string>2009-11-17 03:44:48</string>
-		<key>Info</key>
-		<dict>
-			<key>tag</key>
-			<string>nightlytest</string>
-		</dict>
-		<key>Start Time</key>
-		<string>2009-11-17 02:12:25</string>
-	</dict>
-	<key>Tests</key>
-	<array>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 24.50</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.configtime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 22.59</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.configtime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 168.04</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.checkouttime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 0</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.checkouttime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>209.99000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.buildtime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>2501.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.buildtime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 0.0</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.dgtime.wall</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<string> 0.0</string>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.dgtime.user</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<true/>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.Summary.buildstatus</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.PASS</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.FAIL</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.XPASS</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>0</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.DejaGNU.XFAIL</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.019300000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>2912.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.010800000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.010800000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.011299999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.25</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.2200000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.2200000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.2200000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.llc-beta.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3.0899999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fannkuch.jit.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0137</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>2848.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.013299999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0135</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0144</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1699999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3400000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1499999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1599999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.llc-beta.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.1799999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/fasta.jit.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.013599999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>3248.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.012699999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.012800000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0121</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3200000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3500000000000001</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3999999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.3999999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.llc-beta.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1.4299999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/n-body.jit.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0058999999999999999</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.bc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>1264.0</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.bc.compile.size</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0067000000000000002</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc-beta.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0067999999999999996</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc-beta.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.jit.compile.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.0071999999999999998</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.jit.compile.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.92000000000000004</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.gcc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.cbe.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.93999999999999995</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.cbe.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.exec.success</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<real>0.93999999999999995</real>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc.exec.time</string>
-		</dict>
-		<dict>
-			<key>Data</key>
-			<array>
-				<integer>1</integer>
-			</array>
-			<key>Info</key>
-			<dict>
-			</dict>
-			<key>Name</key>
-			<string>nightlytest.SingleSource/Benchmarks/BenchmarkGame/nsieve-bits.llc-beta.exec.success</string>
-		</dict>
-	</array>
-</dict>
-</plist>

Removed: zorg/trunk/lnt/test/Misc/SubmitAndEmail.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/Misc/SubmitAndEmail.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/Misc/SubmitAndEmail.py (original)
+++ zorg/trunk/lnt/test/Misc/SubmitAndEmail.py (removed)
@@ -1,19 +0,0 @@
-# RUN: rm -f %t.db
-# RUN: sqlite3 %t.db ".read %src_root/db/CreateTables.sql"
-
-# FIXME: Find a way to test email works, without being annoying.
-# RUN: %src_root/import/ImportData \
-# RUN:  --show-sample-count \
-# RUN:  --commit=0 \
-# RUN:  --email-on-import=1 --email-host=relay.example.com \
-# RUN:  --email-from=example at example.com --email-to=example at example.com \
-# RUN:  --email-base-url=ZORG_TEST %t.db %S/Inputs/sample-a-small.plist > %t
-# RUN: FileCheck %s < %t
-
-# CHECK: ADDED: 1 machines
-# CHECK: ADDED: 1 runs
-# CHECK: ADDED: 90 tests
-# CHECK: ADDED: 90 samples
-
-
-

Removed: zorg/trunk/lnt/test/Web/NightlytestMachinesRoot.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/Web/NightlytestMachinesRoot.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/Web/NightlytestMachinesRoot.py (original)
+++ zorg/trunk/lnt/test/Web/NightlytestMachinesRoot.py (removed)
@@ -1,4 +0,0 @@
-# RUN: curl -s http://localhost/zorg/nightlytest/machines/1/ | FileCheck %s
-# CHECK: <h1>LLVM Nightly Test Results</h1>
-# CHECK: Render Time:
-

Removed: zorg/trunk/lnt/test/Web/NightlytestRoot.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/Web/NightlytestRoot.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/Web/NightlytestRoot.py (original)
+++ zorg/trunk/lnt/test/Web/NightlytestRoot.py (removed)
@@ -1,3 +0,0 @@
-# RUN: curl -s http://localhost/zorg/nightlytest/ | FileCheck %s
-# CHECK: <h2>LLVM Nightly Test</h2>
-# CHECK: Render Time:

Removed: zorg/trunk/lnt/test/Web/NightlytestRunRoot.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/Web/NightlytestRunRoot.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/Web/NightlytestRunRoot.py (original)
+++ zorg/trunk/lnt/test/Web/NightlytestRunRoot.py (removed)
@@ -1,10 +0,0 @@
-# RUN: curl -s http://localhost/zorg/nightlytest/1/ | FileCheck --check-prefix=BRIEF %s
-# BRIEF: <h1>LLVM Nightly Test Results</h1>
-# BRIEF: See Full Test Results
-# BRIEF: Render Time:
-
-# RUN: curl -s http://localhost/zorg/nightlytest/1/?full=1 | FileCheck --check-prefix=FULL %s
-# FULL: <h1>LLVM Nightly Test Results</h1>
-# FULL: See Brief Test Results
-# FULL: Render Time:
-

Removed: zorg/trunk/lnt/test/Web/RootPage.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/Web/RootPage.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/Web/RootPage.py (original)
+++ zorg/trunk/lnt/test/Web/RootPage.py (removed)
@@ -1,2 +0,0 @@
-# RUN: curl -s http://localhost/zorg/ | FileCheck %s
-# CHECK: <h2>LLVM Testing DB</h2>

Removed: zorg/trunk/lnt/test/lit.cfg
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/test/lit.cfg?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/test/lit.cfg (original)
+++ zorg/trunk/lnt/test/lit.cfg (removed)
@@ -1,30 +0,0 @@
-# -*- Python -*-
-
-import os
-import platform
-
-# Configuration file for the 'lit' test runner.
-
-# name: The name of this test suite.
-config.name = 'Zorg'
-
-# testFormat: The test format to use to interpret tests.
-#
-# For now we require '&&' between commands, until they get globally killed and
-# the test runner updated.
-execute_external = platform.system() != 'Windows'
-config.test_format = lit.formats.ShTest(execute_external)
-
-# suffixes: A list of file extensions to treat as test files.
-config.suffixes = ['.py']
-
-# test_source_root: The root path where tests are located.
-config.test_source_root = os.path.dirname(__file__)
-config.test_exec_root = config.test_source_root
-
-config.target_triple = None
-
-src_root = os.path.join(config.test_source_root, '..')
-config.environment['PYTHONPATH'] = src_root
-
-config.substitutions.append(('%src_root', src_root))

Copied: zorg/trunk/lnt/tests/DB/Create.py (from r99116, zorg/trunk/lnt/test/DB/Create.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/DB/Create.py?p2=zorg/trunk/lnt/tests/DB/Create.py&p1=zorg/trunk/lnt/test/DB/Create.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/DB/Import.py (from r99116, zorg/trunk/lnt/test/DB/Import.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/DB/Import.py?p2=zorg/trunk/lnt/tests/DB/Import.py&p1=zorg/trunk/lnt/test/DB/Import.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/DB/Inputs/sample-a-small.plist (from r99116, zorg/trunk/lnt/test/DB/Inputs/sample-a-small.plist)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/DB/Inputs/sample-a-small.plist?p2=zorg/trunk/lnt/tests/DB/Inputs/sample-a-small.plist&p1=zorg/trunk/lnt/test/DB/Inputs/sample-a-small.plist&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/DB/Inputs/sample-b-small.plist (from r99116, zorg/trunk/lnt/test/DB/Inputs/sample-b-small.plist)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/DB/Inputs/sample-b-small.plist?p2=zorg/trunk/lnt/tests/DB/Inputs/sample-b-small.plist&p1=zorg/trunk/lnt/test/DB/Inputs/sample-b-small.plist&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/Misc/Inputs/sample-a-small.plist (from r99116, zorg/trunk/lnt/test/Misc/Inputs/sample-a-small.plist)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/Misc/Inputs/sample-a-small.plist?p2=zorg/trunk/lnt/tests/Misc/Inputs/sample-a-small.plist&p1=zorg/trunk/lnt/test/Misc/Inputs/sample-a-small.plist&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/Misc/SubmitAndEmail.py (from r99116, zorg/trunk/lnt/test/Misc/SubmitAndEmail.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/Misc/SubmitAndEmail.py?p2=zorg/trunk/lnt/tests/Misc/SubmitAndEmail.py&p1=zorg/trunk/lnt/test/Misc/SubmitAndEmail.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/Web/NightlytestMachinesRoot.py (from r99116, zorg/trunk/lnt/test/Web/NightlytestMachinesRoot.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/Web/NightlytestMachinesRoot.py?p2=zorg/trunk/lnt/tests/Web/NightlytestMachinesRoot.py&p1=zorg/trunk/lnt/test/Web/NightlytestMachinesRoot.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/Web/NightlytestRoot.py (from r99116, zorg/trunk/lnt/test/Web/NightlytestRoot.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/Web/NightlytestRoot.py?p2=zorg/trunk/lnt/tests/Web/NightlytestRoot.py&p1=zorg/trunk/lnt/test/Web/NightlytestRoot.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/Web/NightlytestRunRoot.py (from r99116, zorg/trunk/lnt/test/Web/NightlytestRunRoot.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/Web/NightlytestRunRoot.py?p2=zorg/trunk/lnt/tests/Web/NightlytestRunRoot.py&p1=zorg/trunk/lnt/test/Web/NightlytestRunRoot.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/Web/RootPage.py (from r99116, zorg/trunk/lnt/test/Web/RootPage.py)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/Web/RootPage.py?p2=zorg/trunk/lnt/tests/Web/RootPage.py&p1=zorg/trunk/lnt/test/Web/RootPage.py&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Copied: zorg/trunk/lnt/tests/lit.cfg (from r99116, zorg/trunk/lnt/test/lit.cfg)
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/tests/lit.cfg?p2=zorg/trunk/lnt/tests/lit.cfg&p1=zorg/trunk/lnt/test/lit.cfg&r1=99116&r2=99117&rev=99117&view=diff
==============================================================================
    (empty)

Removed: zorg/trunk/lnt/viewer/Config.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/Config.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/Config.py (original)
+++ zorg/trunk/lnt/viewer/Config.py (removed)
@@ -1,60 +0,0 @@
-import os
-
-class DBInfo:
-    @staticmethod
-    def fromData(baseDir, dict):
-        dbPath = dict.get('path')
-        if not dbPath.startswith('mysql://'):
-            dbPath = os.path.join(baseDir, dbPath)
-        return DBInfo(dbPath,
-                      bool(dict.get('showNightlytest')),
-                      bool(dict.get('showGeneral')))
-
-    def __init__(self, path, showNightlytest, showGeneral):
-        self.path = path
-        self.showNightlytest = showNightlytest
-        self.showGeneral = showGeneral
-
-class Config:
-    @staticmethod
-    def fromData(path, data):
-        # Paths are resolved relative to the absolute real path of the
-        # config file.
-        baseDir = os.path.dirname(os.path.abspath(path))
-
-        ntEmailer = data.get('nt_emailer')
-        if ntEmailer:
-            ntEmailEnabled = bool(ntEmailer.get('enabled'))
-            ntEmailHost = str(ntEmailer.get('host'))
-            ntEmailFrom = str(ntEmailer.get('from'))
-
-            # The email to field can either be a string, or a list of tuples of
-            # the form [(accept-regexp-pattern, to-address)].
-            item = ntEmailer.get('to')
-            if isinstance(item, str):
-                ntEmailTo = item
-            else:
-                ntEmailTo = [(str(a),str(b))
-                             for a,b in item]
-        else:
-            ntEmailEnabled = False
-            ntEmailHost = ntEmailFrom = ntEmailTo = ""
-
-        return Config(os.path.join(baseDir, data['zorg']),
-                      data['zorgURL'],
-                      dict([(k,DBInfo.fromData(baseDir, v))
-                            for k,v in data['databases'].items()]),
-                      ntEmailEnabled, ntEmailHost, ntEmailFrom, ntEmailTo)
-
-    def __init__(self, zorgDir, zorgURL, databases,
-                 ntEmailEnabled, ntEmailHost, ntEmailFrom, ntEmailTo):
-        self.zorgDir = zorgDir
-        self.zorgURL = zorgURL
-        self.tempDir = os.path.join(zorgDir, 'viewer', 'resources', 'graphs')
-        while self.zorgURL.endswith('/'):
-            self.zorgURL = zorgURL[:-1]
-        self.databases = databases
-        self.ntEmailEnabled = ntEmailEnabled
-        self.ntEmailHost = ntEmailHost
-        self.ntEmailFrom = ntEmailFrom
-        self.ntEmailTo = ntEmailTo

Removed: zorg/trunk/lnt/viewer/NTStyleBrowser.ptl
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/NTStyleBrowser.ptl?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/NTStyleBrowser.ptl (original)
+++ zorg/trunk/lnt/viewer/NTStyleBrowser.ptl (removed)
@@ -1,404 +0,0 @@
-# -*- python -*-
-
-import re
-
-import quixote
-from quixote.directory import Directory
-from quixote.errors import TraversalError
-
-import Util
-from NTUtil import *
-
-from PerfDB import Machine, Run
-
-class TestRunUI(Directory):
-    def __init__(self, root, idstr):
-        self.root = root
-        try:
-            self.id = int(idstr)
-        except ValueError, exc:
-            raise TraversalError(str(exc))
-
-    def getActiveRun(self, db):
-        # Check for overrides
-        request = quixote.get_request()
-        id = self.id
-        run_id = request.form.get('run', '')
-        if run_id:
-            id = int(run_id)
-        return db.getRun(id)
-
-    def getInfo(self, db):
-        request = quixote.get_request()
-
-        compareToID = request.form.get('compare', '')
-        compareTo = None
-        if compareToID:
-            try:
-                compareTo = db.getRun(int(compareToID))
-            except:
-                pass
-
-        run = self.getActiveRun(db)
-
-        # Find previous runs, ordered by time.
-        runs = db.runs(run.machine).order_by(Run.start_time.desc()).all()
-
-        # Find previous run to compare to
-        if compareTo is None:
-            for r in runs:
-                # FIXME: Compare revisions, not times.
-                if r != run and r.start_time < run.start_time:
-                    compareTo = r
-                    break
-
-        return run, runs, compareTo
-
-    def getRunSummary(self, db, run, compareTo, form=None):
-        testPredicate = None
-        infoPredicates = []
-        if form:
-            testPattern = form['testPattern']
-            if testPattern and testPattern.strip():
-                testPattern = re.compile(testPattern)
-                testPredicate = lambda t: testPattern.search(t.name)
-            parameters = self.getParameters()
-            for i,(title,name) in enumerate(self.getParameters()):
-                pattern = form['parmPattern.%d' % i]
-                if pattern and pattern.strip():
-                    pattern = re.compile(pattern)
-                    infoPredicates.append((name,
-                                           lambda t,k,v,p=pattern: p.search(v)))
-
-        # Compare the summary information
-        summary = RunSummary()
-        summary.addRun(db, run, testPredicate, infoPredicates)
-        if compareTo:
-            summary.addRun(db, compareTo, testPredicate, infoPredicates)
-        return summary
-
-    def _q_index [html] (self):
-        self.root.getHeader(self.getTitle(), "../..",
-                            addPopupJS=True, addFormCSS=True)
-
-        request = quixote.get_request()
-        full = request.form.get('full', '')
-        allResults = not not full
-
-        # Get the filtering form.
-        form = quixote.form.Form(method=str("get"))
-        form.add(quixote.form.StringWidget, "testPattern",
-                 title="Test Pattern")
-        for i,(title,name) in enumerate(self.getParameters()):
-            form.add(quixote.form.StringWidget, "parmPattern.%d" %i,
-                     title="Parameter Pattern: %s" % title)
-        form.add_submit("submit", "Update")
-        Util.addOtherFormValues(form)
-
-        # Get a DB connection
-        db = self.root.getDB()
-        run,runs,compareTo = self.getInfo(db)
-        machine = run.machine
-        summary = self.getRunSummary(db, run, compareTo, form)
-
-        """
-        <center>
-          <h1>%s</h1>
-          <table>
-            <tr>
-              <td align=right>Machine:</td>
-              <td>%s:%d</td>
-            </tr>
-            <tr>
-              <td align=right>Run:</td>
-              <td>%s</td>
-            </tr>
-        """ % (self.getHeaderTitle(), machine.name, machine.number, run.start_time)
-        if compareTo:
-            """
-            <tr>
-              <td align=right>Compare To:</td>
-              <td>%s</td>
-            </tr>
-            """ % (compareTo.start_time,)
-        """
-          </table>
-        </center>
-        <p>
-        """
-
-        # Hide by default unless filled in
-        hidden = True
-        for w in form.get_all_widgets():
-            if isinstance(w, (quixote.form.HiddenWidget,)):
-                continue
-            value = w.value
-            if value:
-                hidden = False
-                break
-        key = 'filteringOptions'
-        """
-        <a href="javascript://" onclick="toggleLayer('%s')"; id="%s_">(%s)
-        Show Filtering Options</a>
-        <div id="%s" style="display: %s;" class="hideable">
-        """ % (key, key, ("+","-")[hidden], key, ("","none")[hidden])
-        form.render()
-        """
-        </div>
-        <p>
-        """
-
-        """
-        <table width="100%%" border=1>
-          <tr>
-            <td valign="top" width="200">
-              <a href="..">Homepage</a>
-              <h4>Machine:</h4>
-              <a href="../machines/%d/">%s:%d</a>
-              <h4>Runs:</h4>
-              <ul>
-        """ % (machine.id, machine.name, machine.number)
-
-        # Show a small number of neighboring runs.
-        runIndex = runs.index(run)
-        for r in runs[max(0,runIndex-3):runIndex+6]:
-            if r == run:
-                """ <li> <h3><a href="../%d/">%s</a></h3> """ % (r.id, r.start_time)
-            else:
-                """ <li> <a href="../%d/">%s</a> """ % (r.id, r.start_time)
-
-        # Full list of runs in a drop down.
-        #
-        # FIXME: Make this link to the proper run.
-        """
-        <p>
-        <form method="GET" action=".">
-        <input type="hidden" name="full" value="%s">
-        <select name="run">
-        """ % (full,)
-        for r in runs:
-            """\
-        <option value="%d"%s>%s""" % (r.id, ('', ' selected')[r == run], r.start_time)
-
-        """
-        </select>
-        <input type="submit" value="Jump to Run">
-        </form>
-        """
-        # Set comparison run.
-        """
-        <form method="GET" action=".">
-        <input type="hidden" name="full" value="%s">
-        <select name="compare">
-        """ % (full,)
-        for r in runs:
-            """\
-        <option value="%d"%s>%s</option>""" % (r.id, ('', ' selected')[r == compareTo], r.start_time)
-
-        """
-        </select>
-        <input type="submit" value="Compare to Run">
-        </form>
-        """
-
-        """
-              </ul>
-            </td>
-            <td valign="top">
-              <table border=1>
-              <tr>
-                <td> <b>Nickname</b> </td>
-                <td> %s </td>
-              </tr>
-        """ %  (machine.name,)
-        for mi in machine.info.values():
-            """
-              <tr>
-                <td> <b>%s</b> </td>
-                <td>%s</td>
-              </tr>
-            """ % (mi.key, mi.value)
-        """
-              <tr>
-                <td> <b>Machine ID</b> </td>
-                <td> %d </td>
-              </tr>
-              </table>
-        """ % (machine.id,)
-
-        if allResults:
-            """<h4><a href="?full=">See Brief Test Results</a></h4>"""
-        else:
-            """<h4><a href="?full=1">See Full Test Results</a></h4>"""
-
-        self.renderCommonContents(db, run, compareTo, summary)
-        if not allResults:
-            self.renderBriefContents(db, run, compareTo, summary)
-
-        """
-            </td>
-          </tr>
-        </table>
-        """
-
-        if allResults:
-            self.renderFullContents(db, run, compareTo, summary)
-
-        self.root.getFooter()
-
-    ###
-
-    def getTags(self):
-        abstract
-
-    def getTitle(self):
-        abstract
-
-    def getHeaderTitle(self):
-        abstract
-
-    def getParameters(self):
-        abstract
-
-    def renderFullContents(self, db, run, compareTo, summary):
-        abstract
-
-    def renderBriefContents(self, db, run, compareTo, summary):
-        abstract
-
-    def renderCommonContents(self, db, run, compareTo, summary):
-        abstract
-
-class MachinesDirectory(Directory):
-    _q_exports = [""]
-
-    def __init__(self, parent):
-        Directory.__init__(self)
-        self.parent = parent
-
-    def _q_index [plain] (self):
-        """
-        machine access
-        """
-
-    def _q_lookup(self, component):
-        return self.parent.getTestMachineUI(component)
-
-class ProgramsDirectory(Directory):
-    _q_exports = [""]
-
-    def __init__(self, parent):
-        Directory.__init__(self)
-        self.parent = parent
-
-    def _q_index [plain] (self):
-        """
-        program access
-        """
-
-    def _q_lookup(self, component):
-        return self.parent.getProgramUI(component)
-
-class RecentMachineDirectory(Directory):
-    def __init__(self, root):
-        Directory.__init__(self)
-        self.root = root
-
-    def getTitle(self):
-        abstract
-
-    def getHeaderTitle(self):
-        abstract
-
-    def getTags(self):
-        abstract
-
-    def _q_index [plain] (self):
-        self.root.getHeader(self.getTitle(), "..")
-
-        # Get a DB connection
-        db = self.root.getDB()
-
-        # Find recent runs.
-        """
-        <center>
-          <h2>%s</h2>
-        </center>
-        """ % (self.getHeaderTitle(),)
-
-        """
-        <table width="100%%">
-          <tr>
-            <td valign="top" width="50%">
-              <center>
-              <h3>Test Machines</h3>
-              <table class="sortable" border=1>
-                <thead>
-                <tr>
-                  <th>Latest Submission</th>
-                  <th>Machine</th>
-                  <th>Results</th>
-                </tr>
-                </thead>
-        """
-
-        # Show the most recent entry for each machine.
-        q = db.session.query(Machine.name).distinct().order_by(Machine.name)
-        for name, in q:
-            # Get the most recent run for this machine name.
-            q = db.session.query(Run).join(Machine).filter(Machine.name == name)
-            r = q.order_by(Run.start_time.desc()).first()
-            """
-              <tr>
-                <td>%s</td>
-                <td align=left><a href="machines/%d/">%s:%d</a></td>
-                <td><a href="%d/">View Results</a></td>
-              </tr>
-            """ % (r.start_time, r.machine.id, r.machine.name, r.machine.number, r.id)
-
-        """
-              </table>
-              </center>
-            </td>
-            <td valign="top">
-              <center>
-              <h3>Recent Submissions</h3>
-              <table class="sortable" border=1>
-                <thead>
-                <tr>
-                  <th>Start Time</th>
-                  <th>End Time</th>
-                  <th>Machine</th>
-                  <th>Results</th>
-                </tr>
-                </thead>
-        """
-
-        # Show the 20 most recent submissions, ordered by time.
-        for r in db.session.query(Run).order_by(Run.start_time.desc())[:20]:
-            m = r.machine
-            """
-              <tr>
-                <td>%s</td>
-                <td>%s</td>
-                <td align=left><a href="machines/%d/">%s:%d</a></td>
-                <td><a href="%d/">View Results</a></td>
-              </tr>
-            """ % (r.start_time, r.end_time, m.id, m.name, m.number, r.id)
-
-        """
-              </table>
-              </center>
-            </td>
-          </tr>
-        </table>
-        """
-
-        self.root.getFooter()
-
-    def _q_lookup(self, component):
-        if component == 'machines':
-            return MachinesDirectory(self)
-        if component == 'programs':
-            return ProgramsDirectory(self)
-        return self.getTestRunUI(component)

Removed: zorg/trunk/lnt/viewer/NTUtil.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/NTUtil.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/NTUtil.py (original)
+++ zorg/trunk/lnt/viewer/NTUtil.py (removed)
@@ -1,113 +0,0 @@
-import Util
-from PerfDB import Run, Sample, Test
-
-kPrefix = 'nightlytest'
-
-# FIXME: We shouldn't need this.
-kSentinelKeyName = 'bc.compile.success'
-
-kComparisonKinds = [('File Size',None),
-                    ('CBE','cbe.exec.time'),
-                    ('LLC','llc.exec.time'),
-                    ('JIT','jit.exec.time'),
-                    ('GCCAS','gcc.compile.time'),
-                    ('Bitcode','bc.compile.size'),
-                    ('LLC compile','llc.compile.time'),
-                    ('LLC-BETA compile','llc-beta.compile.time'),
-                    ('JIT codegen','jit.compile.time'),
-                    ('LLC-BETA','llc-beta.exec.time')]
-
-kTSKeys = { 'gcc.compile' : 'GCCAS',
-            'bc.compile' : 'Bitcode',
-            'llc.compile' : 'LLC compile',
-            'llc-beta.compile' : 'LLC_BETA compile',
-            'jit.compile' : 'JIT codegen',
-            'cbe.exec' : 'CBE',
-            'llc.exec' : 'LLC',
-            'llc-beta.exec' : 'LLC-BETA',
-            'jit.exec' : 'JIT' }
-
-# This isn't very fast, compute a summary if querying the same run
-# repeatedly.
-def getTestValueInRun(db, r, t, default=None, coerce=None):
-    for value, in db.session.query(Sample.value).\
-            filter(Sample.test == t).\
-            filter(Sample.run == r):
-        if coerce is not None:
-            return coerce(value)
-        return value
-    return default
-
-def getTestNameValueInRun(db, r, testname, default=None, coerce=None):
-    for value, in db.session.query(Sample.value).join(Test).\
-            filter(Test.name == testname).\
-            filter(Sample.run == r):
-        if coerce is not None:
-            return coerce(value)
-        return value
-    return default
-
-class RunSummary:
-    def __init__(self):
-        # The union of test names seen.
-        self.testNames = set()
-        # Map of test ids to test instances.
-        self.testIds = {}
-        # Map of test names to test instances
-        self.testMap = {}
-        # Map of run to multimap of test ID to sample list.
-        self.runSamples = {}
-
-        # FIXME: Should we worry about the info parameters on a
-        # nightlytest test?
-
-    def testMatchesPredicates(self, db, t, testPredicate, infoPredicates):
-        if testPredicate:
-            if not testPredicate(t):
-                return False
-        if infoPredicates:
-            info = dict((i.key,i.value) for i in t.info.values())
-            for key,predicate in infoPredicates:
-                value = info.get(key)
-                if not predicate(t, key, value):
-                    return False
-        return True
-
-    def addRun(self, db, run, testPredicate=None, infoPredicates=None):
-        sampleMap = self.runSamples.get(run.id)
-        if sampleMap is None:
-            sampleMap = self.runSamples[run.id] = Util.multidict()
-
-        q = db.session.query(Sample.value,Test).join(Test)
-        q = q.filter(Sample.run == run)
-        for s_value,t in q:
-            if not self.testMatchesPredicates(db, t, testPredicate, infoPredicates):
-                continue
-
-            sampleMap[t.id] = s_value
-            self.testMap[t.name] = t
-            self.testIds[t.id] = t
-
-            # Filter out summary things in name lists by only looking
-            # for things which have a .success entry.
-            if t.name.endswith('.success'):
-                self.testNames.add(t.name.split('.', 3)[1])
-
-    def getRunSamples(self, run):
-        if run is None:
-            return {}
-        return self.runSamples.get(run.id, {})
-
-    def getTestValueByName(self, run, testName, default, coerce=None):
-        t = self.testMap.get(testName)
-        if t is None:
-            return default
-        sampleMap = self.runSamples.get(run.id, {})
-        samples = sampleMap.get(t.id)
-        if sampleMap is None or samples is None:
-            return default
-        # FIXME: Multiple samples?
-        if coerce:
-            return coerce(samples[0].value)
-        else:
-            return samples[0].value

Removed: zorg/trunk/lnt/viewer/PerfDB.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/PerfDB.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/PerfDB.py (original)
+++ zorg/trunk/lnt/viewer/PerfDB.py (removed)
@@ -1,429 +0,0 @@
-#!/usr/bin/python
-
-###
-# SQLAlchemy database layer
-
-import sqlalchemy
-import sqlalchemy.ext.declarative
-import sqlalchemy.orm
-from sqlalchemy import *
-from sqlalchemy.orm import relation, backref
-from sqlalchemy.orm.collections import attribute_mapped_collection
-
-Base = sqlalchemy.ext.declarative.declarative_base()
-class Machine(Base):
-    __tablename__ = 'Machine'
-
-    id = Column("ID", Integer, primary_key=True)
-    name = Column("Name", String(256))
-    number = Column("Number", Integer)
-
-    info = relation('MachineInfo',
-                    collection_class=attribute_mapped_collection('key'),
-                    backref=backref('machine'))
-
-    def __init__(self, name, number):
-        self.name = name
-        self.number = number
-
-    def __repr__(self):
-        return '%s%r' % (self.__class__.__name__, (self.name, self.number))
-
-class MachineInfo(Base):
-    __tablename__ = 'MachineInfo'
-
-    id = Column("ID", Integer, primary_key=True)
-    machine_id = Column("Machine", Integer, ForeignKey('Machine.ID'))
-    key = Column("Key", String(256))
-    value = Column("Value", String(4096))
-
-    def __init__(self, machine, key, value):
-        self.machine = machine
-        self.key = key
-        self.value = value
-
-    def __repr__(self):
-        return '%s%r' % (self.__class__.__name__,
-                         (self.machine, self.key, self.value))
-
-class Run(Base):
-    __tablename__ = 'Run'
-
-    id = Column("ID", Integer, primary_key=True)
-    machine_id = Column("MachineID", Integer, ForeignKey('Machine.ID'))
-    start_time = Column("StartTime", DateTime)
-    end_time = Column("EndTime", DateTime)
-
-    machine = relation(Machine)
-
-    info = relation('RunInfo',
-                    collection_class=attribute_mapped_collection('key'),
-                    backref=backref('run'))
-
-    def __init__(self, machine, start_time, end_time):
-        self.machine = machine
-        self.start_time = start_time
-        self.end_time = end_time
-
-    def __repr__(self):
-        return '%s%r' % (self.__class__.__name__,
-                         (self.machine, self.start_time, self.end_time))
-
-class RunInfo(Base):
-    __tablename__ = 'RunInfo'
-
-    id = Column("ID", Integer, primary_key=True)
-    run_id = Column("Run", Integer, ForeignKey('Run.ID'))
-    key = Column("Key", String(256))
-    value = Column("Value", String(4096))
-
-    def __init__(self, run, key, value):
-        self.run = run
-        self.key = key
-        self.value = value
-
-    def __repr__(self):
-        return '%s%r' % (self.__class__.__name__,
-                         (self.run, self.key, self.value))
-
-class Test(Base):
-    __tablename__ = 'Test'
-
-    id = Column("ID", Integer, primary_key=True)
-    name = Column("Name", String(512))
-
-    info = relation('TestInfo',
-                    collection_class=attribute_mapped_collection('key'),
-                    backref=backref('test'))
-
-    def __init__(self, name):
-        self.name = name
-
-    def __repr__(self):
-        return '%s%r' % (self.__class__.__name__,
-                         (self.name,))
-
-class TestInfo(Base):
-    __tablename__ = 'TestInfo'
-
-    id = Column("ID", Integer, primary_key=True)
-    test_id = Column("Test", Integer, ForeignKey('Test.ID'))
-    key = Column("Key", String(256))
-    value = Column("Value", String(4096))
-
-    def __init__(self, test, key, value):
-        self.test = test
-        self.key = key
-        self.value = value
-
-    def __repr__(self):
-        return '%s%r' % (self.__class__.__name__,
-                         (self.test, self.key, self.value))
-
-class Sample(Base):
-    __tablename__ = 'Sample'
-
-    id = Column("ID", Integer, primary_key=True)
-    run_id = Column("RunID", Integer, ForeignKey('Run.ID'))
-    test_id = Column("TestID", Integer, ForeignKey('Test.ID'))
-    value = Column("Value", Float)
-
-    run = relation(Run)
-    test = relation(Test)
-
-    def __init__(self, run, test, value):
-        self.run = run
-        self.test = test
-        self.value = value
-
-    def __repr__(self):
-        return '%s%r' % (self.__class__.__name__,
-                         (self.run, self.test, self.value))
-
-###
-# PerfDB wrapper, to avoid direct SA dependency when possible.
-
-def info_eq(a, b):
-    a = list(a)
-    b = list(b)
-    a.sort()
-    b.sort()
-    return a == b
-
-class PerfDB:
-    def __init__(self, path, echo=False):
-        if not path.startswith('mysql://'):
-            path = 'sqlite:///' + path
-        self.engine = sqlalchemy.create_engine(path, echo=echo)
-        Session = sqlalchemy.orm.sessionmaker(self.engine)
-        self.session = Session()
-
-    def machines(self, name=None):
-        q = self.session.query(Machine)
-        if name:
-            q = q.filter_by(name=name)
-        return q
-
-    def tests(self, name=None):
-        q = self.session.query(Test)
-        if name:
-            q = q.filter_by(name=name)
-        return q
-
-    def runs(self, machine=None):
-        q = self.session.query(Run)
-        if machine:
-            q = q.filter_by(machine=machine)
-        return q
-
-    def samples(self, run=None, test=None):
-        q = self.session.query(Sample)
-        if run:
-            q = q.filter_by(run_id=run.id)
-        if test:
-            q = q.filter_by(test_id=test.id)
-        return q
-
-    def getNumMachines(self):
-        return self.machines().count()
-
-    def getNumRuns(self):
-        return self.runs().count()
-
-    def getNumTests(self):
-        return self.tests().count()
-
-    def getNumSamples(self):
-        return self.samples().count()
-
-    def getMachine(self, id):
-        return self.session.query(Machine).filter_by(id=id).one()
-
-    def getRun(self, id):
-        return self.session.query(Run).filter_by(id=id).one()
-
-    def getTest(self, id):
-        return self.session.query(Test).filter_by(id=id).one()
-
-    def getOrCreateMachine(self, name, info):
-        # FIXME: Not really the right way...
-        number = 1
-        for m in self.machines(name=name):
-            if info_eq([(i.key, i.value) for i in m.info.values()], info):
-                return m,False
-            number += 1
-
-        # Make a new record
-        m = Machine(name, number)
-        m.info = dict((k,MachineInfo(m,k,v)) for k,v in info)
-        self.session.add(m)
-        return m,True
-
-    def getOrCreateTest(self, name, info):
-        # FIXME: Not really the right way...
-        for t in self.tests(name):
-            if info_eq([(i.key, i.value) for i in t.info.values()], info):
-                return t,False
-
-        t = Test(name)
-        t.info = dict((k,TestInfo(t,k,v)) for k,v in info)
-        self.session.add(t)
-        return t,True
-
-    def getOrCreateRun(self, machine, start_time, end_time, info):
-        from datetime import datetime
-        start_time = datetime.strptime(start_time,
-                                       "%Y-%m-%d %H:%M:%S")
-        end_time = datetime.strptime(end_time,
-                                     "%Y-%m-%d %H:%M:%S")
-
-        # FIXME: Not really the right way...
-        for r in self.session.query(Run).filter_by(machine=machine):
-            # FIXME: Execute this filter in SQL, but resolve the
-            # normalization issue w.r.t. SQLAlchemy first. I think we
-            # may be running afoul of SQLite not normalizing the
-            # datetime. If I don't do this then sqlalchemy issues a
-            # query in the format YYYY-MM-DD HH:MM:SS.ssss which
-            # doesn't work.
-            if r.start_time != start_time or r.end_time != end_time:
-                continue
-            if info_eq([(i.key, i.value) for i in r.info.values()], info):
-                return r,False
-
-        # Make a new record
-        r = Run(machine, start_time, end_time)
-        r.info = dict((k,RunInfo(r,k,v)) for k,v in info)
-        self.session.add(r)
-        return r,True
-
-    def addSample(self, run, test, value):
-        s = Sample(run, test, value)
-        self.session.add(s)
-        return s
-
-    def addSamples(self, samples):
-        """addSamples([(run_id, test_id, value), ...]) -> None
-
-        Batch insert a list of samples."""
-
-        # Flush to keep session consistent.
-        self.session.flush()
-
-        for run_id,test_id,value in samples:
-            q = Sample.__table__.insert().values(RunID = run_id,
-                                                 TestID = test_id,
-                                                 Value = value)
-            self.session.execute(q)
-
-    def commit(self):
-        self.session.commit()
-
-    def rollback(self):
-        self.session.rollback()
-
-def importDataFromDict(db, data):
-    # FIXME: Validate data
-    machineData = data['Machine']
-    runData = data['Run']
-    testsData = data['Tests']
-
-    # Get the machine
-    # FIXME: Validate machine
-    machine,_ = db.getOrCreateMachine(machineData['Name'],
-                                      machineData['Info'].items())
-
-    # Accept 'Time' as an alias for 'Start Time'
-    if 'Start Time' not in runData and 'Time' in runData:
-        import time
-        t = time.strptime(runData['Time'],
-                          "%a, %d %b %Y %H:%M:%S -0700 (PDT)")
-        runData['Start Time'] = time.strftime('%Y-%m-%d %H:%M', t)
-
-    # Create the run.
-    run,inserted = db.getOrCreateRun(machine,
-                                     runData.get('Start Time',''),
-                                     runData.get('End Time',''),
-                                     runData.get('Info',{}).items())
-    if not inserted:
-        return False,(machine,run)
-
-    # Batch load the set of tests instead of repeatedly querying to unique.
-    #
-    # FIXME: Add explicit config object.
-    test_info = {}
-    for id,k,v in db.session.query(TestInfo.test_id, TestInfo.key,
-                                   TestInfo.value):
-        test_info[id] = (str(k),str(v))
-
-    testMap = {}
-    for test_id,test_name in db.session.query(Test.id, Test.name):
-        info = test_info.get(test_id,[])
-        info.sort()
-        testMap[(str(test_name),tuple(info))] = test_id
-
-    # Create the tests up front, so we can resolve IDs.
-    test_ids = []
-    late_ids = []
-    for i,testData in enumerate(testsData):
-        name = str(testData['Name'])
-        info = [(str(k),str(v)) for k,v in testData['Info'].items()]
-        info.sort()
-        test_id = testMap.get((name,tuple(info)))
-        if test_id is None:
-            test,created = db.getOrCreateTest(testData['Name'],testData['Info'])
-            assert created
-            late_ids.append((i,test))
-        test_ids.append(test_id)
-
-    # Flush now to resolve test and run ids.
-    #
-    # FIXME: Surely there is a cleaner way to handle this?
-    db.session.flush()
-
-    if late_ids:
-        for i,t in late_ids:
-            test_ids[i] = t.id
-
-    db.addSamples([(run.id, test_id, value)
-                   for test_id,testData in zip(test_ids, testsData)
-                   for value in testData['Data']])
-
-    return True,(machine,run)
-
-def test_sa_db(dbpath):
-    if not dbpath.startswith('mysql://'):
-        dbpath = 'sqlite:///' + dbpath
-    engine = sqlalchemy.create_engine(dbpath)
-
-    Session = sqlalchemy.orm.sessionmaker(engine)
-    Session.configure(bind=engine)
-
-    session = Session()
-
-    m = session.query(Machine).first()
-    print m
-    print m.info
-
-    r = session.query(Run).first()
-    print r
-    print r.info
-
-    t = session.query(Test)[20]
-    print t
-    print t.info
-
-    s = session.query(Sample)[20]
-    print s
-
-    import time
-    start = time.time()
-    print
-    q = session.query(Sample)
-    q = q.filter(Sample.run_id == 994)
-    print
-    res = session.execute(q)
-    print res
-    N = 0
-    for row in res:
-        if N == 1:
-            print row
-        N += 1
-    print N, time.time() - start
-    print
-
-    start = time.time()
-    N = 0
-    for row in q:
-        if N == 1:
-            print row
-        N += 1
-    print N, time.time() - start
-
-def main():
-    global opts
-    from optparse import OptionParser
-    parser = OptionParser("usage: %prog dbpath")
-    opts,args = parser.parse_args()
-
-    if len(args) != 1:
-        parser.error("incorrect number of argments")
-
-    dbpath, = args
-
-    # Test the SQLAlchemy layer.
-    test_sa_db(dbpath)
-
-    # Test the PerfDB wrapper.
-    db = PerfDB(dbpath)
-
-    print "Opened %r" % dbpath
-
-    for m in db.machines():
-        print m
-        for r in db.runs(m):
-            print '  run - id:%r, start:%r,'\
-                ' # samples: %d.' % (r.id, r.start_time,
-                                     db.samples(run=r).count())
-
-if __name__ == '__main__':
-    main()

Removed: zorg/trunk/lnt/viewer/Util.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/Util.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/Util.py (original)
+++ zorg/trunk/lnt/viewer/Util.py (removed)
@@ -1,213 +0,0 @@
-import colorsys
-import math
-
-def detectCPUs():
-    """
-    Detects the number of CPUs on a system. Cribbed from pp.
-    """
-    import os
-    # Linux, Unix and MacOS:
-    if hasattr(os, "sysconf"):
-        if os.sysconf_names.has_key("SC_NPROCESSORS_ONLN"):
-            # Linux & Unix:
-            ncpus = os.sysconf("SC_NPROCESSORS_ONLN")
-            if isinstance(ncpus, int) and ncpus > 0:
-                return ncpus
-        else: # OSX:
-            return int(os.popen2("sysctl -n hw.ncpu")[1].read())
-    # Windows:
-    if os.environ.has_key("NUMBER_OF_PROCESSORS"):
-        ncpus = int(os.environ["NUMBER_OF_PROCESSORS"]);
-        if ncpus > 0:
-            return ncpus
-        return 1 # Default
-
-def safediv(a, b, default=None):
-    try:
-        return a/b
-    except ZeroDivisionError:
-        return default
-
-def makeDarkColor(h):
-    h = h%1.
-    s = 0.95
-    v = 0.8
-    return colorsys.hsv_to_rgb(h,0.9+s*.1,v)
-
-def makeMediumColor(h):
-    h = h%1.
-    s = .68
-    v = 0.92
-    return colorsys.hsv_to_rgb(h,s,v)
-
-def makeLightColor(h):
-    h = h%1.
-    s = (0.5,0.4)[h>0.5 and h<0.8]
-    v = 1.0
-    return colorsys.hsv_to_rgb(h,s,v)
-
-def makeBetterColor(h):
-    h = math.cos(h*math.pi*.5)
-    s = .8 + ((math.cos(h * math.pi*.5) + 1)*.5) * .2
-    v = .88
-    return colorsys.hsv_to_rgb(h,s,v)
-
-class multidict:
-    def __init__(self, elts=()):
-        self.data = {}
-        for key,value in elts:
-            self[key] = value
-
-    def __getitem__(self, item):
-        return self.data[item]
-    def __setitem__(self, key, value):
-        if key in self.data:
-            self.data[key].append(value)
-        else:
-            self.data[key] = [value]
-    def items(self):
-        return self.data.items()
-    def values(self):
-        return self.data.values()
-    def keys(self):
-        return self.data.keys()
-    def __len__(self):
-        return len(self.data)
-    def get(self, key, default=None):
-        return self.data.get(key, default)
-
-def any_true(list, predicate):
-    for i in list:
-        if predicate(i):
-            return True
-    return False
-
-def any_false(list, predicate):
-    return any_true(list, lambda x: not predicate(x))
-
-def all_true(list, predicate):
-    return not any_false(list, predicate)
-
-def all_false(list, predicate):
-    return not any_true(list, predicate)
-
-def geometric_mean(l):
-    iPow = 1./len(l)
-    return reduce(lambda a,b: a*b, [v**iPow for v in l])
-
-def mean(l):
-    return sum(l) / len(l)
-
-def median(l):
-    l = list(l)
-    l.sort()
-    N = len(l)
-    return (l[(N - 1)//2] +
-            l[(N + 0)//2]) * .5
-
-def prependLines(prependStr, str):
-    return ('\n'+prependStr).join(str.splitlines())
-
-def pprint(object, useRepr=True):
-    def recur(ob):
-        return pprint(ob, useRepr)
-    def wrapString(prefix, string, suffix):
-        return '%s%s%s' % (prefix,
-                           prependLines(' ' * len(prefix),
-                                        string),
-                           suffix)
-    def pprintArgs(name, args):
-        return wrapString(name + '(', ',\n'.join(map(recur,args)), ')')
-
-    if isinstance(object, tuple):
-        return wrapString('(', ',\n'.join(map(recur,object)),
-                          [')',',)'][len(object) == 1])
-    elif isinstance(object, list):
-        return wrapString('[', ',\n'.join(map(recur,object)), ']')
-    elif isinstance(object, set):
-        return pprintArgs('set', list(object))
-    elif isinstance(object, dict):
-        elts = []
-        for k,v in object.items():
-            kr = recur(k)
-            vr = recur(v)
-            elts.append('%s : %s' % (kr,
-                                     prependLines(' ' * (3 + len(kr.splitlines()[-1])),
-                                                  vr)))
-        return wrapString('{', ',\n'.join(elts), '}')
-    else:
-        if useRepr:
-            return repr(object)
-        return str(object)
-
-def prefixAndPPrint(prefix, object, useRepr=True):
-    return prefix + prependLines(' '*len(prefix), pprint(object, useRepr))
-
-def clamp(v, minVal, maxVal):
-    return min(max(v, minVal), maxVal)
-
-def lerp(a,b,t):
-    t_ = 1. - t
-    return tuple([av*t_ + bv*t for av,bv in zip(a,b)])
-
-class PctCell:
-    # Color levels
-    kNeutralColor = (1,1,1)
-    kNegativeColor = (0,1,0)
-    kPositiveColor = (1,0,0)
-    # Invalid color
-    kNANColor = (.86,.86,.86)
-    kInvalidColor = (0,0,1)
-
-    def __init__(self, value, reverse=False, precision=2, delta=False):
-        if delta and isinstance(value, float):
-            value -= 1
-        self.value = value
-        self.reverse = reverse
-        self.precision = precision
-
-    def getColor(self):
-        v = self.value
-        if not isinstance(v, float):
-            return self.kNANColor
-
-        # Clamp value.
-        v = clamp(v, -1, 1)
-
-        if self.reverse:
-            v = -v
-        if v < 0:
-            c = self.kNegativeColor
-        else:
-            c = self.kPositiveColor
-        t = abs(v)
-
-        # Smooth mapping to put first 20% of change into 50% of range, although
-        # really we should compensate for luma.
-        t = math.sin((t ** .477) * math.pi * .5)
-        return lerp(self.kNeutralColor, c, t)
-
-    def getValue(self):
-        if not isinstance(self.value, float):
-            return self.value
-        return '%.*f%%' % (self.precision, self.value*100)
-
-    def render(self):
-        import quixote.html
-        r,g,b = [clamp(int(v*255), 0, 255)
-                 for v in self.getColor()]
-        res = '<td bgcolor="#%02x%02x%02x">%s</td>' % (r,g,b, self.getValue())
-        return quixote.html.htmltext(res)
-
-
-def addOtherFormValues(form):
-    import quixote
-    request = quixote.get_request()
-    for name,value in request.form.items():
-        if form.get_widget(name) is None:
-            form.add(quixote.form.HiddenWidget, name, value=value)
-
-def sorted(l, *args, **kwargs):
-    l = list(l)
-    l.sort(*args, **kwargs)
-    return l

Removed: zorg/trunk/lnt/viewer/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/__init__.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/__init__.py (original)
+++ zorg/trunk/lnt/viewer/__init__.py (removed)
@@ -1 +0,0 @@
-__all__ = []

Removed: zorg/trunk/lnt/viewer/js/View2D.js
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/js/View2D.js?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/js/View2D.js (original)
+++ zorg/trunk/lnt/viewer/js/View2D.js (removed)
@@ -1,842 +0,0 @@
-//===-- View2D.js - HTML5 Canvas Based 2D View/Graph Widget ---------------===//
-//
-//                     The LLVM Compiler Infrastructure
-//
-// This file is distributed under the University of Illinois Open Source
-// License. See LICENSE.TXT for details.
-//
-//===----------------------------------------------------------------------===//
-//
-// This file implements a generic 2D view widget and a 2D graph widget on top of
-// it, using the HTML5 Canvas. It currently supports Firefox and Safari
-// (Chromium should work, but is untested).
-//
-// See the Graph2D implementation for details of how to extend the View2D
-// object.
-//
-// FIXME: Currently, this uses MooTools extensions, but I would like to rewrite
-// it in pure JS for more portability (e.g., use in Buildbot).
-//
-//===----------------------------------------------------------------------===//
-
-function lerp(a, b, t) {
-    return a * (1.0 - t) + b * t;
-}
-
-function clamp(a, lower, upper) {
-    return Math.max(lower, Math.min(upper, a));
-}
-
-function vec2_neg (a)    { return [-a[0]    , -a[1]    ]; };
-function vec2_add (a, b) { return [a[0]+b[0], a[1]+b[1]]; };
-function vec2_addN(a, b) { return [a[0]+b   , a[1]+b   ]; };
-function vec2_sub (a, b) { return [a[0]-b[0], a[1]-b[1]]; };
-function vec2_subN(a, b) { return [a[0]-b   , a[1]-b   ]; };
-function vec2_mul (a, b) { return [a[0]*b[0], a[1]*b[1]]; };
-function vec2_mulN(a, b) { return [a[0]*b   , a[1]*b   ]; };
-function vec2_div (a, b) { return [a[0]/b[0], a[1]/b[1]]; };
-function vec2_divN(a, b) { return [a[0]/b   , a[1]/b   ]; };
-
-function vec3_neg (a)    { return [-a[0]    , -a[1]    , -a[2]    ]; };
-function vec3_add (a, b) { return [a[0]+b[0], a[1]+b[1], a[2]+b[2]]; };
-function vec3_addN(a, b) { return [a[0]+b   , a[1]+b,    a[2]+b   ]; };
-function vec3_sub (a, b) { return [a[0]-b[0], a[1]-b[1], a[2]-b[2]]; };
-function vec3_subN(a, b) { return [a[0]-b   , a[1]-b,    a[2]-b   ]; };
-function vec3_mul (a, b) { return [a[0]*b[0], a[1]*b[1], a[2]*b[2]]; };
-function vec3_mulN(a, b) { return [a[0]*b   , a[1]*b,    a[2]*b   ]; };
-function vec3_div (a, b) { return [a[0]/b[0], a[1]/b[1], a[2]/b[2]]; };
-function vec3_divN(a, b) { return [a[0]/b   , a[1]/b,    a[2]/b   ]; };
-
-function vec2_lerp(a, b, t) {
-    return [lerp(a[0], b[0], t), lerp(a[1], b[1], t)];
-}
-function vec2_mag(a) {
-    return a[0] * a[0] + a[1] * a[1];
-}
-function vec2_len(a) {
-    return Math.sqrt(vec2_mag(a));
-}
-
-function vec2_floor(a) {
-    return [Math.floor(a[0]), Math.floor(a[1])];
-}
-function vec2_ceil(a) {
-    return [Math.ceil(a[0]), Math.ceil(a[1])];
-}
-
-function vec3_floor(a) {
-    return [Math.floor(a[0]), Math.floor(a[1]), Math.floor(a[2])];
-}
-function vec3_ceil(a) {
-    return [Math.ceil(a[0]), Math.ceil(a[1]), Math.ceil(a[2])];
-}
-
-function vec2_log(a) {
-    return [Math.log(a[0]), Math.log(a[1])];
-}
-function vec2_pow(a, b) {
-   return [Math.pow(a[0], b[0]), Math.pow(a[1], b[1])];
-}
-function vec2_Npow(a, b) {
-   return [Math.pow(a, b[0]), Math.pow(a, b[1])];
-}
-function vec2_powN(a, b) {
-   return [Math.pow(a[0], b), Math.pow(a[1], b)];
-}
-
-function vec2_min(a, b) {
-    return [Math.min(a[0], b[0]), Math.min(a[1], b[1])];
-}
-function vec2_max(a, b) {
-    return [Math.max(a[0], b[0]), Math.max(a[1], b[1])];
-}
-function vec2_clamp(a, lower, upper) {
-    return [clamp(a[0], lower[0], upper[0]),
-            clamp(a[1], lower[1], upper[1])];
-}
-function vec2_clampN(a, lower, upper) {
-    return [clamp(a[0], lower, upper),
-            clamp(a[1], lower, upper)];
-}
-
-function vec3_min(a, b) {
-    return [Math.min(a[0], b[0]), Math.min(a[1], b[1]), Math.min(a[2], b[2])];
-}
-function vec3_max(a, b) {
-    return [Math.max(a[0], b[0]), Math.max(a[1], b[1]), Math.max(a[2], b[2])];
-}
-function vec3_clamp(a, lower, upper) {
-    return [clamp(a[0], lower[0], upper[0]),
-            clamp(a[1], lower[1], upper[1]),
-            clamp(a[2], lower[2], upper[2])];
-}
-function vec3_clampN(a, lower, upper) {
-    return [clamp(a[0], lower, upper),
-            clamp(a[1], lower, upper),
-            clamp(a[2], lower, upper)];
-}
-
-function vec2_cswap(a, swap) {
-    if (swap)
-        return [a[1],a[0]];
-    return a;
-}
-
-function col3_to_rgb(col) {
-    var norm = vec3_floor(vec3_clampN(vec3_mulN(col, 255), 0, 255));
-    return "rgb(" + norm[0] + "," + norm[1] + "," + norm[2] + ")";
-}
-
-function col4_to_rgba(col) {
-    var norm = vec3_floor(vec3_clampN(vec3_mulN(col, 255), 0, 255));
-    return "rgb(" + norm[0] + "," + norm[1] + "," + norm[2] + "," + col[3] + ")";
-}
-
-var ViewData = new Class ({
-    initialize: function(location, scale) {
-        if (!location)
-            location = [0, 0];
-        if (!scale)
-            scale = [1, 1];
-
-        this.location = location;
-        this.scale = scale;
-    },
-
-    copy: function() {
-        return new ViewData(this.location, this.scale);
-    },
-});
-
-var ViewAction = new Class ({
-    initialize: function(mode, v2d, start) {
-        this.mode = mode;
-        this.start = start;
-        this.vd = v2d.viewData.copy();
-    },
-
-    update: function(v2d, co) {
-        if (this.mode == 'p') {
-            var delta = vec2_sub(v2d.convertClientToNDC(co, this.vd),
-                v2d.convertClientToNDC(this.start, this.vd))
-            v2d.viewData.location = vec2_add(this.vd.location, delta);
-        } else {
-            var delta = vec2_sub(v2d.convertClientToNDC(co, this.vd),
-                v2d.convertClientToNDC(this.start, this.vd))
-            v2d.viewData.scale = vec2_Npow(Math.E,
-                                           vec2_addN(vec2_log(this.vd.scale),
-                                                     delta[1]))
-            v2d.viewData.location = vec2_mul(this.vd.location,
-                                             vec2_div(v2d.viewData.scale,
-                                                      this.vd.scale))
-        }
-
-        v2d.refresh();
-    },
-
-    complete: function(v2d, co) {
-        this.update(v2d, co);
-    },
-
-    abort: function(v2d) {
-        v2d.viewData = this.vd;
-    },
-});
-
-var View2D = new Class ({
-    initialize: function(canvasname) {
-        this.canvasname = canvasname
-        this.viewData = new ViewData();
-        this.size = [1, 1];
-        this.aspect = 1;
-        this.registered = false;
-
-        this.viewAction = null;
-
-        this.useWidgets = true;
-        this.previewPosition = [5, 5];
-        this.previewSize = [60, 60];
-
-        this.clearColor = [1, 1, 1];
-
-        // Bound once registered.
-        this.canvas = null;
-    },
-
-    registerEvents: function(canvas) {
-        if (this.registered)
-            return;
-
-        this.registered = true;
-
-        this.canvas = canvas;
-
-        // FIXME: Why do I have to do this?
-        var obj = this;
-
-        canvas.addEvent('mousedown', function(event) { obj.onMouseDown(event); })
-        canvas.addEvent('mousemove', function(event) { obj.onMouseMove(event); })
-        canvas.addEvent('mouseup', function(event) { obj.onMouseUp(event); })
-        canvas.addEvent('mousewheel', function(event) { obj.onMouseWheel(event); })
-
-        // FIXME: Capturing!
-    },
-
-    onMouseDown: function(event) {
-        pos = [event.client.x - this.canvas.offsetLeft,
-               this.size[1] - 1 - (event.client.y - this.canvas.offsetTop)];
-
-        if (this.viewAction != null)
-            this.viewAction.abort(this);
-
-        if (event.shift)
-            this.viewAction = new ViewAction('p', this, pos);
-        else if (event.alt || event.meta)
-            this.viewAction = new ViewAction('z', this, pos);
-        event.stop();
-    },
-    onMouseMove: function(event) {
-        pos = [event.client.x - this.canvas.offsetLeft,
-               this.size[1] - 1 - (event.client.y - this.canvas.offsetTop)];
-
-        if (this.viewAction != null)
-            this.viewAction.update(this, pos);
-        event.stop();
-    },
-    onMouseUp: function(event) {
-        pos = [event.client.x - this.canvas.offsetLeft,
-               this.size[1] - 1 - (event.client.y - this.canvas.offsetTop)];
-
-        if (this.viewAction != null)
-            this.viewAction.complete(this, pos);
-        this.viewAction = null;
-        event.stop();
-    },
-    onMouseWheel: function(event) {
-        if (this.viewAction == null) {
-            var factor = event.wheel;
-            if (event.shift)
-                factor *= .1;
-            var zoom = 1.0 + .03 * factor;
-            this.viewData.location = vec2_mulN(this.viewData.location, zoom);
-            this.viewData.scale = vec2_mulN(this.viewData.scale, zoom);
-            this.refresh();
-        }
-        event.stop();
-    },
-
-    setViewData: function(vd) {
-        // FIXME: Check equality and avoid refresh.
-        this.viewData = vd;
-        this.refresh();
-    },
-
-    refresh: function() {
-        // FIXME: Event loop?
-        this.draw();
-    },
-
-    // Coordinate conversion.
-
-    getAspectScale: function() {
-        if (this.aspect > 1) {
-            return [1.0 / this.aspect, 1.0];
-        } else {
-            return [1.0, this.aspect];
-        }
-    },
-
-    getPixelSize: function() {
-        return vec2_sub(this.convertClientToWorld([1,1]),
-                        this.convertClientToWorld([0,0]));
-    },
-
-    convertClientToNDC: function(pt, vd) {
-        if (vd == null)
-            vd = this.viewData
-        return [pt[0] / this.size[0] * 2 - 1,
-                pt[1] / this.size[1] * 2 - 1];
-    },
-
-    convertClientToWorld: function(pt, vd) {
-        if (vd == null)
-            vd = this.viewData
-        pt = this.convertClientToNDC(pt, vd)
-        pt = vec2_sub(pt, vd.location);
-        pt = vec2_div(pt, vec2_mul(vd.scale, this.getAspectScale()));
-        return pt;
-    },
-
-    convertWorldToPreview: function(pt, pos, size) {
-        var asp_scale = this.getAspectScale();
-        pt = vec2_mul(pt, asp_scale);
-        pt = vec2_addN(pt, 1);
-        pt = vec2_mulN(pt, .5);
-        pt = vec2_mul(pt, size);
-        pt = vec2_add(pt, pos);
-        return pt;
-    },
-
-    setViewMatrix: function(ctx) {
-        ctx.scale(this.size[0], this.size[1]);
-        ctx.scale(.5, .5);
-        ctx.translate(1, 1);
-        ctx.translate(this.viewData.location[0], this.viewData.location[1]);
-        var scale = vec2_mul(this.viewData.scale, this.getAspectScale());
-        ctx.scale(scale[0], scale[1]);
-    },
-
-    setPreviewMatrix: function(ctx, pos, size) {
-        ctx.translate(pos[0], pos[1]);
-        ctx.scale(size[0], size[1]);
-        ctx.scale(.5, .5);
-        ctx.translate(1, 1);
-        var scale = this.getAspectScale();
-        ctx.scale(scale[0], scale[1]);
-    },
-
-    setWindowMatrix: function(ctx) {
-        ctx.translate(.5, .5);
-        ctx.translate(0, this.size[1]);
-        ctx.scale(1, -1);
-    },
-
-    draw: function() {
-        var canvas = document.getElementById(this.canvasname);
-        var ctx = canvas.getContext("2d");
-
-        this.registerEvents(canvas);
-
-        if (canvas.width != this.size[0] || canvas.height != this.size[1]) {
-            this.size = [canvas.width, canvas.height];
-            this.aspect = canvas.width / canvas.height;
-            this.previewPosition[0] = this.size[0] - this.previewSize[0] - 5;
-            this.on_size_change();
-        }
-
-        this.on_draw_start();
-
-        ctx.save();
-
-        // Clear and draw the view content.
-        ctx.save();
-        this.setWindowMatrix(ctx);
-
-        ctx.clearRect(0, 0, this.size[0], this.size[1]);
-        ctx.fillStyle = col3_to_rgb(this.clearColor);
-        ctx.fillRect(0, 0, this.size[0], this.size[1]);
-
-        this.setViewMatrix(ctx);
-        this.on_draw(canvas, ctx);
-        ctx.restore();
-
-        if (this.useWidgets)
-            this.drawPreview(canvas, ctx)
-
-        ctx.restore();
-    },
-
-    drawPreview: function(canvas, ctx) {
-        // Setup the preview context.
-        this.setWindowMatrix(ctx);
-
-        // Draw the preview area outline.
-        ctx.fillStyle = "rgba(128,128,128,.5)";
-        ctx.fillRect(this.previewPosition[0]-1, this.previewPosition[1]-1,
-                     this.previewSize[0]+2, this.previewSize[1]+2);
-        ctx.lineWidth = 1;
-        ctx.strokeStyle = "rgb(0,0,0)";
-        ctx.strokeRect(this.previewPosition[0]-1, this.previewPosition[1]-1,
-                       this.previewSize[0]+2, this.previewSize[1]+2);
-
-        // Compute the aspect corrected preview area.
-        var pv_size = [this.previewSize[0], this.previewSize[1]];
-        if (this.aspect > 1) {
-            pv_size[1] /= this.aspect;
-        } else {
-            pv_size[0] *= this.aspect;
-        }
-        var pv_pos = vec2_add(this.previewPosition,
-            vec2_mulN(vec2_sub(this.previewSize, pv_size), .5));
-
-        // Draw the preview, making sure to clip to the proper area.
-        ctx.save();
-        ctx.beginPath();
-        ctx.rect(pv_pos[0], pv_pos[1], pv_size[0], pv_size[1]);
-        ctx.clip();
-        ctx.closePath();
-
-        this.setPreviewMatrix(ctx, pv_pos, pv_size);
-        this.on_draw_preview(canvas, ctx);
-        ctx.restore();
-
-        // Draw the current view overlay.
-        //
-        // FIXME: Find a replacement for stippling.
-        ll = this.convertClientToWorld([0, 0])
-        ur = this.convertClientToWorld(this.size);
-
-        // Convert to pixel coordinates instead of drawing in content
-        // perspective.
-        ll = vec2_floor(this.convertWorldToPreview(ll, pv_pos, pv_size))
-        ur = vec2_ceil(this.convertWorldToPreview(ur, pv_pos, pv_size))
-        ll = vec2_clamp(ll, this.previewPosition,
-                        vec2_add(this.previewPosition, this.previewSize))
-        ur = vec2_clamp(ur, this.previewPosition,
-                        vec2_add(this.previewPosition, this.previewSize))
-
-        ctx.strokeStyle = "rgba(128,128,128,255)";
-        ctx.lineWidth = 1;
-        ctx.strokeRect(ll[0], ll[1], ur[0] - ll[0], ur[1] - ll[1]);
-    },
-
-    on_size_change: function() {},
-    on_draw_start: function() {},
-    on_draw: function(canvas, ctx) {},
-    on_draw_preview: function(canvas, ctx) {},
-});
-
-var View2DTest = new Class ({
-    Extends: View2D,
-
-    on_draw: function(canvas, ctx) {
-        ctx.fillStyle = "rgb(255,255,255)";
-        ctx.fillRect(-1000, -1000, 2000, 20000);
-
-        ctx.lineWidth = .01;
-        ctx.strokeTyle = "rgb(0,200,0)";
-        ctx.strokeRect(-1, -1, 2, 2);
-
-        ctx.fillStyle = "rgb(200,0,0)";
-        ctx.fillRect(-.8, -.8, 1, 1);
-
-        ctx.fillStyle = "rgb(0,0,200)";
-        ctx.beginPath();
-        ctx.arc(0, 0, .5, 0, 2 * Math.PI, false);
-        ctx.fill();
-        ctx.closePath();
-    },
-
-    on_draw_preview: function(canvas, ctx) {
-        ctx.fillStyle = "rgba(255,255,255,.4)";
-        ctx.fillRect(-1000, -1000, 2000, 20000);
-
-        ctx.lineWidth = .01;
-        ctx.strokeTyle = "rgba(0,200,0,.4)";
-        ctx.strokeRect(-1, -1, 2, 2);
-
-        ctx.fillStyle = "rgba(200,0,0,.4)";
-        ctx.fillRect(-.8, -.8, 1, 1);
-
-        ctx.fillStyle = "rgba(0,0,200,.4)";
-        ctx.beginPath();
-        ctx.arc(0, 0, .5, 0, 2 * Math.PI, false);
-        ctx.fill();
-        ctx.closePath();
-    },
-});
-
-var Graph2D_GraphInfo = new Class ({
-    initialize: function() {
-        this.xAxisH = 0;
-        this.yAxisW = 0;
-        this.ll = [0, 0];
-        this.ur = [1, 1];
-    },
-
-    toNDC: function(pt) {
-        return [2 * (pt[0] - this.ll[0]) / (this.ur[0] - this.ll[0]) - 1,
-                2 * (pt[1] - this.ll[1]) / (this.ur[1] - this.ll[1]) - 1];
-    },
-
-    fromNDC: function(pt) {
-        return [this.ll[0] + (this.ur[0] - this.ll[0]) * (pt[0] + 1) * .5,
-                this.ll[1] + (this.ur[1] - this.ll[1]) * (pt[1] + 1) * .5];
-    },
-});
-
-var Graph2D_PlotStyle = new Class ({
-    initialize: function() {},
-
-    plot: function(graph, ctx, data) {},
-});
-
-var Graph2D_LinePlotStyle = new Class ({
-    Extends: Graph2D_PlotStyle,
-
-    initialize: function(width, color) {
-        if (!width)
-            width = 1;
-        if (!color)
-            color = [0,0,0];
-
-        this.parent();
-        this.width = width;
-        this.color = color;
-    },
-
-    plot: function(graph, ctx, data) {
-        if (data.length === 0)
-            return;
-
-        ctx.beginPath();
-        var co = graph.graphInfo.toNDC(data[0]);
-        ctx.moveTo(co[0], co[1]);
-        for (var i = 1, e = data.length; i != e; ++i) {
-            var co = graph.graphInfo.toNDC(data[i]);
-            ctx.lineTo(co[0], co[1]);
-        }
-        ctx.lineWidth = this.width * (graph.getPixelSize()[0] + graph.getPixelSize()[1]) * .5;
-        ctx.strokeStyle = col3_to_rgb(this.color);
-        ctx.stroke();
-    },
-});
-
-var Graph2D_Axis = new Class ({
-    // Static Methods
-    formats: {
-        normal: function(value, iDigits, fDigits) {
-            // FIXME: iDigits?
-            return value.toFixed(fDigits);
-        },
-        day: function(value, iDigits, fDigits) {
-            var date = new Date(value * 1000.);
-            var res = date.getUTCFullYear();
-            res += "-" + (date.getUTCMonth() + 1);
-            res += "-" + (date.getUTCDate() + 1);
-            return res;
-        },
-    },
-
-    initialize: function(dir, format) {
-        if (!format)
-            format = this.formats.normal;
-
-        this.dir = dir;
-        this.format = format;
-    },
-
-    draw: function(graph, ctx, ll, ur, mainUR) {
-        var dir = this.dir, ndir = 1 - this.dir;
-        var vMin = ll[dir];
-        var vMax = ur[dir];
-        var near = ll[ndir];
-        var far = ur[ndir];
-        var border = mainUR[ndir];
-
-        var line_base = (graph.getPixelSize()[0] + graph.getPixelSize()[1]) * .5;
-        ctx.lineWidth = 2 * line_base;
-        ctx.strokeStyle = "rgb(0,0,0)";
-
-        ctx.beginPath();
-        var co = vec2_cswap([vMin, far], dir);
-        co = graph.graphInfo.toNDC(co);
-        ctx.moveTo(co[0], co[1]);
-        var co = vec2_cswap([vMax, far], dir);
-        co = graph.graphInfo.toNDC(co);
-        ctx.lineTo(co[0], co[1]);
-        ctx.stroke();
-
-        var delta = vMax - vMin;
-        var steps = Math.floor(Math.log(delta) / Math.log(10));
-        if (delta / Math.pow(10, steps) >= 5.0) {
-            var size = .5;
-        } else if (delta / Math.pow(10, steps) >= 2.5) {
-            var size = .25;
-        } else {
-            var size = .1;
-        }
-        size *= Math.pow(10, steps);
-
-        if (steps <= 0) {
-            var iDigits = 0, fDigits = 1 + Math.abs(steps);
-        } else {
-            var iDigits = steps, fDigits = 0;
-        }
-
-        var start = Math.ceil(vMin / size);
-        var end = Math.ceil(vMax / size);
-
-        // FIXME: Draw in window coordinates to make crisper.
-
-        // FIXME: Draw grid in layers to avoid ugly overlaps.
-
-        for (var i = start; i != end; ++i) {
-            if (i == 0) {
-                ctx.lineWidth = 3 * line_base;
-                var p = .5;
-            } else if (!(i & 1)) {
-                ctx.lineWidth = 2 * line_base;
-                var p = .5;
-            } else {
-                ctx.lineWidth = 1 * line_base;
-                var p = .75;
-            }
-
-            ctx.beginPath();
-            var co = vec2_cswap([i * size, lerp(near, far, p)], dir);
-            co = graph.graphInfo.toNDC(co);
-            ctx.moveTo(co[0], co[1]);
-            var co = vec2_cswap([i * size, far], dir);
-            co = graph.graphInfo.toNDC(co);
-            ctx.lineTo(co[0], co[1]);
-            ctx.stroke();
-        }
-
-        for (var alt = 0; alt < 2; ++alt) {
-            if (alt)
-                ctx.strokeStyle = "rgba(190,190,190,.5)";
-            else
-                ctx.strokeStyle = "rgba(128,128,128,.5)";
-            ctx.lineWidth = 1 * line_base;
-            ctx.beginPath();
-            for (var i = start; i != end; ++i) {
-                if (i == 0)
-                    continue;
-                if ((i & 1) == alt) {
-                    var co = vec2_cswap([i * size, far], dir);
-                    co = graph.graphInfo.toNDC(co);
-                    ctx.moveTo(co[0], co[1]);
-                    var co = vec2_cswap([i * size, border], dir);
-                    co = graph.graphInfo.toNDC(co);
-                    ctx.lineTo(co[0], co[1]);
-                }
-            }
-            ctx.stroke();
-
-            if (start <= 0 && 0 < end) {
-                ctx.beginPath();
-                var co = vec2_cswap([0, far], dir);
-                co = graph.graphInfo.toNDC(co);
-                ctx.moveTo(co[0], co[1]);
-                var co = vec2_cswap([0, border], dir);
-                co = graph.graphInfo.toNDC(co);
-                ctx.lineTo(co[0], co[1]);
-                ctx.strokeStyle = "rgba(64,64,64,.5)";
-                ctx.lineWidth = 3 * line_base;
-                ctx.stroke();
-            }
-        }
-
-        // FIXME: Draw this in screen coordinates, and stop being stupid. Also,
-        // figure out font height?
-        if (this.dir == 1) {
-            var offset = [-.5, -.25];
-        } else {
-            var offset = [-.5, 1.1];
-        }
-        ctx.fillStyle = "rgb(0,0,0)";
-        var pxl = graph.getPixelSize();
-        for (var i = start; i != end; ++i) {
-            if ((i & 1) == 0) {
-                var label = this.format(i * size, iDigits, fDigits);
-                ctx.save();
-                var co = vec2_cswap([i*size, lerp(near, far, .5)], dir);
-                co = graph.graphInfo.toNDC(co);
-                ctx.translate(co[0], co[1]);
-                ctx.scale(pxl[0], -pxl[1]);
-                // FIXME: Abstract.
-                var bb_w = label.length * 5;
-                if (ctx.measureText != null)
-                    bb_w = ctx.measureText(label).width;
-                var bb_h = 12;
-                // FIXME: Abstract? Or ignore.
-                if (ctx.fillText != null) {
-                    ctx.fillText(label, bb_w*offset[0], bb_h*offset[1]);
-                } else if (ctx.mozDrawText != null) {
-                    ctx.translate(bb_w*offset[0], bb_h*offset[1]);
-                    ctx.mozDrawText(label);
-                }
-                ctx.restore();
-            }
-        }
-    },
-});
-
-var Graph2D = new Class ({
-    Extends: View2D,
-
-    initialize: function(canvasname) {
-        this.parent(canvasname);
-
-        this.useWidgets = false;
-        this.plots = [];
-        this.graphInfo = null;
-        this.xAxis = new Graph2D_Axis(0);
-        this.yAxis = new Graph2D_Axis(1);
-        this.debugText = null;
-
-        this.clearColor = [.8, .8, .8];
-    },
-
-    //
-
-    graphChanged: function() {
-        this.graphInfo = null;
-        // FIXME: Need event loop.
-        this.refresh();
-    },
-
-    layoutGraph: function() {
-        var gi = new Graph2D_GraphInfo();
-
-        gi.xAxisH = 40;
-        gi.yAxisW = 40;
-
-        var min = null, max = null;
-        for (var i = 0, e = this.plots.length; i != e; ++i) {
-            var data = this.plots[i][0];
-            for (var i2 = 0, e2 = data.length; i2 != e2; ++i2) {
-                if (min == null)
-                    min = data[i2];
-                else
-                    min = vec2_min(min, data[i2]);
-
-                if (max == null)
-                    max = data[i2];
-                else
-                    max = vec2_max(max, data[i2]);
-            }
-        }
-
-        if (min === null)
-            min = [0, 0];
-        if (max === null)
-            max = [0, 0];
-        if (Math.abs(max[0] - min[0]) < .001)
-            max[0] += 1;
-        if (Math.abs(max[1] - min[1]) < .001)
-            max[1] += 1;
-
-        // Set graph transform to the [min,max] rect to the content area with
-        // some padding.
-        //
-        // FIXME: Add real mat3 and implement this properly.
-        var pad = 5;
-        var vd = new ViewData();
-        var ll_target = this.convertClientToWorld([gi.yAxisW + pad, gi.xAxisH + pad], vd);
-        var ur_target = this.convertClientToWorld(vec2_subN(this.size, pad), vd);
-        var target_size = vec2_sub(ur_target, ll_target);
-        var target_center = vec2_add(ll_target, vec2_mulN(target_size, .5));
-
-        var center = vec2_mulN(vec2_add(min, max), .5);
-        var size = vec2_sub(max, min);
-
-        var scale = vec2_mulN(target_size, .5);
-        size = vec2_div(size, scale);
-        center = vec2_sub(center, vec2_mulN(vec2_mul(target_center, size), .5));
-
-        gi.ll = vec2_sub(center, vec2_mulN(size, .5));
-        gi.ur = vec2_add(center, vec2_mulN(size, .5));
-
-        return gi;
-    },
-
-    //
-
-    convertClientToGraph: function(pt) {
-        return this.graphInfo.fromNDC(this.convertClientToWorld(pt));
-    },
-
-    //
-
-    on_size_change: function() {
-        this.graphInfo = null;
-    },
-
-    on_draw_start: function() {
-        if (!this.graphInfo)
-            this.graphInfo = this.layoutGraph();
-    },
-
-    on_draw: function(canvas, ctx) {
-        var gi = this.graphInfo;
-        var w = this.size[0], h = this.size[1];
-
-        this.xAxis.draw(this, ctx,
-                        this.convertClientToGraph([gi.yAxisW, 0]),
-                        this.convertClientToGraph([w, gi.xAxisH]),
-                        this.convertClientToGraph([w, h]))
-        this.yAxis.draw(this, ctx,
-                        this.convertClientToGraph([0, gi.xAxisH]),
-                        this.convertClientToGraph([gi.yAxisW, h]),
-                        this.convertClientToGraph([w, h]))
-
-        if (this.debugText != null) {
-            ctx.save();
-            ctx.setTransform(1, 0, 0, 1, 0, 0);
-            ctx.fillText(this.debugText, this.size[0]/2 + 10, this.size[1]/2 + 10);
-            ctx.restore();
-        }
-
-        // Draw the contents.
-        ctx.save();
-        ctx.beginPath();
-        var content_ll = this.convertClientToWorld([gi.yAxisW, gi.xAxisH]);
-        var content_ur = this.convertClientToWorld(this.size);
-        ctx.rect(content_ll[0], content_ll[1],
-                 content_ur[0]-content_ll[0], content_ur[1]-content_ll[1]);
-        ctx.clip();
-
-        for (var i = 0, e = this.plots.length; i != e; ++i) {
-            var data = this.plots[i][0];
-            var style = this.plots[i][1];
-            style.plot(this, ctx, data);
-        }
-        ctx.restore();
-    },
-
-    // Client API.
-
-    clearPlots: function() {
-        this.plots = [];
-        this.graphChanged();
-    },
-
-    addPlot: function(data, style) {
-        if (!style)
-            style = new Graph2D_LinePlotStyle(1);
-        this.plots.push( [data, style] );
-        this.graphChanged();
-    },
-});

Removed: zorg/trunk/lnt/viewer/js/View2DTest.html
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/js/View2DTest.html?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/js/View2DTest.html (original)
+++ zorg/trunk/lnt/viewer/js/View2DTest.html (removed)
@@ -1,57 +0,0 @@
-<html>
-  <head>
-    <title>View2D Test</title>
-    <script src="../resources/mootools-1.2.4-core-nc.js"></script>
-    <script src="View2D.js"></script>
-    <script type="text/javascript">
-var viewA, viewB, graphA;
-
-function init() {
-    viewA = new View2DTest("view2d");
-    viewA.viewData.location = [-.2, -.15];
-    viewA.viewData.scale = [2, 2];
-    viewA.draw();
-
-    viewB = new View2DTest("view2d_2");
-    viewB.viewData.location = [-.2, -.15];
-    viewB.viewData.scale = [.5, .5];
-    viewB.draw();
-
-    var pts_0 = [ [0, 0], [1, 1.3], [2, 2.2], [3, 1.3], [4, 4],
-                  [5,3], [6, 4], [7, 4.4]];
-    pts_0 = pts_0.map(function(item, index, array) {
-                        return vec2_mulN(item, .1);
-                      });
-    var pts_1 = pts_0.map(function(item, index, array) {
-                        return [item[0], .2 + item[1] * (1 - item[0] / 2)];
-                      });
-    var pts_2 = pts_0.map(function(item, index, array) {
-                        return [item[0], 1 - item[1]];
-                      });
-    graphA = new Graph2D("graph2d");
-if (1) {
-    graphA.addPlot(pts_0, new Graph2D_LinePlotStyle(2));
-    graphA.addPlot(pts_1);
-    graphA.addPlot(pts_2, new Graph2D_LinePlotStyle(null, [1,0,0]));
-} else {
-    graphA.addPlot([[1248617856.000000,1.398600],[1248960469.000000,1.241700],[1249396047.000000,1.214300],[1249488792.000000,1.211600],[1249564554.000000,1.239500],[1249732514.000000,1.239200],[1249819044.000000,1.236300],[1249910746.000000,1.234200],[1249996733.000000,1.236000],[1250083258.000000,1.252600],[1250255237.000000,1.260400],[1250341501.000000,1.253500],[1250427966.000000,1.262600],[1250514329.000000,1.261600],[1250600211.000000,1.249100],[1250686801.000000,1.250700],[1250773065.000000,1.255400],[1250859519.000000,1.246300],[1250946756.000000,1.245900],[1251032239.000000,1.238200],[1251118837.000000,1.238000],[1251205034.000000,1.241900],[1251292148.000000,1.236500],[1251379354.000000,1.230200],[1251466226.000000,1.228700],[1251552218.000000,1.233600],[1251638633.000000,1.222400],[1251725230.000000,1.222100],[1251811608.000000,1.239100],[1251898565.000000,1.230200],[1251984695.000000,1.241700],[1252070572.000000,1.205800],[1252157268.000000,1.211100],[1252243914.
 000000,1.210300],[1252330714.000000,1.206000],[1252416809.000000,1.210800],[1252590190.000000,1.216800],[1252675459.000000,1.214400],[1252762486.000000,1.220700],[1252886652.000000,1.221700],[1252935938.000000,1.215200],[1253021864.000000,1.213800],[1253108596.000000,1.213800],[1253194864.000000,1.231900],[1253281344.000000,1.232000],[1253366664.000000,1.238400],[1253453169.000000,1.232500],[1253539839.000000,1.230100],[1253627357.000000,1.232600],[1253713381.000000,1.235700],[1253799754.000000,1.232400],[1253886021.000000,1.241900],[1253972269.000000,1.229700],[1254058753.000000,1.229100],[1254145361.000000,1.284000],[1254231276.000000,1.295200],[1254317581.000000,1.299800],[1254405166.000000,1.340600],[1254490117.000000,1.305300],[1254576631.000000,1.304100],[1254662979.000000,1.303700],[1254749498.000000,1.306800],[1254835808.000000,1.306200],[1254922190.000000,1.270100],[1255008713.000000,1.270900],[1255094924.000000,1.267300],[1255181629.000000,1.265100],[1255267916.000
 000,1.283300],[1255354566.000000,1.285500],[1255440921.000000,1.287100],[1255526237.000000,1.269800],[1255613420.000000,1.318400],[1255700706.000000,1.301600],[1255786760.000000,1.305000],[1255873293.000000,1.305000],[1255959875.000000,1.438800],[1256046280.000000,1.437400],[1256132389.000000,1.439100],[1256218592.000000,1.461200],[1256304662.000000,1.464100],[1256391812.000000,1.462300],[1256478151.000000,1.469600],[1256564495.000000,1.472300],[1256823554.000000,1.474000],[1256909311.000000,1.477200],[1256996077.000000,1.459000],[1257082516.000000,1.426100],[1257258543.000000,1.433700],[1257344527.000000,1.452600],[1257431075.000000,1.440700],[1257516720.000000,1.443300],[1257602894.000000,1.503300],[1257863543.000000,1.550200],[1257948938.000000,1.532500],[1258035827.000000,1.534900],[1258122304.000000,1.535600],[1258207973.000000,1.546700],[1258294248.000000,1.534700],[1258382337.000000,1.544000],[1258551986.000000,1.509100],[1258640333.000000,1.554300],[1258728912.000000
 ,1.541100],[1258815149.000000,1.602700],[1258901720.000000,1.685900]]);
-graphA.xAxis.format = graphA.xAxis.formats.day;
-}
-    graphA.draw();
-}
-    </script>
-  </head>
-  <body onload="init()" bgcolor="#AAAAAA">
-    <canvas id="graph2d" width="600" height="400"></canvas>
-    <br>
-    <table>
-      <tr>
-        <td><canvas id="view2d" width="300" height="200"></canvas></td>
-        <td><canvas id="view2d_2" width="200" height="350"></canvas></td>
-      </tr>
-    </table>
-    Shift-Left Mouse: Pan<br>
-    Alt/Meta-Left Mouse: Zoom<br>
-    Wheel: Zoom (<i>Shift Slows</i>)<br>
-  </body>
-</html>

Removed: zorg/trunk/lnt/viewer/machines.ptl
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/machines.ptl?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/machines.ptl (original)
+++ zorg/trunk/lnt/viewer/machines.ptl (removed)
@@ -1,90 +0,0 @@
-# -*- python -*-
-
-import sys
-from quixote import get_response, redirect
-from quixote.directory import Directory
-from quixote.errors import TraversalError
-
-class MachineUI(Directory):
-    _q_exports = [""]
-
-    def __init__(self, root, idstr):
-        self.root = root
-        try:
-            self.id = int(idstr)
-        except ValueError, exc:
-            raise TraversalError(str(exc))
-
-
-    def _q_index [html] (self):
-        # Get a DB conntection
-        db = self.root.getDB()
-
-        m = db.getMachine(self.id)
-
-        self.root.getHeader("zorg:machine:%d" % self.id, '../..')
-
-        """
-        <h2>Machine: %s:%d</h2>
-        """ % (m.name, m.number)
-
-
-        # Machine Info
-        """
-        <table border=1 cellborder=1>
-          <tr>
-            <th>Key</th>
-            <th>Value</th>
-          </tr>
-          </thead>
-        """
-        for mi in m.info.values():
-            """
-          <tr>
-            <td>%s</td>
-            <td>%s</td>
-          </tr>""" % (mi.key, mi.value)
-        """
-        </table>
-        """
-
-        # List runs
-        """
-        <h3>Associated Runs</h3>
-        <table class="sortable" border=1 cellborder=1>
-          <thead>
-          <tr>
-            <th>Run ID</th>
-            <th>Start Time</th>
-            <th>End Time</th>
-          </tr>
-          </thead>
-        """
-        for r in db.runs(machine=m):
-            """
-          <tr>
-            <td><a href="../../runs/%d/">%d</a></td>
-            <td>%s</td>
-            <td>%s</td>
-          </tr>
-            """ % (r.id, r.id, r.start_time, r.end_time)
-        """
-        </table>
-        """
-
-        self.root.getFooter()
-
-class MachinesDirectory(Directory):
-    _q_exports = [""]
-
-    def __init__(self, root):
-        Directory.__init__(self)
-        self.root = root
-
-    def _q_index [plain] (self):
-        """
-        machine access
-        """
-
-    def _q_lookup(self, component):
-        return MachineUI(self.root, component)

Removed: zorg/trunk/lnt/viewer/nightlytest.ptl
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/nightlytest.ptl?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/nightlytest.ptl (original)
+++ zorg/trunk/lnt/viewer/nightlytest.ptl (removed)
@@ -1,800 +0,0 @@
-# -*- python -*-
-
-import sys
-import time
-
-import quixote
-from quixote.directory import Directory
-from quixote.errors import TraversalError
-
-import Util, NTStyleBrowser
-from Util import safediv
-from NTUtil import *
-
-from PerfDB import Machine, Run
-
-class NightlyTestRunUI(NTStyleBrowser.TestRunUI):
-    _q_exports = ["", "graphSingle"]
-
-    def __init__(self, *args, **kwargs):
-        NTStyleBrowser.TestRunUI.__init__(self, *args, **kwargs)
-        self.popupDepth = 0
-
-    def getTags(self):
-        return (None, 'nightlytest')
-
-    def getTitle(self):
-        return 'LLVM Nightly Test Results'
-
-    def getHeaderTitle(self):
-        return 'LLVM Nightly Test Results'
-
-    def getParameters(self):
-        return ()
-
-    def renderFullContents [html] (self, db, run, compareTo, summary):
-        """<p>"""
-        self.getAllResults(db, run, compareTo, summary)
-
-    def renderBriefContents [html] (self, db, run, compareTo, summary):
-        if compareTo:
-            self.getComparisonPopups(db, run, compareTo, summary)
-
-    def renderCommonContents [html] (self, db, run, compareTo, summary):
-        # Test suite failure information.
-
-        failures = self.getFailuresForRun(db, run, summary)
-
-        if compareTo is not None:
-            prevFailures = self.getFailuresForRun(db, compareTo, summary)
-            newFailures = [(name, list(set(items) -
-                                       set(prevFailures.get(name,[]))))
-                           for name,items in failures.items()]
-            newFailures = dict([(name, items)
-                                for name,items in newFailures
-                                if items])
-
-            if newFailures:
-                newFailures = sorted(newFailures.items())
-                self.renderTestSuiteFailures('newTSFailures',
-                                             '<b>New Test Suite Failures</b>',
-                                             newFailures)
-
-        failures = sorted(failures.items())
-        self.renderTestSuiteFailures('tsFailures',
-                                     'Test Suite Failures', failures)
-
-    def renderTestSuiteFailures [html] (self, id, title, failures):
-        numFailures = sum([len(items) for _,items in failures])
-        title = '%d %s (All)' % (numFailures, title)
-
-        self.renderPopupBegin(id, title, True)
-        self.renderPopupBegin(id+'.all', 'All', True)
-        for name,items in failures:
-            """
-            %s <font color="grey">[%s]</font><br>
-            """ % (name, ', '.join(items))
-        self.renderPopupEnd()
-
-        # Also show failure by type.
-        byType = Util.multidict([(item,name)
-                                 for name,items in failures
-                                 for item in items])
-        byType = sorted(byType.items())
-
-        for i,(item,names) in enumerate(byType):
-            title = '%d %s' % (len(names), item)
-            self.renderPopupBegin(id+'.%d' % i, title, True)
-            for name in names:
-                """
-                %s<br>""" % name
-            self.renderPopupEnd()
-
-        self.renderPopupEnd()
-
-    def renderPopupBegin [html] (self, id, title, hidden):
-        self.popupDepth += 1
-        """\
-        <p>
-        <a href="javascript://" onclick="toggleLayer('%s')"; id="%s_">(%s) %s</a>
-        <div id="%s" style="display: %s;" class="hideable_%d">
-        """ % (id, id, ("+","-")[hidden], title, id, ("","none")[hidden],
-               self.popupDepth)
-    def renderPopupEnd [html] (self):
-        """
-        </div>"""
-        self.popupDepth -= 1
-
-    def getFailuresForRun(self, db, run, summary):
-        failures = Util.multidict()
-        for keyname,title in kTSKeys.items():
-            for testname in summary.testNames:
-                fullname = 'nightlytest.' + testname + '.' + keyname + '.success'
-                t = summary.testMap.get(str(fullname))
-                if t is None:
-                    continue
-                samples = summary.getRunSamples(run).get(t.id)
-                if not samples or samples[0]:
-                    continue
-                failures[testname] = title
-        return failures
-
-    def getAllResults [html] (self, db, run, compareTo, summary):
-        columns = [('GCCAS', 'gcc.compile.time', None, ()),
-                   ('Bitcode','bc.compile.size', None, ()),
-                   ('LLC<br>compile','llc.compile.time', None, ('bc.compile.size',)),
-                   ('LLC-BETA<br>compile','llc-beta.compile.time', None, ('bc.compile.size',)),
-                   ('JIT<br>codegen','jit.compile.time', None, ('bc.compile.size',)),
-                   ('GCC','gcc.exec.time', None, ('gcc.compile.time',)),
-                   ('CBE','cbe.exec.time', None, ('bc.compile.size',)),
-                   ('LLC','llc.exec.time', None, ('llc.compile.time',)),
-                   ('LLC-BETA','llc-beta.exec.time', None, ('llc-beta.compile.time',)),
-                   ('JIT','jit.exec.time', None, ('jit.compile.time',)),
-                   ('GCC/CBE','gcc.exec.time','cbe.exec.time', ()),
-                   ('GCC/LLC','gcc.exec.time','llc.exec.time', ()),
-                   ('GCC/LLC-BETA','gcc.exec.time','llc-beta.exec.time',()),
-                   ('LLC/LLC-BETA','llc.exec.time','llc-beta.exec.time',())]
-
-        # Add interface to hiding columns by test or column type.
-        keyIndices = Util.multidict()
-        ratioIndices = []
-        pctIndices = []
-
-        idx = 1
-        for info in columns:
-            isCmp = info[2] is not None
-            key = str(info[1]).split(str('.'))[0]
-            if not isCmp:
-                keyIndices[key] = idx
-                keyIndices[key] = idx + 1
-                pctIndices.append(idx + 1)
-                idx += 2
-            else:
-                keyIndices[key] = idx
-                ratioIndices.append(idx)
-                idx += 1
-        """
-        <form>
-        <table border="1">
-          <thead>
-            <tr>
-              <th>Column Visibility</th>
-              <th>GCC</th>
-              <th>LLC</th>
-              <th>CBE</th>
-              <th>JIT</th>
-              <th>LLC-BETA</th>
-              <th>Percentages</th>
-              <th>Ratios</th>
-            </tr>
-          </thead>
-          <tr>
-            <td>Enabled</td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-          </tr>
-        </table>
-        </form>
-        """ % (', '.join(map(str, keyIndices['gcc'])),
-               ', '.join(map(str, keyIndices['llc'])),
-               ', '.join(map(str, keyIndices['cbe'])),
-               ', '.join(map(str, keyIndices['jit'])),
-               ', '.join(map(str, keyIndices['llc-beta'])),
-               ', '.join(map(str, pctIndices)),
-               ', '.join(map(str, ratioIndices)))
-
-        # The main table.
-        """
-        <table class="sortable" border="1" cellspacing="0" cellpadding="0" id="programs">
-          <thead>
-          <tr>
-            <th>Program</th>
-        """
-        for name,key,cmp,dependsOn in columns:
-            if cmp is None:
-                """
-            <th>%s</th>
-            <th>%%<br>change<br>in<br>%s</th>
-                """ % (name, name)
-            else:
-                """<th>%s</th>""" % name
-        """
-          </tr>
-        </thead>
-        """
-
-        runSamples = summary.getRunSamples(run)
-        prevSamples = summary.getRunSamples(compareTo)
-        testNames = list(summary.testNames)
-        testNames.sort(key = lambda x: x.lower())
-        for testName in testNames:
-            # FIXME: We need some id for the "program". The dotted name system
-            # solves this...
-            fullname = str('nightlytest.' + testName + '.' +
-                           'gcc.compile.success')
-            t = summary.testMap.get(fullname)
-            assert t
-            """
-          <tr>
-            <td><a href="../programs/%s/">%s</a></td>
-            """ % (t.id, testName,)
-
-            for name,key,cmp,dependsOn in columns:
-                if cmp is None:
-                    fullname = str('nightlytest.' + testName + '.' + key)
-                    t = summary.testMap.get(fullname)
-                    if t is None:
-                        current = prev = None
-                    else:
-                        current = runSamples.get(t.id)
-                        prev = prevSamples.get(t.id)
-                    if current:
-                        value = current[0]
-                        if key.endswith('size'):
-                            """<td>%d</td>""" % int(value)
-                        else:
-                            """<td>%.4f</td>""" % value
-                        if prev:
-                            pct = safediv(value, prev[0],
-                                          '<center><font size=-2>nan</font></center>')
-                        else:
-                            pct = 'N/A'
-                    else:
-                        # Only mark failure if nothing we depend on failed.
-                        failed = True
-                        for d in dependsOn:
-                            t = summary.testMap.get(str('nightlytest.' + testName + '.' + d))
-                            if not t or not runSamples.get(t.id):
-                                failed = False
-                                break
-                        if failed:
-                            """<td bgcolor="#FF0000">*</td>"""
-                        else:
-                            """<td>N/A</td>"""
-                        pct = 'N/A'
-                    Util.PctCell(pct, delta=True).render()
-                else:
-                    tNum = summary.testMap.get(str('nightlytest.' + testName + '.' + key))
-                    tDen = summary.testMap.get(str('nightlytest.' + testName + '.' + cmp))
-                    if tNum is None or tDen is None:
-                        num = den = None
-                    else:
-                        num = runSamples.get(tNum.id)
-                        den = runSamples.get(tDen.id)
-                    if num and den:
-                        pct = safediv(num[0], den[0])
-                        if pct is None:
-                            """<td>N/A</td>"""
-                        else:
-                            """<td>%.2f</td>""" % (pct,)
-                    else:
-                        """<td>N/A</td>"""
-            """
-          </tr>
-            """
-        """
-        </table>
-        """
-
-    def getComparisonPopups [html] (self, db, run, compareTo, summary):
-        runSamples = summary.getRunSamples(run)
-        prevSamples = summary.getRunSamples(compareTo)
-
-        for i,(name,key) in enumerate(kComparisonKinds):
-            if not key:
-                # FIXME: File Size
-                deltas = []
-            else:
-                deltas = []
-                for testName in summary.testNames:
-                    fullname = str('nightlytest.' + testName + '.' + key)
-                    t = summary.testMap.get(fullname)
-                    if not t:
-                        continue
-                    current = runSamples.get(t.id)
-                    prev = prevSamples.get(t.id)
-                    if not current or not prev:
-                        continue
-                    current = current[0]
-                    prev = prev[0]
-                    pct = safediv(current, prev)
-                    if pct is None:
-                        continue
-                    pctDelta = pct - 1.
-                    if abs(pctDelta) < .05:
-                        continue
-                    if min(prev,current) <= .2:
-                        continue
-                    deltas.append( (t.id, testName, current, prev, pctDelta) )
-
-            hidden = len(deltas) == 0
-            """
-              <p>
-              <a href="javascript://" onclick="toggleLayer('%s')"; id="%s_">(%s) %d %s Significant Changes</a>
-              <div id="%s" style="display: %s;" class="hideable">
-            """ % (name, name, ("+","-")[hidden], len(deltas), name, name, ("","none")[hidden])
-            if deltas:
-                # Redirect or something so we don't have to specify
-                # run here; that is silly.
-                """
-              <form method="GET" action="graphSingle">
-              <input type="hidden" name="run" value="%d">
-              <input type="hidden" name="kind" value="%d">
-              <form method="GET" action="graphSingle">
-              <table class="sortable" border=1>
-                <thead>
-                <tr>
-                  <th class="sorttable_nosort"><input type="checkbox" id="checkAll.%d"></th>
-                  <th>Program</th>
-                  <th>%% Change</th>
-                  <th>Previous Value</th>
-                  <th>Current Value</th>
-                </tr>
-                </thead>
-                """ % (run.id, i, i,)
-                for id, name, current, prev, pctDelta in deltas:
-                    """
-                  <tr>
-                    <td><input type="checkbox" name="cb.%d" id="cb_group.%d"></td>
-                   <td><a href="../programs/%s/">%s</a></td>
-                    %s
-                    <td>%s</td>
-                    <td>%s</td>
-                  </tr>
-                    """ % (id, i, id, name,
-                           Util.PctCell(pctDelta).render(), prev, current)
-                """
-              </table>
-              <input type="submit" value="Compare Values">
-              </form>
-                """
-
-            """
-              </div>
-            """
-
-    def graphSingle [html] (self):
-        request = quixote.get_request()
-        full = request.form.get('full', '')
-        allResults = not not full
-
-        # Get a DB connection
-        db = self.root.getDB()
-
-        run = self.getActiveRun(db)
-        runs = db.runs(run.machine).order_by(Run.start_time.desc()).all()
-        machine = run.machine
-
-        request = quixote.get_request()
-        kindStr = request.form.get('kind')
-        kind = None
-        try:
-            kind = kComparisonKinds[int(kindStr)]
-        except:
-            pass
-        tests = []
-        for name,value in request.form.items():
-            if name.startswith(str('cb.')):
-                testIDStr = name[3:]
-                try:
-                    testID = int(str(testIDStr))
-                    tests.append(db.getTest(testID))
-                except:
-                    pass
-
-        # Collect samples by test and machine, then bin into runs.
-        samplesByTest = {}
-        for t in tests:
-            samples = samplesByTest[t.id] = samplesByTest.get(t.id,{})
-
-            q = db.session.query(Sample.run_id,
-                                 Sample.value).join(Run)
-            q = q.filter(Run.machine_id == machine.id)
-            q = q.filter(Sample.test_id == t.id)
-            for s_run_id,s_value in q:
-                samples[s_run_id] = s_value
-
-        legend = []
-        plots = ""
-        for i,test in enumerate(tests):
-            data = []
-            for run in runs:
-                value = samplesByTest.get(test.id,{}).get(run.id)
-                if value is not None:
-                    timeval = time.mktime(run.start_time.timetuple())
-                    data.append((timeval, value))
-            data.sort()
-
-            col = list(Util.makeDarkColor(float(i) / len(tests)))
-            pts = ','.join(['[%f,%f]' % (t,v) for t,v in data])
-            style = "new Graph2D_LinePlotStyle(1, %r)" % col
-            plots += "    graph.addPlot([%s], %s);\n" % (pts,style)
-
-            legend.append((test.name.split(str('.'),1)[1], col))
-        graph_init = """\
-    function init() {
-        graph = new Graph2D("graph");
-        graph.clearColor = [1, 1, 1];
-    %s
-        graph.xAxis.format = graph.xAxis.formats.day;
-        graph.draw();
-    }
-    """ % (plots,)
-
-        self.root.getHeader("Nightly Test Results", "../..",
-                            addPopupJS=True, addGraphJS=True,
-                            addJSScript=graph_init,
-                            onload='init()')
-
-        """
-        <center>
-          <h2>LLVM Nightly Test Results</h2>
-        </center>
-        """
-
-        # Graph2D based graph.
-        """
-        <h3>Graph</h3>
-        <table>
-        <tr>
-        <td rowspan=2 valign="top">
-          <canvas id="graph" width="600" height="400"></canvas>
-        </td>
-        <td valign="top">
-        <table cellspacing=4 border=1>
-        <tr><th colspan=2>Test</th></tr>
-        """
-        for name,col in legend:
-            """<tr><td bgcolor="%02x%02x%02x"> </td><td>%s</td></tr>""" % (
-                255*col[0], 255*col[1], 255*col[2], name)
-        """
-        </table>
-        </td></tr>
-        <tr><td align="right" valign="bottom">
-        <font size="-2">
-        Shift-Left Mouse: Pan<br>
-        Alt/Meta-Left Mouse: Zoom<br>
-        Wheel: Zoom (<i>Shift Slows</i>)<br>
-        </font>
-        </td></tr>
-        </table>
-        """
-
-        """<h3>Values</h3>
-        <a href="javascript://" onclick="toggleLayer('graph_values');"
-           id="graph_values_">(-) Graph Values</a>
-        <div id="graph_values" style="display: none;" class="hideable">
-        <table class="sortable" border=1>
-        <thead>
-          <tr>
-            <th>Run</th>
-            <th>Timestamp</th>
-        """
-        for t in tests:
-            """
-            <th>%s</th>
-            """ % (t.name,)
-        """
-        </thead>
-        """
-
-        for run in runs:
-            """
-          <tr>
-            <td>%d</td>
-            <td>%s</td>""" % (run.id, run.start_time)
-            for t in tests:
-                value = samplesByTest.get(t.id,{}).get(run.id, 'N/A')
-                """
-            <td>%s</td>""" % value
-            """
-          </tr>"""
-        """
-        </table>
-        </div>
-        """
-
-        self.root.getFooter()
-
-class NightlyTestMachineUI(Directory):
-    _q_exports = [""]
-
-    def __init__(self, root, idstr):
-        self.root = root
-        try:
-            self.id = int(idstr)
-        except ValueError, exc:
-            raise TraversalError(str(exc))
-
-    def _q_index [html] (self):
-        self.root.getHeader("Nightly Test Results", "../../..",
-                            addPopupJS=True)
-
-        # Get a DB connection
-        db = self.root.getDB()
-
-        machine = db.getMachine(self.id)
-
-        # Find all runs on this machine.
-        runs = db.runs(machine).order_by(Run.start_time.desc()).all()
-
-        """
-        <center>
-          <h1>LLVM Nightly Test Results</h1>
-          <table>
-            <tr>
-              <td align=right>Machine:</td>
-              <td>%s:%d</td>
-            </tr>
-          </table>
-        </center>
-        <p>
-        """ % (machine.name, machine.number)
-
-        # FIXME: List previous machines with the same nickname?
-        """
-        <table width="100%%" border=1>
-          <tr>
-            <td valign="top" width="200">
-              <a href="../..">Homepage</a>
-              <h4>Relatives:</h4>
-              <ul>
-        """
-        # List all machines with this name.
-        for m in db.machines(name=machine.name):
-            """<li><a href="../%d">%s:%d</a></li>""" % (m.id, m.name, m.number)
-        """
-              </ul>
-              <h4>Runs:</h4>
-              <ul>
-        """
-
-        # Show the most recent 10 runs.
-        for r in runs[:10]:
-            """ <li> <a href="../../%d/">%s</a> """ % (r.id, r.start_time)
-
-        # Full list of runs in a drop down.
-        #
-        # FIXME: Link to run correctly.
-        """
-        <p>
-        <form method="GET" action="../../1/">
-        <select name="run">
-        """
-        for r in runs:
-            """\
-        <option value="%d">%s""" % (r.id, r.start_time)
-
-        """
-        </select>
-        <input type="submit" value="Go to Run">
-        </form>
-        """
-
-        """
-              </ul>
-            </td>
-            <td valign="top">
-              <table border=1>
-              <tr>
-                <td> <b>Nickname</b> </td>
-                <td> %s </td>
-              </tr>
-        """ %  (machine.name,)
-        for mi in machine.info.values():
-            """
-              <tr>
-                <td> <b>%s</b> </td>
-                <td>%s</td>
-              </tr>
-            """ % (mi.key, mi.value)
-        """
-              <tr>
-                <td> <b>Machine ID</b> </td>
-                <td> %d </td>
-              </tr>
-              </table>
-              <p>
-        """ % (machine.id,)
-
-        # List associated runs.
-        """
-        <table class="sortable" border=1>
-        <thead>
-          <tr>
-            <th>Start Time</th>
-            <th>End Time</th>
-            <th> </th>
-        </thead>
-        """
-        for r in runs:
-            """
-          <tr>
-            <td>%s</td>
-            <td>%s</td>
-            <td><a href="../../%d">View Results</a></td>
-          </tr>""" % (r.start_time, r.end_time, r.id)
-        """
-        </table>
-        """
-
-        """
-            </td>
-          </tr>
-        </table>
-        """
-
-        self.root.getFooter()
-
-class NightlyTestProgramUI(Directory):
-    _q_exports = [""]
-
-    def __init__(self, root, testIDStr):
-        self.root = root
-        try:
-            self.testID = int(testIDStr)
-        except ValueError, exc:
-            raise TraversalError(str(exc))
-
-    def _q_index [html] (self):
-        self.root.getHeader("Nightly Test Results", "../../..",
-                            addPopupJS=True)
-
-        # Get a DB connection.
-        db = self.root.getDB()
-
-        # Get the test we use to derive the name.
-        t = db.getTest(id = self.testID)
-        programName = t.name.split(str('.'), 3)[1]
-
-        # Collect runs within the last 48 hours of the most recent report.
-        import datetime
-        runs = []
-        most_recent, = db.session.query(Run.start_time).\
-            order_by(Run.start_time.desc()).first()
-        cutoff = most_recent - datetime.timedelta(days=2)
-        runs = db.session.query(Run).\
-            filter(Run.start_time >= cutoff).\
-            order_by(Run.start_time.desc()).all()
-
-        """
-        <center>
-          <h1>LLVM Nightly Test Results</h1>
-          <table>
-            <tr>
-              <td align=right>Program:</td>
-              <td>%s</td>
-            </tr>
-          </table>
-        </center>
-        <p>
-        """ % (programName,)
-
-        self.getAllResults(db, programName, runs)
-
-        self.root.getFooter()
-
-    def getAllResults [html] (self, db, testName, runs):
-        columns = [('GCCAS', 'gcc.compile.time', ()),
-                   ('Bitcode','bc.compile.size', ()),
-                   ('LLC<br>compile','llc.compile.time', ('bc.compile.size',)),
-                   ('LLC-BETA<br>compile','llc-beta.compile.time', ('bc.compile.size',)),
-                   ('JIT<br>codegen','jit.compile.time', ('bc.compile.size',)),
-                   ('GCC','gcc.exec.time', ('gcc.compile.time',)),
-                   ('CBE','cbe.exec.time', ('bc.compile.size',)),
-                   ('LLC','llc.exec.time', ('llc.compile.time',)),
-                   ('LLC-BETA','llc-beta.exec.time', ('llc-beta.compile.time',)),
-                   ('JIT','jit.exec.time', ('jit.compile.time',))]
-
-        # Add interface to hiding columns by test or column type.
-        keyIndices = Util.multidict()
-        for idx,info in enumerate(columns):
-            key = str(info[1]).split(str('.'))[0]
-            keyIndices[key] = idx + 2
-        """
-        <form>
-        <table border="1">
-          <thead>
-            <tr>
-              <th>Column Visibility</th>
-              <th>GCC</th>
-              <th>LLC</th>
-              <th>CBE</th>
-              <th>JIT</th>
-              <th>LLC-BETA</th>
-            </tr>
-          </thead>
-          <tr>
-            <td>Enabled</td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-            <td><input type='checkbox' onClick='javascript:show_hide_column("programs", [%s]);' checked></td>
-          </tr>
-        </table>
-        </form>
-        """ % (', '.join(map(str, keyIndices['gcc'])),
-               ', '.join(map(str, keyIndices['llc'])),
-               ', '.join(map(str, keyIndices['cbe'])),
-               ', '.join(map(str, keyIndices['jit'])),
-               ', '.join(map(str, keyIndices['llc-beta'])))
-
-        # The main table.
-        """
-        <table class="sortable" border="1" cellspacing="0" cellpadding="0" id="programs">
-          <thead>
-          <tr>
-            <th>Machine</th>
-            <th>Run Start</th>
-        """
-        for name,key,dependsOn in columns:
-            """<th>%s</th>""" % (name, )
-        """
-          </tr>
-        </thead>
-        """
-
-        for run in runs:
-            """
-          <tr>
-            <td><a href="../../machines/%d">%s:%d</a></td>
-            <td><a href="../../%d">%s</a></td>
-            """ % (run.machine.id, run.machine.name, run.machine.number,
-                   run.id, run.start_time)
-
-            for name,key,dependsOn in columns:
-                fullname = str('nightlytest.' + testName + '.' + key)
-                # FIXME: Make fast.
-                current = getTestNameValueInRun(db, run, fullname)
-                if current is not None:
-                    if key.endswith('size'):
-                        """<td>%d</td>""" % int(current)
-                    else:
-                        """<td>%.4f</td>""" % current
-                else:
-                    # Only mark failure if nothing we depend on failed.
-                    failed = True
-                    for d in dependsOn:
-                        # FIXME: Make fast.
-                        t = getTestNameValueInRun(db, run,
-                                                  str('nightlytest.' + testName + '.' + d))
-                        if t is None:
-                            failed = False
-                            break
-                    if failed:
-                        """<td bgcolor="#FF0000">*</td>"""
-                    else:
-                        """<td>N/A</td>"""
-            """
-          </tr>
-            """
-        """
-        </table>
-        """
-
-class NightlyTestDirectory(NTStyleBrowser.RecentMachineDirectory):
-    _q_exports = [""]
-
-    def getTags(self):
-        return (None, 'nightlytest')
-
-    def getTitle(self):
-        return 'Nightly Test'
-
-    def getHeaderTitle(self):
-        return 'LLVM Nightly Test'
-
-    def getTestRunUI(self, component):
-        return NightlyTestRunUI(self.root, component)
-
-    def getTestMachineUI(self, component):
-        return NightlyTestMachineUI(self.root, component)
-
-    def getProgramUI(self, component):
-        return NightlyTestProgramUI(self.root, component)

Removed: zorg/trunk/lnt/viewer/publisher.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/publisher.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/publisher.py (original)
+++ zorg/trunk/lnt/viewer/publisher.py (removed)
@@ -1,48 +0,0 @@
-import time
-from quixote.publish import Publisher
-
-# FIXME: This is a bit of a hack.
-class ExtPublisher(Publisher):
-    def __init__(self, *args, **kwargs):
-        Publisher.__init__(self, *args, **kwargs)
-        self.create_time = time.time()
-
-    def process_request(self, request):
-        request.start_time = time.time()
-        return Publisher.process_request(self, request)
-
-class ThreadedPublisher(ExtPublisher):
-    is_thread_safe = True
-
-    def __init__ (self, root_namespace, *args, **kwargs):
-        ExtPublisher.__init__(self, root_namespace, *args, **kwargs)
-        self._request_dict = {}
-
-    def _set_request(self, request):
-        import thread
-        self._request_dict[thread.get_ident()] = request
-
-    def _clear_request(self):
-        import thread
-        try:
-            del self._request_dict[thread.get_ident()]
-        except KeyError:
-            pass
-
-    def get_request(self):
-        import thread
-        return self._request_dict.get(thread.get_ident())
-
-def create_publisher(configPath, configData, threaded=False):
-    import Config
-    config = Config.Config.fromData(configPath, configData)
-
-    from quixote import enable_ptl
-    enable_ptl()
-
-    from root import RootDirectory
-    if threaded:
-        publisher_class = ThreadedPublisher
-    else:
-        publisher_class = ExtPublisher
-    return publisher_class(RootDirectory(config), display_exceptions='plain')

Removed: zorg/trunk/lnt/viewer/resources/form.css
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/resources/form.css?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/resources/form.css (original)
+++ zorg/trunk/lnt/viewer/resources/form.css (removed)
@@ -1,75 +0,0 @@
-/* Derived from Quixote's BASIC_FORM_CSS */
-
-form.quixote div.title {
-    font-weight: bold;
-}
-
-form.quixote br.submit,
-form.quixote br.widget,
-br.quixoteform {
-    clear: left;
-}
-
-form.quixote div.submit br.widget {
-    display: none;
-}
-
-form.quixote div.widget {
-    float: left;
-    padding: 4px;
-    padding-right: 1em;
-    margin-bottom: 6px;
-}
-
-/* pretty forms (attribute selector hides from broken browsers (e.g. IE) */
-form.quixote[action] {
-    float: left;
-}
-
-form.quixote[action] > div.widget {
-    float: none;
-}
-
-form.quixote[action] > br.widget {
-    display: none;
-}
-
-form.quixote div.widget div.widget {
-    padding: 0;
-    margin-bottom: 0;
-}
-
-form.quixote div.SubmitWidget {
-    float: left
-}
-
-form.quixote div.content {
-    margin-left: 0.6em; /* indent content */
-}
-
-form.quixote div.content div.content {
-    margin-left: 0; /* indent content only for top-level widgets */
-}
-
-form.quixote div.error {
-    color: #c00;
-    font-size: small;
-    margin-top: .1em;
-}
-
-form.quixote div.hint {
-    font-size: small;
-    font-style: italic;
-    margin-top: .1em;
-}
-
-form.quixote div.errornotice {
-    color: #c00;
-    padding: 0.5em;
-    margin: 0.5em;
-}
-
-form.quixote div.FormTokenWidget,
-form.quixote.div.HiddenWidget {
-    display: none;
-}

Removed: zorg/trunk/lnt/viewer/resources/mootools-1.2.4-core-nc.js
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/resources/mootools-1.2.4-core-nc.js?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/resources/mootools-1.2.4-core-nc.js (original)
+++ zorg/trunk/lnt/viewer/resources/mootools-1.2.4-core-nc.js (removed)
@@ -1,4329 +0,0 @@
-/*
----
-
-script: Core.js
-
-description: The core of MooTools, contains all the base functions and the Native and Hash implementations. Required by all the other scripts.
-
-license: MIT-style license.
-
-copyright: Copyright (c) 2006-2008 [Valerio Proietti](http://mad4milk.net/).
-
-authors: The MooTools production team (http://mootools.net/developers/)
-
-inspiration:
-- Class implementation inspired by [Base.js](http://dean.edwards.name/weblog/2006/03/base/) Copyright (c) 2006 Dean Edwards, [GNU Lesser General Public License](http://opensource.org/licenses/lgpl-license.php)
-- Some functionality inspired by [Prototype.js](http://prototypejs.org) Copyright (c) 2005-2007 Sam Stephenson, [MIT License](http://opensource.org/licenses/mit-license.php)
-
-provides: [Mootools, Native, Hash.base, Array.each, $util]
-
-...
-*/
-
-var MooTools = {
-	'version': '1.2.4',
-	'build': '0d9113241a90b9cd5643b926795852a2026710d4'
-};
-
-var Native = function(options){
-	options = options || {};
-	var name = options.name;
-	var legacy = options.legacy;
-	var protect = options.protect;
-	var methods = options.implement;
-	var generics = options.generics;
-	var initialize = options.initialize;
-	var afterImplement = options.afterImplement || function(){};
-	var object = initialize || legacy;
-	generics = generics !== false;
-
-	object.constructor = Native;
-	object.$family = {name: 'native'};
-	if (legacy && initialize) object.prototype = legacy.prototype;
-	object.prototype.constructor = object;
-
-	if (name){
-		var family = name.toLowerCase();
-		object.prototype.$family = {name: family};
-		Native.typize(object, family);
-	}
-
-	var add = function(obj, name, method, force){
-		if (!protect || force || !obj.prototype[name]) obj.prototype[name] = method;
-		if (generics) Native.genericize(obj, name, protect);
-		afterImplement.call(obj, name, method);
-		return obj;
-	};
-
-	object.alias = function(a1, a2, a3){
-		if (typeof a1 == 'string'){
-			var pa1 = this.prototype[a1];
-			if ((a1 = pa1)) return add(this, a2, a1, a3);
-		}
-		for (var a in a1) this.alias(a, a1[a], a2);
-		return this;
-	};
-
-	object.implement = function(a1, a2, a3){
-		if (typeof a1 == 'string') return add(this, a1, a2, a3);
-		for (var p in a1) add(this, p, a1[p], a2);
-		return this;
-	};
-
-	if (methods) object.implement(methods);
-
-	return object;
-};
-
-Native.genericize = function(object, property, check){
-	if ((!check || !object[property]) && typeof object.prototype[property] == 'function') object[property] = function(){
-		var args = Array.prototype.slice.call(arguments);
-		return object.prototype[property].apply(args.shift(), args);
-	};
-};
-
-Native.implement = function(objects, properties){
-	for (var i = 0, l = objects.length; i < l; i++) objects[i].implement(properties);
-};
-
-Native.typize = function(object, family){
-	if (!object.type) object.type = function(item){
-		return ($type(item) === family);
-	};
-};
-
-(function(){
-	var natives = {'Array': Array, 'Date': Date, 'Function': Function, 'Number': Number, 'RegExp': RegExp, 'String': String};
-	for (var n in natives) new Native({name: n, initialize: natives[n], protect: true});
-
-	var types = {'boolean': Boolean, 'native': Native, 'object': Object};
-	for (var t in types) Native.typize(types[t], t);
-
-	var generics = {
-		'Array': ["concat", "indexOf", "join", "lastIndexOf", "pop", "push", "reverse", "shift", "slice", "sort", "splice", "toString", "unshift", "valueOf"],
-		'String': ["charAt", "charCodeAt", "concat", "indexOf", "lastIndexOf", "match", "replace", "search", "slice", "split", "substr", "substring", "toLowerCase", "toUpperCase", "valueOf"]
-	};
-	for (var g in generics){
-		for (var i = generics[g].length; i--;) Native.genericize(natives[g], generics[g][i], true);
-	}
-})();
-
-var Hash = new Native({
-
-	name: 'Hash',
-
-	initialize: function(object){
-		if ($type(object) == 'hash') object = $unlink(object.getClean());
-		for (var key in object) this[key] = object[key];
-		return this;
-	}
-
-});
-
-Hash.implement({
-
-	forEach: function(fn, bind){
-		for (var key in this){
-			if (this.hasOwnProperty(key)) fn.call(bind, this[key], key, this);
-		}
-	},
-
-	getClean: function(){
-		var clean = {};
-		for (var key in this){
-			if (this.hasOwnProperty(key)) clean[key] = this[key];
-		}
-		return clean;
-	},
-
-	getLength: function(){
-		var length = 0;
-		for (var key in this){
-			if (this.hasOwnProperty(key)) length++;
-		}
-		return length;
-	}
-
-});
-
-Hash.alias('forEach', 'each');
-
-Array.implement({
-
-	forEach: function(fn, bind){
-		for (var i = 0, l = this.length; i < l; i++) fn.call(bind, this[i], i, this);
-	}
-
-});
-
-Array.alias('forEach', 'each');
-
-function $A(iterable){
-	if (iterable.item){
-		var l = iterable.length, array = new Array(l);
-		while (l--) array[l] = iterable[l];
-		return array;
-	}
-	return Array.prototype.slice.call(iterable);
-};
-
-function $arguments(i){
-	return function(){
-		return arguments[i];
-	};
-};
-
-function $chk(obj){
-	return !!(obj || obj === 0);
-};
-
-function $clear(timer){
-	clearTimeout(timer);
-	clearInterval(timer);
-	return null;
-};
-
-function $defined(obj){
-	return (obj != undefined);
-};
-
-function $each(iterable, fn, bind){
-	var type = $type(iterable);
-	((type == 'arguments' || type == 'collection' || type == 'array') ? Array : Hash).each(iterable, fn, bind);
-};
-
-function $empty(){};
-
-function $extend(original, extended){
-	for (var key in (extended || {})) original[key] = extended[key];
-	return original;
-};
-
-function $H(object){
-	return new Hash(object);
-};
-
-function $lambda(value){
-	return ($type(value) == 'function') ? value : function(){
-		return value;
-	};
-};
-
-function $merge(){
-	var args = Array.slice(arguments);
-	args.unshift({});
-	return $mixin.apply(null, args);
-};
-
-function $mixin(mix){
-	for (var i = 1, l = arguments.length; i < l; i++){
-		var object = arguments[i];
-		if ($type(object) != 'object') continue;
-		for (var key in object){
-			var op = object[key], mp = mix[key];
-			mix[key] = (mp && $type(op) == 'object' && $type(mp) == 'object') ? $mixin(mp, op) : $unlink(op);
-		}
-	}
-	return mix;
-};
-
-function $pick(){
-	for (var i = 0, l = arguments.length; i < l; i++){
-		if (arguments[i] != undefined) return arguments[i];
-	}
-	return null;
-};
-
-function $random(min, max){
-	return Math.floor(Math.random() * (max - min + 1) + min);
-};
-
-function $splat(obj){
-	var type = $type(obj);
-	return (type) ? ((type != 'array' && type != 'arguments') ? [obj] : obj) : [];
-};
-
-var $time = Date.now || function(){
-	return +new Date;
-};
-
-function $try(){
-	for (var i = 0, l = arguments.length; i < l; i++){
-		try {
-			return arguments[i]();
-		} catch(e){}
-	}
-	return null;
-};
-
-function $type(obj){
-	if (obj == undefined) return false;
-	if (obj.$family) return (obj.$family.name == 'number' && !isFinite(obj)) ? false : obj.$family.name;
-	if (obj.nodeName){
-		switch (obj.nodeType){
-			case 1: return 'element';
-			case 3: return (/\S/).test(obj.nodeValue) ? 'textnode' : 'whitespace';
-		}
-	} else if (typeof obj.length == 'number'){
-		if (obj.callee) return 'arguments';
-		else if (obj.item) return 'collection';
-	}
-	return typeof obj;
-};
-
-function $unlink(object){
-	var unlinked;
-	switch ($type(object)){
-		case 'object':
-			unlinked = {};
-			for (var p in object) unlinked[p] = $unlink(object[p]);
-		break;
-		case 'hash':
-			unlinked = new Hash(object);
-		break;
-		case 'array':
-			unlinked = [];
-			for (var i = 0, l = object.length; i < l; i++) unlinked[i] = $unlink(object[i]);
-		break;
-		default: return object;
-	}
-	return unlinked;
-};
-
-
-/*
----
-
-script: Browser.js
-
-description: The Browser Core. Contains Browser initialization, Window and Document, and the Browser Hash.
-
-license: MIT-style license.
-
-requires:
-- /Native
-- /$util
-
-provides: [Browser, Window, Document, $exec]
-
-...
-*/
-
-var Browser = $merge({
-
-	Engine: {name: 'unknown', version: 0},
-
-	Platform: {name: (window.orientation != undefined) ? 'ipod' : (navigator.platform.match(/mac|win|linux/i) || ['other'])[0].toLowerCase()},
-
-	Features: {xpath: !!(document.evaluate), air: !!(window.runtime), query: !!(document.querySelector)},
-
-	Plugins: {},
-
-	Engines: {
-
-		presto: function(){
-			return (!window.opera) ? false : ((arguments.callee.caller) ? 960 : ((document.getElementsByClassName) ? 950 : 925));
-		},
-
-		trident: function(){
-			return (!window.ActiveXObject) ? false : ((window.XMLHttpRequest) ? ((document.querySelectorAll) ? 6 : 5) : 4);
-		},
-
-		webkit: function(){
-			return (navigator.taintEnabled) ? false : ((Browser.Features.xpath) ? ((Browser.Features.query) ? 525 : 420) : 419);
-		},
-
-		gecko: function(){
-			return (!document.getBoxObjectFor && window.mozInnerScreenX == null) ? false : ((document.getElementsByClassName) ? 19 : 18);
-		}
-
-	}
-
-}, Browser || {});
-
-Browser.Platform[Browser.Platform.name] = true;
-
-Browser.detect = function(){
-
-	for (var engine in this.Engines){
-		var version = this.Engines[engine]();
-		if (version){
-			this.Engine = {name: engine, version: version};
-			this.Engine[engine] = this.Engine[engine + version] = true;
-			break;
-		}
-	}
-
-	return {name: engine, version: version};
-
-};
-
-Browser.detect();
-
-Browser.Request = function(){
-	return $try(function(){
-		return new XMLHttpRequest();
-	}, function(){
-		return new ActiveXObject('MSXML2.XMLHTTP');
-	}, function(){
-		return new ActiveXObject('Microsoft.XMLHTTP');
-	});
-};
-
-Browser.Features.xhr = !!(Browser.Request());
-
-Browser.Plugins.Flash = (function(){
-	var version = ($try(function(){
-		return navigator.plugins['Shockwave Flash'].description;
-	}, function(){
-		return new ActiveXObject('ShockwaveFlash.ShockwaveFlash').GetVariable('$version');
-	}) || '0 r0').match(/\d+/g);
-	return {version: parseInt(version[0] || 0 + '.' + version[1], 10) || 0, build: parseInt(version[2], 10) || 0};
-})();
-
-function $exec(text){
-	if (!text) return text;
-	if (window.execScript){
-		window.execScript(text);
-	} else {
-		var script = document.createElement('script');
-		script.setAttribute('type', 'text/javascript');
-		script[(Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerText' : 'text'] = text;
-		document.head.appendChild(script);
-		document.head.removeChild(script);
-	}
-	return text;
-};
-
-Native.UID = 1;
-
-var $uid = (Browser.Engine.trident) ? function(item){
-	return (item.uid || (item.uid = [Native.UID++]))[0];
-} : function(item){
-	return item.uid || (item.uid = Native.UID++);
-};
-
-var Window = new Native({
-
-	name: 'Window',
-
-	legacy: (Browser.Engine.trident) ? null: window.Window,
-
-	initialize: function(win){
-		$uid(win);
-		if (!win.Element){
-			win.Element = $empty;
-			if (Browser.Engine.webkit) win.document.createElement("iframe"); //fixes safari 2
-			win.Element.prototype = (Browser.Engine.webkit) ? window["[[DOMElement.prototype]]"] : {};
-		}
-		win.document.window = win;
-		return $extend(win, Window.Prototype);
-	},
-
-	afterImplement: function(property, value){
-		window[property] = Window.Prototype[property] = value;
-	}
-
-});
-
-Window.Prototype = {$family: {name: 'window'}};
-
-new Window(window);
-
-var Document = new Native({
-
-	name: 'Document',
-
-	legacy: (Browser.Engine.trident) ? null: window.Document,
-
-	initialize: function(doc){
-		$uid(doc);
-		doc.head = doc.getElementsByTagName('head')[0];
-		doc.html = doc.getElementsByTagName('html')[0];
-		if (Browser.Engine.trident && Browser.Engine.version <= 4) $try(function(){
-			doc.execCommand("BackgroundImageCache", false, true);
-		});
-		if (Browser.Engine.trident) doc.window.attachEvent('onunload', function(){
-			doc.window.detachEvent('onunload', arguments.callee);
-			doc.head = doc.html = doc.window = null;
-		});
-		return $extend(doc, Document.Prototype);
-	},
-
-	afterImplement: function(property, value){
-		document[property] = Document.Prototype[property] = value;
-	}
-
-});
-
-Document.Prototype = {$family: {name: 'document'}};
-
-new Document(document);
-
-
-/*
----
-
-script: Array.js
-
-description: Contains Array Prototypes like each, contains, and erase.
-
-license: MIT-style license.
-
-requires:
-- /$util
-- /Array.each
-
-provides: [Array]
-
-...
-*/
-
-Array.implement({
-
-	every: function(fn, bind){
-		for (var i = 0, l = this.length; i < l; i++){
-			if (!fn.call(bind, this[i], i, this)) return false;
-		}
-		return true;
-	},
-
-	filter: function(fn, bind){
-		var results = [];
-		for (var i = 0, l = this.length; i < l; i++){
-			if (fn.call(bind, this[i], i, this)) results.push(this[i]);
-		}
-		return results;
-	},
-
-	clean: function(){
-		return this.filter($defined);
-	},
-
-	indexOf: function(item, from){
-		var len = this.length;
-		for (var i = (from < 0) ? Math.max(0, len + from) : from || 0; i < len; i++){
-			if (this[i] === item) return i;
-		}
-		return -1;
-	},
-
-	map: function(fn, bind){
-		var results = [];
-		for (var i = 0, l = this.length; i < l; i++) results[i] = fn.call(bind, this[i], i, this);
-		return results;
-	},
-
-	some: function(fn, bind){
-		for (var i = 0, l = this.length; i < l; i++){
-			if (fn.call(bind, this[i], i, this)) return true;
-		}
-		return false;
-	},
-
-	associate: function(keys){
-		var obj = {}, length = Math.min(this.length, keys.length);
-		for (var i = 0; i < length; i++) obj[keys[i]] = this[i];
-		return obj;
-	},
-
-	link: function(object){
-		var result = {};
-		for (var i = 0, l = this.length; i < l; i++){
-			for (var key in object){
-				if (object[key](this[i])){
-					result[key] = this[i];
-					delete object[key];
-					break;
-				}
-			}
-		}
-		return result;
-	},
-
-	contains: function(item, from){
-		return this.indexOf(item, from) != -1;
-	},
-
-	extend: function(array){
-		for (var i = 0, j = array.length; i < j; i++) this.push(array[i]);
-		return this;
-	},
-
-	getLast: function(){
-		return (this.length) ? this[this.length - 1] : null;
-	},
-
-	getRandom: function(){
-		return (this.length) ? this[$random(0, this.length - 1)] : null;
-	},
-
-	include: function(item){
-		if (!this.contains(item)) this.push(item);
-		return this;
-	},
-
-	combine: function(array){
-		for (var i = 0, l = array.length; i < l; i++) this.include(array[i]);
-		return this;
-	},
-
-	erase: function(item){
-		for (var i = this.length; i--; i){
-			if (this[i] === item) this.splice(i, 1);
-		}
-		return this;
-	},
-
-	empty: function(){
-		this.length = 0;
-		return this;
-	},
-
-	flatten: function(){
-		var array = [];
-		for (var i = 0, l = this.length; i < l; i++){
-			var type = $type(this[i]);
-			if (!type) continue;
-			array = array.concat((type == 'array' || type == 'collection' || type == 'arguments') ? Array.flatten(this[i]) : this[i]);
-		}
-		return array;
-	},
-
-	hexToRgb: function(array){
-		if (this.length != 3) return null;
-		var rgb = this.map(function(value){
-			if (value.length == 1) value += value;
-			return value.toInt(16);
-		});
-		return (array) ? rgb : 'rgb(' + rgb + ')';
-	},
-
-	rgbToHex: function(array){
-		if (this.length < 3) return null;
-		if (this.length == 4 && this[3] == 0 && !array) return 'transparent';
-		var hex = [];
-		for (var i = 0; i < 3; i++){
-			var bit = (this[i] - 0).toString(16);
-			hex.push((bit.length == 1) ? '0' + bit : bit);
-		}
-		return (array) ? hex : '#' + hex.join('');
-	}
-
-});
-
-
-/*
----
-
-script: Function.js
-
-description: Contains Function Prototypes like create, bind, pass, and delay.
-
-license: MIT-style license.
-
-requires:
-- /Native
-- /$util
-
-provides: [Function]
-
-...
-*/
-
-Function.implement({
-
-	extend: function(properties){
-		for (var property in properties) this[property] = properties[property];
-		return this;
-	},
-
-	create: function(options){
-		var self = this;
-		options = options || {};
-		return function(event){
-			var args = options.arguments;
-			args = (args != undefined) ? $splat(args) : Array.slice(arguments, (options.event) ? 1 : 0);
-			if (options.event) args = [event || window.event].extend(args);
-			var returns = function(){
-				return self.apply(options.bind || null, args);
-			};
-			if (options.delay) return setTimeout(returns, options.delay);
-			if (options.periodical) return setInterval(returns, options.periodical);
-			if (options.attempt) return $try(returns);
-			return returns();
-		};
-	},
-
-	run: function(args, bind){
-		return this.apply(bind, $splat(args));
-	},
-
-	pass: function(args, bind){
-		return this.create({bind: bind, arguments: args});
-	},
-
-	bind: function(bind, args){
-		return this.create({bind: bind, arguments: args});
-	},
-
-	bindWithEvent: function(bind, args){
-		return this.create({bind: bind, arguments: args, event: true});
-	},
-
-	attempt: function(args, bind){
-		return this.create({bind: bind, arguments: args, attempt: true})();
-	},
-
-	delay: function(delay, bind, args){
-		return this.create({bind: bind, arguments: args, delay: delay})();
-	},
-
-	periodical: function(periodical, bind, args){
-		return this.create({bind: bind, arguments: args, periodical: periodical})();
-	}
-
-});
-
-
-/*
----
-
-script: Number.js
-
-description: Contains Number Prototypes like limit, round, times, and ceil.
-
-license: MIT-style license.
-
-requires:
-- /Native
-- /$util
-
-provides: [Number]
-
-...
-*/
-
-Number.implement({
-
-	limit: function(min, max){
-		return Math.min(max, Math.max(min, this));
-	},
-
-	round: function(precision){
-		precision = Math.pow(10, precision || 0);
-		return Math.round(this * precision) / precision;
-	},
-
-	times: function(fn, bind){
-		for (var i = 0; i < this; i++) fn.call(bind, i, this);
-	},
-
-	toFloat: function(){
-		return parseFloat(this);
-	},
-
-	toInt: function(base){
-		return parseInt(this, base || 10);
-	}
-
-});
-
-Number.alias('times', 'each');
-
-(function(math){
-	var methods = {};
-	math.each(function(name){
-		if (!Number[name]) methods[name] = function(){
-			return Math[name].apply(null, [this].concat($A(arguments)));
-		};
-	});
-	Number.implement(methods);
-})(['abs', 'acos', 'asin', 'atan', 'atan2', 'ceil', 'cos', 'exp', 'floor', 'log', 'max', 'min', 'pow', 'sin', 'sqrt', 'tan']);
-
-
-/*
----
-
-script: String.js
-
-description: Contains String Prototypes like camelCase, capitalize, test, and toInt.
-
-license: MIT-style license.
-
-requires:
-- /Native
-
-provides: [String]
-
-...
-*/
-
-String.implement({
-
-	test: function(regex, params){
-		return ((typeof regex == 'string') ? new RegExp(regex, params) : regex).test(this);
-	},
-
-	contains: function(string, separator){
-		return (separator) ? (separator + this + separator).indexOf(separator + string + separator) > -1 : this.indexOf(string) > -1;
-	},
-
-	trim: function(){
-		return this.replace(/^\s+|\s+$/g, '');
-	},
-
-	clean: function(){
-		return this.replace(/\s+/g, ' ').trim();
-	},
-
-	camelCase: function(){
-		return this.replace(/-\D/g, function(match){
-			return match.charAt(1).toUpperCase();
-		});
-	},
-
-	hyphenate: function(){
-		return this.replace(/[A-Z]/g, function(match){
-			return ('-' + match.charAt(0).toLowerCase());
-		});
-	},
-
-	capitalize: function(){
-		return this.replace(/\b[a-z]/g, function(match){
-			return match.toUpperCase();
-		});
-	},
-
-	escapeRegExp: function(){
-		return this.replace(/([-.*+?^${}()|[\]\/\\])/g, '\\$1');
-	},
-
-	toInt: function(base){
-		return parseInt(this, base || 10);
-	},
-
-	toFloat: function(){
-		return parseFloat(this);
-	},
-
-	hexToRgb: function(array){
-		var hex = this.match(/^#?(\w{1,2})(\w{1,2})(\w{1,2})$/);
-		return (hex) ? hex.slice(1).hexToRgb(array) : null;
-	},
-
-	rgbToHex: function(array){
-		var rgb = this.match(/\d{1,3}/g);
-		return (rgb) ? rgb.rgbToHex(array) : null;
-	},
-
-	stripScripts: function(option){
-		var scripts = '';
-		var text = this.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
-			scripts += arguments[1] + '\n';
-			return '';
-		});
-		if (option === true) $exec(scripts);
-		else if ($type(option) == 'function') option(scripts, text);
-		return text;
-	},
-
-	substitute: function(object, regexp){
-		return this.replace(regexp || (/\\?\{([^{}]+)\}/g), function(match, name){
-			if (match.charAt(0) == '\\') return match.slice(1);
-			return (object[name] != undefined) ? object[name] : '';
-		});
-	}
-
-});
-
-
-/*
----
-
-script: Hash.js
-
-description: Contains Hash Prototypes. Provides a means for overcoming the JavaScript practical impossibility of extending native Objects.
-
-license: MIT-style license.
-
-requires:
-- /Hash.base
-
-provides: [Hash]
-
-...
-*/
-
-Hash.implement({
-
-	has: Object.prototype.hasOwnProperty,
-
-	keyOf: function(value){
-		for (var key in this){
-			if (this.hasOwnProperty(key) && this[key] === value) return key;
-		}
-		return null;
-	},
-
-	hasValue: function(value){
-		return (Hash.keyOf(this, value) !== null);
-	},
-
-	extend: function(properties){
-		Hash.each(properties || {}, function(value, key){
-			Hash.set(this, key, value);
-		}, this);
-		return this;
-	},
-
-	combine: function(properties){
-		Hash.each(properties || {}, function(value, key){
-			Hash.include(this, key, value);
-		}, this);
-		return this;
-	},
-
-	erase: function(key){
-		if (this.hasOwnProperty(key)) delete this[key];
-		return this;
-	},
-
-	get: function(key){
-		return (this.hasOwnProperty(key)) ? this[key] : null;
-	},
-
-	set: function(key, value){
-		if (!this[key] || this.hasOwnProperty(key)) this[key] = value;
-		return this;
-	},
-
-	empty: function(){
-		Hash.each(this, function(value, key){
-			delete this[key];
-		}, this);
-		return this;
-	},
-
-	include: function(key, value){
-		if (this[key] == undefined) this[key] = value;
-		return this;
-	},
-
-	map: function(fn, bind){
-		var results = new Hash;
-		Hash.each(this, function(value, key){
-			results.set(key, fn.call(bind, value, key, this));
-		}, this);
-		return results;
-	},
-
-	filter: function(fn, bind){
-		var results = new Hash;
-		Hash.each(this, function(value, key){
-			if (fn.call(bind, value, key, this)) results.set(key, value);
-		}, this);
-		return results;
-	},
-
-	every: function(fn, bind){
-		for (var key in this){
-			if (this.hasOwnProperty(key) && !fn.call(bind, this[key], key)) return false;
-		}
-		return true;
-	},
-
-	some: function(fn, bind){
-		for (var key in this){
-			if (this.hasOwnProperty(key) && fn.call(bind, this[key], key)) return true;
-		}
-		return false;
-	},
-
-	getKeys: function(){
-		var keys = [];
-		Hash.each(this, function(value, key){
-			keys.push(key);
-		});
-		return keys;
-	},
-
-	getValues: function(){
-		var values = [];
-		Hash.each(this, function(value){
-			values.push(value);
-		});
-		return values;
-	},
-
-	toQueryString: function(base){
-		var queryString = [];
-		Hash.each(this, function(value, key){
-			if (base) key = base + '[' + key + ']';
-			var result;
-			switch ($type(value)){
-				case 'object': result = Hash.toQueryString(value, key); break;
-				case 'array':
-					var qs = {};
-					value.each(function(val, i){
-						qs[i] = val;
-					});
-					result = Hash.toQueryString(qs, key);
-				break;
-				default: result = key + '=' + encodeURIComponent(value);
-			}
-			if (value != undefined) queryString.push(result);
-		});
-
-		return queryString.join('&');
-	}
-
-});
-
-Hash.alias({keyOf: 'indexOf', hasValue: 'contains'});
-
-
-/*
----
-
-script: Event.js
-
-description: Contains the Event Class, to make the event object cross-browser.
-
-license: MIT-style license.
-
-requires:
-- /Window
-- /Document
-- /Hash
-- /Array
-- /Function
-- /String
-
-provides: [Event]
-
-...
-*/
-
-var Event = new Native({
-
-	name: 'Event',
-
-	initialize: function(event, win){
-		win = win || window;
-		var doc = win.document;
-		event = event || win.event;
-		if (event.$extended) return event;
-		this.$extended = true;
-		var type = event.type;
-		var target = event.target || event.srcElement;
-		while (target && target.nodeType == 3) target = target.parentNode;
-
-		if (type.test(/key/)){
-			var code = event.which || event.keyCode;
-			var key = Event.Keys.keyOf(code);
-			if (type == 'keydown'){
-				var fKey = code - 111;
-				if (fKey > 0 && fKey < 13) key = 'f' + fKey;
-			}
-			key = key || String.fromCharCode(code).toLowerCase();
-		} else if (type.match(/(click|mouse|menu)/i)){
-			doc = (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
-			var page = {
-				x: event.pageX || event.clientX + doc.scrollLeft,
-				y: event.pageY || event.clientY + doc.scrollTop
-			};
-			var client = {
-				x: (event.pageX) ? event.pageX - win.pageXOffset : event.clientX,
-				y: (event.pageY) ? event.pageY - win.pageYOffset : event.clientY
-			};
-			if (type.match(/DOMMouseScroll|mousewheel/)){
-				var wheel = (event.wheelDelta) ? event.wheelDelta / 120 : -(event.detail || 0) / 3;
-			}
-			var rightClick = (event.which == 3) || (event.button == 2);
-			var related = null;
-			if (type.match(/over|out/)){
-				switch (type){
-					case 'mouseover': related = event.relatedTarget || event.fromElement; break;
-					case 'mouseout': related = event.relatedTarget || event.toElement;
-				}
-				if (!(function(){
-					while (related && related.nodeType == 3) related = related.parentNode;
-					return true;
-				}).create({attempt: Browser.Engine.gecko})()) related = false;
-			}
-		}
-
-		return $extend(this, {
-			event: event,
-			type: type,
-
-			page: page,
-			client: client,
-			rightClick: rightClick,
-
-			wheel: wheel,
-
-			relatedTarget: related,
-			target: target,
-
-			code: code,
-			key: key,
-
-			shift: event.shiftKey,
-			control: event.ctrlKey,
-			alt: event.altKey,
-			meta: event.metaKey
-		});
-	}
-
-});
-
-Event.Keys = new Hash({
-	'enter': 13,
-	'up': 38,
-	'down': 40,
-	'left': 37,
-	'right': 39,
-	'esc': 27,
-	'space': 32,
-	'backspace': 8,
-	'tab': 9,
-	'delete': 46
-});
-
-Event.implement({
-
-	stop: function(){
-		return this.stopPropagation().preventDefault();
-	},
-
-	stopPropagation: function(){
-		if (this.event.stopPropagation) this.event.stopPropagation();
-		else this.event.cancelBubble = true;
-		return this;
-	},
-
-	preventDefault: function(){
-		if (this.event.preventDefault) this.event.preventDefault();
-		else this.event.returnValue = false;
-		return this;
-	}
-
-});
-
-
-/*
----
-
-script: Class.js
-
-description: Contains the Class Function for easily creating, extending, and implementing reusable Classes.
-
-license: MIT-style license.
-
-requires:
-- /$util
-- /Native
-- /Array
-- /String
-- /Function
-- /Number
-- /Hash
-
-provides: [Class]
-
-...
-*/
-
-function Class(params){
-
-	if (params instanceof Function) params = {initialize: params};
-
-	var newClass = function(){
-		Object.reset(this);
-		if (newClass._prototyping) return this;
-		this._current = $empty;
-		var value = (this.initialize) ? this.initialize.apply(this, arguments) : this;
-		delete this._current; delete this.caller;
-		return value;
-	}.extend(this);
-
-	newClass.implement(params);
-
-	newClass.constructor = Class;
-	newClass.prototype.constructor = newClass;
-
-	return newClass;
-
-};
-
-Function.prototype.protect = function(){
-	this._protected = true;
-	return this;
-};
-
-Object.reset = function(object, key){
-
-	if (key == null){
-		for (var p in object) Object.reset(object, p);
-		return object;
-	}
-
-	delete object[key];
-
-	switch ($type(object[key])){
-		case 'object':
-			var F = function(){};
-			F.prototype = object[key];
-			var i = new F;
-			object[key] = Object.reset(i);
-		break;
-		case 'array': object[key] = $unlink(object[key]); break;
-	}
-
-	return object;
-
-};
-
-new Native({name: 'Class', initialize: Class}).extend({
-
-	instantiate: function(F){
-		F._prototyping = true;
-		var proto = new F;
-		delete F._prototyping;
-		return proto;
-	},
-
-	wrap: function(self, key, method){
-		if (method._origin) method = method._origin;
-
-		return function(){
-			if (method._protected && this._current == null) throw new Error('The method "' + key + '" cannot be called.');
-			var caller = this.caller, current = this._current;
-			this.caller = current; this._current = arguments.callee;
-			var result = method.apply(this, arguments);
-			this._current = current; this.caller = caller;
-			return result;
-		}.extend({_owner: self, _origin: method, _name: key});
-
-	}
-
-});
-
-Class.implement({
-
-	implement: function(key, value){
-
-		if ($type(key) == 'object'){
-			for (var p in key) this.implement(p, key[p]);
-			return this;
-		}
-
-		var mutator = Class.Mutators[key];
-
-		if (mutator){
-			value = mutator.call(this, value);
-			if (value == null) return this;
-		}
-
-		var proto = this.prototype;
-
-		switch ($type(value)){
-
-			case 'function':
-				if (value._hidden) return this;
-				proto[key] = Class.wrap(this, key, value);
-			break;
-
-			case 'object':
-				var previous = proto[key];
-				if ($type(previous) == 'object') $mixin(previous, value);
-				else proto[key] = $unlink(value);
-			break;
-
-			case 'array':
-				proto[key] = $unlink(value);
-			break;
-
-			default: proto[key] = value;
-
-		}
-
-		return this;
-
-	}
-
-});
-
-Class.Mutators = {
-
-	Extends: function(parent){
-
-		this.parent = parent;
-		this.prototype = Class.instantiate(parent);
-
-		this.implement('parent', function(){
-			var name = this.caller._name, previous = this.caller._owner.parent.prototype[name];
-			if (!previous) throw new Error('The method "' + name + '" has no parent.');
-			return previous.apply(this, arguments);
-		}.protect());
-
-	},
-
-	Implements: function(items){
-		$splat(items).each(function(item){
-			if (item instanceof Function) item = Class.instantiate(item);
-			this.implement(item);
-		}, this);
-
-	}
-
-};
-
-
-/*
----
-
-script: Class.Extras.js
-
-description: Contains Utility Classes that can be implemented into your own Classes to ease the execution of many common tasks.
-
-license: MIT-style license.
-
-requires:
-- /Class
-
-provides: [Chain, Events, Options]
-
-...
-*/
-
-var Chain = new Class({
-
-	$chain: [],
-
-	chain: function(){
-		this.$chain.extend(Array.flatten(arguments));
-		return this;
-	},
-
-	callChain: function(){
-		return (this.$chain.length) ? this.$chain.shift().apply(this, arguments) : false;
-	},
-
-	clearChain: function(){
-		this.$chain.empty();
-		return this;
-	}
-
-});
-
-var Events = new Class({
-
-	$events: {},
-
-	addEvent: function(type, fn, internal){
-		type = Events.removeOn(type);
-		if (fn != $empty){
-			this.$events[type] = this.$events[type] || [];
-			this.$events[type].include(fn);
-			if (internal) fn.internal = true;
-		}
-		return this;
-	},
-
-	addEvents: function(events){
-		for (var type in events) this.addEvent(type, events[type]);
-		return this;
-	},
-
-	fireEvent: function(type, args, delay){
-		type = Events.removeOn(type);
-		if (!this.$events || !this.$events[type]) return this;
-		this.$events[type].each(function(fn){
-			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
-		}, this);
-		return this;
-	},
-
-	removeEvent: function(type, fn){
-		type = Events.removeOn(type);
-		if (!this.$events[type]) return this;
-		if (!fn.internal) this.$events[type].erase(fn);
-		return this;
-	},
-
-	removeEvents: function(events){
-		var type;
-		if ($type(events) == 'object'){
-			for (type in events) this.removeEvent(type, events[type]);
-			return this;
-		}
-		if (events) events = Events.removeOn(events);
-		for (type in this.$events){
-			if (events && events != type) continue;
-			var fns = this.$events[type];
-			for (var i = fns.length; i--; i) this.removeEvent(type, fns[i]);
-		}
-		return this;
-	}
-
-});
-
-Events.removeOn = function(string){
-	return string.replace(/^on([A-Z])/, function(full, first){
-		return first.toLowerCase();
-	});
-};
-
-var Options = new Class({
-
-	setOptions: function(){
-		this.options = $merge.run([this.options].extend(arguments));
-		if (!this.addEvent) return this;
-		for (var option in this.options){
-			if ($type(this.options[option]) != 'function' || !(/^on[A-Z]/).test(option)) continue;
-			this.addEvent(option, this.options[option]);
-			delete this.options[option];
-		}
-		return this;
-	}
-
-});
-
-
-/*
----
-
-script: Element.js
-
-description: One of the most important items in MooTools. Contains the dollar function, the dollars function, and an handful of cross-browser, time-saver methods to let you easily work with HTML Elements.
-
-license: MIT-style license.
-
-requires:
-- /Window
-- /Document
-- /Array
-- /String
-- /Function
-- /Number
-- /Hash
-
-provides: [Element, Elements, $, $$, Iframe]
-
-...
-*/
-
-var Element = new Native({
-
-	name: 'Element',
-
-	legacy: window.Element,
-
-	initialize: function(tag, props){
-		var konstructor = Element.Constructors.get(tag);
-		if (konstructor) return konstructor(props);
-		if (typeof tag == 'string') return document.newElement(tag, props);
-		return document.id(tag).set(props);
-	},
-
-	afterImplement: function(key, value){
-		Element.Prototype[key] = value;
-		if (Array[key]) return;
-		Elements.implement(key, function(){
-			var items = [], elements = true;
-			for (var i = 0, j = this.length; i < j; i++){
-				var returns = this[i][key].apply(this[i], arguments);
-				items.push(returns);
-				if (elements) elements = ($type(returns) == 'element');
-			}
-			return (elements) ? new Elements(items) : items;
-		});
-	}
-
-});
-
-Element.Prototype = {$family: {name: 'element'}};
-
-Element.Constructors = new Hash;
-
-var IFrame = new Native({
-
-	name: 'IFrame',
-
-	generics: false,
-
-	initialize: function(){
-		var params = Array.link(arguments, {properties: Object.type, iframe: $defined});
-		var props = params.properties || {};
-		var iframe = document.id(params.iframe);
-		var onload = props.onload || $empty;
-		delete props.onload;
-		props.id = props.name = $pick(props.id, props.name, iframe ? (iframe.id || iframe.name) : 'IFrame_' + $time());
-		iframe = new Element(iframe || 'iframe', props);
-		var onFrameLoad = function(){
-			var host = $try(function(){
-				return iframe.contentWindow.location.host;
-			});
-			if (!host || host == window.location.host){
-				var win = new Window(iframe.contentWindow);
-				new Document(iframe.contentWindow.document);
-				$extend(win.Element.prototype, Element.Prototype);
-			}
-			onload.call(iframe.contentWindow, iframe.contentWindow.document);
-		};
-		var contentWindow = $try(function(){
-			return iframe.contentWindow;
-		});
-		((contentWindow && contentWindow.document.body) || window.frames[props.id]) ? onFrameLoad() : iframe.addListener('load', onFrameLoad);
-		return iframe;
-	}
-
-});
-
-var Elements = new Native({
-
-	initialize: function(elements, options){
-		options = $extend({ddup: true, cash: true}, options);
-		elements = elements || [];
-		if (options.ddup || options.cash){
-			var uniques = {}, returned = [];
-			for (var i = 0, l = elements.length; i < l; i++){
-				var el = document.id(elements[i], !options.cash);
-				if (options.ddup){
-					if (uniques[el.uid]) continue;
-					uniques[el.uid] = true;
-				}
-				if (el) returned.push(el);
-			}
-			elements = returned;
-		}
-		return (options.cash) ? $extend(elements, this) : elements;
-	}
-
-});
-
-Elements.implement({
-
-	filter: function(filter, bind){
-		if (!filter) return this;
-		return new Elements(Array.filter(this, (typeof filter == 'string') ? function(item){
-			return item.match(filter);
-		} : filter, bind));
-	}
-
-});
-
-Document.implement({
-
-	newElement: function(tag, props){
-		if (Browser.Engine.trident && props){
-			['name', 'type', 'checked'].each(function(attribute){
-				if (!props[attribute]) return;
-				tag += ' ' + attribute + '="' + props[attribute] + '"';
-				if (attribute != 'checked') delete props[attribute];
-			});
-			tag = '<' + tag + '>';
-		}
-		return document.id(this.createElement(tag)).set(props);
-	},
-
-	newTextNode: function(text){
-		return this.createTextNode(text);
-	},
-
-	getDocument: function(){
-		return this;
-	},
-
-	getWindow: function(){
-		return this.window;
-	},
-
-	id: (function(){
-
-		var types = {
-
-			string: function(id, nocash, doc){
-				id = doc.getElementById(id);
-				return (id) ? types.element(id, nocash) : null;
-			},
-
-			element: function(el, nocash){
-				$uid(el);
-				if (!nocash && !el.$family && !(/^object|embed$/i).test(el.tagName)){
-					var proto = Element.Prototype;
-					for (var p in proto) el[p] = proto[p];
-				};
-				return el;
-			},
-
-			object: function(obj, nocash, doc){
-				if (obj.toElement) return types.element(obj.toElement(doc), nocash);
-				return null;
-			}
-
-		};
-
-		types.textnode = types.whitespace = types.window = types.document = $arguments(0);
-
-		return function(el, nocash, doc){
-			if (el && el.$family && el.uid) return el;
-			var type = $type(el);
-			return (types[type]) ? types[type](el, nocash, doc || document) : null;
-		};
-
-	})()
-
-});
-
-if (window.$ == null) Window.implement({
-	$: function(el, nc){
-		return document.id(el, nc, this.document);
-	}
-});
-
-Window.implement({
-
-	$$: function(selector){
-		if (arguments.length == 1 && typeof selector == 'string') return this.document.getElements(selector);
-		var elements = [];
-		var args = Array.flatten(arguments);
-		for (var i = 0, l = args.length; i < l; i++){
-			var item = args[i];
-			switch ($type(item)){
-				case 'element': elements.push(item); break;
-				case 'string': elements.extend(this.document.getElements(item, true));
-			}
-		}
-		return new Elements(elements);
-	},
-
-	getDocument: function(){
-		return this.document;
-	},
-
-	getWindow: function(){
-		return this;
-	}
-
-});
-
-Native.implement([Element, Document], {
-
-	getElement: function(selector, nocash){
-		return document.id(this.getElements(selector, true)[0] || null, nocash);
-	},
-
-	getElements: function(tags, nocash){
-		tags = tags.split(',');
-		var elements = [];
-		var ddup = (tags.length > 1);
-		tags.each(function(tag){
-			var partial = this.getElementsByTagName(tag.trim());
-			(ddup) ? elements.extend(partial) : elements = partial;
-		}, this);
-		return new Elements(elements, {ddup: ddup, cash: !nocash});
-	}
-
-});
-
-(function(){
-
-var collected = {}, storage = {};
-var props = {input: 'checked', option: 'selected', textarea: (Browser.Engine.webkit && Browser.Engine.version < 420) ? 'innerHTML' : 'value'};
-
-var get = function(uid){
-	return (storage[uid] || (storage[uid] = {}));
-};
-
-var clean = function(item, retain){
-	if (!item) return;
-	var uid = item.uid;
-	if (Browser.Engine.trident){
-		if (item.clearAttributes){
-			var clone = retain && item.cloneNode(false);
-			item.clearAttributes();
-			if (clone) item.mergeAttributes(clone);
-		} else if (item.removeEvents){
-			item.removeEvents();
-		}
-		if ((/object/i).test(item.tagName)){
-			for (var p in item){
-				if (typeof item[p] == 'function') item[p] = $empty;
-			}
-			Element.dispose(item);
-		}
-	}
-	if (!uid) return;
-	collected[uid] = storage[uid] = null;
-};
-
-var purge = function(){
-	Hash.each(collected, clean);
-	if (Browser.Engine.trident) $A(document.getElementsByTagName('object')).each(clean);
-	if (window.CollectGarbage) CollectGarbage();
-	collected = storage = null;
-};
-
-var walk = function(element, walk, start, match, all, nocash){
-	var el = element[start || walk];
-	var elements = [];
-	while (el){
-		if (el.nodeType == 1 && (!match || Element.match(el, match))){
-			if (!all) return document.id(el, nocash);
-			elements.push(el);
-		}
-		el = el[walk];
-	}
-	return (all) ? new Elements(elements, {ddup: false, cash: !nocash}) : null;
-};
-
-var attributes = {
-	'html': 'innerHTML',
-	'class': 'className',
-	'for': 'htmlFor',
-	'defaultValue': 'defaultValue',
-	'text': (Browser.Engine.trident || (Browser.Engine.webkit && Browser.Engine.version < 420)) ? 'innerText' : 'textContent'
-};
-var bools = ['compact', 'nowrap', 'ismap', 'declare', 'noshade', 'checked', 'disabled', 'readonly', 'multiple', 'selected', 'noresize', 'defer'];
-var camels = ['value', 'type', 'defaultValue', 'accessKey', 'cellPadding', 'cellSpacing', 'colSpan', 'frameBorder', 'maxLength', 'readOnly', 'rowSpan', 'tabIndex', 'useMap'];
-
-bools = bools.associate(bools);
-
-Hash.extend(attributes, bools);
-Hash.extend(attributes, camels.associate(camels.map(String.toLowerCase)));
-
-var inserters = {
-
-	before: function(context, element){
-		if (element.parentNode) element.parentNode.insertBefore(context, element);
-	},
-
-	after: function(context, element){
-		if (!element.parentNode) return;
-		var next = element.nextSibling;
-		(next) ? element.parentNode.insertBefore(context, next) : element.parentNode.appendChild(context);
-	},
-
-	bottom: function(context, element){
-		element.appendChild(context);
-	},
-
-	top: function(context, element){
-		var first = element.firstChild;
-		(first) ? element.insertBefore(context, first) : element.appendChild(context);
-	}
-
-};
-
-inserters.inside = inserters.bottom;
-
-Hash.each(inserters, function(inserter, where){
-
-	where = where.capitalize();
-
-	Element.implement('inject' + where, function(el){
-		inserter(this, document.id(el, true));
-		return this;
-	});
-
-	Element.implement('grab' + where, function(el){
-		inserter(document.id(el, true), this);
-		return this;
-	});
-
-});
-
-Element.implement({
-
-	set: function(prop, value){
-		switch ($type(prop)){
-			case 'object':
-				for (var p in prop) this.set(p, prop[p]);
-				break;
-			case 'string':
-				var property = Element.Properties.get(prop);
-				(property && property.set) ? property.set.apply(this, Array.slice(arguments, 1)) : this.setProperty(prop, value);
-		}
-		return this;
-	},
-
-	get: function(prop){
-		var property = Element.Properties.get(prop);
-		return (property && property.get) ? property.get.apply(this, Array.slice(arguments, 1)) : this.getProperty(prop);
-	},
-
-	erase: function(prop){
-		var property = Element.Properties.get(prop);
-		(property && property.erase) ? property.erase.apply(this) : this.removeProperty(prop);
-		return this;
-	},
-
-	setProperty: function(attribute, value){
-		var key = attributes[attribute];
-		if (value == undefined) return this.removeProperty(attribute);
-		if (key && bools[attribute]) value = !!value;
-		(key) ? this[key] = value : this.setAttribute(attribute, '' + value);
-		return this;
-	},
-
-	setProperties: function(attributes){
-		for (var attribute in attributes) this.setProperty(attribute, attributes[attribute]);
-		return this;
-	},
-
-	getProperty: function(attribute){
-		var key = attributes[attribute];
-		var value = (key) ? this[key] : this.getAttribute(attribute, 2);
-		return (bools[attribute]) ? !!value : (key) ? value : value || null;
-	},
-
-	getProperties: function(){
-		var args = $A(arguments);
-		return args.map(this.getProperty, this).associate(args);
-	},
-
-	removeProperty: function(attribute){
-		var key = attributes[attribute];
-		(key) ? this[key] = (key && bools[attribute]) ? false : '' : this.removeAttribute(attribute);
-		return this;
-	},
-
-	removeProperties: function(){
-		Array.each(arguments, this.removeProperty, this);
-		return this;
-	},
-
-	hasClass: function(className){
-		return this.className.contains(className, ' ');
-	},
-
-	addClass: function(className){
-		if (!this.hasClass(className)) this.className = (this.className + ' ' + className).clean();
-		return this;
-	},
-
-	removeClass: function(className){
-		this.className = this.className.replace(new RegExp('(^|\\s)' + className + '(?:\\s|$)'), '$1');
-		return this;
-	},
-
-	toggleClass: function(className){
-		return this.hasClass(className) ? this.removeClass(className) : this.addClass(className);
-	},
-
-	adopt: function(){
-		Array.flatten(arguments).each(function(element){
-			element = document.id(element, true);
-			if (element) this.appendChild(element);
-		}, this);
-		return this;
-	},
-
-	appendText: function(text, where){
-		return this.grab(this.getDocument().newTextNode(text), where);
-	},
-
-	grab: function(el, where){
-		inserters[where || 'bottom'](document.id(el, true), this);
-		return this;
-	},
-
-	inject: function(el, where){
-		inserters[where || 'bottom'](this, document.id(el, true));
-		return this;
-	},
-
-	replaces: function(el){
-		el = document.id(el, true);
-		el.parentNode.replaceChild(this, el);
-		return this;
-	},
-
-	wraps: function(el, where){
-		el = document.id(el, true);
-		return this.replaces(el).grab(el, where);
-	},
-
-	getPrevious: function(match, nocash){
-		return walk(this, 'previousSibling', null, match, false, nocash);
-	},
-
-	getAllPrevious: function(match, nocash){
-		return walk(this, 'previousSibling', null, match, true, nocash);
-	},
-
-	getNext: function(match, nocash){
-		return walk(this, 'nextSibling', null, match, false, nocash);
-	},
-
-	getAllNext: function(match, nocash){
-		return walk(this, 'nextSibling', null, match, true, nocash);
-	},
-
-	getFirst: function(match, nocash){
-		return walk(this, 'nextSibling', 'firstChild', match, false, nocash);
-	},
-
-	getLast: function(match, nocash){
-		return walk(this, 'previousSibling', 'lastChild', match, false, nocash);
-	},
-
-	getParent: function(match, nocash){
-		return walk(this, 'parentNode', null, match, false, nocash);
-	},
-
-	getParents: function(match, nocash){
-		return walk(this, 'parentNode', null, match, true, nocash);
-	},
-
-	getSiblings: function(match, nocash){
-		return this.getParent().getChildren(match, nocash).erase(this);
-	},
-
-	getChildren: function(match, nocash){
-		return walk(this, 'nextSibling', 'firstChild', match, true, nocash);
-	},
-
-	getWindow: function(){
-		return this.ownerDocument.window;
-	},
-
-	getDocument: function(){
-		return this.ownerDocument;
-	},
-
-	getElementById: function(id, nocash){
-		var el = this.ownerDocument.getElementById(id);
-		if (!el) return null;
-		for (var parent = el.parentNode; parent != this; parent = parent.parentNode){
-			if (!parent) return null;
-		}
-		return document.id(el, nocash);
-	},
-
-	getSelected: function(){
-		return new Elements($A(this.options).filter(function(option){
-			return option.selected;
-		}));
-	},
-
-	getComputedStyle: function(property){
-		if (this.currentStyle) return this.currentStyle[property.camelCase()];
-		var computed = this.getDocument().defaultView.getComputedStyle(this, null);
-		return (computed) ? computed.getPropertyValue([property.hyphenate()]) : null;
-	},
-
-	toQueryString: function(){
-		var queryString = [];
-		this.getElements('input, select, textarea', true).each(function(el){
-			if (!el.name || el.disabled || el.type == 'submit' || el.type == 'reset' || el.type == 'file') return;
-			var value = (el.tagName.toLowerCase() == 'select') ? Element.getSelected(el).map(function(opt){
-				return opt.value;
-			}) : ((el.type == 'radio' || el.type == 'checkbox') && !el.checked) ? null : el.value;
-			$splat(value).each(function(val){
-				if (typeof val != 'undefined') queryString.push(el.name + '=' + encodeURIComponent(val));
-			});
-		});
-		return queryString.join('&');
-	},
-
-	clone: function(contents, keepid){
-		contents = contents !== false;
-		var clone = this.cloneNode(contents);
-		var clean = function(node, element){
-			if (!keepid) node.removeAttribute('id');
-			if (Browser.Engine.trident){
-				node.clearAttributes();
-				node.mergeAttributes(element);
-				node.removeAttribute('uid');
-				if (node.options){
-					var no = node.options, eo = element.options;
-					for (var j = no.length; j--;) no[j].selected = eo[j].selected;
-				}
-			}
-			var prop = props[element.tagName.toLowerCase()];
-			if (prop && element[prop]) node[prop] = element[prop];
-		};
-
-		if (contents){
-			var ce = clone.getElementsByTagName('*'), te = this.getElementsByTagName('*');
-			for (var i = ce.length; i--;) clean(ce[i], te[i]);
-		}
-
-		clean(clone, this);
-		return document.id(clone);
-	},
-
-	destroy: function(){
-		Element.empty(this);
-		Element.dispose(this);
-		clean(this, true);
-		return null;
-	},
-
-	empty: function(){
-		$A(this.childNodes).each(function(node){
-			Element.destroy(node);
-		});
-		return this;
-	},
-
-	dispose: function(){
-		return (this.parentNode) ? this.parentNode.removeChild(this) : this;
-	},
-
-	hasChild: function(el){
-		el = document.id(el, true);
-		if (!el) return false;
-		if (Browser.Engine.webkit && Browser.Engine.version < 420) return $A(this.getElementsByTagName(el.tagName)).contains(el);
-		return (this.contains) ? (this != el && this.contains(el)) : !!(this.compareDocumentPosition(el) & 16);
-	},
-
-	match: function(tag){
-		return (!tag || (tag == this) || (Element.get(this, 'tag') == tag));
-	}
-
-});
-
-Native.implement([Element, Window, Document], {
-
-	addListener: function(type, fn){
-		if (type == 'unload'){
-			var old = fn, self = this;
-			fn = function(){
-				self.removeListener('unload', fn);
-				old();
-			};
-		} else {
-			collected[this.uid] = this;
-		}
-		if (this.addEventListener) this.addEventListener(type, fn, false);
-		else this.attachEvent('on' + type, fn);
-		return this;
-	},
-
-	removeListener: function(type, fn){
-		if (this.removeEventListener) this.removeEventListener(type, fn, false);
-		else this.detachEvent('on' + type, fn);
-		return this;
-	},
-
-	retrieve: function(property, dflt){
-		var storage = get(this.uid), prop = storage[property];
-		if (dflt != undefined && prop == undefined) prop = storage[property] = dflt;
-		return $pick(prop);
-	},
-
-	store: function(property, value){
-		var storage = get(this.uid);
-		storage[property] = value;
-		return this;
-	},
-
-	eliminate: function(property){
-		var storage = get(this.uid);
-		delete storage[property];
-		return this;
-	}
-
-});
-
-window.addListener('unload', purge);
-
-})();
-
-Element.Properties = new Hash;
-
-Element.Properties.style = {
-
-	set: function(style){
-		this.style.cssText = style;
-	},
-
-	get: function(){
-		return this.style.cssText;
-	},
-
-	erase: function(){
-		this.style.cssText = '';
-	}
-
-};
-
-Element.Properties.tag = {
-
-	get: function(){
-		return this.tagName.toLowerCase();
-	}
-
-};
-
-Element.Properties.html = (function(){
-	var wrapper = document.createElement('div');
-
-	var translations = {
-		table: [1, '<table>', '</table>'],
-		select: [1, '<select>', '</select>'],
-		tbody: [2, '<table><tbody>', '</tbody></table>'],
-		tr: [3, '<table><tbody><tr>', '</tr></tbody></table>']
-	};
-	translations.thead = translations.tfoot = translations.tbody;
-
-	var html = {
-		set: function(){
-			var html = Array.flatten(arguments).join('');
-			var wrap = Browser.Engine.trident && translations[this.get('tag')];
-			if (wrap){
-				var first = wrapper;
-				first.innerHTML = wrap[1] + html + wrap[2];
-				for (var i = wrap[0]; i--;) first = first.firstChild;
-				this.empty().adopt(first.childNodes);
-			} else {
-				this.innerHTML = html;
-			}
-		}
-	};
-
-	html.erase = html.set;
-
-	return html;
-})();
-
-if (Browser.Engine.webkit && Browser.Engine.version < 420) Element.Properties.text = {
-	get: function(){
-		if (this.innerText) return this.innerText;
-		var temp = this.ownerDocument.newElement('div', {html: this.innerHTML}).inject(this.ownerDocument.body);
-		var text = temp.innerText;
-		temp.destroy();
-		return text;
-	}
-};
-
-
-/*
----
-
-script: Element.Event.js
-
-description: Contains Element methods for dealing with events. This file also includes mouseenter and mouseleave custom Element Events.
-
-license: MIT-style license.
-
-requires:
-- /Element
-- /Event
-
-provides: [Element.Event]
-
-...
-*/
-
-Element.Properties.events = {set: function(events){
-	this.addEvents(events);
-}};
-
-Native.implement([Element, Window, Document], {
-
-	addEvent: function(type, fn){
-		var events = this.retrieve('events', {});
-		events[type] = events[type] || {'keys': [], 'values': []};
-		if (events[type].keys.contains(fn)) return this;
-		events[type].keys.push(fn);
-		var realType = type, custom = Element.Events.get(type), condition = fn, self = this;
-		if (custom){
-			if (custom.onAdd) custom.onAdd.call(this, fn);
-			if (custom.condition){
-				condition = function(event){
-					if (custom.condition.call(this, event)) return fn.call(this, event);
-					return true;
-				};
-			}
-			realType = custom.base || realType;
-		}
-		var defn = function(){
-			return fn.call(self);
-		};
-		var nativeEvent = Element.NativeEvents[realType];
-		if (nativeEvent){
-			if (nativeEvent == 2){
-				defn = function(event){
-					event = new Event(event, self.getWindow());
-					if (condition.call(self, event) === false) event.stop();
-				};
-			}
-			this.addListener(realType, defn);
-		}
-		events[type].values.push(defn);
-		return this;
-	},
-
-	removeEvent: function(type, fn){
-		var events = this.retrieve('events');
-		if (!events || !events[type]) return this;
-		var pos = events[type].keys.indexOf(fn);
-		if (pos == -1) return this;
-		events[type].keys.splice(pos, 1);
-		var value = events[type].values.splice(pos, 1)[0];
-		var custom = Element.Events.get(type);
-		if (custom){
-			if (custom.onRemove) custom.onRemove.call(this, fn);
-			type = custom.base || type;
-		}
-		return (Element.NativeEvents[type]) ? this.removeListener(type, value) : this;
-	},
-
-	addEvents: function(events){
-		for (var event in events) this.addEvent(event, events[event]);
-		return this;
-	},
-
-	removeEvents: function(events){
-		var type;
-		if ($type(events) == 'object'){
-			for (type in events) this.removeEvent(type, events[type]);
-			return this;
-		}
-		var attached = this.retrieve('events');
-		if (!attached) return this;
-		if (!events){
-			for (type in attached) this.removeEvents(type);
-			this.eliminate('events');
-		} else if (attached[events]){
-			while (attached[events].keys[0]) this.removeEvent(events, attached[events].keys[0]);
-			attached[events] = null;
-		}
-		return this;
-	},
-
-	fireEvent: function(type, args, delay){
-		var events = this.retrieve('events');
-		if (!events || !events[type]) return this;
-		events[type].keys.each(function(fn){
-			fn.create({'bind': this, 'delay': delay, 'arguments': args})();
-		}, this);
-		return this;
-	},
-
-	cloneEvents: function(from, type){
-		from = document.id(from);
-		var fevents = from.retrieve('events');
-		if (!fevents) return this;
-		if (!type){
-			for (var evType in fevents) this.cloneEvents(from, evType);
-		} else if (fevents[type]){
-			fevents[type].keys.each(function(fn){
-				this.addEvent(type, fn);
-			}, this);
-		}
-		return this;
-	}
-
-});
-
-Element.NativeEvents = {
-	click: 2, dblclick: 2, mouseup: 2, mousedown: 2, contextmenu: 2, //mouse buttons
-	mousewheel: 2, DOMMouseScroll: 2, //mouse wheel
-	mouseover: 2, mouseout: 2, mousemove: 2, selectstart: 2, selectend: 2, //mouse movement
-	keydown: 2, keypress: 2, keyup: 2, //keyboard
-	focus: 2, blur: 2, change: 2, reset: 2, select: 2, submit: 2, //form elements
-	load: 1, unload: 1, beforeunload: 2, resize: 1, move: 1, DOMContentLoaded: 1, readystatechange: 1, //window
-	error: 1, abort: 1, scroll: 1 //misc
-};
-
-(function(){
-
-var $check = function(event){
-	var related = event.relatedTarget;
-	if (related == undefined) return true;
-	if (related === false) return false;
-	return ($type(this) != 'document' && related != this && related.prefix != 'xul' && !this.hasChild(related));
-};
-
-Element.Events = new Hash({
-
-	mouseenter: {
-		base: 'mouseover',
-		condition: $check
-	},
-
-	mouseleave: {
-		base: 'mouseout',
-		condition: $check
-	},
-
-	mousewheel: {
-		base: (Browser.Engine.gecko) ? 'DOMMouseScroll' : 'mousewheel'
-	}
-
-});
-
-})();
-
-
-/*
----
-
-script: Element.Style.js
-
-description: Contains methods for interacting with the styles of Elements in a fashionable way.
-
-license: MIT-style license.
-
-requires:
-- /Element
-
-provides: [Element.Style]
-
-...
-*/
-
-Element.Properties.styles = {set: function(styles){
-	this.setStyles(styles);
-}};
-
-Element.Properties.opacity = {
-
-	set: function(opacity, novisibility){
-		if (!novisibility){
-			if (opacity == 0){
-				if (this.style.visibility != 'hidden') this.style.visibility = 'hidden';
-			} else {
-				if (this.style.visibility != 'visible') this.style.visibility = 'visible';
-			}
-		}
-		if (!this.currentStyle || !this.currentStyle.hasLayout) this.style.zoom = 1;
-		if (Browser.Engine.trident) this.style.filter = (opacity == 1) ? '' : 'alpha(opacity=' + opacity * 100 + ')';
-		this.style.opacity = opacity;
-		this.store('opacity', opacity);
-	},
-
-	get: function(){
-		return this.retrieve('opacity', 1);
-	}
-
-};
-
-Element.implement({
-
-	setOpacity: function(value){
-		return this.set('opacity', value, true);
-	},
-
-	getOpacity: function(){
-		return this.get('opacity');
-	},
-
-	setStyle: function(property, value){
-		switch (property){
-			case 'opacity': return this.set('opacity', parseFloat(value));
-			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
-		}
-		property = property.camelCase();
-		if ($type(value) != 'string'){
-			var map = (Element.Styles.get(property) || '@').split(' ');
-			value = $splat(value).map(function(val, i){
-				if (!map[i]) return '';
-				return ($type(val) == 'number') ? map[i].replace('@', Math.round(val)) : val;
-			}).join(' ');
-		} else if (value == String(Number(value))){
-			value = Math.round(value);
-		}
-		this.style[property] = value;
-		return this;
-	},
-
-	getStyle: function(property){
-		switch (property){
-			case 'opacity': return this.get('opacity');
-			case 'float': property = (Browser.Engine.trident) ? 'styleFloat' : 'cssFloat';
-		}
-		property = property.camelCase();
-		var result = this.style[property];
-		if (!$chk(result)){
-			result = [];
-			for (var style in Element.ShortStyles){
-				if (property != style) continue;
-				for (var s in Element.ShortStyles[style]) result.push(this.getStyle(s));
-				return result.join(' ');
-			}
-			result = this.getComputedStyle(property);
-		}
-		if (result){
-			result = String(result);
-			var color = result.match(/rgba?\([\d\s,]+\)/);
-			if (color) result = result.replace(color[0], color[0].rgbToHex());
-		}
-		if (Browser.Engine.presto || (Browser.Engine.trident && !$chk(parseInt(result, 10)))){
-			if (property.test(/^(height|width)$/)){
-				var values = (property == 'width') ? ['left', 'right'] : ['top', 'bottom'], size = 0;
-				values.each(function(value){
-					size += this.getStyle('border-' + value + '-width').toInt() + this.getStyle('padding-' + value).toInt();
-				}, this);
-				return this['offset' + property.capitalize()] - size + 'px';
-			}
-			if ((Browser.Engine.presto) && String(result).test('px')) return result;
-			if (property.test(/(border(.+)Width|margin|padding)/)) return '0px';
-		}
-		return result;
-	},
-
-	setStyles: function(styles){
-		for (var style in styles) this.setStyle(style, styles[style]);
-		return this;
-	},
-
-	getStyles: function(){
-		var result = {};
-		Array.flatten(arguments).each(function(key){
-			result[key] = this.getStyle(key);
-		}, this);
-		return result;
-	}
-
-});
-
-Element.Styles = new Hash({
-	left: '@px', top: '@px', bottom: '@px', right: '@px',
-	width: '@px', height: '@px', maxWidth: '@px', maxHeight: '@px', minWidth: '@px', minHeight: '@px',
-	backgroundColor: 'rgb(@, @, @)', backgroundPosition: '@px @px', color: 'rgb(@, @, @)',
-	fontSize: '@px', letterSpacing: '@px', lineHeight: '@px', clip: 'rect(@px @px @px @px)',
-	margin: '@px @px @px @px', padding: '@px @px @px @px', border: '@px @ rgb(@, @, @) @px @ rgb(@, @, @) @px @ rgb(@, @, @)',
-	borderWidth: '@px @px @px @px', borderStyle: '@ @ @ @', borderColor: 'rgb(@, @, @) rgb(@, @, @) rgb(@, @, @) rgb(@, @, @)',
-	zIndex: '@', 'zoom': '@', fontWeight: '@', textIndent: '@px', opacity: '@'
-});
-
-Element.ShortStyles = {margin: {}, padding: {}, border: {}, borderWidth: {}, borderStyle: {}, borderColor: {}};
-
-['Top', 'Right', 'Bottom', 'Left'].each(function(direction){
-	var Short = Element.ShortStyles;
-	var All = Element.Styles;
-	['margin', 'padding'].each(function(style){
-		var sd = style + direction;
-		Short[style][sd] = All[sd] = '@px';
-	});
-	var bd = 'border' + direction;
-	Short.border[bd] = All[bd] = '@px @ rgb(@, @, @)';
-	var bdw = bd + 'Width', bds = bd + 'Style', bdc = bd + 'Color';
-	Short[bd] = {};
-	Short.borderWidth[bdw] = Short[bd][bdw] = All[bdw] = '@px';
-	Short.borderStyle[bds] = Short[bd][bds] = All[bds] = '@';
-	Short.borderColor[bdc] = Short[bd][bdc] = All[bdc] = 'rgb(@, @, @)';
-});
-
-
-/*
----
-
-script: Element.Dimensions.js
-
-description: Contains methods to work with size, scroll, or positioning of Elements and the window object.
-
-license: MIT-style license.
-
-credits:
-- Element positioning based on the [qooxdoo](http://qooxdoo.org/) code and smart browser fixes, [LGPL License](http://www.gnu.org/licenses/lgpl.html).
-- Viewport dimensions based on [YUI](http://developer.yahoo.com/yui/) code, [BSD License](http://developer.yahoo.com/yui/license.html).
-
-requires:
-- /Element
-
-provides: [Element.Dimensions]
-
-...
-*/
-
-(function(){
-
-Element.implement({
-
-	scrollTo: function(x, y){
-		if (isBody(this)){
-			this.getWindow().scrollTo(x, y);
-		} else {
-			this.scrollLeft = x;
-			this.scrollTop = y;
-		}
-		return this;
-	},
-
-	getSize: function(){
-		if (isBody(this)) return this.getWindow().getSize();
-		return {x: this.offsetWidth, y: this.offsetHeight};
-	},
-
-	getScrollSize: function(){
-		if (isBody(this)) return this.getWindow().getScrollSize();
-		return {x: this.scrollWidth, y: this.scrollHeight};
-	},
-
-	getScroll: function(){
-		if (isBody(this)) return this.getWindow().getScroll();
-		return {x: this.scrollLeft, y: this.scrollTop};
-	},
-
-	getScrolls: function(){
-		var element = this, position = {x: 0, y: 0};
-		while (element && !isBody(element)){
-			position.x += element.scrollLeft;
-			position.y += element.scrollTop;
-			element = element.parentNode;
-		}
-		return position;
-	},
-
-	getOffsetParent: function(){
-		var element = this;
-		if (isBody(element)) return null;
-		if (!Browser.Engine.trident) return element.offsetParent;
-		while ((element = element.parentNode) && !isBody(element)){
-			if (styleString(element, 'position') != 'static') return element;
-		}
-		return null;
-	},
-
-	getOffsets: function(){
-		if (this.getBoundingClientRect){
-			var bound = this.getBoundingClientRect(),
-				html = document.id(this.getDocument().documentElement),
-				htmlScroll = html.getScroll(),
-				elemScrolls = this.getScrolls(),
-				elemScroll = this.getScroll(),
-				isFixed = (styleString(this, 'position') == 'fixed');
-
-			return {
-				x: bound.left.toInt() + elemScrolls.x - elemScroll.x + ((isFixed) ? 0 : htmlScroll.x) - html.clientLeft,
-				y: bound.top.toInt()  + elemScrolls.y - elemScroll.y + ((isFixed) ? 0 : htmlScroll.y) - html.clientTop
-			};
-		}
-
-		var element = this, position = {x: 0, y: 0};
-		if (isBody(this)) return position;
-
-		while (element && !isBody(element)){
-			position.x += element.offsetLeft;
-			position.y += element.offsetTop;
-
-			if (Browser.Engine.gecko){
-				if (!borderBox(element)){
-					position.x += leftBorder(element);
-					position.y += topBorder(element);
-				}
-				var parent = element.parentNode;
-				if (parent && styleString(parent, 'overflow') != 'visible'){
-					position.x += leftBorder(parent);
-					position.y += topBorder(parent);
-				}
-			} else if (element != this && Browser.Engine.webkit){
-				position.x += leftBorder(element);
-				position.y += topBorder(element);
-			}
-
-			element = element.offsetParent;
-		}
-		if (Browser.Engine.gecko && !borderBox(this)){
-			position.x -= leftBorder(this);
-			position.y -= topBorder(this);
-		}
-		return position;
-	},
-
-	getPosition: function(relative){
-		if (isBody(this)) return {x: 0, y: 0};
-		var offset = this.getOffsets(),
-				scroll = this.getScrolls();
-		var position = {
-			x: offset.x - scroll.x,
-			y: offset.y - scroll.y
-		};
-		var relativePosition = (relative && (relative = document.id(relative))) ? relative.getPosition() : {x: 0, y: 0};
-		return {x: position.x - relativePosition.x, y: position.y - relativePosition.y};
-	},
-
-	getCoordinates: function(element){
-		if (isBody(this)) return this.getWindow().getCoordinates();
-		var position = this.getPosition(element),
-				size = this.getSize();
-		var obj = {
-			left: position.x,
-			top: position.y,
-			width: size.x,
-			height: size.y
-		};
-		obj.right = obj.left + obj.width;
-		obj.bottom = obj.top + obj.height;
-		return obj;
-	},
-
-	computePosition: function(obj){
-		return {
-			left: obj.x - styleNumber(this, 'margin-left'),
-			top: obj.y - styleNumber(this, 'margin-top')
-		};
-	},
-
-	setPosition: function(obj){
-		return this.setStyles(this.computePosition(obj));
-	}
-
-});
-
-
-Native.implement([Document, Window], {
-
-	getSize: function(){
-		if (Browser.Engine.presto || Browser.Engine.webkit){
-			var win = this.getWindow();
-			return {x: win.innerWidth, y: win.innerHeight};
-		}
-		var doc = getCompatElement(this);
-		return {x: doc.clientWidth, y: doc.clientHeight};
-	},
-
-	getScroll: function(){
-		var win = this.getWindow(), doc = getCompatElement(this);
-		return {x: win.pageXOffset || doc.scrollLeft, y: win.pageYOffset || doc.scrollTop};
-	},
-
-	getScrollSize: function(){
-		var doc = getCompatElement(this), min = this.getSize();
-		return {x: Math.max(doc.scrollWidth, min.x), y: Math.max(doc.scrollHeight, min.y)};
-	},
-
-	getPosition: function(){
-		return {x: 0, y: 0};
-	},
-
-	getCoordinates: function(){
-		var size = this.getSize();
-		return {top: 0, left: 0, bottom: size.y, right: size.x, height: size.y, width: size.x};
-	}
-
-});
-
-// private methods
-
-var styleString = Element.getComputedStyle;
-
-function styleNumber(element, style){
-	return styleString(element, style).toInt() || 0;
-};
-
-function borderBox(element){
-	return styleString(element, '-moz-box-sizing') == 'border-box';
-};
-
-function topBorder(element){
-	return styleNumber(element, 'border-top-width');
-};
-
-function leftBorder(element){
-	return styleNumber(element, 'border-left-width');
-};
-
-function isBody(element){
-	return (/^(?:body|html)$/i).test(element.tagName);
-};
-
-function getCompatElement(element){
-	var doc = element.getDocument();
-	return (!doc.compatMode || doc.compatMode == 'CSS1Compat') ? doc.html : doc.body;
-};
-
-})();
-
-//aliases
-Element.alias('setPosition', 'position'); //compatability
-
-Native.implement([Window, Document, Element], {
-
-	getHeight: function(){
-		return this.getSize().y;
-	},
-
-	getWidth: function(){
-		return this.getSize().x;
-	},
-
-	getScrollTop: function(){
-		return this.getScroll().y;
-	},
-
-	getScrollLeft: function(){
-		return this.getScroll().x;
-	},
-
-	getScrollHeight: function(){
-		return this.getScrollSize().y;
-	},
-
-	getScrollWidth: function(){
-		return this.getScrollSize().x;
-	},
-
-	getTop: function(){
-		return this.getPosition().y;
-	},
-
-	getLeft: function(){
-		return this.getPosition().x;
-	}
-
-});
-
-
-/*
----
-
-script: Selectors.js
-
-description: Adds advanced CSS-style querying capabilities for targeting HTML Elements. Includes pseudo selectors.
-
-license: MIT-style license.
-
-requires:
-- /Element
-
-provides: [Selectors]
-
-...
-*/
-
-Native.implement([Document, Element], {
-
-	getElements: function(expression, nocash){
-		expression = expression.split(',');
-		var items, local = {};
-		for (var i = 0, l = expression.length; i < l; i++){
-			var selector = expression[i], elements = Selectors.Utils.search(this, selector, local);
-			if (i != 0 && elements.item) elements = $A(elements);
-			items = (i == 0) ? elements : (items.item) ? $A(items).concat(elements) : items.concat(elements);
-		}
-		return new Elements(items, {ddup: (expression.length > 1), cash: !nocash});
-	}
-
-});
-
-Element.implement({
-
-	match: function(selector){
-		if (!selector || (selector == this)) return true;
-		var tagid = Selectors.Utils.parseTagAndID(selector);
-		var tag = tagid[0], id = tagid[1];
-		if (!Selectors.Filters.byID(this, id) || !Selectors.Filters.byTag(this, tag)) return false;
-		var parsed = Selectors.Utils.parseSelector(selector);
-		return (parsed) ? Selectors.Utils.filter(this, parsed, {}) : true;
-	}
-
-});
-
-var Selectors = {Cache: {nth: {}, parsed: {}}};
-
-Selectors.RegExps = {
-	id: (/#([\w-]+)/),
-	tag: (/^(\w+|\*)/),
-	quick: (/^(\w+|\*)$/),
-	splitter: (/\s*([+>~\s])\s*([a-zA-Z#.*:\[])/g),
-	combined: (/\.([\w-]+)|\[(\w+)(?:([!*^$~|]?=)(["']?)([^\4]*?)\4)?\]|:([\w-]+)(?:\(["']?(.*?)?["']?\)|$)/g)
-};
-
-Selectors.Utils = {
-
-	chk: function(item, uniques){
-		if (!uniques) return true;
-		var uid = $uid(item);
-		if (!uniques[uid]) return uniques[uid] = true;
-		return false;
-	},
-
-	parseNthArgument: function(argument){
-		if (Selectors.Cache.nth[argument]) return Selectors.Cache.nth[argument];
-		var parsed = argument.match(/^([+-]?\d*)?([a-z]+)?([+-]?\d*)?$/);
-		if (!parsed) return false;
-		var inta = parseInt(parsed[1], 10);
-		var a = (inta || inta === 0) ? inta : 1;
-		var special = parsed[2] || false;
-		var b = parseInt(parsed[3], 10) || 0;
-		if (a != 0){
-			b--;
-			while (b < 1) b += a;
-			while (b >= a) b -= a;
-		} else {
-			a = b;
-			special = 'index';
-		}
-		switch (special){
-			case 'n': parsed = {a: a, b: b, special: 'n'}; break;
-			case 'odd': parsed = {a: 2, b: 0, special: 'n'}; break;
-			case 'even': parsed = {a: 2, b: 1, special: 'n'}; break;
-			case 'first': parsed = {a: 0, special: 'index'}; break;
-			case 'last': parsed = {special: 'last-child'}; break;
-			case 'only': parsed = {special: 'only-child'}; break;
-			default: parsed = {a: (a - 1), special: 'index'};
-		}
-
-		return Selectors.Cache.nth[argument] = parsed;
-	},
-
-	parseSelector: function(selector){
-		if (Selectors.Cache.parsed[selector]) return Selectors.Cache.parsed[selector];
-		var m, parsed = {classes: [], pseudos: [], attributes: []};
-		while ((m = Selectors.RegExps.combined.exec(selector))){
-			var cn = m[1], an = m[2], ao = m[3], av = m[5], pn = m[6], pa = m[7];
-			if (cn){
-				parsed.classes.push(cn);
-			} else if (pn){
-				var parser = Selectors.Pseudo.get(pn);
-				if (parser) parsed.pseudos.push({parser: parser, argument: pa});
-				else parsed.attributes.push({name: pn, operator: '=', value: pa});
-			} else if (an){
-				parsed.attributes.push({name: an, operator: ao, value: av});
-			}
-		}
-		if (!parsed.classes.length) delete parsed.classes;
-		if (!parsed.attributes.length) delete parsed.attributes;
-		if (!parsed.pseudos.length) delete parsed.pseudos;
-		if (!parsed.classes && !parsed.attributes && !parsed.pseudos) parsed = null;
-		return Selectors.Cache.parsed[selector] = parsed;
-	},
-
-	parseTagAndID: function(selector){
-		var tag = selector.match(Selectors.RegExps.tag);
-		var id = selector.match(Selectors.RegExps.id);
-		return [(tag) ? tag[1] : '*', (id) ? id[1] : false];
-	},
-
-	filter: function(item, parsed, local){
-		var i;
-		if (parsed.classes){
-			for (i = parsed.classes.length; i--; i){
-				var cn = parsed.classes[i];
-				if (!Selectors.Filters.byClass(item, cn)) return false;
-			}
-		}
-		if (parsed.attributes){
-			for (i = parsed.attributes.length; i--; i){
-				var att = parsed.attributes[i];
-				if (!Selectors.Filters.byAttribute(item, att.name, att.operator, att.value)) return false;
-			}
-		}
-		if (parsed.pseudos){
-			for (i = parsed.pseudos.length; i--; i){
-				var psd = parsed.pseudos[i];
-				if (!Selectors.Filters.byPseudo(item, psd.parser, psd.argument, local)) return false;
-			}
-		}
-		return true;
-	},
-
-	getByTagAndID: function(ctx, tag, id){
-		if (id){
-			var item = (ctx.getElementById) ? ctx.getElementById(id, true) : Element.getElementById(ctx, id, true);
-			return (item && Selectors.Filters.byTag(item, tag)) ? [item] : [];
-		} else {
-			return ctx.getElementsByTagName(tag);
-		}
-	},
-
-	search: function(self, expression, local){
-		var splitters = [];
-
-		var selectors = expression.trim().replace(Selectors.RegExps.splitter, function(m0, m1, m2){
-			splitters.push(m1);
-			return ':)' + m2;
-		}).split(':)');
-
-		var items, filtered, item;
-
-		for (var i = 0, l = selectors.length; i < l; i++){
-
-			var selector = selectors[i];
-
-			if (i == 0 && Selectors.RegExps.quick.test(selector)){
-				items = self.getElementsByTagName(selector);
-				continue;
-			}
-
-			var splitter = splitters[i - 1];
-
-			var tagid = Selectors.Utils.parseTagAndID(selector);
-			var tag = tagid[0], id = tagid[1];
-
-			if (i == 0){
-				items = Selectors.Utils.getByTagAndID(self, tag, id);
-			} else {
-				var uniques = {}, found = [];
-				for (var j = 0, k = items.length; j < k; j++) found = Selectors.Getters[splitter](found, items[j], tag, id, uniques);
-				items = found;
-			}
-
-			var parsed = Selectors.Utils.parseSelector(selector);
-
-			if (parsed){
-				filtered = [];
-				for (var m = 0, n = items.length; m < n; m++){
-					item = items[m];
-					if (Selectors.Utils.filter(item, parsed, local)) filtered.push(item);
-				}
-				items = filtered;
-			}
-
-		}
-
-		return items;
-
-	}
-
-};
-
-Selectors.Getters = {
-
-	' ': function(found, self, tag, id, uniques){
-		var items = Selectors.Utils.getByTagAndID(self, tag, id);
-		for (var i = 0, l = items.length; i < l; i++){
-			var item = items[i];
-			if (Selectors.Utils.chk(item, uniques)) found.push(item);
-		}
-		return found;
-	},
-
-	'>': function(found, self, tag, id, uniques){
-		var children = Selectors.Utils.getByTagAndID(self, tag, id);
-		for (var i = 0, l = children.length; i < l; i++){
-			var child = children[i];
-			if (child.parentNode == self && Selectors.Utils.chk(child, uniques)) found.push(child);
-		}
-		return found;
-	},
-
-	'+': function(found, self, tag, id, uniques){
-		while ((self = self.nextSibling)){
-			if (self.nodeType == 1){
-				if (Selectors.Utils.chk(self, uniques) && Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
-				break;
-			}
-		}
-		return found;
-	},
-
-	'~': function(found, self, tag, id, uniques){
-		while ((self = self.nextSibling)){
-			if (self.nodeType == 1){
-				if (!Selectors.Utils.chk(self, uniques)) break;
-				if (Selectors.Filters.byTag(self, tag) && Selectors.Filters.byID(self, id)) found.push(self);
-			}
-		}
-		return found;
-	}
-
-};
-
-Selectors.Filters = {
-
-	byTag: function(self, tag){
-		return (tag == '*' || (self.tagName && self.tagName.toLowerCase() == tag));
-	},
-
-	byID: function(self, id){
-		return (!id || (self.id && self.id == id));
-	},
-
-	byClass: function(self, klass){
-		return (self.className && self.className.contains && self.className.contains(klass, ' '));
-	},
-
-	byPseudo: function(self, parser, argument, local){
-		return parser.call(self, argument, local);
-	},
-
-	byAttribute: function(self, name, operator, value){
-		var result = Element.prototype.getProperty.call(self, name);
-		if (!result) return (operator == '!=');
-		if (!operator || value == undefined) return true;
-		switch (operator){
-			case '=': return (result == value);
-			case '*=': return (result.contains(value));
-			case '^=': return (result.substr(0, value.length) == value);
-			case '$=': return (result.substr(result.length - value.length) == value);
-			case '!=': return (result != value);
-			case '~=': return result.contains(value, ' ');
-			case '|=': return result.contains(value, '-');
-		}
-		return false;
-	}
-
-};
-
-Selectors.Pseudo = new Hash({
-
-	// w3c pseudo selectors
-
-	checked: function(){
-		return this.checked;
-	},
-
-	empty: function(){
-		return !(this.innerText || this.textContent || '').length;
-	},
-
-	not: function(selector){
-		return !Element.match(this, selector);
-	},
-
-	contains: function(text){
-		return (this.innerText || this.textContent || '').contains(text);
-	},
-
-	'first-child': function(){
-		return Selectors.Pseudo.index.call(this, 0);
-	},
-
-	'last-child': function(){
-		var element = this;
-		while ((element = element.nextSibling)){
-			if (element.nodeType == 1) return false;
-		}
-		return true;
-	},
-
-	'only-child': function(){
-		var prev = this;
-		while ((prev = prev.previousSibling)){
-			if (prev.nodeType == 1) return false;
-		}
-		var next = this;
-		while ((next = next.nextSibling)){
-			if (next.nodeType == 1) return false;
-		}
-		return true;
-	},
-
-	'nth-child': function(argument, local){
-		argument = (argument == undefined) ? 'n' : argument;
-		var parsed = Selectors.Utils.parseNthArgument(argument);
-		if (parsed.special != 'n') return Selectors.Pseudo[parsed.special].call(this, parsed.a, local);
-		var count = 0;
-		local.positions = local.positions || {};
-		var uid = $uid(this);
-		if (!local.positions[uid]){
-			var self = this;
-			while ((self = self.previousSibling)){
-				if (self.nodeType != 1) continue;
-				count ++;
-				var position = local.positions[$uid(self)];
-				if (position != undefined){
-					count = position + count;
-					break;
-				}
-			}
-			local.positions[uid] = count;
-		}
-		return (local.positions[uid] % parsed.a == parsed.b);
-	},
-
-	// custom pseudo selectors
-
-	index: function(index){
-		var element = this, count = 0;
-		while ((element = element.previousSibling)){
-			if (element.nodeType == 1 && ++count > index) return false;
-		}
-		return (count == index);
-	},
-
-	even: function(argument, local){
-		return Selectors.Pseudo['nth-child'].call(this, '2n+1', local);
-	},
-
-	odd: function(argument, local){
-		return Selectors.Pseudo['nth-child'].call(this, '2n', local);
-	},
-
-	selected: function(){
-		return this.selected;
-	},
-
-	enabled: function(){
-		return (this.disabled === false);
-	}
-
-});
-
-
-/*
----
-
-script: DomReady.js
-
-description: Contains the custom event domready.
-
-license: MIT-style license.
-
-requires:
-- /Element.Event
-
-provides: [DomReady]
-
-...
-*/
-
-Element.Events.domready = {
-
-	onAdd: function(fn){
-		if (Browser.loaded) fn.call(this);
-	}
-
-};
-
-(function(){
-
-	var domready = function(){
-		if (Browser.loaded) return;
-		Browser.loaded = true;
-		window.fireEvent('domready');
-		document.fireEvent('domready');
-	};
-
-	window.addEvent('load', domready);
-
-	if (Browser.Engine.trident){
-		var temp = document.createElement('div');
-		(function(){
-			($try(function(){
-				temp.doScroll(); // Technique by Diego Perini
-				return document.id(temp).inject(document.body).set('html', 'temp').dispose();
-			})) ? domready() : arguments.callee.delay(50);
-		})();
-	} else if (Browser.Engine.webkit && Browser.Engine.version < 525){
-		(function(){
-			(['loaded', 'complete'].contains(document.readyState)) ? domready() : arguments.callee.delay(50);
-		})();
-	} else {
-		document.addEvent('DOMContentLoaded', domready);
-	}
-
-})();
-
-
-/*
----
-
-script: JSON.js
-
-description: JSON encoder and decoder.
-
-license: MIT-style license.
-
-See Also: <http://www.json.org/>
-
-requires:
-- /Array
-- /String
-- /Number
-- /Function
-- /Hash
-
-provides: [JSON]
-
-...
-*/
-
-var JSON = new Hash(this.JSON && {
-	stringify: JSON.stringify,
-	parse: JSON.parse
-}).extend({
-
-	$specialChars: {'\b': '\\b', '\t': '\\t', '\n': '\\n', '\f': '\\f', '\r': '\\r', '"' : '\\"', '\\': '\\\\'},
-
-	$replaceChars: function(chr){
-		return JSON.$specialChars[chr] || '\\u00' + Math.floor(chr.charCodeAt() / 16).toString(16) + (chr.charCodeAt() % 16).toString(16);
-	},
-
-	encode: function(obj){
-		switch ($type(obj)){
-			case 'string':
-				return '"' + obj.replace(/[\x00-\x1f\\"]/g, JSON.$replaceChars) + '"';
-			case 'array':
-				return '[' + String(obj.map(JSON.encode).clean()) + ']';
-			case 'object': case 'hash':
-				var string = [];
-				Hash.each(obj, function(value, key){
-					var json = JSON.encode(value);
-					if (json) string.push(JSON.encode(key) + ':' + json);
-				});
-				return '{' + string + '}';
-			case 'number': case 'boolean': return String(obj);
-			case false: return 'null';
-		}
-		return null;
-	},
-
-	decode: function(string, secure){
-		if ($type(string) != 'string' || !string.length) return null;
-		if (secure && !(/^[,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]*$/).test(string.replace(/\\./g, '@').replace(/"[^"\\\n\r]*"/g, ''))) return null;
-		return eval('(' + string + ')');
-	}
-
-});
-
-Native.implement([Hash, Array, String, Number], {
-
-	toJSON: function(){
-		return JSON.encode(this);
-	}
-
-});
-
-
-/*
----
-
-script: Cookie.js
-
-description: Class for creating, reading, and deleting browser Cookies.
-
-license: MIT-style license.
-
-credits:
-- Based on the functions by Peter-Paul Koch (http://quirksmode.org).
-
-requires:
-- /Options
-
-provides: [Cookie]
-
-...
-*/
-
-var Cookie = new Class({
-
-	Implements: Options,
-
-	options: {
-		path: false,
-		domain: false,
-		duration: false,
-		secure: false,
-		document: document
-	},
-
-	initialize: function(key, options){
-		this.key = key;
-		this.setOptions(options);
-	},
-
-	write: function(value){
-		value = encodeURIComponent(value);
-		if (this.options.domain) value += '; domain=' + this.options.domain;
-		if (this.options.path) value += '; path=' + this.options.path;
-		if (this.options.duration){
-			var date = new Date();
-			date.setTime(date.getTime() + this.options.duration * 24 * 60 * 60 * 1000);
-			value += '; expires=' + date.toGMTString();
-		}
-		if (this.options.secure) value += '; secure';
-		this.options.document.cookie = this.key + '=' + value;
-		return this;
-	},
-
-	read: function(){
-		var value = this.options.document.cookie.match('(?:^|;)\\s*' + this.key.escapeRegExp() + '=([^;]*)');
-		return (value) ? decodeURIComponent(value[1]) : null;
-	},
-
-	dispose: function(){
-		new Cookie(this.key, $merge(this.options, {duration: -1})).write('');
-		return this;
-	}
-
-});
-
-Cookie.write = function(key, value, options){
-	return new Cookie(key, options).write(value);
-};
-
-Cookie.read = function(key){
-	return new Cookie(key).read();
-};
-
-Cookie.dispose = function(key, options){
-	return new Cookie(key, options).dispose();
-};
-
-
-/*
----
-
-script: Swiff.js
-
-description: Wrapper for embedding SWF movies. Supports External Interface Communication.
-
-license: MIT-style license.
-
-credits:
-- Flash detection & Internet Explorer + Flash Player 9 fix inspired by SWFObject.
-
-requires:
-- /Options
-- /$util
-
-provides: [Swiff]
-
-...
-*/
-
-var Swiff = new Class({
-
-	Implements: [Options],
-
-	options: {
-		id: null,
-		height: 1,
-		width: 1,
-		container: null,
-		properties: {},
-		params: {
-			quality: 'high',
-			allowScriptAccess: 'always',
-			wMode: 'transparent',
-			swLiveConnect: true
-		},
-		callBacks: {},
-		vars: {}
-	},
-
-	toElement: function(){
-		return this.object;
-	},
-
-	initialize: function(path, options){
-		this.instance = 'Swiff_' + $time();
-
-		this.setOptions(options);
-		options = this.options;
-		var id = this.id = options.id || this.instance;
-		var container = document.id(options.container);
-
-		Swiff.CallBacks[this.instance] = {};
-
-		var params = options.params, vars = options.vars, callBacks = options.callBacks;
-		var properties = $extend({height: options.height, width: options.width}, options.properties);
-
-		var self = this;
-
-		for (var callBack in callBacks){
-			Swiff.CallBacks[this.instance][callBack] = (function(option){
-				return function(){
-					return option.apply(self.object, arguments);
-				};
-			})(callBacks[callBack]);
-			vars[callBack] = 'Swiff.CallBacks.' + this.instance + '.' + callBack;
-		}
-
-		params.flashVars = Hash.toQueryString(vars);
-		if (Browser.Engine.trident){
-			properties.classid = 'clsid:D27CDB6E-AE6D-11cf-96B8-444553540000';
-			params.movie = path;
-		} else {
-			properties.type = 'application/x-shockwave-flash';
-			properties.data = path;
-		}
-		var build = '<object id="' + id + '"';
-		for (var property in properties) build += ' ' + property + '="' + properties[property] + '"';
-		build += '>';
-		for (var param in params){
-			if (params[param]) build += '<param name="' + param + '" value="' + params[param] + '" />';
-		}
-		build += '</object>';
-		this.object = ((container) ? container.empty() : new Element('div')).set('html', build).firstChild;
-	},
-
-	replaces: function(element){
-		element = document.id(element, true);
-		element.parentNode.replaceChild(this.toElement(), element);
-		return this;
-	},
-
-	inject: function(element){
-		document.id(element, true).appendChild(this.toElement());
-		return this;
-	},
-
-	remote: function(){
-		return Swiff.remote.apply(Swiff, [this.toElement()].extend(arguments));
-	}
-
-});
-
-Swiff.CallBacks = {};
-
-Swiff.remote = function(obj, fn){
-	var rs = obj.CallFunction('<invoke name="' + fn + '" returntype="javascript">' + __flash__argumentsToXML(arguments, 2) + '</invoke>');
-	return eval(rs);
-};
-
-
-/*
----
-
-script: Fx.js
-
-description: Contains the basic animation logic to be extended by all other Fx Classes.
-
-license: MIT-style license.
-
-requires:
-- /Chain
-- /Events
-- /Options
-
-provides: [Fx]
-
-...
-*/
-
-var Fx = new Class({
-
-	Implements: [Chain, Events, Options],
-
-	options: {
-		/*
-		onStart: $empty,
-		onCancel: $empty,
-		onComplete: $empty,
-		*/
-		fps: 50,
-		unit: false,
-		duration: 500,
-		link: 'ignore'
-	},
-
-	initialize: function(options){
-		this.subject = this.subject || this;
-		this.setOptions(options);
-		this.options.duration = Fx.Durations[this.options.duration] || this.options.duration.toInt();
-		var wait = this.options.wait;
-		if (wait === false) this.options.link = 'cancel';
-	},
-
-	getTransition: function(){
-		return function(p){
-			return -(Math.cos(Math.PI * p) - 1) / 2;
-		};
-	},
-
-	step: function(){
-		var time = $time();
-		if (time < this.time + this.options.duration){
-			var delta = this.transition((time - this.time) / this.options.duration);
-			this.set(this.compute(this.from, this.to, delta));
-		} else {
-			this.set(this.compute(this.from, this.to, 1));
-			this.complete();
-		}
-	},
-
-	set: function(now){
-		return now;
-	},
-
-	compute: function(from, to, delta){
-		return Fx.compute(from, to, delta);
-	},
-
-	check: function(){
-		if (!this.timer) return true;
-		switch (this.options.link){
-			case 'cancel': this.cancel(); return true;
-			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
-		}
-		return false;
-	},
-
-	start: function(from, to){
-		if (!this.check(from, to)) return this;
-		this.from = from;
-		this.to = to;
-		this.time = 0;
-		this.transition = this.getTransition();
-		this.startTimer();
-		this.onStart();
-		return this;
-	},
-
-	complete: function(){
-		if (this.stopTimer()) this.onComplete();
-		return this;
-	},
-
-	cancel: function(){
-		if (this.stopTimer()) this.onCancel();
-		return this;
-	},
-
-	onStart: function(){
-		this.fireEvent('start', this.subject);
-	},
-
-	onComplete: function(){
-		this.fireEvent('complete', this.subject);
-		if (!this.callChain()) this.fireEvent('chainComplete', this.subject);
-	},
-
-	onCancel: function(){
-		this.fireEvent('cancel', this.subject).clearChain();
-	},
-
-	pause: function(){
-		this.stopTimer();
-		return this;
-	},
-
-	resume: function(){
-		this.startTimer();
-		return this;
-	},
-
-	stopTimer: function(){
-		if (!this.timer) return false;
-		this.time = $time() - this.time;
-		this.timer = $clear(this.timer);
-		return true;
-	},
-
-	startTimer: function(){
-		if (this.timer) return false;
-		this.time = $time() - this.time;
-		this.timer = this.step.periodical(Math.round(1000 / this.options.fps), this);
-		return true;
-	}
-
-});
-
-Fx.compute = function(from, to, delta){
-	return (to - from) * delta + from;
-};
-
-Fx.Durations = {'short': 250, 'normal': 500, 'long': 1000};
-
-
-/*
----
-
-script: Fx.CSS.js
-
-description: Contains the CSS animation logic. Used by Fx.Tween, Fx.Morph, Fx.Elements.
-
-license: MIT-style license.
-
-requires:
-- /Fx
-- /Element.Style
-
-provides: [Fx.CSS]
-
-...
-*/
-
-Fx.CSS = new Class({
-
-	Extends: Fx,
-
-	//prepares the base from/to object
-
-	prepare: function(element, property, values){
-		values = $splat(values);
-		var values1 = values[1];
-		if (!$chk(values1)){
-			values[1] = values[0];
-			values[0] = element.getStyle(property);
-		}
-		var parsed = values.map(this.parse);
-		return {from: parsed[0], to: parsed[1]};
-	},
-
-	//parses a value into an array
-
-	parse: function(value){
-		value = $lambda(value)();
-		value = (typeof value == 'string') ? value.split(' ') : $splat(value);
-		return value.map(function(val){
-			val = String(val);
-			var found = false;
-			Fx.CSS.Parsers.each(function(parser, key){
-				if (found) return;
-				var parsed = parser.parse(val);
-				if ($chk(parsed)) found = {value: parsed, parser: parser};
-			});
-			found = found || {value: val, parser: Fx.CSS.Parsers.String};
-			return found;
-		});
-	},
-
-	//computes by a from and to prepared objects, using their parsers.
-
-	compute: function(from, to, delta){
-		var computed = [];
-		(Math.min(from.length, to.length)).times(function(i){
-			computed.push({value: from[i].parser.compute(from[i].value, to[i].value, delta), parser: from[i].parser});
-		});
-		computed.$family = {name: 'fx:css:value'};
-		return computed;
-	},
-
-	//serves the value as settable
-
-	serve: function(value, unit){
-		if ($type(value) != 'fx:css:value') value = this.parse(value);
-		var returned = [];
-		value.each(function(bit){
-			returned = returned.concat(bit.parser.serve(bit.value, unit));
-		});
-		return returned;
-	},
-
-	//renders the change to an element
-
-	render: function(element, property, value, unit){
-		element.setStyle(property, this.serve(value, unit));
-	},
-
-	//searches inside the page css to find the values for a selector
-
-	search: function(selector){
-		if (Fx.CSS.Cache[selector]) return Fx.CSS.Cache[selector];
-		var to = {};
-		Array.each(document.styleSheets, function(sheet, j){
-			var href = sheet.href;
-			if (href && href.contains('://') && !href.contains(document.domain)) return;
-			var rules = sheet.rules || sheet.cssRules;
-			Array.each(rules, function(rule, i){
-				if (!rule.style) return;
-				var selectorText = (rule.selectorText) ? rule.selectorText.replace(/^\w+/, function(m){
-					return m.toLowerCase();
-				}) : null;
-				if (!selectorText || !selectorText.test('^' + selector + '$')) return;
-				Element.Styles.each(function(value, style){
-					if (!rule.style[style] || Element.ShortStyles[style]) return;
-					value = String(rule.style[style]);
-					to[style] = (value.test(/^rgb/)) ? value.rgbToHex() : value;
-				});
-			});
-		});
-		return Fx.CSS.Cache[selector] = to;
-	}
-
-});
-
-Fx.CSS.Cache = {};
-
-Fx.CSS.Parsers = new Hash({
-
-	Color: {
-		parse: function(value){
-			if (value.match(/^#[0-9a-f]{3,6}$/i)) return value.hexToRgb(true);
-			return ((value = value.match(/(\d+),\s*(\d+),\s*(\d+)/))) ? [value[1], value[2], value[3]] : false;
-		},
-		compute: function(from, to, delta){
-			return from.map(function(value, i){
-				return Math.round(Fx.compute(from[i], to[i], delta));
-			});
-		},
-		serve: function(value){
-			return value.map(Number);
-		}
-	},
-
-	Number: {
-		parse: parseFloat,
-		compute: Fx.compute,
-		serve: function(value, unit){
-			return (unit) ? value + unit : value;
-		}
-	},
-
-	String: {
-		parse: $lambda(false),
-		compute: $arguments(1),
-		serve: $arguments(0)
-	}
-
-});
-
-
-/*
----
-
-script: Fx.Tween.js
-
-description: Formerly Fx.Style, effect to transition any CSS property for an element.
-
-license: MIT-style license.
-
-requires:
-- /Fx.CSS
-
-provides: [Fx.Tween, Element.fade, Element.highlight]
-
-...
-*/
-
-Fx.Tween = new Class({
-
-	Extends: Fx.CSS,
-
-	initialize: function(element, options){
-		this.element = this.subject = document.id(element);
-		this.parent(options);
-	},
-
-	set: function(property, now){
-		if (arguments.length == 1){
-			now = property;
-			property = this.property || this.options.property;
-		}
-		this.render(this.element, property, now, this.options.unit);
-		return this;
-	},
-
-	start: function(property, from, to){
-		if (!this.check(property, from, to)) return this;
-		var args = Array.flatten(arguments);
-		this.property = this.options.property || args.shift();
-		var parsed = this.prepare(this.element, this.property, args);
-		return this.parent(parsed.from, parsed.to);
-	}
-
-});
-
-Element.Properties.tween = {
-
-	set: function(options){
-		var tween = this.retrieve('tween');
-		if (tween) tween.cancel();
-		return this.eliminate('tween').store('tween:options', $extend({link: 'cancel'}, options));
-	},
-
-	get: function(options){
-		if (options || !this.retrieve('tween')){
-			if (options || !this.retrieve('tween:options')) this.set('tween', options);
-			this.store('tween', new Fx.Tween(this, this.retrieve('tween:options')));
-		}
-		return this.retrieve('tween');
-	}
-
-};
-
-Element.implement({
-
-	tween: function(property, from, to){
-		this.get('tween').start(arguments);
-		return this;
-	},
-
-	fade: function(how){
-		var fade = this.get('tween'), o = 'opacity', toggle;
-		how = $pick(how, 'toggle');
-		switch (how){
-			case 'in': fade.start(o, 1); break;
-			case 'out': fade.start(o, 0); break;
-			case 'show': fade.set(o, 1); break;
-			case 'hide': fade.set(o, 0); break;
-			case 'toggle':
-				var flag = this.retrieve('fade:flag', this.get('opacity') == 1);
-				fade.start(o, (flag) ? 0 : 1);
-				this.store('fade:flag', !flag);
-				toggle = true;
-			break;
-			default: fade.start(o, arguments);
-		}
-		if (!toggle) this.eliminate('fade:flag');
-		return this;
-	},
-
-	highlight: function(start, end){
-		if (!end){
-			end = this.retrieve('highlight:original', this.getStyle('background-color'));
-			end = (end == 'transparent') ? '#fff' : end;
-		}
-		var tween = this.get('tween');
-		tween.start('background-color', start || '#ffff88', end).chain(function(){
-			this.setStyle('background-color', this.retrieve('highlight:original'));
-			tween.callChain();
-		}.bind(this));
-		return this;
-	}
-
-});
-
-
-/*
----
-
-script: Fx.Morph.js
-
-description: Formerly Fx.Styles, effect to transition any number of CSS properties for an element using an object of rules, or CSS based selector rules.
-
-license: MIT-style license.
-
-requires:
-- /Fx.CSS
-
-provides: [Fx.Morph]
-
-...
-*/
-
-Fx.Morph = new Class({
-
-	Extends: Fx.CSS,
-
-	initialize: function(element, options){
-		this.element = this.subject = document.id(element);
-		this.parent(options);
-	},
-
-	set: function(now){
-		if (typeof now == 'string') now = this.search(now);
-		for (var p in now) this.render(this.element, p, now[p], this.options.unit);
-		return this;
-	},
-
-	compute: function(from, to, delta){
-		var now = {};
-		for (var p in from) now[p] = this.parent(from[p], to[p], delta);
-		return now;
-	},
-
-	start: function(properties){
-		if (!this.check(properties)) return this;
-		if (typeof properties == 'string') properties = this.search(properties);
-		var from = {}, to = {};
-		for (var p in properties){
-			var parsed = this.prepare(this.element, p, properties[p]);
-			from[p] = parsed.from;
-			to[p] = parsed.to;
-		}
-		return this.parent(from, to);
-	}
-
-});
-
-Element.Properties.morph = {
-
-	set: function(options){
-		var morph = this.retrieve('morph');
-		if (morph) morph.cancel();
-		return this.eliminate('morph').store('morph:options', $extend({link: 'cancel'}, options));
-	},
-
-	get: function(options){
-		if (options || !this.retrieve('morph')){
-			if (options || !this.retrieve('morph:options')) this.set('morph', options);
-			this.store('morph', new Fx.Morph(this, this.retrieve('morph:options')));
-		}
-		return this.retrieve('morph');
-	}
-
-};
-
-Element.implement({
-
-	morph: function(props){
-		this.get('morph').start(props);
-		return this;
-	}
-
-});
-
-
-/*
----
-
-script: Fx.Transitions.js
-
-description: Contains a set of advanced transitions to be used with any of the Fx Classes.
-
-license: MIT-style license.
-
-credits:
-- Easing Equations by Robert Penner, <http://www.robertpenner.com/easing/>, modified and optimized to be used with MooTools.
-
-requires:
-- /Fx
-
-provides: [Fx.Transitions]
-
-...
-*/
-
-Fx.implement({
-
-	getTransition: function(){
-		var trans = this.options.transition || Fx.Transitions.Sine.easeInOut;
-		if (typeof trans == 'string'){
-			var data = trans.split(':');
-			trans = Fx.Transitions;
-			trans = trans[data[0]] || trans[data[0].capitalize()];
-			if (data[1]) trans = trans['ease' + data[1].capitalize() + (data[2] ? data[2].capitalize() : '')];
-		}
-		return trans;
-	}
-
-});
-
-Fx.Transition = function(transition, params){
-	params = $splat(params);
-	return $extend(transition, {
-		easeIn: function(pos){
-			return transition(pos, params);
-		},
-		easeOut: function(pos){
-			return 1 - transition(1 - pos, params);
-		},
-		easeInOut: function(pos){
-			return (pos <= 0.5) ? transition(2 * pos, params) / 2 : (2 - transition(2 * (1 - pos), params)) / 2;
-		}
-	});
-};
-
-Fx.Transitions = new Hash({
-
-	linear: $arguments(0)
-
-});
-
-Fx.Transitions.extend = function(transitions){
-	for (var transition in transitions) Fx.Transitions[transition] = new Fx.Transition(transitions[transition]);
-};
-
-Fx.Transitions.extend({
-
-	Pow: function(p, x){
-		return Math.pow(p, x[0] || 6);
-	},
-
-	Expo: function(p){
-		return Math.pow(2, 8 * (p - 1));
-	},
-
-	Circ: function(p){
-		return 1 - Math.sin(Math.acos(p));
-	},
-
-	Sine: function(p){
-		return 1 - Math.sin((1 - p) * Math.PI / 2);
-	},
-
-	Back: function(p, x){
-		x = x[0] || 1.618;
-		return Math.pow(p, 2) * ((x + 1) * p - x);
-	},
-
-	Bounce: function(p){
-		var value;
-		for (var a = 0, b = 1; 1; a += b, b /= 2){
-			if (p >= (7 - 4 * a) / 11){
-				value = b * b - Math.pow((11 - 6 * a - 11 * p) / 4, 2);
-				break;
-			}
-		}
-		return value;
-	},
-
-	Elastic: function(p, x){
-		return Math.pow(2, 10 * --p) * Math.cos(20 * p * Math.PI * (x[0] || 1) / 3);
-	}
-
-});
-
-['Quad', 'Cubic', 'Quart', 'Quint'].each(function(transition, i){
-	Fx.Transitions[transition] = new Fx.Transition(function(p){
-		return Math.pow(p, [i + 2]);
-	});
-});
-
-
-/*
----
-
-script: Request.js
-
-description: Powerful all purpose Request Class. Uses XMLHTTPRequest.
-
-license: MIT-style license.
-
-requires:
-- /Element
-- /Chain
-- /Events
-- /Options
-- /Browser
-
-provides: [Request]
-
-...
-*/
-
-var Request = new Class({
-
-	Implements: [Chain, Events, Options],
-
-	options: {/*
-		onRequest: $empty,
-		onComplete: $empty,
-		onCancel: $empty,
-		onSuccess: $empty,
-		onFailure: $empty,
-		onException: $empty,*/
-		url: '',
-		data: '',
-		headers: {
-			'X-Requested-With': 'XMLHttpRequest',
-			'Accept': 'text/javascript, text/html, application/xml, text/xml, */*'
-		},
-		async: true,
-		format: false,
-		method: 'post',
-		link: 'ignore',
-		isSuccess: null,
-		emulation: true,
-		urlEncoded: true,
-		encoding: 'utf-8',
-		evalScripts: false,
-		evalResponse: false,
-		noCache: false
-	},
-
-	initialize: function(options){
-		this.xhr = new Browser.Request();
-		this.setOptions(options);
-		this.options.isSuccess = this.options.isSuccess || this.isSuccess;
-		this.headers = new Hash(this.options.headers);
-	},
-
-	onStateChange: function(){
-		if (this.xhr.readyState != 4 || !this.running) return;
-		this.running = false;
-		this.status = 0;
-		$try(function(){
-			this.status = this.xhr.status;
-		}.bind(this));
-		this.xhr.onreadystatechange = $empty;
-		if (this.options.isSuccess.call(this, this.status)){
-			this.response = {text: this.xhr.responseText, xml: this.xhr.responseXML};
-			this.success(this.response.text, this.response.xml);
-		} else {
-			this.response = {text: null, xml: null};
-			this.failure();
-		}
-	},
-
-	isSuccess: function(){
-		return ((this.status >= 200) && (this.status < 300));
-	},
-
-	processScripts: function(text){
-		if (this.options.evalResponse || (/(ecma|java)script/).test(this.getHeader('Content-type'))) return $exec(text);
-		return text.stripScripts(this.options.evalScripts);
-	},
-
-	success: function(text, xml){
-		this.onSuccess(this.processScripts(text), xml);
-	},
-
-	onSuccess: function(){
-		this.fireEvent('complete', arguments).fireEvent('success', arguments).callChain();
-	},
-
-	failure: function(){
-		this.onFailure();
-	},
-
-	onFailure: function(){
-		this.fireEvent('complete').fireEvent('failure', this.xhr);
-	},
-
-	setHeader: function(name, value){
-		this.headers.set(name, value);
-		return this;
-	},
-
-	getHeader: function(name){
-		return $try(function(){
-			return this.xhr.getResponseHeader(name);
-		}.bind(this));
-	},
-
-	check: function(){
-		if (!this.running) return true;
-		switch (this.options.link){
-			case 'cancel': this.cancel(); return true;
-			case 'chain': this.chain(this.caller.bind(this, arguments)); return false;
-		}
-		return false;
-	},
-
-	send: function(options){
-		if (!this.check(options)) return this;
-		this.running = true;
-
-		var type = $type(options);
-		if (type == 'string' || type == 'element') options = {data: options};
-
-		var old = this.options;
-		options = $extend({data: old.data, url: old.url, method: old.method}, options);
-		var data = options.data, url = String(options.url), method = options.method.toLowerCase();
-
-		switch ($type(data)){
-			case 'element': data = document.id(data).toQueryString(); break;
-			case 'object': case 'hash': data = Hash.toQueryString(data);
-		}
-
-		if (this.options.format){
-			var format = 'format=' + this.options.format;
-			data = (data) ? format + '&' + data : format;
-		}
-
-		if (this.options.emulation && !['get', 'post'].contains(method)){
-			var _method = '_method=' + method;
-			data = (data) ? _method + '&' + data : _method;
-			method = 'post';
-		}
-
-		if (this.options.urlEncoded && method == 'post'){
-			var encoding = (this.options.encoding) ? '; charset=' + this.options.encoding : '';
-			this.headers.set('Content-type', 'application/x-www-form-urlencoded' + encoding);
-		}
-
-		if (this.options.noCache){
-			var noCache = 'noCache=' + new Date().getTime();
-			data = (data) ? noCache + '&' + data : noCache;
-		}
-
-		var trimPosition = url.lastIndexOf('/');
-		if (trimPosition > -1 && (trimPosition = url.indexOf('#')) > -1) url = url.substr(0, trimPosition);
-
-		if (data && method == 'get'){
-			url = url + (url.contains('?') ? '&' : '?') + data;
-			data = null;
-		}
-
-		this.xhr.open(method.toUpperCase(), url, this.options.async);
-
-		this.xhr.onreadystatechange = this.onStateChange.bind(this);
-
-		this.headers.each(function(value, key){
-			try {
-				this.xhr.setRequestHeader(key, value);
-			} catch (e){
-				this.fireEvent('exception', [key, value]);
-			}
-		}, this);
-
-		this.fireEvent('request');
-		this.xhr.send(data);
-		if (!this.options.async) this.onStateChange();
-		return this;
-	},
-
-	cancel: function(){
-		if (!this.running) return this;
-		this.running = false;
-		this.xhr.abort();
-		this.xhr.onreadystatechange = $empty;
-		this.xhr = new Browser.Request();
-		this.fireEvent('cancel');
-		return this;
-	}
-
-});
-
-(function(){
-
-var methods = {};
-['get', 'post', 'put', 'delete', 'GET', 'POST', 'PUT', 'DELETE'].each(function(method){
-	methods[method] = function(){
-		var params = Array.link(arguments, {url: String.type, data: $defined});
-		return this.send($extend(params, {method: method}));
-	};
-});
-
-Request.implement(methods);
-
-})();
-
-Element.Properties.send = {
-
-	set: function(options){
-		var send = this.retrieve('send');
-		if (send) send.cancel();
-		return this.eliminate('send').store('send:options', $extend({
-			data: this, link: 'cancel', method: this.get('method') || 'post', url: this.get('action')
-		}, options));
-	},
-
-	get: function(options){
-		if (options || !this.retrieve('send')){
-			if (options || !this.retrieve('send:options')) this.set('send', options);
-			this.store('send', new Request(this.retrieve('send:options')));
-		}
-		return this.retrieve('send');
-	}
-
-};
-
-Element.implement({
-
-	send: function(url){
-		var sender = this.get('send');
-		sender.send({data: this, url: url || sender.options.url});
-		return this;
-	}
-
-});
-
-
-/*
----
-
-script: Request.HTML.js
-
-description: Extends the basic Request Class with additional methods for interacting with HTML responses.
-
-license: MIT-style license.
-
-requires:
-- /Request
-- /Element
-
-provides: [Request.HTML]
-
-...
-*/
-
-Request.HTML = new Class({
-
-	Extends: Request,
-
-	options: {
-		update: false,
-		append: false,
-		evalScripts: true,
-		filter: false
-	},
-
-	processHTML: function(text){
-		var match = text.match(/<body[^>]*>([\s\S]*?)<\/body>/i);
-		text = (match) ? match[1] : text;
-
-		var container = new Element('div');
-
-		return $try(function(){
-			var root = '<root>' + text + '</root>', doc;
-			if (Browser.Engine.trident){
-				doc = new ActiveXObject('Microsoft.XMLDOM');
-				doc.async = false;
-				doc.loadXML(root);
-			} else {
-				doc = new DOMParser().parseFromString(root, 'text/xml');
-			}
-			root = doc.getElementsByTagName('root')[0];
-			if (!root) return null;
-			for (var i = 0, k = root.childNodes.length; i < k; i++){
-				var child = Element.clone(root.childNodes[i], true, true);
-				if (child) container.grab(child);
-			}
-			return container;
-		}) || container.set('html', text);
-	},
-
-	success: function(text){
-		var options = this.options, response = this.response;
-
-		response.html = text.stripScripts(function(script){
-			response.javascript = script;
-		});
-
-		var temp = this.processHTML(response.html);
-
-		response.tree = temp.childNodes;
-		response.elements = temp.getElements('*');
-
-		if (options.filter) response.tree = response.elements.filter(options.filter);
-		if (options.update) document.id(options.update).empty().set('html', response.html);
-		else if (options.append) document.id(options.append).adopt(temp.getChildren());
-		if (options.evalScripts) $exec(response.javascript);
-
-		this.onSuccess(response.tree, response.elements, response.html, response.javascript);
-	}
-
-});
-
-Element.Properties.load = {
-
-	set: function(options){
-		var load = this.retrieve('load');
-		if (load) load.cancel();
-		return this.eliminate('load').store('load:options', $extend({data: this, link: 'cancel', update: this, method: 'get'}, options));
-	},
-
-	get: function(options){
-		if (options || ! this.retrieve('load')){
-			if (options || !this.retrieve('load:options')) this.set('load', options);
-			this.store('load', new Request.HTML(this.retrieve('load:options')));
-		}
-		return this.retrieve('load');
-	}
-
-};
-
-Element.implement({
-
-	load: function(){
-		this.get('load').send(Array.link(arguments, {data: Object.type, url: String.type}));
-		return this;
-	}
-
-});
-
-
-/*
----
-
-script: Request.JSON.js
-
-description: Extends the basic Request Class with additional methods for sending and receiving JSON data.
-
-license: MIT-style license.
-
-requires:
-- /Request JSON
-
-provides: [Request.HTML]
-
-...
-*/
-
-Request.JSON = new Class({
-
-	Extends: Request,
-
-	options: {
-		secure: true
-	},
-
-	initialize: function(options){
-		this.parent(options);
-		this.headers.extend({'Accept': 'application/json', 'X-Request': 'JSON'});
-	},
-
-	success: function(text){
-		this.response.json = JSON.decode(text, this.options.secure);
-		this.onSuccess(this.response.json, text);
-	}
-
-});

Removed: zorg/trunk/lnt/viewer/resources/popup.js
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/resources/popup.js?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/resources/popup.js (original)
+++ zorg/trunk/lnt/viewer/resources/popup.js (removed)
@@ -1,155 +0,0 @@
-function ShowPop(id)
-{
-    if (document.getElementById)
-    {
-           document.getElementById(id).style.visibility = " visible";
-    }
-    else if (document.all)
-    {
-        document.all[id].style.visibility = " visible";
-    }
-    else if (document.layers)
-    {
-        document.layers[id].style.visibility = " visible";
-    }
-}
-
-
-
-
-
-
-function HidePop(id)
-{
-       if (document.getElementById)
-    {
-           document.getElementById(id).style.visibility = " hidden";
-    }
-    /*else if (document.all)
-    {
-        document.all[id].style.visibility = " hidden";
-    }
-    else if (document.layers)
-    {
-        document.layers[id].style.visibility = " hidden";
-    }*/
-}
-
-
-
-function TogglePop(id)
-{
-       if (document.getElementById)
-    {
-        if(document.getElementById(id).style.visibility  == "visible"){
-            document.getElementById(id).style.visibility = "hidden";
-        }
-        else{
-            document.getElementById(id).style.visibility  = "visible";
-        }
-    }
-    else if (document.all)
-    {
-        if(document.all[id].style.visibility  == "visible"){
-            document.all[id].style.visibility  = "hidden";
-        }
-        else{
-            document.all[id].style.visibility = "visible";
-        }
-    }
-    else if (document.layers)
-    {
-        if(document.layers[id].style.visibility == "visible"){
-            document.layers[id].style.visibility = "hidden";
-        }
-        else{
-            document.layers[id].style.visibility = "visible";
-        }
-    }
-}
-
-
-function toggleLayer(whichLayer)
-{
-    if (document.getElementById)
-    {
-        // this is the way the standards work
-        var style2 = document.getElementById(whichLayer).style;
-        style2.display = style2.display? "":"none";
-        var link  = document.getElementById(whichLayer+"_").innerHTML;
-        if(link.indexOf("(+)") >= 0){
-            document.getElementById(whichLayer+"_").innerHTML="(-)"+link.substring(3,link.length);
-        }
-        else{
-            document.getElementById(whichLayer+"_").innerHTML="(+)"+link.substring(3,link.length);
-        }
-    }//end if
-    else if (document.all)
-    {
-        // this is the way old msie versions work
-        var style2 = document.all[whichLayer].style;
-        style2.display = style2.display? "":"none";
-        var link  = document.all[wwhichLayer+"_"].innerHTML;
-        if(link.indexOf("(+)") >= 0){
-            document.all[whichLayer+"_"].innerHTML="(-)"+link.substring(3,link.length);
-        }
-        else{
-            document.all[whichLayer+"_"].innerHTML="(+)"+link.substring(3,link.length);
-        }
-    }
-    else if (document.layers)
-    {
-        // this is the way nn4 works
-        var style2 = document.layers[whichLayer].style;
-        style2.display = style2.display? "":"none";
-        var link  = document.layers[whichLayer+"_"].innerHTML;
-        if(link.indexOf("(+)") >= 0){
-            document.layers[whichLayer+"_"].innerHTML="(-)"+link.substring(3,link.length);
-        }
-        else{
-            document.layers[whichLayer+"_"].innerHTML="(+)"+link.substring(3,link.length);
-        }
-    }
-}//end function
-
-var checkflag="false";
-function check(field) {
-  if (checkflag == "false") {
-    for (i = 0; i < field.length; i++) {
-      field[i].checked = true;
-    }
-    checkflag = "true";
-    return "Uncheck all";
-  }
-  else {
-    for (i = 0; i < field.length; i++) {
-      if(field[i].type == 'checkbox'){
-        field[i].checked = false;
-      }
-    }
-    checkflag = "false";
-    return "Check all";
-  }
-}
-
-function show_hide_column(tableName, columns) {
-    // Let's be clear hear, I have no idea how to write portable
-    // JavaScript. This works in Safari, yo.
-    var event = window.event;
-    var cb = event.target;
-
-    var style = cb.checked ? "table-cell" : "none";
-
-    var tbl  = document.getElementById(tableName);
-    var rows = tbl.getElementsByTagName('tr');
-
-    for (var row = 0; row < rows.length; ++row) {
-        var cells = rows[row].getElementsByTagName('td');
-
-        if (cells.length == 0)
-            cells = rows[row].getElementsByTagName('th');
-
-        for (var i = 0; i < columns.length; ++i)
-            cells[columns[i]].style.display = style;
-    }
-}

Removed: zorg/trunk/lnt/viewer/resources/sorttable.js
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/resources/sorttable.js?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/resources/sorttable.js (original)
+++ zorg/trunk/lnt/viewer/resources/sorttable.js (removed)
@@ -1,500 +0,0 @@
-/*
-  SortTable
-  version 2
-  7th April 2007
-  Stuart Langridge, http://www.kryogenix.org/code/browser/sorttable/
-
-  Instructions:
-  Download this file
-  Add <script src="sorttable.js"></script> to your HTML
-  Add class="sortable" to any table you'd like to make sortable
-  Click on the headers to sort
-
-  Thanks to many, many people for contributions and suggestions.
-  Licenced as X11: http://www.kryogenix.org/code/browser/licence.html
-  This basically means: do what you want with it.
-*/
-
-
-var stIsIE = /*@cc_on!@*/false;
-
-sorttable = {
-  init: function() {
-    // quit if this function has already been called
-    if (arguments.callee.done) return;
-    // flag this function so we don't do the same thing twice
-    arguments.callee.done = true;
-    // kill the timer
-    if (_timer) clearInterval(_timer);
-
-    if (!document.createElement || !document.getElementsByTagName) return;
-
-    sorttable.DATE_RE = /^(\d\d?)[\/\.-](\d\d?)[\/\.-]((\d\d)?\d\d)$/;
-
-    forEach(document.getElementsByTagName('table'), function(table) {
-      if (table.className.search(/\bsortable\b/) != -1) {
-        sorttable.makeSortable(table);
-      }
-    });
-
-  },
-
-  makeSortable: function(table) {
-    if (table.getElementsByTagName('thead').length == 0) {
-      // table doesn't have a tHead. Since it should have, create one and
-      // put the first table row in it.
-      the = document.createElement('thead');
-      the.appendChild(table.rows[0]);
-      table.insertBefore(the,table.firstChild);
-    }
-    // Safari doesn't support table.tHead, sigh
-    if (table.tHead == null) table.tHead = table.getElementsByTagName('thead')[0];
-
-    //DWD:    if (table.tHead.rows.length != 1) return; // can't cope with two header rows
-
-
-    // Sorttable v1 put rows with a class of "sortbottom" at the bottom (as
-    // "total" rows, for example). This is B&R, since what you're supposed
-    // to do is put them in a tfoot. So, if there are sortbottom rows,
-    // for backwards compatibility, move them to tfoot (creating it if needed).
-    sortbottomrows = [];
-    for (var i=0; i<table.rows.length; i++) {
-      if (table.rows[i].className.search(/\bsortbottom\b/) != -1) {
-        sortbottomrows[sortbottomrows.length] = table.rows[i];
-      }
-    }
-    if (sortbottomrows) {
-      if (table.tFoot == null) {
-        // table doesn't have a tfoot. Create one.
-        tfo = document.createElement('tfoot');
-        table.appendChild(tfo);
-      }
-      for (var i=0; i<sortbottomrows.length; i++) {
-        tfo.appendChild(sortbottomrows[i]);
-      }
-      delete sortbottomrows;
-    }
-
-    // work through each column and calculate its type
-    for (var j=0; j<table.tHead.rows.length; j++) {
-    headrow = table.tHead.rows[j].cells;
-    for (var i=0; i<headrow.length; i++) {
-      // manually override the type with a sorttable_type attribute
-      if (!headrow[i].className.match(/\bsorttable_nosort\b/)) { // skip this col
-        mtch = headrow[i].className.match(/\bsorttable_([a-z0-9]+)\b/);
-        if (mtch) { override = mtch[1]; }
-        if (mtch && typeof sorttable["sort_"+override] == 'function') {
-          headrow[i].sorttable_sortfunction = sorttable["sort_"+override];
-        } else {
-          headrow[i].sorttable_sortfunction = sorttable.guessType(table,i);
-        }
-        // make it clickable to sort
-        var index = i;
-        if (headrow[i].getAttribute("sorttable_index") != null)
-            index = headrow[i].getAttribute("sorttable_index");
-
-        headrow[i].sorttable_columnindex = index;
-        headrow[i].sorttable_tbody = table.tBodies[0];
-        dean_addEvent(headrow[i],"click", function(e) {
-
-          if (this.className.search(/\bsorttable_sorted\b/) != -1) {
-            // if we're already sorted by this column, just
-            // reverse the table, which is quicker
-            sorttable.reverse(this.sorttable_tbody);
-            this.className = this.className.replace('sorttable_sorted',
-                                                    'sorttable_sorted_reverse');
-            this.removeChild(document.getElementById('sorttable_sortfwdind'));
-            sortrevind = document.createElement('span');
-            sortrevind.id = "sorttable_sortrevind";
-            sortrevind.innerHTML = stIsIE ? '&nbsp<font face="webdings">5</font>' : ' &#x25B4;';
-            this.appendChild(sortrevind);
-            return;
-          }
-          if (this.className.search(/\bsorttable_sorted_reverse\b/) != -1) {
-            // if we're already sorted by this column in reverse, just
-            // re-reverse the table, which is quicker
-            sorttable.reverse(this.sorttable_tbody);
-            this.className = this.className.replace('sorttable_sorted_reverse',
-                                                    'sorttable_sorted');
-            this.removeChild(document.getElementById('sorttable_sortrevind'));
-            sortfwdind = document.createElement('span');
-            sortfwdind.id = "sorttable_sortfwdind";
-            sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : ' &#x25BE;';
-            this.appendChild(sortfwdind);
-            return;
-          }
-
-          // remove sorttable_sorted classes
-          forEach(table.tHead.rows, function(row) {
-            forEach(row.childNodes, function(cell) {
-              if (cell.nodeType == 1) { // an element
-                cell.className = cell.className.replace('sorttable_sorted_reverse','');
-                cell.className = cell.className.replace('sorttable_sorted','');
-              }
-            })});
-          sortfwdind = document.getElementById('sorttable_sortfwdind');
-          if (sortfwdind) { sortfwdind.parentNode.removeChild(sortfwdind); }
-          sortrevind = document.getElementById('sorttable_sortrevind');
-          if (sortrevind) { sortrevind.parentNode.removeChild(sortrevind); }
-
-          this.className += ' sorttable_sorted';
-          sortfwdind = document.createElement('span');
-          sortfwdind.id = "sorttable_sortfwdind";
-          sortfwdind.innerHTML = stIsIE ? '&nbsp<font face="webdings">6</font>' : ' &#x25BE;';
-          this.appendChild(sortfwdind);
-
-          // build an array to sort. This is a Schwartzian transform thing,
-          // i.e., we "decorate" each row with the actual sort key,
-          // sort based on the sort keys, and then put the rows back in order
-          // which is a lot faster because you only do getInnerText once per row
-          row_array = [];
-          col = this.sorttable_columnindex;
-          rows = this.sorttable_tbody.rows;
-          for (var j=0; j<rows.length; j++) {
-            row_array[row_array.length] = [sorttable.getInnerText(rows[j].cells[col]), rows[j]];
-          }
-          /* If you want a stable sort, uncomment the following line */
-          //sorttable.shaker_sort(row_array, this.sorttable_sortfunction);
-          /* and comment out this one */
-          row_array.sort(this.sorttable_sortfunction);
-
-          tb = this.sorttable_tbody;
-          for (var j=0; j<row_array.length; j++) {
-            tb.appendChild(row_array[j][1]);
-          }
-
-          delete row_array;
-        });
-      }
-    }
-    }
-  },
-
-  guessType: function(table, column) {
-    // guess the type of a column based on its first non-blank row
-    sortfn = sorttable.sort_alpha;
-    for (var i=0; i<table.tBodies[0].rows.length; i++) {
-      text = sorttable.getInnerText(table.tBodies[0].rows[i].cells[column]);
-      if (text != '') {
-        if (text.match(/^-?[£$¤]?[\d,.]+%?$/)) {
-          return sorttable.sort_numeric;
-        }
-        // check for a date: dd/mm/yyyy or dd/mm/yy
-        // can have / or . or - as separator
-        // can be mm/dd as well
-        possdate = text.match(sorttable.DATE_RE)
-        if (possdate) {
-          // looks like a date
-          first = parseInt(possdate[1]);
-          second = parseInt(possdate[2]);
-          if (first > 12) {
-            // definitely dd/mm
-            return sorttable.sort_ddmm;
-          } else if (second > 12) {
-            return sorttable.sort_mmdd;
-          } else {
-            // looks like a date, but we can't tell which, so assume
-            // that it's dd/mm (English imperialism!) and keep looking
-            sortfn = sorttable.sort_ddmm;
-          }
-        }
-      }
-    }
-    return sortfn;
-  },
-
-  getInnerText: function(node) {
-    // gets the text we want to use for sorting for a cell.
-    // strips leading and trailing whitespace.
-    // this is *not* a generic getInnerText function; it's special to sorttable.
-    // for example, you can override the cell text with a customkey attribute.
-    // it also gets .value for <input> fields.
-
-    hasInputs = (typeof node.getElementsByTagName == 'function') &&
-                 node.getElementsByTagName('input').length;
-
-    if (node.getAttribute("sorttable_customkey") != null) {
-      return node.getAttribute("sorttable_customkey");
-    }
-    else if (typeof node.textContent != 'undefined' && !hasInputs) {
-      return node.textContent.replace(/^\s+|\s+$/g, '');
-    }
-    else if (typeof node.innerText != 'undefined' && !hasInputs) {
-      return node.innerText.replace(/^\s+|\s+$/g, '');
-    }
-    else if (typeof node.text != 'undefined' && !hasInputs) {
-      return node.text.replace(/^\s+|\s+$/g, '');
-    }
-    else {
-      switch (node.nodeType) {
-        case 3:
-          if (node.nodeName.toLowerCase() == 'input') {
-            return node.value.replace(/^\s+|\s+$/g, '');
-          }
-        case 4:
-          return node.nodeValue.replace(/^\s+|\s+$/g, '');
-          break;
-        case 1:
-        case 11:
-          var innerText = '';
-          for (var i = 0; i < node.childNodes.length; i++) {
-            innerText += sorttable.getInnerText(node.childNodes[i]);
-          }
-          return innerText.replace(/^\s+|\s+$/g, '');
-          break;
-        default:
-          return '';
-      }
-    }
-  },
-
-  reverse: function(tbody) {
-    // reverse the rows in a tbody
-    newrows = [];
-    for (var i=0; i<tbody.rows.length; i++) {
-      newrows[newrows.length] = tbody.rows[i];
-    }
-    for (var i=newrows.length-1; i>=0; i--) {
-       tbody.appendChild(newrows[i]);
-    }
-    delete newrows;
-  },
-
-  /* sort functions
-     each sort function takes two parameters, a and b
-     you are comparing a[0] and b[0] */
-  sort_numeric: function(a,b) {
-    aa = parseFloat(a[0].replace(/[^0-9.-]/g,''));
-    if (isNaN(aa)) aa = 0;
-    bb = parseFloat(b[0].replace(/[^0-9.-]/g,''));
-    if (isNaN(bb)) bb = 0;
-    return aa-bb;
-  },
-  sort_alpha: function(a,b) {
-    if (a[0]==b[0]) return 0;
-    if (a[0]<b[0]) return -1;
-    return 1;
-  },
-  sort_ddmm: function(a,b) {
-    mtch = a[0].match(sorttable.DATE_RE);
-    y = mtch[3]; m = mtch[2]; d = mtch[1];
-    if (m.length == 1) m = '0'+m;
-    if (d.length == 1) d = '0'+d;
-    dt1 = y+m+d;
-    mtch = b[0].match(sorttable.DATE_RE);
-    y = mtch[3]; m = mtch[2]; d = mtch[1];
-    if (m.length == 1) m = '0'+m;
-    if (d.length == 1) d = '0'+d;
-    dt2 = y+m+d;
-    if (dt1==dt2) return 0;
-    if (dt1<dt2) return -1;
-    return 1;
-  },
-  sort_mmdd: function(a,b) {
-    mtch = a[0].match(sorttable.DATE_RE);
-    y = mtch[3]; d = mtch[2]; m = mtch[1];
-    if (m.length == 1) m = '0'+m;
-    if (d.length == 1) d = '0'+d;
-    dt1 = y+m+d;
-    mtch = b[0].match(sorttable.DATE_RE);
-    y = mtch[3]; d = mtch[2]; m = mtch[1];
-    if (m.length == 1) m = '0'+m;
-    if (d.length == 1) d = '0'+d;
-    dt2 = y+m+d;
-    if (dt1==dt2) return 0;
-    if (dt1<dt2) return -1;
-    return 1;
-  },
-
-  shaker_sort: function(list, comp_func) {
-    // A stable sort function to allow multi-level sorting of data
-    // see: http://en.wikipedia.org/wiki/Cocktail_sort
-    // thanks to Joseph Nahmias
-    var b = 0;
-    var t = list.length - 1;
-    var swap = true;
-
-    while(swap) {
-        swap = false;
-        for(var i = b; i < t; ++i) {
-            if ( comp_func(list[i], list[i+1]) > 0 ) {
-                var q = list[i]; list[i] = list[i+1]; list[i+1] = q;
-                swap = true;
-            }
-        } // for
-        t--;
-
-        if (!swap) break;
-
-        for(var i = t; i > b; --i) {
-            if ( comp_func(list[i], list[i-1]) < 0 ) {
-                var q = list[i]; list[i] = list[i-1]; list[i-1] = q;
-                swap = true;
-            }
-        } // for
-        b++;
-
-    } // while(swap)
-  }
-}
-
-/* ******************************************************************
-   Supporting functions: bundled here to avoid depending on a library
-   ****************************************************************** */
-
-// Dean Edwards/Matthias Miller/John Resig
-
-/* for Mozilla/Opera9 */
-if (document.addEventListener) {
-    document.addEventListener("DOMContentLoaded", sorttable.init, false);
-}
-
-/* for Internet Explorer */
-/*@cc_on @*/
-/*@if (@_win32)
-    document.write("<script id=__ie_onload defer src=javascript:void(0)><\/script>");
-    var script = document.getElementById("__ie_onload");
-    script.onreadystatechange = function() {
-        if (this.readyState == "complete") {
-            sorttable.init(); // call the onload handler
-        }
-    };
-/*@end @*/
-
-/* for Safari */
-if (/WebKit/i.test(navigator.userAgent)) { // sniff
-    var _timer = setInterval(function() {
-        if (/loaded|complete/.test(document.readyState)) {
-            sorttable.init(); // call the onload handler
-        }
-    }, 10);
-}
-
-/* for other browsers */
-window.onload = sorttable.init;
-
-// written by Dean Edwards, 2005
-// with input from Tino Zijdel, Matthias Miller, Diego Perini
-
-// http://dean.edwards.name/weblog/2005/10/add-event/
-
-function dean_addEvent(element, type, handler) {
-  if (element.addEventListener) {
-    element.addEventListener(type, handler, false);
-  } else {
-    // assign each event handler a unique ID
-    if (!handler.$$guid) handler.$$guid = dean_addEvent.guid++;
-    // create a hash table of event types for the element
-    if (!element.events) element.events = {};
-    // create a hash table of event handlers for each element/event pair
-    var handlers = element.events[type];
-    if (!handlers) {
-      handlers = element.events[type] = {};
-      // store the existing event handler (if there is one)
-      if (element["on" + type]) {
-        handlers[0] = element["on" + type];
-      }
-    }
-    // store the event handler in the hash table
-    handlers[handler.$$guid] = handler;
-    // assign a global event handler to do all the work
-    element["on" + type] = handleEvent;
-  }
-};
-// a counter used to create unique IDs
-dean_addEvent.guid = 1;
-
-function removeEvent(element, type, handler) {
-  if (element.removeEventListener) {
-    element.removeEventListener(type, handler, false);
-  } else {
-    // delete the event handler from the hash table
-    if (element.events && element.events[type]) {
-      delete element.events[type][handler.$$guid];
-    }
-  }
-};
-
-function handleEvent(event) {
-  var returnValue = true;
-  // grab the event object (IE uses a global event object)
-  event = event || fixEvent(((this.ownerDocument || this.document || this).parentWindow || window).event);
-  // get a reference to the hash table of event handlers
-  var handlers = this.events[event.type];
-  // execute each event handler
-  for (var i in handlers) {
-    this.$$handleEvent = handlers[i];
-    if (this.$$handleEvent(event) === false) {
-      returnValue = false;
-    }
-  }
-  return returnValue;
-};
-
-function fixEvent(event) {
-  // add W3C standard event methods
-  event.preventDefault = fixEvent.preventDefault;
-  event.stopPropagation = fixEvent.stopPropagation;
-  return event;
-};
-fixEvent.preventDefault = function() {
-  this.returnValue = false;
-};
-fixEvent.stopPropagation = function() {
-  this.cancelBubble = true;
-}
-
-// Dean's forEach: http://dean.edwards.name/base/forEach.js
-/*
-  forEach, version 1.0
-  Copyright 2006, Dean Edwards
-  License: http://www.opensource.org/licenses/mit-license.php
-*/
-
-// array-like enumeration
-if (!Array.forEach) { // mozilla already supports this
-  Array.forEach = function(array, block, context) {
-    for (var i = 0; i < array.length; i++) {
-      block.call(context, array[i], i, array);
-    }
-  };
-}
-
-// generic enumeration
-Function.prototype.forEach = function(object, block, context) {
-  for (var key in object) {
-    if (typeof this.prototype[key] == "undefined") {
-      block.call(context, object[key], key, object);
-    }
-  }
-};
-
-// character enumeration
-String.forEach = function(string, block, context) {
-  Array.forEach(string.split(""), function(chr, index) {
-    block.call(context, chr, index, string);
-  });
-};
-
-// globally resolve forEach enumeration
-var forEach = function(object, block, context) {
-  if (object) {
-    var resolve = Object; // default
-    if (object instanceof Function) {
-      // functions have a "length" property
-      resolve = Function;
-    } else if (object.forEach instanceof Function) {
-      // the object implements a custom forEach method so use that
-      object.forEach(block, context);
-      return;
-    } else if (typeof object == "string") {
-      // the object is a string
-      resolve = String;
-    } else if (typeof object.length == "number") {
-      // the object is array-like
-      resolve = Array;
-    }
-    resolve.forEach(object, block, context);
-  }
-};
-

Removed: zorg/trunk/lnt/viewer/resources/style.css
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/resources/style.css?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/resources/style.css (original)
+++ zorg/trunk/lnt/viewer/resources/style.css (removed)
@@ -1,79 +0,0 @@
-.zorg_navheader {
-  background-color: #cccccc;
-}
-
-body {
-    color:#000000;
-    background-color:#ffffff
-}
-
-body {
-    font-family: Helvetica, sans-serif;
-    font-size:9pt
-}
-
-h1 {
-    font-size: 14pt;
-}
-
-h2 {
-    font-size: 12pt;
-}
-
-table {
-    font-size:9pt
-}
-
-table {
-    border-spacing: 0px;
-    border: 1px solid black
-}
-
-th, table thead {
-    background-color:#eee;
-    color:#666666;
-    font-weight: bold;
-    cursor: default;
-    text-align:center;
-    font-weight: bold;
-    font-family: Verdana;
-}
-
-.W {
-    font-size:0px
-}
-
-th, td {
-    padding:5px;
-    padding-left:8px;
-}
-
-tbody.scrollContent {
-    overflow:auto
-}
-
-.hideable {
-    border-width:thin;
-    border-color:background;
-    border-style:solid;
-    background: #F8F8FF;
-    padding:8px;
-}
-
-/* Nested popups */
-
-.hideable_1 {
-    border-width:thin;
-    border-color:background;
-    border-style:solid;
-    background: #F8F8FF;
-    padding:8px;
-}
-
-.hideable_2 {
-    border-width:thin;
-    border-color:background;
-    border-style:solid;
-    background: #E8E8E8;
-    padding:8px;
-}

Removed: zorg/trunk/lnt/viewer/root.ptl
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/root.ptl?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/root.ptl (original)
+++ zorg/trunk/lnt/viewer/root.ptl (removed)
@@ -1,432 +0,0 @@
-# -*- python -*-
-
-import os
-import re
-import time
-
-import quixote
-import quixote.form
-import quixote.form.css
-from quixote import get_response
-from quixote.directory import Directory, Resolving
-from quixote.util import StaticDirectory
-
-import PerfDB, Util
-from PerfDB import Machine, Run
-
-class RootDirectory(Resolving, Directory):
-    _q_exports = ["", "resources", "js", "machines", "runs", "tests",
-                  "browse", "submitRun", "nightlytest", "zview",
-
-                  # Redirections,
-                  "select_db",
-
-                  ("favicon.ico", "favicon_ico")]
-
-    def __init__(self, config, dbName='default', dbInfo=None, pathToRoot="./"):
-        self.config = config
-        self.dbName = dbName
-        self.dbInfo = dbInfo
-        if self.dbInfo is None:
-            self.dbInfo = config.databases[dbName]
-        self.pathToRoot = pathToRoot
-        self.db_log = None
-
-    def getDB(self):
-        db = PerfDB.PerfDB(self.dbInfo.path)
-
-        # Enable SQL logging with db_log.
-        #
-        # FIXME: Conditionalize on an is_production variable.
-        request = quixote.get_request()
-        if self.db_log is None and request.form.get('db_log'):
-            import logging, StringIO
-            self.db_log = StringIO.StringIO()
-            logger = logging.getLogger("sqlalchemy")
-            logger.addHandler(logging.StreamHandler(self.db_log))
-            db.db2.engine.echo = True
-
-        return db
-
-    def getHeader [html] (self, title, pathToRoot,
-                          addSorttableJS=True,
-                          addFormCSS=False,
-                          addPopupJS=False,
-                          addGraphJS=False,
-                          addJSScript=None,
-                          onload=None):
-        pathToRoot = os.path.join(self.pathToRoot,
-                                  pathToRoot)
-
-        """
-        <html>
-        <head>
-        """
-        if addSorttableJS:
-            """
-        <script src="%s/resources/sorttable.js"></script>
-            """ % (pathToRoot,)
-        if addPopupJS:
-            """
-        <script src="%s/resources/popup.js"></script>
-            """ % (pathToRoot,)
-        if addGraphJS:
-            """
-        <script src="%s/resources/mootools-1.2.4-core-nc.js"></script>
-        <script src="%s/js/View2D.js"></script>
-            """ % (pathToRoot,pathToRoot)
-        if addJSScript:
-            """\
-<script type="text/javascript">
-%s
-</script>
-""" % (addJSScript,)
-
-        """
-        <link rel="stylesheet" href="%s/resources/style.css" type="text/css" />
-        """ % (pathToRoot,)
-        if addFormCSS:
-            """
-        <link rel="stylesheet" href="%s/resources/form.css" type="text/css" />
-            """ % (pathToRoot,)
-        """
-        <link rel="icon" type="image/png" href="%s/favicon.ico">
-        <title>%s</title>
-        </head>
-        """ % (pathToRoot, title)
-
-        """\
-        <body"""
-        if onload:
-            """ onload="%s">""" % (onload,)
-        else:
-            """>"""
-
-        # Database selection
-        """\
-        <div class="zorg_navheader">
-        <form method="get" action="%s/select_db">
-        <table style="padding:0.1em;" width="100%%">
-        <tr>
-          <td>
-          <strong>
-          [%s]
-          </strong>
-          </td>
-          <td style="text-align:right;">
-          <strong>Database:</strong>
-          <select name="db" onchange="submit()">
-        """ % (pathToRoot, self.dbName)
-        for name in self.config.databases.keys():
-            """\
-            <option %s>%s</option>
-            """ % (('', 'selected')[name == self.dbName],
-                   name)
-        """\
-          </select>
-          <input type="submit" value="Go" />
-          </td>
-        </tr>
-        </table>
-        </form>
-        </div>
-        """
-
-    def getFooter [html] (self):
-        if self.db_log:
-            """<hr><h3>SQL Log</h3><pre>%s</pre>""" % self.db_log.getvalue()
-
-        current = time.time()
-        """
-        <hr>
-        Server Started: %s<br>
-        Generated: %s<br>
-        Render Time: %.2fs<br>
-        </body>
-        </html>
-        """ % (time.strftime(str('%Y-%m-%dT%H:%M:%Sz'),
-                             time.localtime(quixote.get_publisher().create_time)),
-               time.strftime(str('%Y-%m-%dT%H:%M:%Sz'),
-                             time.localtime(current)),
-               current - quixote.get_request().start_time)
-
-    def _q_index [html] (self):
-        self.getHeader("zorg", ".")
-
-        """
-        <h2>LLVM Testing DB</h2>
-        """
-
-        # Features
-
-        if self.dbInfo.showNightlytest:
-            """
-            <h3>Nightly Test Results</h3>
-            <a href="nightlytest/">Nightly Test</a>
-            """
-
-        if self.dbInfo.showGeneral:
-            """
-            <hr>
-
-            <h3>General Database Access</h3>
-            <p><a href="browse">Browse DB</a>
-            <p><a href="submitRun">Submit Run</a>
-            """
-
-        self.getFooter()
-
-    def browse [html] (self):
-        self.getHeader("zorg", ".", addSorttableJS=False)
-
-        # Get a DB connection
-        db = self.getDB()
-
-        """
-        <h2>LLVM Testing DB</h2>
-        """
-
-        # List machines
-        """
-        <h3>Machines</h3>
-        <table class="sortable" border=1 cellborder=1>
-          <thead>
-          <tr>
-            <th>Name</th>
-          </tr>
-          </thead>
-        """
-        for m in db.machines():
-            """
-          <tr>
-            <td><a href="machines/%d/">%s:%d</a></td>
-          </tr>
-            """ % (m.id, m.name, m.number)
-        """
-        </table>
-        """
-
-        # List runs
-        """
-        <h3>Run List</h3>
-        <table class="sortable" border=1 cellborder=1>
-          <thead>
-          <tr>
-            <th>ID</th>
-            <th>Machine</th>
-            <th>Start Time</th>
-            <th>End Time</th>
-          </tr>
-          </thead>
-        """
-        for r,m in db.session.query(Run,Machine).join(Machine):
-            """
-          <tr>
-            <td><a href="runs/%d/">%d</a></td>
-            <td><a href="machines/%d/">%s:%d</a></td>
-            <td>%s</td>
-            <td>%s</td>
-          </tr>
-            """ % (r.id, r.id,
-                   r.machine_id, m.name, m.number,
-                   r.start_time, r.end_time)
-        """
-        </table>
-        """
-
-
-        # List tests
-        """
-        <h3>Test List</h3>
-        <table class="sortable" border=1 cellborder=1>
-          <thead>
-          <tr>
-            <th>ID</th>
-            <th>Test</th>
-          </tr>
-          </thead>
-        """
-        for t in db.tests():
-            """
-          <tr>
-            <td><a href="tests/%d/">%d</a></td>
-            <td>%s</td>
-          </tr>
-            """ % (t.id, t.id, t.name)
-        """
-        </table>
-        """
-
-        self.getFooter()
-
-    def submitRun(self):
-        form = quixote.form.Form(enctype="multipart/form-data")
-        form.add(quixote.form.FileWidget, "file",
-                 title="Input File (plist)", required=True)
-        form.add(quixote.form.SingleSelectWidget, "commit",
-                 title="Commit", value="0",
-                 options=["0", "1"], required=True)
-        form.add_submit("submit", "Submit")
-
-        def render [html] ():
-            self.getHeader("Submit Run", ".", addFormCSS=1)
-            """
-            <h1>Submit Runs</h1>
-            """
-            form.render()
-            self.getFooter()
-
-        def process():
-            import plistlib
-            import tempfile
-            fileWidget = form.get_widget('file')
-            value = fileWidget.parse()
-
-            data = value.fp.read()
-            value.fp.close()
-            prefix = time.strftime("data-%Y-%m-%d_%H-%M-%S")
-            fd,path = tempfile.mkstemp(prefix=prefix,
-                                       suffix='.plist',
-                                       dir=self.config.tempDir)
-            os.write(fd, data)
-            os.close(fd)
-
-            # Find the email address for this machine's results.
-            toAddress = None
-            if isinstance(self.config.ntEmailTo, str):
-                toAddress = self.config.ntEmailTo
-            else:
-                # Find the machine name.
-                #
-                # FIXME: This is really stupid, we shouldn't load the plist
-                # twice just for this.
-                import plistlib
-                data = plistlib.readPlist(path)
-                machineName = data.get('Machine',{}).get('Name')
-
-                for pattern,addr in self.config.ntEmailTo:
-                    if re.match(pattern, machineName):
-                        toAddress = addr
-                        break
-                else:
-                    return 1,"","error: unable to match machine name for test results email address!"
-
-            # Execute ImportData to actually do the import.
-            #
-            # FIXME: This is both broken and annoying. We want to do this
-            # internally to fix the FIXME above and keep it more readable, we
-            # want to serialize imports to keep SQLite happy and avoiding
-            # dropping submissions.
-            import subprocess
-            p = subprocess.Popen([os.path.join(self.config.zorgDir,
-                                               "import/ImportData"),
-                                  "--commit=%s" % form['commit'],
-                                  "--email-on-import=%s" % int(self.config.ntEmailEnabled),
-                                  "--email-base-url=%s/db_%s/nightlytest/" % (self.config.zorgURL,
-                                                                              self.dbName),
-                                  "--email-host=%s" % self.config.ntEmailHost,
-                                  "--email-from=%s" % self.config.ntEmailFrom,
-                                  "--email-to=%s" % toAddress,
-                                  self.dbInfo.path,
-                                  path],
-                                 stdout=subprocess.PIPE,
-                                 stderr=subprocess.PIPE)
-            stdout,stderr = p.communicate(None)
-            res = p.wait()
-            stdout += "\nMAILING RESULTS TO: %r\n" % toAddress
-            return res,stdout,stderr
-
-        def result [plain] ():
-            res,stdout,stderr = process()
-            if True:
-                """\
-STATUS: %s
-
-OUTPUT:
-%s
-ERRORS:
-%s""" % (res, stdout, stderr)
-            else:
-                self.getHeader("Data Received", "../..")
-                """
-                <h3>Result</h3>
-                %s
-                <h3>Output</h3>
-                <pre>\n%s</pre>
-                <h3>Errors</h3>
-                <pre>\n%s</pre>
-                </body>
-                """ % (res, stdout, stderr)
-                self.getFooter()
-
-        if not form.is_submitted() or form.has_errors():
-            return render()
-        return result()
-
-    def favicon_ico(self):
-        response = get_response()
-        response.set_content_type("image/x-icon")
-        response.set_expires(days=1)
-        return FAVICON
-
-    def _q_resolve(self, component):
-        if component == 'machines':
-            import machines
-            return machines.MachinesDirectory(self)
-        if component == 'runs':
-            import runs
-            return runs.RunsDirectory(self)
-        if component == 'tests':
-            import tests
-            return tests.TestsDirectory(self)
-        if component == 'nightlytest':
-            import nightlytest
-            return nightlytest.NightlyTestDirectory(self)
-        if component == 'zview':
-            from zview import zviewui
-            return zviewui.ZViewUI(self)
-
-    def _q_lookup(self, component):
-        if component.startswith('db_'):
-            dbName = component[3:]
-            dbInfo = self.config.databases.get(dbName)
-            if dbInfo:
-                return RootDirectory(self.config, dbName, dbInfo, "../")
-
-    def select_db(self):
-        request = quixote.get_request()
-        dbName = request.form.get('db')
-        return quixote.redirect("db_%s/" % (dbName,))
-
-    resources = StaticDirectory(os.path.join(os.path.dirname(__file__),
-                                             'resources'),
-                                list_directory=True)
-    js = StaticDirectory(os.path.join(os.path.dirname(__file__), 'js'),
-                         list_directory=True)
-
-FAVICON = """\
-AAABAAEAEBAAAAAAAABoBQAAFgAAACgAAAAQAAAAIAAAAAEACAAAAAAAAAEAAAAAAAAAAAAAAAEA
-AAAAAAD///8AAAD/ALOz/wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAgEAAAAAAAAAAAAAAAAAAgECAQIAAAAAAAAAAAAAAAEA
-AAIBAQIAAAACAQIAAAECAAAAAAIBAQICAQIBAgECAAAAAAAAAAIBAQIAAAECAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
-AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=""".decode('base64')

Removed: zorg/trunk/lnt/viewer/runs.ptl
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/runs.ptl?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/runs.ptl (original)
+++ zorg/trunk/lnt/viewer/runs.ptl (removed)
@@ -1,84 +0,0 @@
-# -*- python -*-
-
-import sys
-from quixote import get_response, redirect
-from quixote.directory import Directory
-from quixote.errors import TraversalError
-
-class RunUI(Directory):
-    _q_exports = [""]
-
-    def __init__(self, root, idstr):
-        self.root = root
-        try:
-            self.id = int(idstr)
-        except ValueError, exc:
-            raise TraversalError(str(exc))
-
-    def _q_index [html] (self):
-        # Get a DB conntection
-        db = self.root.getDB()
-
-        r = db.getRun(self.id)
-        m = db.getMachine(r.machine_id)
-
-        self.root.getHeader("zorg:run:%d" % self.id, '../..')
-
-        """
-        <body>
-        <h2>Run: %d</h2>
-        """ % (r.id)
-
-        """
-        <table border=1 cellborder=1>
-          <tr>
-            <th>Machine</th>
-            <th>Start Time</th>
-            <th>End Time</th>
-          </tr>
-          </thead>
-          <tr>
-            <td><a href="../../machines/%d/">%s:%d</a></td>
-            <td>%s</td>
-            <td>%s</td>
-          </tr>
-        </table>
-        """ % (r.machine_id, m.name, m.number, r.start_time, r.end_time)
-
-
-        # Run Info
-        """
-        <h3>Run Info</h3>
-        <table border=1 cellborder=1>
-          <tr>
-            <th>Key</th>
-            <th>Value</th>
-          </tr>
-          </thead>
-        """
-        for mi in r.info.values():
-            """
-          <tr>
-            <td>%s</td>
-            <td>%s</td>
-          </tr>""" % (mi.key, mi.value)
-        """
-        </table>
-        """
-
-        self.root.getFooter()
-
-class RunsDirectory(Directory):
-    _q_exports = [""]
-
-    def __init__(self, root):
-        Directory.__init__(self)
-        self.root = root
-
-    def _q_index [plain] (self):
-        """
-        run access
-        """
-
-    def _q_lookup(self, component):
-        return RunUI(self.root, component)

Removed: zorg/trunk/lnt/viewer/tests.ptl
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/tests.ptl?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/tests.ptl (original)
+++ zorg/trunk/lnt/viewer/tests.ptl (removed)
@@ -1,88 +0,0 @@
-# -*- python -*-
-
-import sys
-from quixote import get_response, redirect
-from quixote.directory import Directory
-from quixote.errors import TraversalError
-
-class TestUI(Directory):
-    _q_exports = [""]
-
-    def __init__(self, root, idstr):
-        self.root = root
-        try:
-            self.id = int(idstr)
-        except ValueError, exc:
-            raise TraversalError(str(exc))
-
-    def _q_index [html] (self):
-        # Get a DB conntection
-        db = self.root.getDB()
-
-        t = db.getTest(self.id)
-
-        self.root.getHeader("zorg:test:%d" % self.id, '../..')
-
-        """
-        <body>
-        <h2>Test: %s</h2>
-        """ % (t.name,)
-
-        # Test info
-        """
-        <h3>Test Info</h3>
-        <table border=1 cellborder=1>
-          <tr>
-            <th>Key</th>
-            <th>Value</th>
-          </tr>
-          </thead>
-        """
-        for item in t.info.values():
-            """
-          <tr>
-            <td>%s</td>
-            <td>%s</td>
-          </tr>""" % (item.key, item.value)
-        """
-        </table>
-        """
-
-        # List samples
-        """
-        <h3>Associated Samples</h3>
-        <table class="sortable" border=1 cellborder=1>
-          <thead>
-          <tr>
-            <th>Run ID</th>
-            <th>Value</th>
-          </tr>
-          </thead>
-        """
-        for s in db.samples(test=t):
-            """
-          <tr>
-            <td><a href="../../runs/%d/">%d</a></td>
-            <td>%s</td>
-          </tr>
-            """ % (s.run_id, s.run_id, s.value)
-        """
-        </table>
-        """
-
-        self.root.getFooter()
-
-class TestsDirectory(Directory):
-    _q_exports = [""]
-
-    def __init__(self, root):
-        Directory.__init__(self)
-        self.root = root
-
-    def _q_index [plain] (self):
-        """
-        test access
-        """
-
-    def _q_lookup(self, component):
-        return TestUI(self.root, component)

Removed: zorg/trunk/lnt/viewer/wsgi_restart.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/wsgi_restart.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/wsgi_restart.py (original)
+++ zorg/trunk/lnt/viewer/wsgi_restart.py (removed)
@@ -1,115 +0,0 @@
-# This code lifted from the mod_wsgi docs.
-
-import os
-import sys
-import time
-import signal
-import threading
-import atexit
-import Queue
-
-_interval = 1.0
-_times = {}
-_files = []
-
-_running = False
-_queue = Queue.Queue()
-_lock = threading.Lock()
-
-def _restart(path):
-    _queue.put(True)
-    prefix = 'monitor (pid=%d):' % os.getpid()
-    print >> sys.stderr, '%s Change detected to \'%s\'.' % (prefix, path)
-    print >> sys.stderr, '%s Triggering process restart.' % prefix
-    os.kill(os.getpid(), signal.SIGINT)
-
-def _modified(path):
-    try:
-        # If path doesn't denote a file and were previously
-        # tracking it, then it has been removed or the file type
-        # has changed so force a restart. If not previously
-        # tracking the file then we can ignore it as probably
-        # pseudo reference such as when file extracted from a
-        # collection of modules contained in a zip file.
-
-        if not os.path.isfile(path):
-            return path in _times
-
-        # Check for when file last modified.
-
-        mtime = os.stat(path).st_mtime
-        if path not in _times:
-            _times[path] = mtime
-
-        # Force restart when modification time has changed, even
-        # if time now older, as that could indicate older file
-        # has been restored.
-
-        if mtime != _times[path]:
-            return True
-    except:
-        # If any exception occured, likely that file has been
-        # been removed just before stat(), so force a restart.
-
-        return True
-
-    return False
-
-def _monitor():
-    while 1:
-        # Check modification times on all files in sys.modules.
-
-        for module in sys.modules.values():
-            if not hasattr(module, '__file__'):
-                continue
-            path = getattr(module, '__file__')
-            if not path:
-                continue
-            if os.path.splitext(path)[1] in ['.pyc', '.pyo', '.pyd']:
-                path = path[:-1]
-
-            if _modified(path):
-                return _restart(path)
-
-        # Check modification times on files which have
-        # specifically been registered for monitoring.
-
-        for path in _files:
-            if _modified(path):
-                return _restart(path)
-
-        # Go to sleep for specified interval.
-
-        try:
-            return _queue.get(timeout=_interval)
-        except:
-            pass
-
-_thread = threading.Thread(target=_monitor)
-_thread.setDaemon(True)
-
-def _exiting():
-    try:
-        _queue.put(True)
-    except:
-        pass
-    _thread.join()
-
-atexit.register(_exiting)
-
-def track(path):
-    if not path in _files:
-        _files.append(path)
-
-def start(interval=1.0):
-    global _interval
-    if interval < _interval:
-        _interval = interval
-
-    global _running
-    _lock.acquire()
-    if not _running:
-        prefix = 'monitor (pid=%d):' % os.getpid()
-        print >> sys.stderr, '%s Starting change monitor.' % prefix
-        _running = True
-        _thread.start()

Removed: zorg/trunk/lnt/viewer/zorg.cfg.sample
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/zorg.cfg.sample?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/zorg.cfg.sample (original)
+++ zorg/trunk/lnt/viewer/zorg.cfg.sample (removed)
@@ -1,46 +0,0 @@
-# -*- Python -*-
-
-# LNT (aka Zorg) configuration file
-#
-# Paths are resolved relative to this file.
-
-# Path to the LNT root.
-zorg = ".."
-
-# Path to the LNT server.
-zorgURL = "http://llvm.org/perf/"
-
-# The list of available databases, and their properties. At a minimum, there
-# should be a 'default' entry for the default database.
-databases = {
-    'default' : { 'path' : '../data/default.db',
-                  'showNightlytest' : 1 },
-    'test' : { 'path' : '../data/test.db',
-               'showNightlytest' : 1,
-               'showGeneral' : 1 },
-    'nt' : { 'path' : '../data/nt_internal.db',
-             'showNightlytest' : 1 },
-    'nt_mysql' : { 'path' : 'mysql://root:admin@localhost/nt_internal',
-                   'showNightlytest' : 1 },
-    }
-
-# The LNT email configuration.
-#
-# The 'to' field can be either a single email address, or a list of
-# (regular-expression, address) pairs. In the latter form, the machine name of
-# the submitted results is matched against the regular expressions to determine
-# which email address to use for the results.
-nt_emailer = {
-    'enabled' : False,
-    'host' : "llvm.org",
-    'from' : "lnt at llvm.org",
-
-    # This is a list of (filter-regexp, address) pairs -- it is evaluated in
-    # order based on the machine name. This can be used to dispatch different
-    # reports to different email address.
-    'to' : [(".*", "llvm-testresults at cs.uiuc.edu")],
-    }
-
-# Enable automatic restart using the wsgi_restart module; this should be off in
-# a production environment.
-wsgi_restart = False

Removed: zorg/trunk/lnt/viewer/zorg.cgi
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/zorg.cgi?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/zorg.cgi (original)
+++ zorg/trunk/lnt/viewer/zorg.cgi (removed)
@@ -1,45 +0,0 @@
-#!/usr/bin/env python
-# -*- Python -*-
-
-import sys
-import os
-
-# These were just some local hacks I used at some point to enable testing with
-# MySQL. We were running afoul of cimport issues, I think. Revisit when we care
-# about MySQL.
-if 0:
-    os.environ['PATH'] += ':/usr/local/mysql/bin'
-
-    os.environ['PYTHON_EGG_CACHE'] = '/tmp'
-    import MySQLdb
-
-    import PerfDB
-    db = PerfDB.PerfDB("mysql://root:admin@localhost/nt_internal")
-    from PerfDB import Machine
-    q = db.session.query(Machine.name).distinct().order_by(Machine.name)
-    for i in q[:1]:
-        break
-
-def create_publisher():
-    import warnings
-    warnings.simplefilter("ignore", category=DeprecationWarning)
-
-    # We expect the config file to be adjacent to the absolute path of
-    # the cgi script.
-    configPath = os.path.join(os.path.dirname(os.path.realpath(__file__)),
-                          "zorg.cfg")
-    configData = {}
-    exec open(configPath) in configData
-
-    # Find the zorg installation dir.
-    zorgDir = os.path.join(os.path.dirname(configPath),
-                           configData.get('zorg', ''))
-    if zorgDir and zorgDir not in sys.path:
-        sys.path.append(zorgDir)
-
-    from viewer import publisher
-    return publisher.create_publisher(configPath, configData)
-
-if __name__ == '__main__':
-    from quixote.server import cgi_server
-    cgi_server.run(create_publisher)

Removed: zorg/trunk/lnt/viewer/zorg.wsgi
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/zorg.wsgi?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/zorg.wsgi (original)
+++ zorg/trunk/lnt/viewer/zorg.wsgi (removed)
@@ -1,41 +0,0 @@
-#!/usr/bin/env python2.6
-# -*- Python -*-
-
-import sys
-import os
-
-def create_publisher():
-    import warnings
-    warnings.simplefilter("ignore", category=DeprecationWarning)
-
-    # We expect the config file to be adjacent to the absolute path of
-    # the cgi script.
-    configPath = os.path.join(os.path.dirname(os.path.realpath(__file__)),
-                              "zorg.cfg")
-    configData = {}
-    exec open(configPath) in configData
-
-    # Find the zorg installation dir.
-    zorgDir = os.path.join(os.path.dirname(configPath),
-                           configData.get('zorg', ''))
-    if zorgDir and zorgDir not in sys.path:
-        sys.path.append(zorgDir)
-
-    # Optionally enable auto-restart.
-    if configData.get('wsgiAutoRestart', 'True'):
-        from viewer import wsgi_restart
-        wsgi_restart.track(configPath)
-        wsgi_restart.start()
-
-    from viewer import publisher
-    return publisher.create_publisher(configPath, configData, threaded=True)
-
-from quixote.wsgi import QWIP
-application = QWIP(create_publisher())
-
-if __name__ == '__main__':
-    from wsgiref.simple_server import make_server
-    print "Running test application."
-    print "  open http://localhost:8000/"
-    httpd = make_server('', 8000, application)
-    httpd.serve_forever()

Removed: zorg/trunk/lnt/viewer/zview/__init__.py
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/zview/__init__.py?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/zview/__init__.py (original)
+++ zorg/trunk/lnt/viewer/zview/__init__.py (removed)
@@ -1 +0,0 @@
-__all__ = []

Removed: zorg/trunk/lnt/viewer/zview/zviewui.ptl
URL: http://llvm.org/viewvc/llvm-project/zorg/trunk/lnt/viewer/zview/zviewui.ptl?rev=99116&view=auto
==============================================================================
--- zorg/trunk/lnt/viewer/zview/zviewui.ptl (original)
+++ zorg/trunk/lnt/viewer/zview/zviewui.ptl (removed)
@@ -1,211 +0,0 @@
-from quixote.directory import Directory
-from quixote.html import htmltext
-
-from viewer.PerfDB import Machine, Run, Sample, Test
-from viewer import NTUtil
-
-from sqlalchemy import func
-
-import json
-
-class ZViewUI(Directory):
-    _q_exports = ["", "get_machines", "get_tests", "get_test_data",
-                  "get_test_names"]
-
-    def __init__(self, root):
-        self.root = root
-
-    def get_machines(self):
-        db = self.root.getDB()
-        q = db.session.query(Machine.name.distinct())
-        q = q.order_by(Machine.name)
-        return json.dumps(q.all())
-
-    def get_tests(self):
-        db = self.root.getDB()
-        q = db.session.query(Test.id, Test.name)
-        q = q.order_by([Test.name])
-        return json.dumps(q.all())
-
-    def get_test_data(self):
-        import quixote, time
-        from sqlalchemy import orm
-
-        request = quixote.get_request()
-        machine_name = str(request.form.get('machine_name'))
-        test_name = str(request.form.get('test_name'))
-        component = str(request.form.get('component'))
-
-        full_test_name = 'nightlytest.' + test_name + '.' + component
-
-        # FIXME: Return data about machine crossings.
-        db = self.root.getDB()
-        q = db.session.query(Test.id).filter(Test.name == full_test_name)
-        q = db.session.query(Run.start_time, Sample.value)
-        q = q.join(Sample).join(Test)
-        q = q.filter(Test.name == full_test_name)
-        q = q.join(Machine)
-        q = q.filter(Machine.name == machine_name)
-        q = q.order_by(Run.start_time.desc())
-        return json.dumps([(time.mktime(run_time.timetuple()), value)
-                           for run_time,value in q])
-
-    def get_test_names(self):
-        # FIXME: We should fix the DB to be able to do this directly.
-        left = NTUtil.kPrefix + '.'
-        right = '.' + NTUtil.kSentinelKeyName
-        f = func.substr(Test.name, len(left) + 1,
-                        func.length(Test.name) - len(left) - len(right))
-
-        db = self.root.getDB()
-        q = db.session.query(f)
-        q = q.filter(Test.name.startswith(left))
-        q = q.filter(Test.name.endswith(right))
-        q = q.order_by(Test.name.desc())
-        return json.dumps(q.all())
-
-    def _q_index [html] (self):
-        db = self.root.getDB()
-
-        script = """
-machines = null;
-tests = null;
-graph = null;
-active_test_data = null;
-
-function update_machine_list(data, text) {
-  machines = data;
-
-  var elt = $('test_select_form_machine');
-  elt.length = data.length;
-  for (var i = 0; i != data.length; ++i) {
-    elt[i].value = data[i];
-    elt[i].text = data[i];
-  }
-
-  handle_test_change();
-}
-
-function update_test_list(data, text) {
-  tests = data;
-
-  var elt = $('test_select_form_test');
-  elt.length = data.length;
-  for (var i = 0; i != data.length; ++i) {
-    elt[i].value = data[i];
-    elt[i].text = data[i];
-  }
-
-  handle_test_change();
-}
-
-function update_graph() {
-  update_selected_status();
-
-  graph.clearPlots();
-  if (active_test_data && active_test_data.length) {
-    graph.clearColor = [1, 1, 1];
-    graph.addPlot(active_test_data, new Graph2D_LinePlotStyle(1, [0,0,0]));
-  } else {
-    graph.clearColor = [1, .8, .8];
-  }
-  graph.draw();
-}
-
-function update_selected_status() {
-  var machine_elt = $('test_select_form_machine');
-  var test_elt = $('test_select_form_test');
-  var machine = machines && machines[machine_elt.selectedIndex];
-  var test = tests && tests[test_elt.selectedIndex];
-  var numPts = active_test_data && active_test_data.length;
-  $('log').innerHTML = "<b>Machine:</b> " + machine + "<br>" +
-                       "<b>Test:</b> " + test + "<br>" +
-                       "<b>Num Points:</b> " + numPts;
-}
-
-function handle_test_change() {
-  if (machines === null || tests === null)
-    return;
-
-  var machine_elt = $('test_select_form_machine');
-  var test_elt = $('test_select_form_test');
-  var machine = machines[machine_elt.selectedIndex];
-  var test = tests[test_elt.selectedIndex];
-  var component = $('test_select_form_component').value;
-
-  new Request.JSON({
-    url: 'get_test_data',
-    method: 'get',
-    onSuccess: function(data, text) {
-      active_test_data = data;
-      update_graph();
-    },
-    data: "machine_name=" + encodeURIComponent(machine) + "&" +
-          "test_name=" + encodeURIComponent(test) + "&" +
-          "component=" + component,
-  }).send();
-}
-
-function init() {
-  // Initialize the graph object.
-  graph = new Graph2D("graph");
-  graph.xAxis.format = graph.xAxis.formats.day;
-  update_graph();
-
-  // Load the machine lists.
-  new Request.JSON({
-    url: 'get_machines',
-    onSuccess: update_machine_list,
-  }).send();
-
-  // Load the test list.
-  new Request.JSON({
-    url: 'get_test_names',
-    onSuccess: update_test_list,
-  }).send();
-}
-""" % locals()
-
-        self.root.getHeader("zorg", "..", addGraphJS=True, addJSScript=script,
-                            onload='init()')
-
-        """
-        <h2>ZView</h2>
-        """
-
-        """
-        <h3>Test Selection</h3>
-        <form id="test_select_form">
-        <p>Machine: <select id="test_select_form_machine"
-                            onChange="handle_test_change();">
-        <option value="">Loading...</option>
-        </select></p>
-
-        <p>Test: <select id="test_select_form_test"
-                         onChange="handle_test_change();">
-        <option value="">Loading...</option>
-        </select></p>
-
-        <p>Component: <select id="test_select_form_component"
-                              onChange="handle_test_change();">
-        """
-        for name,key in NTUtil.kComparisonKinds:
-            if key is None:
-                continue
-            """<option value="%s">%s</option>""" % (key, name)
-        """
-        </select></p>
-        </form>
-
-        <h3>Selected Test</h3>
-        <div id="log">
-	<p>Waiting...</p>
-        </div>
-
-        <h3>Graph</h3>
-        <div id="log">
-        <canvas id="graph" width="600" height="400"></canvas>
-        </div>
-        """
-
-        self.root.getFooter()





More information about the llvm-commits mailing list