Experimental Evaluation of "Automated Termination Proofs for Java Programs with Cyclic Data"

In earlier work, we developed a technique to prove termination of Java programs automatically: first, Java programs are automatically transformed to term rewrite systems (TRSs) and then, existing methods and tools are used to prove termination of the resulting TRSs. In this paper, we extend our technique in order to prove termination of algorithms on cyclic data such as cyclic lists or graphs automatically. We implemented our technique in the tool AProVE and performed extensive experiments to evaluate its practical applicability.

Literature

Here, we provide links to our papers on analyzing Java Bytecode. The extended versions of the respective papers include all proofs.


Implementation in AProVE

A new version of the termination tool AProVE implementing our approach is available here. In particular, this new version of AProVE allows to repeat the experiments below. It can be accessed via a web interface

If the program only consists of a single class, one can enter the Java program directly in a window of the web interface. The system then tries to prove (non-)termination of the main method of that class.

To analyze more complex programs (of several classes), the web interface takes an arbitrary jar-file as input. As in the International Termination Competition, it then tries to prove (non-)termination of the main method of the class that is indicated in the file META-INF/MANIFEST.MF. For details, please see the definition of JBC termination problems. In order to prove (non-)termination of a specific method, one therefore has to add an appropriate main method calling the specific method with random inputs.


Tools

We compare our implementation with the previous version of AProVE and the other two available tools for (non-)termination analysis of Java. Thus, in our experiments we use the following four tools:

Examples

In our experiments, we tested the tools on a collection of 387 examples. These examples have been taken from five sources: In the experiments, we used a timeout of 60 seconds for each example. Note that according to the rules of the International Termination Competition, we try to prove (non-)termination for any run starting in the standard main(String[] arguments) method with an arbitrary input array arguments. Hence, the method main is responsible for creating a suitable random input and then running the actual program on it.

The tables below summarize our experiments. They show that for all example sets, AProVE currently yields the most precise results both for termination and non-termination analysis. (However, there are also several examples where Julia and COSTA prove termination whereas AProVE fails.)

In the following table, we give the results of our experiments for the the different sets of examples. Y gives the number of examples where termination was proven, N gives the number of examples where non-termination was proven, M means that the proof failed in less than 60 seconds, T gives the number of examples where the tool took longer than 60 seconds, and R gives the average runtime. By clicking on the name of the example set, you can inspect the details of the respective experiments.

Example Set Size AProVE AProVE 2011 Julia COSTA
Y N M T R Y N M T R Y N M T R Y N M T R
Full Set 387 267 81 11 28 9.5 225 81 45 36 11.4 191 22 174 0 4.7 160 0 181 46 11.0
TPDB 268 213 28 5 22 9.4 204 28 12 24 11.3 163 22 83 0 4.4 134 0 117 17 7.9
Paper + List Reversal 7 7 0 0 0 4.4 2 0 4 1 13.8 0 0 7 0 3.5 1 0 6 0 3.7
LinkedList + HashMap 60 51 0 6 3 15.8 23 0 29 8 18.3 32 0 28 0 8.2 29 0 5 26 30.4
Nonterm. Evaluation 57 1 53 0 3 4.9 1 53 0 3 4.9 1 0 56 0 3.1 1 0 53 3 5.3


Details on the Examples from java.util

In the following, we explain which example in the collection "LinkedList + HashMap" correspond to which library method in the classes java.util.LinkedList and java.util.HashMap from the Collection framework in Oracle's standard Java distribution. Following the regulations in the Termination Competition, we excluded 7 methods from LinkedList and HashMap, as they use native methods or string manipulation. Furthermore, we needed to make several small changes to remove string operations in the construction of verbose error messages in exceptions. To avoid clashes with the standard library, we afterwards renamed the enclosing package from java.util to javaUtilEx.

HashMap<K,V>

