Mathieu Desnoyers [Sat, 3 Apr 2010 14:09:58 +0000 (10:09 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 3 Apr 2010 00:55:28 +0000 (20:55 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 3 Apr 2010 00:39:42 +0000 (20:39 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Sat, 3 Apr 2010 00:23:48 +0000 (20:23 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 2 Apr 2010 19:13:05 +0000 (15:13 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Fri, 26 Mar 2010 19:51:37 +0000 (15:51 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 25 Mar 2010 20:47:42 +0000 (16:47 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Mar 2010 16:11:57 +0000 (12:11 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 17 Mar 2010 20:27:54 +0000 (16:27 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 17 Mar 2010 12:57:19 +0000 (08:57 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 16 Mar 2010 20:29:30 +0000 (16:29 -0400)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 15 Mar 2010 19:59:43 +0000 (15:59 -0400)]
update LTTng manual non-html tags
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 15 Mar 2010 16:52:49 +0000 (12:52 -0400)]
Update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 2 Mar 2010 12:58:54 +0000 (07:58 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Mon, 1 Mar 2010 21:34:21 +0000 (16:34 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 25 Feb 2010 16:34:14 +0000 (11:34 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Feb 2010 23:56:16 +0000 (18:56 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Feb 2010 17:13:54 +0000 (12:13 -0500)]
update roadmap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Feb 2010 17:06:24 +0000 (12:06 -0500)]
update roadmap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Feb 2010 17:05:58 +0000 (12:05 -0500)]
update roadmap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Feb 2010 17:05:14 +0000 (12:05 -0500)]
update roadmap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Feb 2010 17:03:56 +0000 (12:03 -0500)]
update roadmap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Feb 2010 16:49:24 +0000 (11:49 -0500)]
update roadmap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Feb 2010 16:45:22 +0000 (11:45 -0500)]
update roadmap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 24 Feb 2010 16:41:29 +0000 (11:41 -0500)]
update roadmap
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Benjamin Poirier [Thu, 18 Feb 2010 19:42:55 +0000 (14:42 -0500)]
Don't add "0" rows to a glpk problem
glpk aborts if "0" rows are added, skip over the call.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Mathieu Desnoyers [Thu, 18 Feb 2010 13:54:23 +0000 (08:54 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 17 Feb 2010 23:02:42 +0000 (18:02 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Thu, 11 Feb 2010 15:04:07 +0000 (10:04 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 10 Feb 2010 21:33:54 +0000 (16:33 -0500)]
2.6 trace format, lttv 0.12.30
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 10 Feb 2010 20:52:17 +0000 (15:52 -0500)]
Update trace format version to 2.6
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Wed, 10 Feb 2010 20:21:44 +0000 (15:21 -0500)]
Revert to alignment on max(architecture size)
Finally, noticed that gcc aligns uint64_t on 32-bit for 32-bit architectures.
Hopefully we are not facing a case where different compilers behave differently.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Mathieu Desnoyers [Tue, 9 Feb 2010 17:49:45 +0000 (12:49 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
Benjamin Poirier [Mon, 8 Feb 2010 18:51:20 +0000 (13:51 -0500)]
Remove COPYING from .gitignore
As per commit
769633db3416e9c3e78423b28c4bd0170fc7f963 Add COPYING file,
COPYING is no longer a generated file.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Mon, 8 Feb 2010 18:51:19 +0000 (13:51 -0500)]
Do not use __attribute__((constructor))
For greater compatibility with older compilers. The functions that used to be
constructors are functions that register the sync modules. These functions now
have to be called from each sync_chain initialization function.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Mathieu Desnoyers [Mon, 8 Feb 2010 18:18:39 +0000 (13:18 -0500)]
update manual
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
William Bourque [Fri, 5 Feb 2010 17:05:11 +0000 (12:05 -0500)]
Added missing licence header.
Mathieu Desnoyers [Fri, 5 Feb 2010 15:53:53 +0000 (10:53 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Tue, 2 Feb 2010 22:04:18 +0000 (17:04 -0500)]
update version 0.29
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Benjamin Poirier [Mon, 1 Feb 2010 16:56:27 +0000 (11:56 -0500)]
Use updated event definitions
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 29 Jan 2010 17:20:43 +0000 (12:20 -0500)]
Remove dependency on kernel headers
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 29 Jan 2010 17:06:41 +0000 (12:06 -0500)]
Add header files in SOURCES
make distcheck agrees
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 29 Jan 2010 17:54:30 +0000 (12:54 -0500)]
William Bourque [Tue, 2 Feb 2010 18:03:10 +0000 (13:03 -0500)]
Comments and pointers style format changed to comply to kernel code standard.
Mathieu Desnoyers [Mon, 1 Feb 2010 14:40:18 +0000 (09:40 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 30 Jan 2010 17:28:56 +0000 (12:28 -0500)]
update manual
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 30 Jan 2010 17:28:05 +0000 (12:28 -0500)]
update manual
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 30 Jan 2010 17:27:08 +0000 (12:27 -0500)]
update lttng manual
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 30 Jan 2010 17:25:43 +0000 (12:25 -0500)]
update
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sat, 30 Jan 2010 17:21:39 +0000 (12:21 -0500)]
update manual with licenses
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 29 Jan 2010 17:41:47 +0000 (12:41 -0500)]
remove sync dependency from gui module
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 29 Jan 2010 17:36:56 +0000 (12:36 -0500)]
update version to 0.12.28
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 29 Jan 2010 17:35:04 +0000 (12:35 -0500)]
Temporarily remove sync trace call from gui
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Wlliam Bourque [Tue, 26 Jan 2010 23:34:52 +0000 (18:34 -0500)]
Fixed a bug on a call to ltt_trace_time_span_get. No API change.
Mathieu Desnoyers [Fri, 29 Jan 2010 13:22:22 +0000 (08:22 -0500)]
Disable sync/ completely, build OK
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 29 Jan 2010 00:16:54 +0000 (19:16 -0500)]
Disable sync/ because it does not build on x86_64
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Fri, 29 Jan 2010 00:03:27 +0000 (19:03 -0500)]
update version
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Thu, 28 Jan 2010 23:57:36 +0000 (18:57 -0500)]
Fix tracecontext seek backward underflow
Fix a problem with the detailed event list "seek backward". In the following
condition:
- Long interval between events (e.g. generated with power management suspend).
- Happening close to trace start.
- Trace start near 0s 0ns.
The substraction could underflow. Fix this by comparing the time to substract
and floor to trace start time if it would underflow.
The visible effect was that the detailed event list is seeked to the end of the
trace rather than the previous event when going "up" one event prior to the
suspend begin.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
CC: Viktor Rosendahl <viktor.rosendahl@nokia.com>
Pierre-Marc Fournier [Wed, 27 Jan 2010 20:09:32 +0000 (15:09 -0500)]
Add COPYING file
Mathieu Desnoyers [Sat, 23 Jan 2010 00:23:09 +0000 (19:23 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 20 Jan 2010 23:10:03 +0000 (18:10 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Wlliam Bourque [Wed, 6 Jan 2010 21:49:57 +0000 (16:49 -0500)]
(Hopefully) Merge of the patches.
Mathieu Desnoyers [Mon, 4 Jan 2010 18:53:58 +0000 (13:53 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Dec 2009 18:54:45 +0000 (13:54 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Wed, 23 Dec 2009 16:17:39 +0000 (11:17 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Mathieu Desnoyers [Sun, 20 Dec 2009 12:35:30 +0000 (07:35 -0500)]
update compat
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Benjamin Poirier [Fri, 18 Dec 2009 19:15:11 +0000 (14:15 -0500)]
Add glib options to help out valgrind
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 18 Dec 2009 19:15:10 +0000 (14:15 -0500)]
Partial revert "runlttv: change valgrind args to give more details"
This reverts commit
2a65ba6ead92f40eded9946c3413b39d81a338ba.
As the manual says "Performance overhead: origin tracking is expensive."
Conflicts:
runlttv
Benjamin Poirier [Fri, 18 Dec 2009 22:37:56 +0000 (17:37 -0500)]
Fixes for building without libglpk
This fixes some compilation bugs and one execution bug when generating
--eval-graphs without libglpk
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 18 Dec 2009 15:41:26 +0000 (10:41 -0500)]
Fix compilation warnings
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Thu, 17 Dec 2009 16:28:29 +0000 (11:28 -0500)]
Rebuild traceset contexts after performing synchronization
This fixes an integration bug with the state system that caused the control
flow view display to become corrupted when zooming in closely to synchronized
traces. It also caused many messages like
WARNING **: Cannot find pin_in in schedchange 5
to be displayed.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Mon, 14 Dec 2009 16:44:49 +0000 (11:44 -0500)]
Correct the README regarding eval mode usage
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Sun, 6 Dec 2009 20:20:44 +0000 (15:20 -0500)]
Change a test file to create hulls that are more spaced out
This way they are easier to see.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 27 Nov 2009 18:43:05 +0000 (13:43 -0500)]
Fix leaks and invalid memory accesses
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 27 Nov 2009 16:09:44 +0000 (11:09 -0500)]
Add a processing module that reads events from a text file
This is particularly useful for unitests.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Thu, 26 Nov 2009 22:03:06 +0000 (17:03 -0500)]
Add sync_chain_unittest
Makes the former unitest program more compliant with the current architecture.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Thu, 26 Nov 2009 20:57:03 +0000 (15:57 -0500)]
Use a common function to print stats of all modules
Removes code duplication.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Thu, 26 Nov 2009 20:39:42 +0000 (15:39 -0500)]
Initialize traceNb in the processing modules
Removes manipulation of structure fields by sync_chain.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Thu, 26 Nov 2009 18:43:30 +0000 (13:43 -0500)]
Make option type OPTIONAL_ARG available
These options are not be supported by Lttv and will be ignored (with a warning
message).
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Thu, 26 Nov 2009 16:12:58 +0000 (11:12 -0500)]
initProcessing takes a va_arg rather than an lttv-specific type
Makes the framework more general.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Wed, 25 Nov 2009 20:57:01 +0000 (15:57 -0500)]
Move some functions around to improve overall structure
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Wed, 25 Nov 2009 20:14:41 +0000 (15:14 -0500)]
Clean debug statements
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Wed, 25 Nov 2009 20:06:03 +0000 (15:06 -0500)]
Remove unused g_info definitions
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Wed, 25 Nov 2009 20:02:48 +0000 (15:02 -0500)]
Remove leftover references to processing_lttv
It is now called processing_lttng.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Wed, 25 Nov 2009 19:58:01 +0000 (14:58 -0500)]
Don't access stats if they're not activated
Fixes a bug.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Wed, 25 Nov 2009 19:41:51 +0000 (14:41 -0500)]
Update README with info about algorithms, glpk and more
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Wed, 25 Nov 2009 19:41:34 +0000 (14:41 -0500)]
Print approximation type from a constant instead of hardcoded
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Tue, 24 Nov 2009 22:18:20 +0000 (17:18 -0500)]
Make the accuracy area easier to see on the broadcast graphs
Replots the contour of the area over the broadcast points.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Tue, 24 Nov 2009 21:17:51 +0000 (16:17 -0500)]
Have callbacks for "background" and "foreground" graphs
Allows easier composition of many functions on a single graph.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Tue, 17 Nov 2009 19:35:48 +0000 (14:35 -0500)]
Generate graphs of synchronization accuracy
This depends on libglpk. Automatically enabled if present at configure time.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Mon, 16 Nov 2009 22:04:54 +0000 (17:04 -0500)]
Store graph callbacks in a structure
Also support two classes of graphs: with "trace-trace" scale (both axes
present timestamp data); with "trace-time" scale (horizontal axis presents
timestamp data, vertical axis presents difference between timstamps)
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 13 Nov 2009 20:30:07 +0000 (15:30 -0500)]
Generate graphs of broadcasts
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Mon, 16 Nov 2009 16:17:24 +0000 (11:17 -0500)]
Use a timescale without correction in the graphs
... since graphs present timestamp data without correction.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 13 Nov 2009 17:06:09 +0000 (12:06 -0500)]
Do not use LttCycleCount elsewhere than in processing_lttv
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 6 Nov 2009 21:56:40 +0000 (16:56 -0500)]
Print a sum row in the evaluation statistics
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Fri, 6 Nov 2009 19:22:31 +0000 (14:22 -0500)]
Show the latency histograms by IP address rather than by trace
A trace may contain traffic between more than just one pair of hosts.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Thu, 5 Nov 2009 20:27:54 +0000 (15:27 -0500)]
Add graphStream field to syncState
So that modules can create their own individual graphs, independently of the
write[...]GraphsPlots()/Options() mechanism.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Wed, 4 Nov 2009 22:15:06 +0000 (17:15 -0500)]
Use histograms with logarithmicly-sized bins
These are very cool and fancy! In a single pass you get good resolution for
small values (not all lumped in one bin) without wasting many small bins for
large values. You also do no loose any values at all thanks to underflow and
overflow bins at each end. Number of bins is configurable.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Tue, 3 Nov 2009 18:57:36 +0000 (13:57 -0500)]
Call the stats and graph functions from sync_chain
Versus the former daisy chain method, this avoids having the analysis stats
and graph functions called twice when there are many matching modules (via
matching_distributor).
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
Benjamin Poirier [Tue, 3 Nov 2009 16:31:07 +0000 (11:31 -0500)]
Add a module to distribute messages to many analysis modules
Also perform RTT analysis in the eval module.
Signed-off-by: Benjamin Poirier <benjamin.poirier@polymtl.ca>
This page took 0.040291 seconds and 4 git commands to generate.