Method signature Example name
clear() juHashMapCreateClear.jar
clone() - (uses native method java.lang.Object.clone())
containsKey(Object key) juHashMapCreateContainsKey.jar
containsValue(Object value) juHashMapCreateContainsValue.jar
equals(Object o) juHashMapCreateEquals.jar
entrySet() juHashMapCreateIteratorEntryLoop.jar (also iterates once over entry set)
get(Object key) juHashMapCreateGet.jar
hashCode - (uses native method java.lang.Object.hashCode())
isEmpty() juHashMapCreateIsEmpty.jar
keySet() juHashMapCreateIteratorKeyLoop.jar (also iterates once over key set)
put(K key, V value) juHashMapCreatePut.jar
putAll(Map<? extends K, ? extends V> m) juHashMapCreatePutAll.jar
remove(Object key) juHashMapCreateRemove.jar
size() juHashMapCreateSize.jar
values() juHashMapCreateIteratorValueLoop.jar (also iterates once over value set)
toString - (uses String concatenation)

LinkedList<E>

Method signature Example name
add(E e) juLinkedListCreateAdd.jar
add(int index, E element) juLinkedListCreateAddAt.jar
addAll(Collection<? extends E> c) juLinkedListCreateAddAll.jar
addAll(int index, Collection<? extends E> c) juLinkedListCreateAddAllAt.jar
addFirst(E e) juLinkedListCreateAddFirst.jar
addLast(E e) juLinkedListCreateAddLast.jar
clear() juLinkedListCreateClear.jar
clone() - (uses native method java.lang.Object.clone())
contains(Object o) juLinkedListCreateContains.jar
containsAll(Collection<?> c) juLinkedListCreateContainsAll.jar
descendingIterator() juLinkedListCreateDescendingIteratorLoop.jar (also iterates once over list)
element() juLinkedListCreateElement.jar
equals(Object o) juLinkedListCreateEquals.jar
get(int index) juLinkedListCreateGet.jar
getFirst() juLinkedListCreateGetFirst.jar
getLast() juLinkedListCreateGetLast.jar
hashCode() - (uses native method java.lang.Object.hashCode())
indexOf(Object o) juLinkedListCreateIndexOf.jar
isEmpty() juLinkedListCreateIsEmpty.jar
iterator() juLinkedListCreateIteratorLoop.jar (also iterates once over list)
lastIndexOf(Object o) juLinkedListCreateLastIndexOf.jar
listIterator(int index) juLinkedListCreateListIteratorLoop.jar (also iterates once over list)
offer(E e) juLinkedListCreateOffer.jar
offerFirst(E e) juLinkedListCreateOfferFirst.jar
offerLast(E e) juLinkedListCreateOfferLast.jar
peek() juLinkedListCreatePeek.jar
peekFirst() juLinkedListCreatePeekFirst.jar
peekLast() juLinkedListCreatePeekLast.jar
poll() juLinkedListCreatePoll.jar
pollFirst() juLinkedListCreatePollFirst.jar
pollLast() juLinkedListCreatePollLast.jar
pop() juLinkedListCreatePop.jar
push(E e) juLinkedListCreatePush.jar
remove() juLinkedListCreateRemove.jar
remove(int index) juLinkedListCreateRemoveAt.jar
remove(Object o) juLinkedListCreateRemoveElement.jar
removeAll(Collection<?> c) juLinkedListCreateRemoveAll.jar
removeFirst() juLinkedListCreateRemoveFirst.jar
removeFirstOccurrence(Object o) juLinkedListCreateRemoveFirstOccurrence.jar
removeLast() juLinkedListCreateRemoveLast.jar
removeLastOccurrence(Object o) juLinkedListCreateRemoveLastOccurrence.jar
removeRange(int fromIndex, int toIndex) juLinkedListCreateRemoveRange.jar
retainAll(Collection<?> c) juLinkedListCreateRetainAll.jar
set(int index, E element) juLinkedListCreateSet.jar
size() juLinkedListCreateSize.jar
subList(int fromIndex, int toIndex) juLinkedListCreateSubList.jar
toArray() juLinkedListCreateToArray.jar
toArray(T[] a) - (uses reflection)
toString() - (uses String concatenation)


Detailed Results

In the following table, each row shows the behavior of the tools on one example. The entry "YES" means that termination of that example could be proved by the corresponding tool, "NO" means that non-termination could be proved, while "MAYBE" states that the tool gave up without success. Finally, "TIMEOUT" indicates that the tool exceeded the given time limit and was therefore stopped. By clicking on the respective runtime, one can inspect the output produced by the tool. To load an example into the web interface of AProVE, just click on the corresponding button in the first column. Then you can run AProVE on the respective example yourself.

When using the AProVE web interface, please keep in mind that the computer running the web interface is considerably slower (four AMD Opteron CPU cores with 2.2GHz each) than the one used for the experiments. Therefore, a higher timeout of up to 600 seconds is needed to solve all examples that AProVE could solve in the table below. Please also keep in mind that the computer used for the web interface is used by several other applications as well, so the runtimes may vary.

ExampleAProVEAProVE 2011JuliaCOSTA
NO1.43NO1.83MAYBE3.91MAYBE2.4
NO1.75NO2.09MAYBE3.61MAYBE2.65
NO1.43NO1.47MAYBE2.58MAYBE0.89
NO1.34NO1.28MAYBE2.61MAYBE0.85
NO2.12NO2.23MAYBE2.55MAYBE2.46
NO1.5NO1.37MAYBE2.57MAYBE2.93
NO1.41NO1.35MAYBE2.6MAYBE1.49
TIMEOUT60TIMEOUT60MAYBE2.48MAYBE0.92
NO1.28NO1.24MAYBE2.3MAYBE1.07
NO1.32NO1.26MAYBE2.12MAYBE0.91
NO1.4NO1.3MAYBE2.28MAYBE0.8
NO3.0NO2.96MAYBE2.56MAYBE9.84
NO1.26NO1.25MAYBE2.19MAYBE0.84
NO1.72NO1.65MAYBE2.33MAYBE2.49
NO2.45NO2.12MAYBE4.15MAYBE2.64
NO1.64NO1.56MAYBE2.64MAYBE2.45
NO1.52NO1.45MAYBE2.61MAYBE2.42
NO1.26NO1.23MAYBE2.15MAYBE0.84
NO1.42NO1.38MAYBE2.54MAYBE2.5
NO12.8NO13.63MAYBE2.19MAYBE0.75
NO1.25NO1.22MAYBE2.13MAYBE0.73
NO1.73NO1.66MAYBE2.51MAYBE2.56
NO1.55NO1.47MAYBE2.54MAYBE2.48
NO1.71NO3.45MAYBE2.24MAYBE10.4
NO1.32NO1.29MAYBE2.28MAYBE0.85
TIMEOUT60TIMEOUT60MAYBE2.44MAYBE0.93
NO5.55NO1.42MAYBE2.23MAYBE1.46
NO1.77NO1.77MAYBE2.59MAYBE8.58
NO1.47NO1.71MAYBE2.61MAYBE3.35
NO1.56NO1.55MAYBE2.52MAYBE2.52
TIMEOUT60TIMEOUT60MAYBE3.81MAYBE4.38
NO2.85NO4.58MAYBE4.12MAYBE3.36
NO1.31NO1.33MAYBE2.13MAYBE0.78
NO1.27NO1.24MAYBE2.13MAYBE0.74
NO1.56NO1.66MAYBE2.5MAYBE2.46
NO1.99NO1.9MAYBE2.5TIMEOUT60
NO1.43NO1.38MAYBE2.14MAYBE1.35
NO1.28NO1.24MAYBE2.28MAYBE0.84
NO1.54NO1.52MAYBE2.28MAYBE0.81
NO4.48NO3.97MAYBE2.54TIMEOUT60
NO1.73NO2.53MAYBE2.32MAYBE4.34
NO1.96NO2.47MAYBE4.73TIMEOUT60
NO1.45NO1.42MAYBE2.3MAYBE1.03
NO1.36NO1.34MAYBE2.08MAYBE0.77
NO1.51NO1.47MAYBE2.29MAYBE2.86
NO1.53NO1.52MAYBE2.37MAYBE4.91
NO1.72NO1.55MAYBE2.41MAYBE7.54
NO1.42NO2.04MAYBE2.13MAYBE0.89
YES1.4YES1.74YES2.14YES0.32
NO1.31NO1.29MAYBE2.17MAYBE0.76
NO1.33NO1.29MAYBE2.11MAYBE0.86
NO1.45NO1.5MAYBE2.18MAYBE0.83
NO1.45NO1.39MAYBE2.16MAYBE0.81
NO1.27NO1.27MAYBE2.13MAYBE0.82
NO1.27NO1.24MAYBE2.15MAYBE0.84
NO1.5NO1.68MAYBE2.86MAYBE2.57
NO1.3NO1.23MAYBE2.14MAYBE0.74
YES2.38YES9.48MAYBE2.95MAYBE2.01
YES2.41MAYBE6.54MAYBE3.18MAYBE1.71
YES1.83TIMEOUT60MAYBE3.08MAYBE3.05
YES1.82YES1.98MAYBE2.8MAYBE3.74
YES2.85MAYBE6.33MAYBE2.73MAYBE4.16
YES2.36MAYBE6.26MAYBE3.14MAYBE4.46
YES17.25MAYBE6.2MAYBE6.31YES6.45
YES10.24MAYBE8.61MAYBE13.45TIMEOUT60
YES13.24MAYBE8.7MAYBE13.89TIMEOUT60
YES12.73MAYBE7.63MAYBE22.05TIMEOUT60
MAYBE7.58MAYBE7.0MAYBE23.95TIMEOUT60
YES12.64MAYBE8.52MAYBE15.13TIMEOUT60
YES10.25MAYBE7.33MAYBE14.8TIMEOUT60
YES25.82MAYBE10.07MAYBE17.24TIMEOUT60
YES27.22MAYBE9.55MAYBE15.35TIMEOUT60
YES26.3MAYBE10.03MAYBE14.74TIMEOUT60
YES10.21MAYBE7.44MAYBE13.14TIMEOUT60
MAYBE11.05MAYBE6.7MAYBE14.24TIMEOUT60
YES11.96MAYBE7.69MAYBE14.91TIMEOUT60
YES14.55MAYBE7.87MAYBE16.48TIMEOUT60
YES10.79MAYBE7.89MAYBE13.56TIMEOUT60
TIMEOUT60TIMEOUT60MAYBE9.14TIMEOUT60
TIMEOUT60TIMEOUT60MAYBE7.09MAYBE31.45
YES9.3YES10.7YES4.96YES9.79
YES8.85YES12.61YES4.75YES3.32
YES5.96YES8.76YES4.6YES3.3
YES5.92YES9.13YES4.56YES3.16
YES5.77MAYBE10.17MAYBE4.82MAYBE12.63
MAYBE10.6MAYBE14.25MAYBE8.52TIMEOUT60
YES20.26TIMEOUT60MAYBE5.6TIMEOUT60
YES12.59YES25.91MAYBE7.93MAYBE40.56
YES5.3YES8.09YES4.5YES3.58
MAYBE18.74MAYBE22.89MAYBE14.0TIMEOUT60
YES5.27YES8.96YES4.88YES3.56
YES5.13YES8.03YES4.81YES3.47
YES18.84TIMEOUT60MAYBE5.8TIMEOUT60
YES4.81YES8.17YES4.84YES3.31
YES9.29TIMEOUT60YES7.29MAYBE21.89
YES18.12TIMEOUT60MAYBE5.8TIMEOUT60
YES9.1TIMEOUT60YES7.18MAYBE35.64
YES10.17YES12.24YES4.83YES3.47
YES6.09YES9.23YES4.82YES3.4
YES6.05YES8.93YES4.89YES3.25
YES5.01YES8.35YES4.9YES3.66
YES5.07YES7.97YES4.76YES3.64
YES5.04YES8.4YES4.78YES3.67
YES18.62MAYBE18.39YES4.97YES4.92
YES19.72MAYBE19.79YES5.0YES4.88
YES19.55MAYBE8.18YES4.96YES4.93
YES19.9MAYBE21.14YES5.16YES4.8
YES8.68YES12.52YES4.98YES3.46
MAYBE10.28MAYBE9.69MAYBE9.99TIMEOUT60
YES27.13YES12.61YES5.26YES6.45
YES23.82MAYBE11.48MAYBE5.84TIMEOUT60
YES18.52MAYBE18.19YES4.99YES4.66
YES24.52MAYBE11.54MAYBE5.79TIMEOUT60
YES18.5MAYBE8.81YES5.02YES4.67
YES22.23MAYBE11.74MAYBE5.89TIMEOUT60
TIMEOUT60TIMEOUT60YES8.67TIMEOUT60
MAYBE10.24MAYBE12.5MAYBE10.35TIMEOUT60
YES6.43YES9.98YES5.31YES4.29
YES5.61MAYBE6.56YES5.71YES6.11
YES2.05YES2.25YES2.73YES1.03
TIMEOUT60TIMEOUT60MAYBE2.54MAYBE2.56
YES5.2YES4.64YES3.22MAYBE4.29
YES15.38YES10.18MAYBE7.54TIMEOUT60
YES5.23YES5.35MAYBE5.04MAYBE15.93
YES1.86YES2.19YES2.38YES0.92
YES3.9YES4.36YES2.33YES1.01
YES1.68YES2.05YES2.34YES0.9
YES2.0YES18.13YES2.54YES1.9
YES1.55YES2.13YES2.37YES0.89
YES8.68YES9.2YES5.08MAYBE42.1
YES9.87YES14.4MAYBE6.02MAYBE53.13
YES9.19YES8.13MAYBE7.84TIMEOUT60
YES2.38YES5.99MAYBE2.39MAYBE2.75
YES1.88YES3.0MAYBE2.34MAYBE2.78
YES2.22YES2.98MAYBE2.38MAYBE2.74
TIMEOUT60TIMEOUT60YES2.37MAYBE2.64
YES5.4TIMEOUT60MAYBE2.38MAYBE2.92
TIMEOUT60YES12.33MAYBE4.21MAYBE18.52
YES2.13YES2.36YES3.12YES1.35
YES1.84YES2.05YES2.98MAYBE3.53
YES2.7YES6.5YES3.14YES1.45
YES2.4YES2.6YES3.65MAYBE19.0
YES5.09YES4.66MAYBE2.42MAYBE2.61
YES1.55YES1.84YES2.51YES0.91
YES3.97YES2.4YES2.5MAYBE2.65
YES4.88YES4.68MAYBE2.4MAYBE2.62
YES1.54YES1.75YES2.56MAYBE2.53
YES2.01TIMEOUT60MAYBE2.32MAYBE2.86
YES1.62YES1.81YES2.28YES0.89
YES1.78YES2.22YES2.41YES0.92
TIMEOUT60TIMEOUT60MAYBE2.38MAYBE2.71
YES8.0YES9.28MAYBE4.79MAYBE36.24
YES1.84YES2.68YES2.61YES0.92
YES2.15YES6.88YES2.35YES0.97
YES1.72YES2.15YES2.31YES0.91
YES1.54YES1.84YES2.2YES0.87
YES1.56YES1.8YES2.2YES0.88
YES1.7YES1.77YES2.25YES0.92
YES1.69YES1.82YES2.33YES0.91
YES1.57YES1.81YES2.36YES0.88
YES1.7YES2.19YES2.35YES1.72
YES2.06YES2.1YES2.36YES0.92
YES2.85YES3.32YES2.5YES0.96
YES1.77YES1.88YES2.37YES1.01
YES3.73YES9.28YES2.45YES1.36
YES2.3YES2.33YES2.33YES0.92
YES2.47YES2.63YES2.4YES0.95
YES1.68YES1.86YES2.27YES0.89
YES2.43YES2.86YES2.53YES0.92
YES2.08YES3.95YES2.27YES0.94
YES1.57YES1.79YES2.15YES0.89
YES1.64YES1.82YES2.2YES0.88
YES1.56YES1.99YES2.16YES1.64
YES1.51YES1.81YES2.2YES0.89
YES1.54YES1.57YES2.34YES0.89
YES1.53YES1.79YES2.2YES0.89
YES1.8YES1.9YES2.28YES0.92
YES1.79YES2.35YES2.58YES1.78
YES2.46YES4.09YES2.39YES0.95
YES2.37YES3.07YES2.35YES1.02
YES1.85YES3.29YES2.5YES1.71
YES1.69YES2.9YES2.39YES0.93
YES2.02YES3.65YES2.39YES2.07
TIMEOUT60TIMEOUT60MAYBE2.52YES1.8
YES1.8YES2.66YES2.43YES0.92
YES2.63YES4.26YES2.44YES1.02
YES1.63YES2.05YES2.26MAYBE2.7
YES1.57TIMEOUT60MAYBE2.33MAYBE2.52
YES2.36YES1.96YES2.95YES2.52
YES13.31YES13.62MAYBE7.84MAYBE17.71
YES3.13YES3.27YES3.74MAYBE5.08
TIMEOUT60TIMEOUT60YES4.08MAYBE6.97
YES1.65YES1.89YES2.19YES0.31
YES1.68YES1.84YES2.85YES1.53
YES1.64YES2.0YES2.59YES0.85
YES1.25YES1.16MAYBE2.36MAYBE3.31
YES1.75YES3.79YES2.9YES1.26
YES1.28YES1.19MAYBE2.71MAYBE3.07
YES1.25YES1.16MAYBE2.54MAYBE3.59
YES8.98YES8.65YES4.86MAYBE22.03
YES8.59YES11.48MAYBE6.62TIMEOUT60
YES1.24YES1.15YES2.28MAYBE2.86
YES1.25YES1.15YES2.26MAYBE2.51
YES1.77YES1.85MAYBE2.44MAYBE3.28
YES2.7YES6.67YES3.41YES1.8
YES1.24YES1.16YES2.36MAYBE3.17
YES1.31YES1.23MAYBE2.98MAYBE12.06
YES1.27YES1.17MAYBE2.69MAYBE3.4
YES5.65YES4.36MAYBE2.97MAYBE8.05
YES2.24YES9.94MAYBE3.39MAYBE9.06
YES1.23YES1.17MAYBE2.47MAYBE1.43
YES1.3YES1.22MAYBE2.7MAYBE3.01
YES1.63YES1.87MAYBE2.73MAYBE3.65
YES2.2YES2.25MAYBE3.16MAYBE4.2
YES1.27YES1.15MAYBE2.41MAYBE2.6
YES2.81YES3.37MAYBE2.96MAYBE4.97
YES7.99YES7.51MAYBE4.48MAYBE12.8
YES8.46YES7.1MAYBE4.99MAYBE20.39
YES24.32YES5.4MAYBE3.01MAYBE7.77
YES12.55YES13.57MAYBE3.48MAYBE9.11
YES3.2YES9.0MAYBE6.28YES1.61
YES1.61YES1.87MAYBE2.63MAYBE3.74
YES2.2YES2.22MAYBE2.95MAYBE5.17
YES1.28YES1.16MAYBE2.39MAYBE2.61
YES6.66YES12.11MAYBE2.79MAYBE8.2
YES2.4YES4.71MAYBE2.86MAYBE5.94
YES17.94YES16.33MAYBE4.19YES5.88
YES25.53YES33.04MAYBE7.14YES30.27
YES8.29YES11.41YES4.61YES3.86
YES1.9YES12.51YES2.88YES1.48
YES2.35YES6.39YES3.22YES1.29
YES1.89YES2.69YES3.59MAYBE3.24
YES1.83YES2.76YES2.83MAYBE2.68
YES14.67YES6.2MAYBE3.29MAYBE7.06
YES1.6YES1.86MAYBE2.86MAYBE4.29
YES9.48YES8.01MAYBE3.67YES1.5
YES19.52MAYBE18.38MAYBE9.07YES5.41
YES4.89YES14.08MAYBE4.32YES3.9
YES32.12YES29.58YES3.97MAYBE6.35
YES13.55MAYBE6.59MAYBE3.91MAYBE6.18
TIMEOUT60YES18.06MAYBE4.57MAYBE9.98
YES9.17YES10.88MAYBE3.94YES5.2
YES1.56YES1.79YES2.46YES0.84
YES1.67YES2.31YES2.25YES0.54
YES11.88YES14.38MAYBE5.94YES9.65
YES26.45MAYBE12.76MAYBE7.19YES7.2
YES4.43YES6.55MAYBE4.02MAYBE7.14
YES5.97YES16.08MAYBE3.85YES4.8
YES5.83YES14.15MAYBE3.02YES1.51
YES2.93YES4.08YES2.96MAYBE4.34
YES27.06YES56.83MAYBE4.06MAYBE16.01
YES1.54YES1.79YES2.36YES0.84
YES4.0YES2.42YES2.47MAYBE2.64
YES17.76YES8.57MAYBE3.39MAYBE21.19
YES13.18YES7.43MAYBE3.45MAYBE10.17
YES11.32YES6.08MAYBE3.55MAYBE7.69
YES8.01YES5.13MAYBE3.39MAYBE7.35
MAYBE10.76YES12.79YES3.94YES5.55
YES10.58MAYBE10.55MAYBE3.48TIMEOUT60
YES7.84YES9.87MAYBE3.72MAYBE10.33
YES8.35YES17.46MAYBE3.6MAYBE18.75
YES1.48YES1.6YES2.21YES0.81
TIMEOUT60MAYBE19.2MAYBE6.76YES43.98
YES12.05YES11.61YES3.38TIMEOUT60
YES3.06YES5.76YES2.71YES1.39
MAYBE7.24MAYBE8.86MAYBE3.11MAYBE6.15
YES2.97YES2.21YES2.25YES1.03
YES1.4YES1.52YES2.34YES0.28
TIMEOUT60TIMEOUT60MAYBE2.14MAYBE0.77
TIMEOUT60TIMEOUT60MAYBE2.33MAYBE0.67
YES2.28YES3.31YES2.81YES0.99
YES1.51YES1.67YES2.49YES1.78
YES1.2YES1.14YES2.23YES0.25
YES5.05YES5.85YES2.82YES0.94
YES1.23YES1.15YES2.31YES0.26
NO1.24NO1.17NO2.24MAYBE0.63
YES8.75YES8.63YES2.87MAYBE0.96
YES1.51YES1.81YES2.63MAYBE0.77
YES1.23YES1.17YES2.21MAYBE0.76
YES1.57YES1.75YES2.78MAYBE0.89
NO1.33NO1.22MAYBE2.28MAYBE0.89
TIMEOUT60TIMEOUT60MAYBE3.27MAYBE18.2
YES1.41YES1.51YES4.58YES1.71
NO1.44NO1.31MAYBE2.35MAYBE0.86
NO1.54NO1.54MAYBE2.23MAYBE0.72
YES1.32YES1.24YES2.27YES0.31
NO1.59NO1.54MAYBE2.28MAYBE0.72
YES1.31YES1.28YES2.3YES0.31
YES1.23YES1.13YES2.37YES0.75
MAYBE6.37MAYBE6.31MAYBE2.3MAYBE2.47
YES11.11YES10.6YES17.01MAYBE20.82
YES4.11YES8.23YES4.4MAYBE14.47
YES1.45YES1.59YES2.33YES0.28
YES1.42YES1.41YES2.39YES0.29
YES1.37YES1.31YES2.27YES0.28
YES1.25YES1.16YES3.45YES1.18
NO1.53NO1.23MAYBE2.4MAYBE1.48
NO1.36NO1.26MAYBE2.31YES0.83
TIMEOUT60TIMEOUT60MAYBE4.37MAYBE2.41
YES1.2YES1.13YES2.67MAYBE0.79
YES1.26YES1.48YES4.4YES3.86
YES1.73YES2.33YES2.6YES1.17
YES1.49YES1.61YES3.1YES2.1
YES1.52YES1.66YES3.73YES1.36
YES7.95MAYBE7.89YES23.65TIMEOUT60
YES1.4YES1.61YES2.43YES0.27
YES1.43YES1.56YES2.37YES0.26
YES2.73YES2.09YES2.43YES0.77
YES1.24YES1.15YES2.6YES0.26
YES1.44YES1.59YES2.72YES0.29
YES1.21YES1.14YES5.32YES0.44
YES1.35YES1.32YES2.75YES0.64
YES1.61YES1.86YES8.56YES2.63
YES1.49YES1.4YES6.97YES3.0
TIMEOUT60YES15.82YES4.35TIMEOUT60
YES14.02YES21.7YES11.1YES12.99
YES7.61YES45.6YES4.43TIMEOUT60
TIMEOUT60MAYBE6.52MAYBE2.51YES0.4
MAYBE28.28MAYBE7.17MAYBE2.85MAYBE1.29
YES1.72YES1.74YES3.0YES1.33
YES18.75YES21.52YES4.36YES4.02
YES16.26YES20.14YES4.1YES3.06
YES25.79YES24.46YES4.57YES6.52
YES16.89YES19.55YES4.08YES3.15
YES19.83YES21.26YES4.33YES3.89
YES3.97YES7.1YES4.32MAYBE6.42
TIMEOUT60MAYBE57.81YES17.09TIMEOUT60
TIMEOUT60TIMEOUT60YES18.88TIMEOUT60
YES13.15YES20.65YES9.88YES14.72
YES3.85TIMEOUT60YES7.73YES0.73
YES1.23YES1.13YES2.6MAYBE2.61
TIMEOUT60TIMEOUT60YES29.61TIMEOUT60
YES4.32YES4.96YES3.64YES1.01
MAYBE6.66TIMEOUT60MAYBE3.26MAYBE2.82
YES6.23YES8.89YES6.19YES0.49
YES7.18YES17.61YES6.65YES14.34
YES3.0YES21.97YES28.98TIMEOUT60
YES9.73YES8.06YES4.33YES2.81
YES1.74YES4.05YES3.78MAYBE1.54
YES9.27YES9.48YES6.86MAYBE14.23
YES1.9YES2.73YES3.04YES1.82
YES3.0YES4.47YES4.31YES1.52
YES3.9YES8.23YES3.58YES2.02
YES1.95YES2.26YES3.55YES1.19
YES1.95YES2.3YES3.56YES1.2
YES1.8YES2.04YES3.12YES1.3
YES15.53TIMEOUT60YES21.36TIMEOUT60
YES5.65TIMEOUT60YES6.84YES3.12
YES7.34TIMEOUT60MAYBE13.8MAYBE54.25
YES3.31YES3.69YES3.75YES1.93
YES2.46YES5.53YES4.69YES0.53
YES10.38YES27.07YES15.12TIMEOUT60
YES1.72YES2.96YES2.73MAYBE0.83
YES5.23YES9.63YES3.67YES1.0
YES2.0YES3.5YES9.1YES0.4
TIMEOUT60TIMEOUT60YES11.29YES14.89
TIMEOUT60TIMEOUT60YES26.33TIMEOUT60
YES15.4YES28.18YES4.21YES2.41
TIMEOUT60MAYBE8.9YES59.02TIMEOUT60
TIMEOUT60YES30.66YES11.93YES18.83
NO6.34NO5.89NO2.25MAYBE0.64
NO1.38NO1.26NO2.23MAYBE2.44
NO1.27NO1.16NO2.14MAYBE0.64
YES14.57YES33.07YES52.58TIMEOUT60
NO1.27NO1.18NO2.28MAYBE0.63
NO1.26NO1.22NO2.21MAYBE0.23
NO1.3NO1.19NO2.33MAYBE0.26
NO1.26NO1.16NO2.09MAYBE0.25
NO1.3NO1.21NO2.24MAYBE0.24
NO1.39NO1.32NO2.78MAYBE0.28
NO5.03NO5.01NO2.18MAYBE0.25
NO1.28NO1.19NO2.19MAYBE0.25
NO7.46NO6.98NO2.1MAYBE0.24
NO15.35NO14.22NO2.18MAYBE0.24
NO13.09NO12.26NO2.26MAYBE0.24
NO3.33NO3.06NO2.19MAYBE0.24
NO1.25NO1.15NO2.16MAYBE0.24
NO1.27NO1.18NO2.19MAYBE0.24
NO3.19NO2.9NO2.12MAYBE0.24
NO1.32NO1.2NO2.08MAYBE0.23
NO1.4NO1.3NO2.13MAYBE0.24
NO1.29NO1.21NO2.16MAYBE0.67
TIMEOUT60TIMEOUT60YES4.74YES2.04
YES4.82TIMEOUT60YES3.78YES0.64
YES1.88TIMEOUT60YES3.47YES2.11
YES9.15YES8.25YES2.85YES0.5
YES3.62YES6.18YES4.31YES2.08