diff --git a/.git/COMMIT_EDITMSG b/.git/COMMIT_EDITMSG
new file mode 100644
--- /dev/null
+++ b/.git/COMMIT_EDITMSG
@@ -0,0 +1,1 @@
+Removed some oleg sauce
diff --git a/.git/FETCH_HEAD b/.git/FETCH_HEAD
new file mode 100644
--- /dev/null
+++ b/.git/FETCH_HEAD
diff --git a/.git/HEAD b/.git/HEAD
new file mode 100644
--- /dev/null
+++ b/.git/HEAD
@@ -0,0 +1,1 @@
+ref: refs/heads/master
diff --git a/.git/config b/.git/config
new file mode 100644
--- /dev/null
+++ b/.git/config
@@ -0,0 +1,11 @@
+[core]
+	repositoryformatversion = 0
+	filemode = true
+	bare = false
+	logallrefupdates = true
+[remote "origin"]
+	url = git@github.com:Hamcha/ketchup.git
+	fetch = +refs/heads/*:refs/remotes/origin/*
+[branch "master"]
+	remote = origin
+	merge = refs/heads/master
diff --git a/.git/description b/.git/description
new file mode 100644
--- /dev/null
+++ b/.git/description
@@ -0,0 +1,1 @@
+Unnamed repository; edit this file 'description' to name the repository.
diff --git a/.git/hooks/applypatch-msg.sample b/.git/hooks/applypatch-msg.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/applypatch-msg.sample
@@ -0,0 +1,15 @@
+#!/bin/sh
+#
+# An example hook script to check the commit log message taken by
+# applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit.  The hook is
+# allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "applypatch-msg".
+
+. git-sh-setup
+test -x "$GIT_DIR/hooks/commit-msg" &&
+	exec "$GIT_DIR/hooks/commit-msg" ${1+"$@"}
+:
diff --git a/.git/hooks/commit-msg.sample b/.git/hooks/commit-msg.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/commit-msg.sample
@@ -0,0 +1,24 @@
+#!/bin/sh
+#
+# An example hook script to check the commit log message.
+# Called by "git commit" with one argument, the name of the file
+# that has the commit message.  The hook should exit with non-zero
+# status after issuing an appropriate message if it wants to stop the
+# commit.  The hook is allowed to edit the commit message file.
+#
+# To enable this hook, rename this file to "commit-msg".
+
+# Uncomment the below to add a Signed-off-by line to the message.
+# Doing this in a hook is a bad idea in general, but the prepare-commit-msg
+# hook is more suited to it.
+#
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
+
+# This example catches duplicate Signed-off-by lines.
+
+test "" = "$(grep '^Signed-off-by: ' "$1" |
+	 sort | uniq -c | sed -e '/^[ 	]*1[ 	]/d')" || {
+	echo >&2 Duplicate Signed-off-by lines.
+	exit 1
+}
diff --git a/.git/hooks/post-update.sample b/.git/hooks/post-update.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/post-update.sample
@@ -0,0 +1,8 @@
+#!/bin/sh
+#
+# An example hook script to prepare a packed repository for use over
+# dumb transports.
+#
+# To enable this hook, rename this file to "post-update".
+
+exec git update-server-info
diff --git a/.git/hooks/pre-applypatch.sample b/.git/hooks/pre-applypatch.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/pre-applypatch.sample
@@ -0,0 +1,14 @@
+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed
+# by applypatch from an e-mail message.
+#
+# The hook should exit with non-zero status after issuing an
+# appropriate message if it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-applypatch".
+
+. git-sh-setup
+test -x "$GIT_DIR/hooks/pre-commit" &&
+	exec "$GIT_DIR/hooks/pre-commit" ${1+"$@"}
+:
diff --git a/.git/hooks/pre-commit.sample b/.git/hooks/pre-commit.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/pre-commit.sample
@@ -0,0 +1,49 @@
+#!/bin/sh
+#
+# An example hook script to verify what is about to be committed.
+# Called by "git commit" with no arguments.  The hook should
+# exit with non-zero status after issuing an appropriate message if
+# it wants to stop the commit.
+#
+# To enable this hook, rename this file to "pre-commit".
+
+if git rev-parse --verify HEAD >/dev/null 2>&1
+then
+	against=HEAD
+else
+	# Initial commit: diff against an empty tree object
+	against=4b825dc642cb6eb9a060e54bf8d69288fbee4904
+fi
+
+# If you want to allow non-ASCII filenames set this variable to true.
+allownonascii=$(git config --bool hooks.allownonascii)
+
+# Redirect output to stderr.
+exec 1>&2
+
+# Cross platform projects tend to avoid non-ASCII filenames; prevent
+# them from being added to the repository. We exploit the fact that the
+# printable range starts at the space character and ends with tilde.
+if [ "$allownonascii" != "true" ] &&
+	# Note that the use of brackets around a tr range is ok here, (it's
+	# even required, for portability to Solaris 10's /usr/bin/tr), since
+	# the square bracket bytes happen to fall in the designated range.
+	test $(git diff --cached --name-only --diff-filter=A -z $against |
+	  LC_ALL=C tr -d '[ -~]\0' | wc -c) != 0
+then
+	cat <<\EOF
+Error: Attempt to add a non-ASCII file name.
+
+This can cause problems if you want to work with people on other platforms.
+
+To be portable it is advisable to rename the file.
+
+If you know what you are doing you can disable this check using:
+
+  git config hooks.allownonascii true
+EOF
+	exit 1
+fi
+
+# If there are whitespace errors, print the offending file names and fail.
+exec git diff-index --check --cached $against --
diff --git a/.git/hooks/pre-push.sample b/.git/hooks/pre-push.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/pre-push.sample
@@ -0,0 +1,54 @@
+#!/bin/sh
+
+# An example hook script to verify what is about to be pushed.  Called by "git
+# push" after it has checked the remote status, but before anything has been
+# pushed.  If this script exits with a non-zero status nothing will be pushed.
+#
+# This hook is called with the following parameters:
+#
+# $1 -- Name of the remote to which the push is being done
+# $2 -- URL to which the push is being done
+#
+# If pushing without using a named remote those arguments will be equal.
+#
+# Information about the commits which are being pushed is supplied as lines to
+# the standard input in the form:
+#
+#   <local ref> <local sha1> <remote ref> <remote sha1>
+#
+# This sample shows how to prevent push of commits where the log message starts
+# with "WIP" (work in progress).
+
+remote="$1"
+url="$2"
+
+z40=0000000000000000000000000000000000000000
+
+IFS=' '
+while read local_ref local_sha remote_ref remote_sha
+do
+	if [ "$local_sha" = $z40 ]
+	then
+		# Handle delete
+		:
+	else
+		if [ "$remote_sha" = $z40 ]
+		then
+			# New branch, examine all commits
+			range="$local_sha"
+		else
+			# Update to existing branch, examine new commits
+			range="$remote_sha..$local_sha"
+		fi
+
+		# Check for WIP commit
+		commit=`git rev-list -n 1 --grep '^WIP' "$range"`
+		if [ -n "$commit" ]
+		then
+			echo "Found WIP commit in $local_ref, not pushing"
+			exit 1
+		fi
+	fi
+done
+
+exit 0
diff --git a/.git/hooks/pre-rebase.sample b/.git/hooks/pre-rebase.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/pre-rebase.sample
@@ -0,0 +1,169 @@
+#!/bin/sh
+#
+# Copyright (c) 2006, 2008 Junio C Hamano
+#
+# The "pre-rebase" hook is run just before "git rebase" starts doing
+# its job, and can prevent the command from running by exiting with
+# non-zero status.
+#
+# The hook is called with the following parameters:
+#
+# $1 -- the upstream the series was forked from.
+# $2 -- the branch being rebased (or empty when rebasing the current branch).
+#
+# This sample shows how to prevent topic branches that are already
+# merged to 'next' branch from getting rebased, because allowing it
+# would result in rebasing already published history.
+
+publish=next
+basebranch="$1"
+if test "$#" = 2
+then
+	topic="refs/heads/$2"
+else
+	topic=`git symbolic-ref HEAD` ||
+	exit 0 ;# we do not interrupt rebasing detached HEAD
+fi
+
+case "$topic" in
+refs/heads/??/*)
+	;;
+*)
+	exit 0 ;# we do not interrupt others.
+	;;
+esac
+
+# Now we are dealing with a topic branch being rebased
+# on top of master.  Is it OK to rebase it?
+
+# Does the topic really exist?
+git show-ref -q "$topic" || {
+	echo >&2 "No such branch $topic"
+	exit 1
+}
+
+# Is topic fully merged to master?
+not_in_master=`git rev-list --pretty=oneline ^master "$topic"`
+if test -z "$not_in_master"
+then
+	echo >&2 "$topic is fully merged to master; better remove it."
+	exit 1 ;# we could allow it, but there is no point.
+fi
+
+# Is topic ever merged to next?  If so you should not be rebasing it.
+only_next_1=`git rev-list ^master "^$topic" ${publish} | sort`
+only_next_2=`git rev-list ^master           ${publish} | sort`
+if test "$only_next_1" = "$only_next_2"
+then
+	not_in_topic=`git rev-list "^$topic" master`
+	if test -z "$not_in_topic"
+	then
+		echo >&2 "$topic is already up-to-date with master"
+		exit 1 ;# we could allow it, but there is no point.
+	else
+		exit 0
+	fi
+else
+	not_in_next=`git rev-list --pretty=oneline ^${publish} "$topic"`
+	/usr/local/bin/perl -e '
+		my $topic = $ARGV[0];
+		my $msg = "* $topic has commits already merged to public branch:\n";
+		my (%not_in_next) = map {
+			/^([0-9a-f]+) /;
+			($1 => 1);
+		} split(/\n/, $ARGV[1]);
+		for my $elem (map {
+				/^([0-9a-f]+) (.*)$/;
+				[$1 => $2];
+			} split(/\n/, $ARGV[2])) {
+			if (!exists $not_in_next{$elem->[0]}) {
+				if ($msg) {
+					print STDERR $msg;
+					undef $msg;
+				}
+				print STDERR " $elem->[1]\n";
+			}
+		}
+	' "$topic" "$not_in_next" "$not_in_master"
+	exit 1
+fi
+
+exit 0
+
+################################################################
+
+This sample hook safeguards topic branches that have been
+published from being rewound.
+
+The workflow assumed here is:
+
+ * Once a topic branch forks from "master", "master" is never
+   merged into it again (either directly or indirectly).
+
+ * Once a topic branch is fully cooked and merged into "master",
+   it is deleted.  If you need to build on top of it to correct
+   earlier mistakes, a new topic branch is created by forking at
+   the tip of the "master".  This is not strictly necessary, but
+   it makes it easier to keep your history simple.
+
+ * Whenever you need to test or publish your changes to topic
+   branches, merge them into "next" branch.
+
+The script, being an example, hardcodes the publish branch name
+to be "next", but it is trivial to make it configurable via
+$GIT_DIR/config mechanism.
+
+With this workflow, you would want to know:
+
+(1) ... if a topic branch has ever been merged to "next".  Young
+    topic branches can have stupid mistakes you would rather
+    clean up before publishing, and things that have not been
+    merged into other branches can be easily rebased without
+    affecting other people.  But once it is published, you would
+    not want to rewind it.
+
+(2) ... if a topic branch has been fully merged to "master".
+    Then you can delete it.  More importantly, you should not
+    build on top of it -- other people may already want to
+    change things related to the topic as patches against your
+    "master", so if you need further changes, it is better to
+    fork the topic (perhaps with the same name) afresh from the
+    tip of "master".
+
+Let's look at this example:
+
+		   o---o---o---o---o---o---o---o---o---o "next"
+		  /       /           /           /
+		 /   a---a---b A     /           /
+		/   /               /           /
+	       /   /   c---c---c---c B         /
+	      /   /   /             \         /
+	     /   /   /   b---b C     \       /
+	    /   /   /   /             \     /
+    ---o---o---o---o---o---o---o---o---o---o---o "master"
+
+
+A, B and C are topic branches.
+
+ * A has one fix since it was merged up to "next".
+
+ * B has finished.  It has been fully merged up to "master" and "next",
+   and is ready to be deleted.
+
+ * C has not merged to "next" at all.
+
+We would want to allow C to be rebased, refuse A, and encourage
+B to be deleted.
+
+To compute (1):
+
+	git rev-list ^master ^topic next
+	git rev-list ^master        next
+
+	if these match, topic has not merged in next at all.
+
+To compute (2):
+
+	git rev-list master..topic
+
+	if this is empty, it is fully merged to "master".
diff --git a/.git/hooks/prepare-commit-msg.sample b/.git/hooks/prepare-commit-msg.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/prepare-commit-msg.sample
@@ -0,0 +1,36 @@
+#!/bin/sh
+#
+# An example hook script to prepare the commit log message.
+# Called by "git commit" with the name of the file that has the
+# commit message, followed by the description of the commit
+# message's source.  The hook's purpose is to edit the commit
+# message file.  If the hook fails with a non-zero status,
+# the commit is aborted.
+#
+# To enable this hook, rename this file to "prepare-commit-msg".
+
+# This hook includes three examples.  The first comments out the
+# "Conflicts:" part of a merge commit.
+#
+# The second includes the output of "git diff --name-status -r"
+# into the message, just before the "git status" output.  It is
+# commented because it doesn't cope with --amend or with squashed
+# commits.
+#
+# The third example adds a Signed-off-by line to the message, that can
+# still be edited.  This is rarely a good idea.
+
+case "$2,$3" in
+  merge,)
+    /usr/local/bin/perl -i.bak -ne 's/^/# /, s/^# #/#/ if /^Conflicts/ .. /#/; print' "$1" ;;
+
+# ,|template,)
+#   /usr/local/bin/perl -i.bak -pe '
+#      print "\n" . `git diff --cached --name-status -r`
+#	 if /^#/ && $first++ == 0' "$1" ;;
+
+  *) ;;
+esac
+
+# SOB=$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Signed-off-by: \1/p')
+# grep -qs "^$SOB" "$1" || echo "$SOB" >> "$1"
diff --git a/.git/hooks/update.sample b/.git/hooks/update.sample
new file mode 100644
--- /dev/null
+++ b/.git/hooks/update.sample
@@ -0,0 +1,128 @@
+#!/bin/sh
+#
+# An example hook script to blocks unannotated tags from entering.
+# Called by "git receive-pack" with arguments: refname sha1-old sha1-new
+#
+# To enable this hook, rename this file to "update".
+#
+# Config
+# ------
+# hooks.allowunannotated
+#   This boolean sets whether unannotated tags will be allowed into the
+#   repository.  By default they won't be.
+# hooks.allowdeletetag
+#   This boolean sets whether deleting tags will be allowed in the
+#   repository.  By default they won't be.
+# hooks.allowmodifytag
+#   This boolean sets whether a tag may be modified after creation. By default
+#   it won't be.
+# hooks.allowdeletebranch
+#   This boolean sets whether deleting branches will be allowed in the
+#   repository.  By default they won't be.
+# hooks.denycreatebranch
+#   This boolean sets whether remotely creating branches will be denied
+#   in the repository.  By default this is allowed.
+#
+
+# --- Command line
+refname="$1"
+oldrev="$2"
+newrev="$3"
+
+# --- Safety check
+if [ -z "$GIT_DIR" ]; then
+	echo "Don't run this script from the command line." >&2
+	echo " (if you want, you could supply GIT_DIR then run" >&2
+	echo "  $0 <ref> <oldrev> <newrev>)" >&2
+	exit 1
+fi
+
+if [ -z "$refname" -o -z "$oldrev" -o -z "$newrev" ]; then
+	echo "usage: $0 <ref> <oldrev> <newrev>" >&2
+	exit 1
+fi
+
+# --- Config
+allowunannotated=$(git config --bool hooks.allowunannotated)
+allowdeletebranch=$(git config --bool hooks.allowdeletebranch)
+denycreatebranch=$(git config --bool hooks.denycreatebranch)
+allowdeletetag=$(git config --bool hooks.allowdeletetag)
+allowmodifytag=$(git config --bool hooks.allowmodifytag)
+
+# check for no description
+projectdesc=$(sed -e '1q' "$GIT_DIR/description")
+case "$projectdesc" in
+"Unnamed repository"* | "")
+	echo "*** Project description file hasn't been set" >&2
+	exit 1
+	;;
+esac
+
+# --- Check types
+# if $newrev is 0000...0000, it's a commit to delete a ref.
+zero="0000000000000000000000000000000000000000"
+if [ "$newrev" = "$zero" ]; then
+	newrev_type=delete
+else
+	newrev_type=$(git cat-file -t $newrev)
+fi
+
+case "$refname","$newrev_type" in
+	refs/tags/*,commit)
+		# un-annotated tag
+		short_refname=${refname##refs/tags/}
+		if [ "$allowunannotated" != "true" ]; then
+			echo "*** The un-annotated tag, $short_refname, is not allowed in this repository" >&2
+			echo "*** Use 'git tag [ -a | -s ]' for tags you want to propagate." >&2
+			exit 1
+		fi
+		;;
+	refs/tags/*,delete)
+		# delete tag
+		if [ "$allowdeletetag" != "true" ]; then
+			echo "*** Deleting a tag is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	refs/tags/*,tag)
+		# annotated tag
+		if [ "$allowmodifytag" != "true" ] && git rev-parse $refname > /dev/null 2>&1
+		then
+			echo "*** Tag '$refname' already exists." >&2
+			echo "*** Modifying a tag is not allowed in this repository." >&2
+			exit 1
+		fi
+		;;
+	refs/heads/*,commit)
+		# branch
+		if [ "$oldrev" = "$zero" -a "$denycreatebranch" = "true" ]; then
+			echo "*** Creating a branch is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	refs/heads/*,delete)
+		# delete branch
+		if [ "$allowdeletebranch" != "true" ]; then
+			echo "*** Deleting a branch is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	refs/remotes/*,commit)
+		# tracking branch
+		;;
+	refs/remotes/*,delete)
+		# delete tracking branch
+		if [ "$allowdeletebranch" != "true" ]; then
+			echo "*** Deleting a tracking branch is not allowed in this repository" >&2
+			exit 1
+		fi
+		;;
+	*)
+		# Anything else (is there anything else?)
+		echo "*** Update hook: unknown type of update to ref $refname of type $newrev_type" >&2
+		exit 1
+		;;
+esac
+
+# --- Finished
+exit 0
diff --git a/.git/index b/.git/index
new file mode 100644
Binary files /dev/null and b/.git/index differ
diff --git a/.git/info/exclude b/.git/info/exclude
new file mode 100644
--- /dev/null
+++ b/.git/info/exclude
@@ -0,0 +1,6 @@
+# git ls-files --others --exclude-from=.git/info/exclude
+# Lines that start with '#' are comments.
+# For a project mostly in C, the following would be a good set of
+# exclude patterns (uncomment them if you want to use them):
+# *.[oa]
+# *~
diff --git a/.git/logs/HEAD b/.git/logs/HEAD
new file mode 100644
--- /dev/null
+++ b/.git/logs/HEAD
@@ -0,0 +1,7 @@
+0000000000000000000000000000000000000000 c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 Hamcha <zikyky@gmail.com> 1400868061 +0200	commit (initial): Base commit (most code from httpd)
+c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 b197449e22aa6e00dcbb765294c13b957ad35207 Hamcha <zikyky@gmail.com> 1400868225 +0200	commit: Took some useless stuff out
+b197449e22aa6e00dcbb765294c13b957ad35207 622888f76a4bd37398710e1590463719c2129297 Hamcha <zikyky@gmail.com> 1400868258 +0200	commit: .gitignore to avoid commiting binaries or object files
+622888f76a4bd37398710e1590463719c2129297 d752cbde2090cf51b382e0060e0d13a90ef9dfa8 Hamcha <zikyky@gmail.com> 1400871180 +0200	commit: Basic routing should work
+d752cbde2090cf51b382e0060e0d13a90ef9dfa8 708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 Hamcha <zikyky@gmail.com> 1400871591 +0200	commit: Added types
+708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 722f61d1774f7fbd456a5ab611c54408e61f2cc6 Hamcha <zikyky@gmail.com> 1400872235 +0200	commit: Replaced incorrect 400 errors with 404 ones
+722f61d1774f7fbd456a5ab611c54408e61f2cc6 1093f2858a4572a7a141c96f251f273da4d55c89 Hamcha <zikyky@gmail.com> 1400884141 +0200	commit: Removed some oleg sauce
diff --git a/.git/logs/refs/heads/master b/.git/logs/refs/heads/master
new file mode 100644
--- /dev/null
+++ b/.git/logs/refs/heads/master
@@ -0,0 +1,7 @@
+0000000000000000000000000000000000000000 c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 Hamcha <zikyky@gmail.com> 1400868061 +0200	commit (initial): Base commit (most code from httpd)
+c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 b197449e22aa6e00dcbb765294c13b957ad35207 Hamcha <zikyky@gmail.com> 1400868225 +0200	commit: Took some useless stuff out
+b197449e22aa6e00dcbb765294c13b957ad35207 622888f76a4bd37398710e1590463719c2129297 Hamcha <zikyky@gmail.com> 1400868258 +0200	commit: .gitignore to avoid commiting binaries or object files
+622888f76a4bd37398710e1590463719c2129297 d752cbde2090cf51b382e0060e0d13a90ef9dfa8 Hamcha <zikyky@gmail.com> 1400871180 +0200	commit: Basic routing should work
+d752cbde2090cf51b382e0060e0d13a90ef9dfa8 708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 Hamcha <zikyky@gmail.com> 1400871591 +0200	commit: Added types
+708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 722f61d1774f7fbd456a5ab611c54408e61f2cc6 Hamcha <zikyky@gmail.com> 1400872235 +0200	commit: Replaced incorrect 400 errors with 404 ones
+722f61d1774f7fbd456a5ab611c54408e61f2cc6 1093f2858a4572a7a141c96f251f273da4d55c89 Hamcha <zikyky@gmail.com> 1400884141 +0200	commit: Removed some oleg sauce
diff --git a/.git/logs/refs/remotes/origin/master b/.git/logs/refs/remotes/origin/master
new file mode 100644
--- /dev/null
+++ b/.git/logs/refs/remotes/origin/master
@@ -0,0 +1,6 @@
+0000000000000000000000000000000000000000 c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 Hamcha <zikyky@gmail.com> 1400868072 +0200	update by push
+c1ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 622888f76a4bd37398710e1590463719c2129297 Hamcha <zikyky@gmail.com> 1400868261 +0200	update by push
+622888f76a4bd37398710e1590463719c2129297 d752cbde2090cf51b382e0060e0d13a90ef9dfa8 Hamcha <zikyky@gmail.com> 1400871184 +0200	update by push
+d752cbde2090cf51b382e0060e0d13a90ef9dfa8 708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 Hamcha <zikyky@gmail.com> 1400871595 +0200	update by push
+708b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 722f61d1774f7fbd456a5ab611c54408e61f2cc6 Hamcha <zikyky@gmail.com> 1400872238 +0200	update by push
+722f61d1774f7fbd456a5ab611c54408e61f2cc6 1093f2858a4572a7a141c96f251f273da4d55c89 Hamcha <zikyky@gmail.com> 1400884145 +0200	update by push
diff --git a/.git/objects/02/ffa07f6990f74dafd8c9ce6d8fa39b0976d598 b/.git/objects/02/ffa07f6990f74dafd8c9ce6d8fa39b0976d598
new file mode 100644
Binary files /dev/null and b/.git/objects/02/ffa07f6990f74dafd8c9ce6d8fa39b0976d598 differ
diff --git a/.git/objects/10/93f2858a4572a7a141c96f251f273da4d55c89 b/.git/objects/10/93f2858a4572a7a141c96f251f273da4d55c89
new file mode 100644
Binary files /dev/null and b/.git/objects/10/93f2858a4572a7a141c96f251f273da4d55c89 differ
diff --git a/.git/objects/11/c683f96aaed8fc5cad03cb58c5d1a5cec5f501 b/.git/objects/11/c683f96aaed8fc5cad03cb58c5d1a5cec5f501
new file mode 100644
Binary files /dev/null and b/.git/objects/11/c683f96aaed8fc5cad03cb58c5d1a5cec5f501 differ
diff --git a/.git/objects/23/8fd86cd3c476d75eec0d7ae736adb96dd1cc60 b/.git/objects/23/8fd86cd3c476d75eec0d7ae736adb96dd1cc60
new file mode 100644
Binary files /dev/null and b/.git/objects/23/8fd86cd3c476d75eec0d7ae736adb96dd1cc60 differ
diff --git a/.git/objects/24/e1f1b0b0f51b252eebca5b168a4e17b4700a4c b/.git/objects/24/e1f1b0b0f51b252eebca5b168a4e17b4700a4c
new file mode 100644
Binary files /dev/null and b/.git/objects/24/e1f1b0b0f51b252eebca5b168a4e17b4700a4c differ
diff --git a/.git/objects/2c/b647573d63d84667f629ea1e26e53bd3f16e44 b/.git/objects/2c/b647573d63d84667f629ea1e26e53bd3f16e44
new file mode 100644
Binary files /dev/null and b/.git/objects/2c/b647573d63d84667f629ea1e26e53bd3f16e44 differ
diff --git a/.git/objects/32/4d07aa12666c2f03139f626361d1a810c45bc1 b/.git/objects/32/4d07aa12666c2f03139f626361d1a810c45bc1
new file mode 100644
--- /dev/null
+++ b/.git/objects/32/4d07aa12666c2f03139f626361d1a810c45bc1
@@ -0,0 +1,1 @@
+xÅRÁn1Í:»í¡AÑ	Ò(¨)4"ôPE²«zmÇ7 (ÿÞ1¹¥×ø`Ù~3OïÍóJÛ\|ÎO{§ð}4»ù9º¹Ñk+ª{òÙ8í½´[íVmUÔSYx*Ñcz¬jg=Ácºú]¡¯d¼#lºA¿U6.áÓW^×-Òº®?!rê?øÜFbIJ)b}¥Qàñô²ðm·o@£æèôn_ò)ÏááL\YCh¨·Ø9]x[ÊJªµXvL5­&ët<Ì?î¯­YKâæbÍ\è¿lL"â«!SG¯» l5,²CX6¼1OôUjJV6Þ×Iùq8©uof²F0¼±EÆÐQù<ûÁ¶Ã6¶§#2³Tr@ÀkvµA45ß§}míè@Ä^Ksð.z.ÙR^+jît¯ûIeûFÖæÖá©òoMß4ºâÌd±¸q.`òÏÿ°mé
diff --git a/.git/objects/36/d1bfaedb400023ee2b6ced7d3847183c454838 b/.git/objects/36/d1bfaedb400023ee2b6ced7d3847183c454838
new file mode 100644
--- /dev/null
+++ b/.git/objects/36/d1bfaedb400023ee2b6ced7d3847183c454838
@@ -0,0 +1,2 @@
+x¥TÁn@íxr"$¶RUU¨¸MR5vªÄU³.(K%¶[÷ß;kÔHå`ÏîÌ¼y3oà^È{¼~óêíÃ\M/¿]~ÄÍWB²wZEÉ÷'Ã_¶e[±rÁñëe§Þ­Ì5¹mË"ÛuÈ¶Å©T9Ñ*â>0Í¼ó­æ¨7zaÜ<aiáÔ~Ô¡p¥uñO¹^KõP)©a4ÂÜ7êàÜÉå×¾ÇÕlöå?æ<+ÎÄ+j7Ã[·ÈùtÇuÝm¬è¦°5\æº%MTíkûÈxL¥¾y ò4GÊ^2wï0ibFºÀÉUd<.µ¤\øp2B$ë ä)R¦XÏ3ÐR®ë(ã5ó?_©_ýføåÚ¼HÖ@i`çs)mY+ÍãT0ÍáW<hX8Å(ýéKu¤AÇiiTÁûM,xÈ¶¯¸ÜaßÇ¶°ÛÊiÍíRa>ö\lD»´6êY+tìKØýQß`Pè_ 3mÖÍùT6KE¤ÑÙ/z®ø	¿é7+Æ¿×÷óÿÇÚ×PÇ´x+%ãëÖí«Hh®à$RÃ3óò@»è6T>/üé9
+Ö¡vãôz^ÏmªØ-}4Jq7­®½§×©ÿ*ý¡X,
diff --git a/.git/objects/45/3bd93c26a9e271a06ba2646d2fed80284a3d7e b/.git/objects/45/3bd93c26a9e271a06ba2646d2fed80284a3d7e
new file mode 100644
Binary files /dev/null and b/.git/objects/45/3bd93c26a9e271a06ba2646d2fed80284a3d7e differ
diff --git a/.git/objects/45/fa42399476a801f23b96599909ab8939757cd4 b/.git/objects/45/fa42399476a801f23b96599909ab8939757cd4
new file mode 100644
Binary files /dev/null and b/.git/objects/45/fa42399476a801f23b96599909ab8939757cd4 differ
diff --git a/.git/objects/56/2c5d11641eeb9f7ae77cd0d177fd8c947ed1e9 b/.git/objects/56/2c5d11641eeb9f7ae77cd0d177fd8c947ed1e9
new file mode 100644
Binary files /dev/null and b/.git/objects/56/2c5d11641eeb9f7ae77cd0d177fd8c947ed1e9 differ
diff --git a/.git/objects/58/4b0ea086479c87718b10715c5375a4715e6965 b/.git/objects/58/4b0ea086479c87718b10715c5375a4715e6965
new file mode 100644
Binary files /dev/null and b/.git/objects/58/4b0ea086479c87718b10715c5375a4715e6965 differ
diff --git a/.git/objects/5c/ad4e38d5d9795fd867fe17bdc34c18ac26dfc6 b/.git/objects/5c/ad4e38d5d9795fd867fe17bdc34c18ac26dfc6
new file mode 100644
Binary files /dev/null and b/.git/objects/5c/ad4e38d5d9795fd867fe17bdc34c18ac26dfc6 differ
diff --git a/.git/objects/62/2888f76a4bd37398710e1590463719c2129297 b/.git/objects/62/2888f76a4bd37398710e1590463719c2129297
new file mode 100644
--- /dev/null
+++ b/.git/objects/62/2888f76a4bd37398710e1590463719c2129297
@@ -0,0 +1,2 @@
+xMJ1F]çµêt~AÄ¥×¨TjzÊt$ñô6x·ï}<î­éë×§9DÏR}¸HäÂB³çàmMÁ§ÕÍù¤!û²äè\k V.%óìxYKöêê-FC_óÒ¼SãÁË^×ÇÛÖHo'îíB²>Á3ZDsÐ#mÊ¿$sÚtê¶÷!0;Ðw×
+OºoPt§¡r#¥á	g½ÉÝü|7Q,
diff --git a/.git/objects/63/3f2583dc912547dc4bbb06de8bd1a7c275fcf2 b/.git/objects/63/3f2583dc912547dc4bbb06de8bd1a7c275fcf2
new file mode 100644
Binary files /dev/null and b/.git/objects/63/3f2583dc912547dc4bbb06de8bd1a7c275fcf2 differ
diff --git a/.git/objects/66/5fba0e7ceccafda2b2a4e92e342ff2cbfe8247 b/.git/objects/66/5fba0e7ceccafda2b2a4e92e342ff2cbfe8247
new file mode 100644
--- /dev/null
+++ b/.git/objects/66/5fba0e7ceccafda2b2a4e92e342ff2cbfe8247
@@ -0,0 +1,2 @@
+x+)JMU041c040031QÐKÏ,ÉLÏË/Je`ú¿ >sÂwßõ7NËí_<³ìê PðN-IÎ(-`¼Æò¡EóÃÕ%óËz+¹³EHÚBÍñMÌNMËÌIeh|oz}³³»Èª¥%·øW~ËªI­HÌ-ÈIÕË(f0òe_%£Ï,<?)9ñâ
+#ÑÍ:
diff --git a/.git/objects/69/367db2a6835d21762b09eec97395dd0f1d503e b/.git/objects/69/367db2a6835d21762b09eec97395dd0f1d503e
new file mode 100644
Binary files /dev/null and b/.git/objects/69/367db2a6835d21762b09eec97395dd0f1d503e differ
diff --git a/.git/objects/70/8b4d9119f776f28cc85a2a0f58b4bf1c1e7b43 b/.git/objects/70/8b4d9119f776f28cc85a2a0f58b4bf1c1e7b43
new file mode 100644
--- /dev/null
+++ b/.git/objects/70/8b4d9119f776f28cc85a2a0f58b4bf1c1e7b43
@@ -0,0 +1,2 @@
+xÎM
+Â0@a×9Åìü5Ñ×&[jl©qQOo¯àöÁ/ÍµÆC[EÀùÂÎX":¨±=u¸d)ø²S¯òj7©Ïb0¯{ v(µeB)GÅ6Ì+Ü¹¦áü§mÚ®ÊãóæzícÐ4Ñ ª½îkMþBê³dhÛ"oõÌP@Ú
diff --git a/.git/objects/72/2f61d1774f7fbd456a5ab611c54408e61f2cc6 b/.git/objects/72/2f61d1774f7fbd456a5ab611c54408e61f2cc6
new file mode 100644
Binary files /dev/null and b/.git/objects/72/2f61d1774f7fbd456a5ab611c54408e61f2cc6 differ
diff --git a/.git/objects/81/ef35d79e1603434714aaa57410da0fa9f71e6e b/.git/objects/81/ef35d79e1603434714aaa57410da0fa9f71e6e
new file mode 100644
Binary files /dev/null and b/.git/objects/81/ef35d79e1603434714aaa57410da0fa9f71e6e differ
diff --git a/.git/objects/85/2ae7db61bff45b972b9a21023e162f5003d74d b/.git/objects/85/2ae7db61bff45b972b9a21023e162f5003d74d
new file mode 100644
--- /dev/null
+++ b/.git/objects/85/2ae7db61bff45b972b9a21023e162f5003d74d
@@ -0,0 +1,1 @@
+x±jÃ0;ü?dIi	H!vKv¡³b"m9'¹¥¾{%7vª¶Ó}Ü}ÿ[Ärµºù3<mwíî/oÄ­Wô>²ëO3ñUeÑy=¶Gy®e1G¢º²XàÝS]7x8ªuÆÆ½JV~&BTÿc²¶o3\_a\ß43»°TC¼[d1±o¢ó=çÉ°KQ¢2Ã¾¥Së5ªßâîO}¡600eU¦ÌécZ2¥ËJÍZjöÃ«ué\¹okßsð
diff --git a/.git/objects/8a/4e26e09c96d9bd95bbefa4c2cde4fbf8087382 b/.git/objects/8a/4e26e09c96d9bd95bbefa4c2cde4fbf8087382
new file mode 100644
--- /dev/null
+++ b/.git/objects/8a/4e26e09c96d9bd95bbefa4c2cde4fbf8087382
@@ -0,0 +1,1 @@
+xKÊÉOR0·`HÌÉ±RH­HÌ-ÈIååâå2­x¹8Ó3a2zÅ ÉäÔÄ<TQ®^¾>ÔËÈ332Ißå
diff --git a/.git/objects/93/ac39e13883ec31ab749f768d790b6b14a0193d b/.git/objects/93/ac39e13883ec31ab749f768d790b6b14a0193d
new file mode 100644
Binary files /dev/null and b/.git/objects/93/ac39e13883ec31ab749f768d790b6b14a0193d differ
diff --git a/.git/objects/a4/52888e3b29d25f2f4b06e3f1cae1ddba210add b/.git/objects/a4/52888e3b29d25f2f4b06e3f1cae1ddba210add
new file mode 100644
--- /dev/null
+++ b/.git/objects/a4/52888e3b29d25f2f4b06e3f1cae1ddba210add
@@ -0,0 +1,1 @@
+xEÐAKÃ0`Ïþì¢²vUAv¨UeÎÒæÓ²¤K¿¨Cüï&ÛÔBÞäÉÔÊÔpv~rðávz7{Î®áþ­2\ x"+õ[Ãø;DN!,¸ÔðÑ¢Å°(W±ÿã©i]Ì:ñ¯WòU¢+N<)6;xEZ®×[-Àâ.@hØµxÄNm¶ÙiByÈ.&Ô/7²QÉ?iÜÒJ±ê¨ò@ßÝûØwÓßÀóEÒÝpe§Ðæ/Æ»öäfuÎFÎªËÆu÷XµS}âge8²ýð/¡6(é=_.3¤vÏû}«q1
diff --git a/.git/objects/b1/97449e22aa6e00dcbb765294c13b957ad35207 b/.git/objects/b1/97449e22aa6e00dcbb765294c13b957ad35207
new file mode 100644
--- /dev/null
+++ b/.git/objects/b1/97449e22aa6e00dcbb765294c13b957ad35207
@@ -0,0 +1,3 @@
+xÎM
+Â0@a×9ÅìN~ÚKà&ÉDK&]èéõ
+n|ðb-eî@äv}cuH^GrìÆÑ&g\¢,iBë4zñ*Ïql	)AmÀ>zKä#JÊcÊ!Ö·~¯+\¸Ä;Ãñ3/ïå}¾XË	8¹ÈÂ	Qýêo­Ë_H]k] Õ"°5yHkÐú3Ô­«/THg
diff --git a/.git/objects/b6/3279c85b76f94cc28de65c1a8c2f65c1814e7e b/.git/objects/b6/3279c85b76f94cc28de65c1a8c2f65c1814e7e
new file mode 100644
Binary files /dev/null and b/.git/objects/b6/3279c85b76f94cc28de65c1a8c2f65c1814e7e differ
diff --git a/.git/objects/c1/ef5202b4e0351ba9c95229c0edf7dfbfb9bb33 b/.git/objects/c1/ef5202b4e0351ba9c95229c0edf7dfbfb9bb33
new file mode 100644
--- /dev/null
+++ b/.git/objects/c1/ef5202b4e0351ba9c95229c0edf7dfbfb9bb33
@@ -0,0 +1,2 @@
+xA
+Â0E]ç³T1i¸òcÚRH;.êéxïÃã¿TDFÍFç¡·lÎg{fËÔ¶!4xGJb²Éß:n,i`8}ÆiÖËCx|R3C>¢'ØãÑÔµ^iþK2W^2üTØJY´BW;ç"0¨¾ºù¢;U
diff --git a/.git/objects/c6/56325a56d86c044bb5136b9e8dafa421c4f758 b/.git/objects/c6/56325a56d86c044bb5136b9e8dafa421c4f758
new file mode 100644
Binary files /dev/null and b/.git/objects/c6/56325a56d86c044bb5136b9e8dafa421c4f758 differ
diff --git a/.git/objects/cf/ed5d601e7c6661a4c95c652d865834a2960cc4 b/.git/objects/cf/ed5d601e7c6661a4c95c652d865834a2960cc4
new file mode 100644
--- /dev/null
+++ b/.git/objects/cf/ed5d601e7c6661a4c95c652d865834a2960cc4
@@ -0,0 +1,1 @@
+x+)JMU041c040031QÐKÏ,ÉLÏË/Je`ú¿ >sÂwßõ7NËí_<³ìê PðN-IÎ(-`xûîý½¦+%ÕOû_ýöC\~í¨9¾Ù©i9©ïM¯ÏcvvYµ´DàÿÊïryP5©¹9©zÅK:ú¬5/Åë{³=þxêáÝ]\w]>¿
diff --git a/.git/objects/d7/52cbde2090cf51b382e0060e0d13a90ef9dfa8 b/.git/objects/d7/52cbde2090cf51b382e0060e0d13a90ef9dfa8
new file mode 100644
--- /dev/null
+++ b/.git/objects/d7/52cbde2090cf51b382e0060e0d13a90ef9dfa8
@@ -0,0 +1,1 @@
+xÎMjÃ0@á®uÙÊh¬èB	Yõãñ(¢¢Èôôõº}ðÁVk@äÞFWïOyfÔ *Âya&ÒÉQÎ$sÖH.oîúàb9xvó2)Å`Qí)¡óS°IÈR¢ïcm¾¸ÊÊpþ-Ûk{]nËýCZýël#Â;¢9ê±6ô_È\ùYzÛGyÜà¹¶ý¾ÀOëù:©F¤
diff --git a/.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 b/.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391
new file mode 100644
Binary files /dev/null and b/.git/objects/e6/9de29bb2d1d6434b8b29ae775ad8c2e48c5391 differ
diff --git a/.git/objects/e8/7a4422a7db2bee721ce1a88d5286ca1570d36a b/.git/objects/e8/7a4422a7db2bee721ce1a88d5286ca1570d36a
new file mode 100644
Binary files /dev/null and b/.git/objects/e8/7a4422a7db2bee721ce1a88d5286ca1570d36a differ
diff --git a/.git/objects/ed/eeef90bd35a9192643cb4fd5f6e108171fadb4 b/.git/objects/ed/eeef90bd35a9192643cb4fd5f6e108171fadb4
new file mode 100644
Binary files /dev/null and b/.git/objects/ed/eeef90bd35a9192643cb4fd5f6e108171fadb4 differ
diff --git a/.git/objects/f3/073c846e4efaa3a1997750b01c078c36a14718 b/.git/objects/f3/073c846e4efaa3a1997750b01c078c36a14718
new file mode 100644
Binary files /dev/null and b/.git/objects/f3/073c846e4efaa3a1997750b01c078c36a14718 differ
diff --git a/.git/objects/fb/f8eefabf8c61b21569f198ed873cc8558acd68 b/.git/objects/fb/f8eefabf8c61b21569f198ed873cc8558acd68
new file mode 100644
--- /dev/null
+++ b/.git/objects/fb/f8eefabf8c61b21569f198ed873cc8558acd68
@@ -0,0 +1,3 @@
+x¥SMOÜ0í9RþÃÓ´ié©BÊÒJe[	Zõ8ìm,9qðìÒíg¬Ó%R¥ú<oß¼±o¾ÁÑÑÛ7¯~îáüäËÙ÷³øz/Ò~é¬Zìþ£8ª4÷Jà³p·¥o²í¥ã(¡PÄQR
+âHV6w)¹ã=s,;];ÑfEÉÌ;0b
+¼`M_y+Høä\ÃÛã:¸º%«9i5âÎëÃ2~±Ýèó¡01ÇM1.£qQÏH¼2E²$bwbkÞFãZì£aUöåº@­yö ­´ÿ	òÞÙþkñw#éty£àDÕ(æòú'²ù!][]BÒßY¸ªé¼[{p@®°îsíæ+ä9Öm<^9¾O»h«"«½RX`­®É¦LÙ´ÈJÁ8Ñ÷üx8úéI#Ò¡¹µó×ó¶ç^_èøwóÁ¹ÖÏíÀ^2t-®Î%}K©0Hjí&3ÐHw\7¸ÿÛè3ß§ÝLf³Ù,Ýµ~ÚÏ¤ÈÝDV£©ÛGzÿ?­} ¹Cn
diff --git a/.git/refs/heads/master b/.git/refs/heads/master
new file mode 100644
--- /dev/null
+++ b/.git/refs/heads/master
@@ -0,0 +1,1 @@
+1093f2858a4572a7a141c96f251f273da4d55c89
diff --git a/.git/refs/remotes/origin/master b/.git/refs/remotes/origin/master
new file mode 100644
--- /dev/null
+++ b/.git/refs/remotes/origin/master
@@ -0,0 +1,1 @@
+1093f2858a4572a7a141c96f251f273da4d55c89
diff --git a/.gitignore b/.gitignore
new file mode 100644
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,3 @@
+*.hi
+*.o
+example
diff --git a/Ketchup.cabal b/Ketchup.cabal
new file mode 100644
--- /dev/null
+++ b/Ketchup.cabal
@@ -0,0 +1,29 @@
+Name:           Ketchup
+Version:        0.1.0
+Cabal-Version:  >= 1.6
+Build-Type:     Simple
+License:        MIT
+License-File:   LICENSE
+Author:         Alessandro Gatti
+Maintainer:     zikyky@gmail.com
+Homepage:       https://github.com/Hamcha/Ketchup
+Category:       Web, Ketchup
+Synopsis:       A super small web framework for those who don't like big and fancy codebases
+
+Library
+  Exposed-Modules:
+    Ketchup.Httpd,
+    Ketchup.Routing
+
+  Other-Modules:
+    Ketchup.Utils
+
+  Build-Depends:
+    base          ==4.*,
+    containers    >=0.2 && <0.6,
+    network        <2.5,
+    bytestring    >=0.9 && <0.11
+
+Source-Repository head
+  type:       git
+  location:   git://github.com/Hamcha/Ketchup.git
diff --git a/Ketchup/Httpd.hs b/Ketchup/Httpd.hs
new file mode 100644
--- /dev/null
+++ b/Ketchup/Httpd.hs
@@ -0,0 +1,138 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Ketchup.Httpd
+( HTTPRequest
+, method, uri, httpver, headers
+, statusMsg
+, sendReply
+, listenHTTP
+, sendBadRequest
+, sendNotFound
+) where
+
+import           Control.Concurrent (forkIO)
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Char8 as C
+import qualified Data.Map as Map
+import qualified Data.List as List
+import           Network
+import qualified Network.Socket as NS
+import           Network.Socket.ByteString
+import           Ketchup.Utils
+import           System.IO
+
+-- HTTP Request type
+data HTTPRequest = HTTPRequest { method  :: B.ByteString
+                               , uri     :: B.ByteString
+                               , httpver :: B.ByteString
+                               , headers :: Map.Map B.ByteString [B.ByteString]
+                               } deriving (Show)
+
+-- Returns status message from status id
+statusMsg :: Int -> B.ByteString
+statusMsg stat
+    -- 200 Success
+    | stat == 200 = "200 OK"
+    | stat == 201 = "201 Created"
+    | stat == 204 = "204 No Content"
+    -- 400 Client Errors
+    | stat == 400 = "400 Bad Request"
+    | stat == 403 = "403 Forbidden"
+    | stat == 404 = "404 Not Found"
+    | stat == 405 = "405 Method Not Allowed"
+    | stat == 410 = "410 Gone"
+    -- 500 Server Errors
+    | stat == 500 = "500 Internal Server Error"
+    | stat == 501 = "501 Not Implemented"
+    | stat == 502 = "502 Bad Gateway"
+    | stat == 503 = "503 Service Unavailable"
+    | otherwise   = "500 Internal Server Error"
+
+sendBadRequest :: Socket -> IO ()
+sendBadRequest client = do
+    sendReply client 400 [("Content-Type",["text/plain"])] "400 Bad Request!\n"
+
+sendNotFound :: Socket -> IO ()
+sendNotFound client = do
+    sendReply client 404 [("Content-Type",["text/plain"])] "404 Not Found!\n"
+
+-- Sends HTTP reply
+sendReply :: Socket -> Int -> [(B.ByteString, [B.ByteString])] -> B.ByteString -> IO ()
+sendReply client status headers body = do
+    sendAll client reply
+    where
+    reply = B.concat ["HTTP/1.1 ", statusMsg status,"\r\n\
+        \Server: Ketchup\r\n\
+        \Content-Length: ", C.pack $ show $ C.length body, "\r\n\
+        \Connection: close\r\n",heads,"\r\n",body]
+    -- Turn ("a", ["b", "c"]) headers into "a: b,c"
+    heads = B.concat $ map (\x -> B.concat [fst x, ": ", B.concat $ List.intersperse "," $ snd x, "\r\n"]) headers
+
+-- Parses header lines
+parseRequestLine :: B.ByteString -> (B.ByteString, [B.ByteString])
+parseRequestLine line =
+    (property, values)
+    where
+    property = head items
+    values = C.split ',' $ (trim . last) items
+    items = C.split ':' line
+
+-- Gets all request lines
+getRequest :: Socket -> IO [B.ByteString]
+getRequest client = do
+    content <- recv client 1024
+    return $ C.lines content
+
+-- Parses requests
+parseRequest :: [B.ByteString] -> HTTPRequest
+parseRequest reqlines =
+    HTTPRequest { method=met, uri=ur, httpver=ver, headers=heads }
+    where
+    [met, ur, ver] = (C.words . head) reqlines -- First line is METHOD URI VERSION
+    heads = Map.fromList $ map parseRequestLine $ tail reqlines
+
+-- Handles each client request
+handleRequest :: Socket -> (Socket -> HTTPRequest -> IO ()) -> IO ()
+handleRequest client cback = do
+    reqlines <- getRequest client
+    case length reqlines of
+        0 -> sendBadRequest client
+        _ -> cback client $ parseRequest reqlines
+    sClose client
+
+-- Acceptor
+acceptAll :: Socket -> (Socket -> HTTPRequest -> IO ()) -> IO ()
+acceptAll sock cback = do
+    (client, _) <- NS.accept sock
+    handleRequest client cback
+    acceptAll sock cback
+
+-- Creates Acceptor pools
+createAcceptorPool :: Socket -> Int -> (Socket -> HTTPRequest -> IO ()) -> IO ()
+createAcceptorPool sock max cback =
+    case max of
+        0 -> acceptAll sock cback
+        x -> do
+            forkIO $ acceptAll sock cback
+            createAcceptorPool sock (x-1) cback
+
+-- Gets host from hostname string
+getHostaddr :: String -> IO NS.HostAddress
+getHostaddr "*"  = return NS.iNADDR_ANY
+getHostaddr host = NS.inet_addr host
+
+-- Listens for incoming HTTP request
+listenHTTP :: String -> PortNumber -> (Socket -> HTTPRequest -> IO ()) -> IO ()
+listenHTTP hostname port cback = withSocketsDo $ do
+    -- Get hostname
+    host <- getHostaddr hostname
+    let addr = NS.SockAddrInet port host
+    -- Prepare Socket
+    sock <- NS.socket NS.AF_INET NS.Stream 0
+    NS.setSocketOption sock NS.ReuseAddr 1
+    NS.setSocketOption sock NS.NoDelay 1
+    -- Bind socket to address and listen
+    NS.bindSocket sock addr
+    NS.listen sock 128
+    createAcceptorPool sock 128 cback
+    sClose sock
diff --git a/Ketchup/Routing.hs b/Ketchup/Routing.hs
new file mode 100644
--- /dev/null
+++ b/Ketchup/Routing.hs
@@ -0,0 +1,40 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Ketchup.Routing
+( route
+) where
+
+import qualified Data.ByteString.Char8 as C
+import qualified Data.Map as M
+import           Ketchup.Httpd
+import           Network
+
+route :: [(C.ByteString, (Socket -> HTTPRequest -> (M.Map C.ByteString C.ByteString) -> IO ()))]
+         -> (Socket -> HTTPRequest -> IO ())
+route []         handle request = sendNotFound handle
+route (r:routes) handle request
+    | match (uri request) (fst r) = (snd r) handle request $ params (uri request) (fst r)
+    | otherwise                   = route routes handle request
+
+match :: C.ByteString -> C.ByteString -> Bool
+match url template =
+    and $ zipWith compare urlparts tmpparts
+    where
+    compare x y
+        | x == y                  = True
+        | or [C.null y, C.null x] = False
+        | C.head y == ':'         = True
+        | otherwise               = False
+    urlparts = C.split '/' url
+    tmpparts = C.split '/' template
+
+params :: C.ByteString -> C.ByteString -> M.Map C.ByteString C.ByteString
+params url template =
+    M.fromList $ filter (not . C.null . fst) $ zipWith retrieve urlparts tmpparts
+    where
+    retrieve x y
+        | or [C.null y, C.null x] = ("","")
+        | C.head y == ':'         = (C.tail y, x)
+        | otherwise               = ("","")
+    urlparts = C.split '/' url
+    tmpparts = C.split '/' template
diff --git a/Ketchup/Utils.hs b/Ketchup/Utils.hs
new file mode 100644
--- /dev/null
+++ b/Ketchup/Utils.hs
@@ -0,0 +1,14 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Ketchup.Utils
+( trim
+) where
+
+import qualified Data.ByteString as B
+import qualified Data.ByteString.Char8 as C
+import           Data.Char (isSpace)
+
+-- Util function for trimming whitespace from headers
+trim :: B.ByteString -> B.ByteString
+trim = f . f
+    where f = C.reverse . C.dropWhile isSpace
diff --git a/LICENSE b/LICENSE
new file mode 100644
--- /dev/null
+++ b/LICENSE
@@ -0,0 +1,21 @@
+The MIT License (MIT)
+
+Copyright (c) 2014 Alessandro Gatti
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in
+all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+THE SOFTWARE.
diff --git a/Makefile b/Makefile
new file mode 100644
--- /dev/null
+++ b/Makefile
@@ -0,0 +1,8 @@
+all: example
+
+example:
+	ghc example.hs
+
+clean:
+	rm -rf ./example
+	rm -rf *.o */*.o *.hi */*.hi
diff --git a/Setup.hs b/Setup.hs
new file mode 100644
--- /dev/null
+++ b/Setup.hs
@@ -0,0 +1,4 @@
+import Ketchup.Httpd
+import Ketchup.Routing
+
+main = defaultMain
diff --git a/dist/build/HSKetchup-0.1.0.o b/dist/build/HSKetchup-0.1.0.o
new file mode 100644
Binary files /dev/null and b/dist/build/HSKetchup-0.1.0.o differ
diff --git a/dist/build/Ketchup/Httpd.hi b/dist/build/Ketchup/Httpd.hi
new file mode 100644
Binary files /dev/null and b/dist/build/Ketchup/Httpd.hi differ
diff --git a/dist/build/Ketchup/Httpd.o b/dist/build/Ketchup/Httpd.o
new file mode 100644
Binary files /dev/null and b/dist/build/Ketchup/Httpd.o differ
diff --git a/dist/build/Ketchup/Routing.hi b/dist/build/Ketchup/Routing.hi
new file mode 100644
Binary files /dev/null and b/dist/build/Ketchup/Routing.hi differ
diff --git a/dist/build/Ketchup/Routing.o b/dist/build/Ketchup/Routing.o
new file mode 100644
Binary files /dev/null and b/dist/build/Ketchup/Routing.o differ
diff --git a/dist/build/Ketchup/Utils.hi b/dist/build/Ketchup/Utils.hi
new file mode 100644
Binary files /dev/null and b/dist/build/Ketchup/Utils.hi differ
diff --git a/dist/build/Ketchup/Utils.o b/dist/build/Ketchup/Utils.o
new file mode 100644
Binary files /dev/null and b/dist/build/Ketchup/Utils.o differ
diff --git a/dist/build/autogen/Paths_Ketchup.hs b/dist/build/autogen/Paths_Ketchup.hs
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/Paths_Ketchup.hs
@@ -0,0 +1,34 @@
+module Paths_Ketchup (
+    version,
+    getBinDir, getLibDir, getDataDir, getLibexecDir,
+    getDataFileName
+  ) where
+
+import qualified Control.Exception as Exception
+import Data.Version (Version(..))
+import System.Environment (getEnv)
+import Prelude
+
+catchIO :: IO a -> (Exception.IOException -> IO a) -> IO a
+catchIO = Exception.catch
+
+
+version :: Version
+version = Version {versionBranch = [0,1,0], versionTags = []}
+bindir, libdir, datadir, libexecdir :: FilePath
+
+bindir     = "/root/.cabal/bin"
+libdir     = "/root/.cabal/lib/Ketchup-0.1.0/ghc-7.6.3"
+datadir    = "/root/.cabal/share/Ketchup-0.1.0"
+libexecdir = "/root/.cabal/libexec"
+
+getBinDir, getLibDir, getDataDir, getLibexecDir :: IO FilePath
+getBinDir = catchIO (getEnv "Ketchup_bindir") (\_ -> return bindir)
+getLibDir = catchIO (getEnv "Ketchup_libdir") (\_ -> return libdir)
+getDataDir = catchIO (getEnv "Ketchup_datadir") (\_ -> return datadir)
+getLibexecDir = catchIO (getEnv "Ketchup_libexecdir") (\_ -> return libexecdir)
+
+getDataFileName :: FilePath -> IO FilePath
+getDataFileName name = do
+  dir <- getDataDir
+  return (dir ++ "/" ++ name)
diff --git a/dist/build/autogen/cabal_macros.h b/dist/build/autogen/cabal_macros.h
new file mode 100644
--- /dev/null
+++ b/dist/build/autogen/cabal_macros.h
@@ -0,0 +1,30 @@
+/* DO NOT EDIT: This file is automatically generated by Cabal */
+
+/* package base-4.6.0.1 */
+#define VERSION_base "4.6.0.1"
+#define MIN_VERSION_base(major1,major2,minor) (\
+  (major1) <  4 || \
+  (major1) == 4 && (major2) <  6 || \
+  (major1) == 4 && (major2) == 6 && (minor) <= 0)
+
+/* package bytestring-0.10.0.2 */
+#define VERSION_bytestring "0.10.0.2"
+#define MIN_VERSION_bytestring(major1,major2,minor) (\
+  (major1) <  0 || \
+  (major1) == 0 && (major2) <  10 || \
+  (major1) == 0 && (major2) == 10 && (minor) <= 0)
+
+/* package containers-0.5.0.0 */
+#define VERSION_containers "0.5.0.0"
+#define MIN_VERSION_containers(major1,major2,minor) (\
+  (major1) <  0 || \
+  (major1) == 0 && (major2) <  5 || \
+  (major1) == 0 && (major2) == 5 && (minor) <= 0)
+
+/* package network-2.4.1.2 */
+#define VERSION_network "2.4.1.2"
+#define MIN_VERSION_network(major1,major2,minor) (\
+  (major1) <  2 || \
+  (major1) == 2 && (major2) <  4 || \
+  (major1) == 2 && (major2) == 4 && (minor) <= 1)
+
diff --git a/dist/build/libHSKetchup-0.1.0.a b/dist/build/libHSKetchup-0.1.0.a
new file mode 100644
Binary files /dev/null and b/dist/build/libHSKetchup-0.1.0.a differ
diff --git a/dist/package.conf.inplace b/dist/package.conf.inplace
new file mode 100644
--- /dev/null
+++ b/dist/package.conf.inplace
@@ -0,0 +1,2 @@
+[InstalledPackageInfo {installedPackageId = InstalledPackageId "Ketchup-0.1.0-inplace", sourcePackageId = PackageIdentifier {pkgName = PackageName "Ketchup", pkgVersion = Version {versionBranch = [0,1,0], versionTags = []}}, license = MIT, copyright = "", maintainer = "zikyky@gmail.com", author = "Alessandro Gatti", stability = "", homepage = "https://github.com/Hamcha/Ketchup", pkgUrl = "", synopsis = "A super small web framework for those who don't like big and fancy codebases", description = "", category = "Web, Ketchup", exposed = True, exposedModules = ["Ketchup.Httpd","Ketchup.Routing"], hiddenModules = ["Ketchup.Utils"], trusted = False, importDirs = ["/root/ketchup/dist/build"], libraryDirs = ["/root/ketchup/dist/build"], hsLibraries = ["HSKetchup-0.1.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageId "containers-0.5.0.0-ab1dae9a94cd3cc84e7b2805636ebfa2",InstalledPackageId "network-2.4.1.2-5be4ce21effbb1a11c3b90006afd63d9"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/root/ketchup/dist/doc/html/Ketchup/Ketchup.haddock"], haddockHTMLs = ["/root/ketchup/dist/doc/html/Ketchup"]}
+]
diff --git a/dist/setup-config b/dist/setup-config
new file mode 100644
--- /dev/null
+++ b/dist/setup-config
@@ -0,0 +1,2 @@
+Saved package config for Ketchup-0.1.0 written by Cabal-1.16.0 using ghc-7.6
+LocalBuildInfo {configFlags = ConfigFlags {configPrograms = [], configProgramPaths = [], configProgramArgs = [], configHcFlavor = Flag GHC, configHcPath = NoFlag, configHcPkg = NoFlag, configVanillaLib = Flag True, configProfLib = Flag False, configSharedLib = Flag False, configDynExe = Flag False, configProfExe = Flag False, configConfigureArgs = [], configOptimization = Flag NormalOptimisation, configProgPrefix = Flag "", configProgSuffix = Flag "", configInstallDirs = InstallDirs {prefix = Flag "/root/.cabal", bindir = NoFlag, libdir = NoFlag, libsubdir = NoFlag, dynlibdir = NoFlag, libexecdir = NoFlag, progdir = NoFlag, includedir = NoFlag, datadir = NoFlag, datasubdir = NoFlag, docdir = NoFlag, mandir = NoFlag, htmldir = NoFlag, haddockdir = NoFlag}, configScratchDir = NoFlag, configExtraLibDirs = [], configExtraIncludeDirs = [], configDistPref = Flag "dist", configVerbosity = Flag Normal, configUserInstall = Flag True, configPackageDBs = [], configGHCiLib = Flag True, configSplitObjs = Flag False, configStripExes = Flag True, configConstraints = [Dependency (PackageName "network") (ThisVersion (Version {versionBranch = [2,4,1,2], versionTags = []})),Dependency (PackageName "containers") (ThisVersion (Version {versionBranch = [0,5,0,0], versionTags = []})),Dependency (PackageName "bytestring") (ThisVersion (Version {versionBranch = [0,10,0,2], versionTags = []})),Dependency (PackageName "base") (ThisVersion (Version {versionBranch = [4,6,0,1], versionTags = []}))], configConfigurationsFlags = [], configTests = Flag False, configBenchmarks = Flag False, configLibCoverage = Flag False}, extraConfigArgs = [], installDirTemplates = InstallDirs {prefix = "/root/.cabal", bindir = "$prefix/bin", libdir = "$prefix/lib", libsubdir = "$pkgid/$compiler", dynlibdir = "$libdir", libexecdir = "$prefix/libexec", progdir = "$libdir/hugs/programs", includedir = "$libdir/$libsubdir/include", datadir = "$prefix/share", datasubdir = "$pkgid", docdir = "$datadir/doc/$pkgid", mandir = "$datadir/man", htmldir = "$docdir/html", haddockdir = "$htmldir"}, compiler = Compiler {compilerId = CompilerId GHC (Version {versionBranch = [7,6,3], versionTags = []}), compilerLanguages = [(Haskell98,"-XHaskell98"),(Haskell2010,"-XHaskell2010")], compilerExtensions = [(UnknownExtension "Haskell98","-XHaskell98"),(UnknownExtension "Haskell2010","-XHaskell2010"),(UnknownExtension "Unsafe","-XUnsafe"),(EnableExtension Trustworthy,"-XTrustworthy"),(EnableExtension Safe,"-XSafe"),(EnableExtension CPP,"-XCPP"),(DisableExtension CPP,"-XNoCPP"),(EnableExtension PostfixOperators,"-XPostfixOperators"),(DisableExtension PostfixOperators,"-XNoPostfixOperators"),(EnableExtension TupleSections,"-XTupleSections"),(DisableExtension TupleSections,"-XNoTupleSections"),(EnableExtension PatternGuards,"-XPatternGuards"),(DisableExtension PatternGuards,"-XNoPatternGuards"),(EnableExtension UnicodeSyntax,"-XUnicodeSyntax"),(DisableExtension UnicodeSyntax,"-XNoUnicodeSyntax"),(EnableExtension MagicHash,"-XMagicHash"),(DisableExtension MagicHash,"-XNoMagicHash"),(EnableExtension PolymorphicComponents,"-XPolymorphicComponents"),(DisableExtension PolymorphicComponents,"-XNoPolymorphicComponents"),(EnableExtension ExistentialQuantification,"-XExistentialQuantification"),(DisableExtension ExistentialQuantification,"-XNoExistentialQuantification"),(EnableExtension KindSignatures,"-XKindSignatures"),(DisableExtension KindSignatures,"-XNoKindSignatures"),(EnableExtension EmptyDataDecls,"-XEmptyDataDecls"),(DisableExtension EmptyDataDecls,"-XNoEmptyDataDecls"),(EnableExtension ParallelListComp,"-XParallelListComp"),(DisableExtension ParallelListComp,"-XNoParallelListComp"),(EnableExtension TransformListComp,"-XTransformListComp"),(DisableExtension TransformListComp,"-XNoTransformListComp"),(UnknownExtension "MonadComprehensions","-XMonadComprehensions"),(UnknownExtension "NoMonadComprehensions","-XNoMonadComprehensions"),(EnableExtension ForeignFunctionInterface,"-XForeignFunctionInterface"),(DisableExtension ForeignFunctionInterface,"-XNoForeignFunctionInterface"),(EnableExtension UnliftedFFITypes,"-XUnliftedFFITypes"),(DisableExtension UnliftedFFITypes,"-XNoUnliftedFFITypes"),(UnknownExtension "InterruptibleFFI","-XInterruptibleFFI"),(UnknownExtension "NoInterruptibleFFI","-XNoInterruptibleFFI"),(UnknownExtension "CApiFFI","-XCApiFFI"),(UnknownExtension "NoCApiFFI","-XNoCApiFFI"),(EnableExtension GHCForeignImportPrim,"-XGHCForeignImportPrim"),(DisableExtension GHCForeignImportPrim,"-XNoGHCForeignImportPrim"),(EnableExtension LiberalTypeSynonyms,"-XLiberalTypeSynonyms"),(DisableExtension LiberalTypeSynonyms,"-XNoLiberalTypeSynonyms"),(EnableExtension Rank2Types,"-XRank2Types"),(DisableExtension Rank2Types,"-XNoRank2Types"),(EnableExtension RankNTypes,"-XRankNTypes"),(DisableExtension RankNTypes,"-XNoRankNTypes"),(EnableExtension ImpredicativeTypes,"-XImpredicativeTypes"),(DisableExtension ImpredicativeTypes,"-XNoImpredicativeTypes"),(EnableExtension TypeOperators,"-XTypeOperators"),(DisableExtension TypeOperators,"-XNoTypeOperators"),(UnknownExtension "ExplicitNamespaces","-XExplicitNamespaces"),(UnknownExtension "NoExplicitNamespaces","-XNoExplicitNamespaces"),(EnableExtension RecursiveDo,"-XRecursiveDo"),(DisableExtension RecursiveDo,"-XNoRecursiveDo"),(EnableExtension DoRec,"-XDoRec"),(DisableExtension DoRec,"-XNoDoRec"),(EnableExtension Arrows,"-XArrows"),(DisableExtension Arrows,"-XNoArrows"),(UnknownExtension "ParallelArrays","-XParallelArrays"),(UnknownExtension "NoParallelArrays","-XNoParallelArrays"),(EnableExtension TemplateHaskell,"-XTemplateHaskell"),(DisableExtension TemplateHaskell,"-XNoTemplateHaskell"),(EnableExtension QuasiQuotes,"-XQuasiQuotes"),(DisableExtension QuasiQuotes,"-XNoQuasiQuotes"),(EnableExtension ImplicitPrelude,"-XImplicitPrelude"),(DisableExtension ImplicitPrelude,"-XNoImplicitPrelude"),(EnableExtension RecordWildCards,"-XRecordWildCards"),(DisableExtension RecordWildCards,"-XNoRecordWildCards"),(EnableExtension NamedFieldPuns,"-XNamedFieldPuns"),(DisableExtension NamedFieldPuns,"-XNoNamedFieldPuns"),(EnableExtension RecordPuns,"-XRecordPuns"),(DisableExtension RecordPuns,"-XNoRecordPuns"),(EnableExtension DisambiguateRecordFields,"-XDisambiguateRecordFields"),(DisableExtension DisambiguateRecordFields,"-XNoDisambiguateRecordFields"),(EnableExtension OverloadedStrings,"-XOverloadedStrings"),(DisableExtension OverloadedStrings,"-XNoOverloadedStrings"),(EnableExtension GADTs,"-XGADTs"),(DisableExtension GADTs,"-XNoGADTs"),(EnableExtension GADTSyntax,"-XGADTSyntax"),(DisableExtension GADTSyntax,"-XNoGADTSyntax"),(EnableExtension ViewPatterns,"-XViewPatterns"),(DisableExtension ViewPatterns,"-XNoViewPatterns"),(EnableExtension TypeFamilies,"-XTypeFamilies"),(DisableExtension TypeFamilies,"-XNoTypeFamilies"),(EnableExtension BangPatterns,"-XBangPatterns"),(DisableExtension BangPatterns,"-XNoBangPatterns"),(EnableExtension MonomorphismRestriction,"-XMonomorphismRestriction"),(DisableExtension MonomorphismRestriction,"-XNoMonomorphismRestriction"),(EnableExtension NPlusKPatterns,"-XNPlusKPatterns"),(DisableExtension NPlusKPatterns,"-XNoNPlusKPatterns"),(EnableExtension DoAndIfThenElse,"-XDoAndIfThenElse"),(DisableExtension DoAndIfThenElse,"-XNoDoAndIfThenElse"),(EnableExtension RebindableSyntax,"-XRebindableSyntax"),(DisableExtension RebindableSyntax,"-XNoRebindableSyntax"),(EnableExtension ConstraintKinds,"-XConstraintKinds"),(DisableExtension ConstraintKinds,"-XNoConstraintKinds"),(UnknownExtension "PolyKinds","-XPolyKinds"),(UnknownExtension "NoPolyKinds","-XNoPolyKinds"),(UnknownExtension "DataKinds","-XDataKinds"),(UnknownExtension "NoDataKinds","-XNoDataKinds"),(UnknownExtension "InstanceSigs","-XInstanceSigs"),(UnknownExtension "NoInstanceSigs","-XNoInstanceSigs"),(EnableExtension MonoPatBinds,"-XMonoPatBinds"),(DisableExtension MonoPatBinds,"-XNoMonoPatBinds"),(EnableExtension ExplicitForAll,"-XExplicitForAll"),(DisableExtension ExplicitForAll,"-XNoExplicitForAll"),(UnknownExtension "AlternativeLayoutRule","-XAlternativeLayoutRule"),(UnknownExtension "NoAlternativeLayoutRule","-XNoAlternativeLayoutRule"),(UnknownExtension "AlternativeLayoutRuleTransitional","-XAlternativeLayoutRuleTransitional"),(UnknownExtension "NoAlternativeLayoutRuleTransitional","-XNoAlternativeLayoutRuleTransitional"),(EnableExtension DatatypeContexts,"-XDatatypeContexts"),(DisableExtension DatatypeContexts,"-XNoDatatypeContexts"),(EnableExtension NondecreasingIndentation,"-XNondecreasingIndentation"),(DisableExtension NondecreasingIndentation,"-XNoNondecreasingIndentation"),(UnknownExtension "RelaxedLayout","-XRelaxedLayout"),(UnknownExtension "NoRelaxedLayout","-XNoRelaxedLayout"),(UnknownExtension "TraditionalRecordSyntax","-XTraditionalRecordSyntax"),(UnknownExtension "NoTraditionalRecordSyntax","-XNoTraditionalRecordSyntax"),(UnknownExtension "LambdaCase","-XLambdaCase"),(UnknownExtension "NoLambdaCase","-XNoLambdaCase"),(UnknownExtension "MultiWayIf","-XMultiWayIf"),(UnknownExtension "NoMultiWayIf","-XNoMultiWayIf"),(EnableExtension MonoLocalBinds,"-XMonoLocalBinds"),(DisableExtension MonoLocalBinds,"-XNoMonoLocalBinds"),(EnableExtension RelaxedPolyRec,"-XRelaxedPolyRec"),(DisableExtension RelaxedPolyRec,"-XNoRelaxedPolyRec"),(EnableExtension ExtendedDefaultRules,"-XExtendedDefaultRules"),(DisableExtension ExtendedDefaultRules,"-XNoExtendedDefaultRules"),(EnableExtension ImplicitParams,"-XImplicitParams"),(DisableExtension ImplicitParams,"-XNoImplicitParams"),(EnableExtension ScopedTypeVariables,"-XScopedTypeVariables"),(DisableExtension ScopedTypeVariables,"-XNoScopedTypeVariables"),(EnableExtension PatternSignatures,"-XPatternSignatures"),(DisableExtension PatternSignatures,"-XNoPatternSignatures"),(EnableExtension UnboxedTuples,"-XUnboxedTuples"),(DisableExtension UnboxedTuples,"-XNoUnboxedTuples"),(EnableExtension StandaloneDeriving,"-XStandaloneDeriving"),(DisableExtension StandaloneDeriving,"-XNoStandaloneDeriving"),(EnableExtension DeriveDataTypeable,"-XDeriveDataTypeable"),(DisableExtension DeriveDataTypeable,"-XNoDeriveDataTypeable"),(EnableExtension DeriveFunctor,"-XDeriveFunctor"),(DisableExtension DeriveFunctor,"-XNoDeriveFunctor"),(EnableExtension DeriveTraversable,"-XDeriveTraversable"),(DisableExtension DeriveTraversable,"-XNoDeriveTraversable"),(EnableExtension DeriveFoldable,"-XDeriveFoldable"),(DisableExtension DeriveFoldable,"-XNoDeriveFoldable"),(UnknownExtension "DeriveGeneric","-XDeriveGeneric"),(UnknownExtension "NoDeriveGeneric","-XNoDeriveGeneric"),(UnknownExtension "DefaultSignatures","-XDefaultSignatures"),(UnknownExtension "NoDefaultSignatures","-XNoDefaultSignatures"),(EnableExtension TypeSynonymInstances,"-XTypeSynonymInstances"),(DisableExtension TypeSynonymInstances,"-XNoTypeSynonymInstances"),(EnableExtension FlexibleContexts,"-XFlexibleContexts"),(DisableExtension FlexibleContexts,"-XNoFlexibleContexts"),(EnableExtension FlexibleInstances,"-XFlexibleInstances"),(DisableExtension FlexibleInstances,"-XNoFlexibleInstances"),(EnableExtension ConstrainedClassMethods,"-XConstrainedClassMethods"),(DisableExtension ConstrainedClassMethods,"-XNoConstrainedClassMethods"),(EnableExtension MultiParamTypeClasses,"-XMultiParamTypeClasses"),(DisableExtension MultiParamTypeClasses,"-XNoMultiParamTypeClasses"),(EnableExtension FunctionalDependencies,"-XFunctionalDependencies"),(DisableExtension FunctionalDependencies,"-XNoFunctionalDependencies"),(EnableExtension GeneralizedNewtypeDeriving,"-XGeneralizedNewtypeDeriving"),(DisableExtension GeneralizedNewtypeDeriving,"-XNoGeneralizedNewtypeDeriving"),(EnableExtension OverlappingInstances,"-XOverlappingInstances"),(DisableExtension OverlappingInstances,"-XNoOverlappingInstances"),(EnableExtension UndecidableInstances,"-XUndecidableInstances"),(DisableExtension UndecidableInstances,"-XNoUndecidableInstances"),(EnableExtension IncoherentInstances,"-XIncoherentInstances"),(DisableExtension IncoherentInstances,"-XNoIncoherentInstances"),(EnableExtension PackageImports,"-XPackageImports"),(DisableExtension PackageImports,"-XNoPackageImports")]}, buildDir = "dist/build", scratchDir = "dist/scratch", libraryConfig = Just (ComponentLocalBuildInfo {componentPackageDeps = [(InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,6,0,1], versionTags = []}}),(InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",PackageIdentifier {pkgName = PackageName "bytestring", pkgVersion = Version {versionBranch = [0,10,0,2], versionTags = []}}),(InstalledPackageId "containers-0.5.0.0-ab1dae9a94cd3cc84e7b2805636ebfa2",PackageIdentifier {pkgName = PackageName "containers", pkgVersion = Version {versionBranch = [0,5,0,0], versionTags = []}}),(InstalledPackageId "network-2.4.1.2-5be4ce21effbb1a11c3b90006afd63d9",PackageIdentifier {pkgName = PackageName "network", pkgVersion = Version {versionBranch = [2,4,1,2], versionTags = []}})]}), executableConfigs = [], compBuildOrder = [CLibName], testSuiteConfigs = [], benchmarkConfigs = [], installedPkgs = PackageIndex (fromList [(InstalledPackageId "array-0.4.0.1-3b78425c10ff2dad7acf7e8c8ae014c3",InstalledPackageInfo {installedPackageId = InstalledPackageId "array-0.4.0.1-3b78425c10ff2dad7acf7e8c8ae014c3", sourcePackageId = PackageIdentifier {pkgName = PackageName "array", pkgVersion = Version {versionBranch = [0,4,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Mutable and immutable arrays", description = "This package defines the classes @IArray@ of immutable arrays and\n@MArray@ of arrays mutable within appropriate monads, as well as\nsome instances of these classes.", category = "Data Structures", exposed = True, exposedModules = [ModuleName ["Data","Array","Base"],ModuleName ["Data","Array","IArray"],ModuleName ["Data","Array","IO"],ModuleName ["Data","Array","IO","Safe"],ModuleName ["Data","Array","IO","Internals"],ModuleName ["Data","Array","MArray"],ModuleName ["Data","Array","MArray","Safe"],ModuleName ["Data","Array","ST"],ModuleName ["Data","Array","ST","Safe"],ModuleName ["Data","Array","Storable"],ModuleName ["Data","Array","Storable","Safe"],ModuleName ["Data","Array","Storable","Internals"],ModuleName ["Data","Array","Unboxed"],ModuleName ["Data","Array","Unsafe"],ModuleName ["Data","Array"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/array-0.4.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/array-0.4.0.1"], hsLibraries = ["HSarray-0.4.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/array-0.4.0.1/array.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/array-0.4.0.1"]}),(InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,6,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Basic libraries", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Char"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Fingerprint"],ModuleName ["GHC","Fingerprint","Type"],ModuleName ["GHC","Float"],ModuleName ["GHC","Float","ConversionUtils"],ModuleName ["GHC","Float","RealFracMethods"],ModuleName ["GHC","Foreign"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","Generics"],ModuleName ["GHC","GHCi"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Encoding","Failure"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","IORef"],ModuleName ["GHC","IP"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","MVar"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","Stack"],ModuleName ["GHC","Stats"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","STRef"],ModuleName ["GHC","TypeLits"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["GHC","Event"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Safe"],ModuleName ["Control","Monad","ST","Unsafe"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Lazy","Safe"],ModuleName ["Control","Monad","ST","Lazy","Unsafe"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Control","Monad","Zip"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Typeable","Internal"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","ForeignPtr","Safe"],ModuleName ["Foreign","ForeignPtr","Unsafe"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Safe"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Marshal","Unsafe"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","Safe"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [ModuleName ["GHC","Event","Array"],ModuleName ["GHC","Event","Clock"],ModuleName ["GHC","Event","Control"],ModuleName ["GHC","Event","EPoll"],ModuleName ["GHC","Event","IntMap"],ModuleName ["GHC","Event","Internal"],ModuleName ["GHC","Event","KQueue"],ModuleName ["GHC","Event","Manager"],ModuleName ["GHC","Event","PSQ"],ModuleName ["GHC","Event","Poll"],ModuleName ["GHC","Event","Thread"],ModuleName ["GHC","Event","Unique"],ModuleName ["Control","Monad","ST","Imp"],ModuleName ["Control","Monad","ST","Lazy","Imp"],ModuleName ["Foreign","ForeignPtr","Imp"],ModuleName ["System","Environment","ExecutablePath"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/base-4.6.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/base-4.6.0.1"], hsLibraries = ["HSbase-4.6.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/base-4.6.0.1/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd",InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/base-4.6.0.1/base.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/base-4.6.0.1"]}),(InstalledPackageId "builtin_rts",InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], trusted = False, importDirs = [], libraryDirs = ["/usr/local/lib/ghc-7.6.3"], hsLibraries = ["HSrts"], extraLibraries = ["m","ffi"], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/include"], includes = ["Stg.h"], depends = [], hugsOptions = [], ccOptions = [], ldOptions = ["-u","ghczmprim_GHCziTypes_Izh_static_info","-u","ghczmprim_GHCziTypes_Czh_static_info","-u","ghczmprim_GHCziTypes_Fzh_static_info","-u","ghczmprim_GHCziTypes_Dzh_static_info","-u","base_GHCziPtr_Ptr_static_info","-u","ghczmprim_GHCziTypes_Wzh_static_info","-u","base_GHCziInt_I8zh_static_info","-u","base_GHCziInt_I16zh_static_info","-u","base_GHCziInt_I32zh_static_info","-u","base_GHCziInt_I64zh_static_info","-u","base_GHCziWord_W8zh_static_info","-u","base_GHCziWord_W16zh_static_info","-u","base_GHCziWord_W32zh_static_info","-u","base_GHCziWord_W64zh_static_info","-u","base_GHCziStable_StablePtr_static_info","-u","ghczmprim_GHCziTypes_Izh_con_info","-u","ghczmprim_GHCziTypes_Czh_con_info","-u","ghczmprim_GHCziTypes_Fzh_con_info","-u","ghczmprim_GHCziTypes_Dzh_con_info","-u","base_GHCziPtr_Ptr_con_info","-u","base_GHCziPtr_FunPtr_con_info","-u","base_GHCziStable_StablePtr_con_info","-u","ghczmprim_GHCziTypes_False_closure","-u","ghczmprim_GHCziTypes_True_closure","-u","base_GHCziPack_unpackCString_closure","-u","base_GHCziIOziException_stackOverflow_closure","-u","base_GHCziIOziException_heapOverflow_closure","-u","base_ControlziExceptionziBase_nonTermination_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","base_ControlziExceptionziBase_nestedAtomically_closure","-u","base_GHCziWeak_runFinalizzerBatch_closure","-u","base_GHCziTopHandler_flushStdHandles_closure","-u","base_GHCziTopHandler_runIO_closure","-u","base_GHCziTopHandler_runNonIO_closure","-u","base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","base_GHCziConcziSync_runSparks_closure","-u","base_GHCziConcziSignal_runHandlers_closure","-L/usr/local/lib"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}),(InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageInfo {installedPackageId = InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43", sourcePackageId = PackageIdentifier {pkgName = PackageName "bytestring", pkgVersion = Version {versionBranch = [0,10,0,2], versionTags = []}}, license = BSD3, copyright = "Copyright (c) Don Stewart          2005-2009,\n(c) Duncan Coutts        2006-2012,\n(c) David Roundy         2003-2005,\n(c) Jasper Van der Jeugt 2010,\n(c) Simon Meier          2010-2011.", maintainer = "Don Stewart <dons00@gmail.com>,\nDuncan Coutts <duncan@community.haskell.org>", author = "Don Stewart,\nDuncan Coutts", stability = "", homepage = "", pkgUrl = "", synopsis = "Fast, compact, strict and lazy byte strings with a list interface", description = "An efficient compact, immutable byte string type (both strict and lazy)\nsuitable for binary or 8-bit character data.\n\nThe 'ByteString' type represents sequences of bytes or 8-bit characters.\nIt is suitable for high performance use, both in terms of large data\nquantities, or high speed requirements. The 'ByteStrin'g functions follow\nthe same style as Haskell\\'s ordinary lists, so it is easy to convert code\nfrom using 'String' to 'ByteString'.\n\nTwo 'ByteString' variants are provided:\n\n* Strict 'ByteString's keep the string as a single large array. This\nmakes them convenient for passing data between C and Haskell.\n\n* Lazy 'ByteString's use a lazy list of strict chunks which makes it\nsuitable for I\\/O streaming tasks.\n\nThe @Char8@ modules provide a character-based view of the same\nunderlying 'ByteString' types. This makes it convenient to handle mixed\nbinary and 8-bit character content (which is common in many file formats\nand network protocols).\n\nThe 'Builder' module provides an efficient way to build up 'ByteString's\nin an ad-hoc way by repeated concatenation. This is ideal for fast\nserialisation or pretty printing.\n\n'ByteString's are not designed for Unicode. For Unicode strings you should\nuse the 'Text' type from the @text@ package.\n\nThese modules are intended to be imported qualified, to avoid name clashes\nwith \"Prelude\" functions, e.g.\n\n> import qualified Data.ByteString as BS", category = "Data", exposed = True, exposedModules = [ModuleName ["Data","ByteString"],ModuleName ["Data","ByteString","Char8"],ModuleName ["Data","ByteString","Unsafe"],ModuleName ["Data","ByteString","Internal"],ModuleName ["Data","ByteString","Lazy"],ModuleName ["Data","ByteString","Lazy","Char8"],ModuleName ["Data","ByteString","Lazy","Internal"],ModuleName ["Data","ByteString","Lazy","Builder"],ModuleName ["Data","ByteString","Lazy","Builder","Extras"],ModuleName ["Data","ByteString","Lazy","Builder","ASCII"]], hiddenModules = [ModuleName ["Data","ByteString","Lazy","Builder","Internal"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Extras"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Internal"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Binary"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","ASCII"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Internal","Floating"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Internal","UncheckedShifts"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Internal","Base16"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/bytestring-0.10.0.2"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/bytestring-0.10.0.2"], hsLibraries = ["HSbytestring-0.10.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/bytestring-0.10.0.2/include"], includes = ["fpstring.h"], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926",InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/bytestring-0.10.0.2/bytestring.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/bytestring-0.10.0.2"]}),(InstalledPackageId "containers-0.5.0.0-ab1dae9a94cd3cc84e7b2805636ebfa2",InstalledPackageInfo {installedPackageId = InstalledPackageId "containers-0.5.0.0-ab1dae9a94cd3cc84e7b2805636ebfa2", sourcePackageId = PackageIdentifier {pkgName = PackageName "containers", pkgVersion = Version {versionBranch = [0,5,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "fox@ucw.cz", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Assorted concrete container types", description = "This package contains efficient general-purpose implementations\nof various basic immutable container types.  The declared cost of\neach operation is either worst-case or amortized, but remains\nvalid even if structures are shared.", category = "Data Structures", exposed = True, exposedModules = [ModuleName ["Data","Graph"],ModuleName ["Data","Sequence"],ModuleName ["Data","Tree"],ModuleName ["Data","IntMap"],ModuleName ["Data","IntMap","Lazy"],ModuleName ["Data","IntMap","Strict"],ModuleName ["Data","IntSet"],ModuleName ["Data","Map"],ModuleName ["Data","Map","Lazy"],ModuleName ["Data","Map","Strict"],ModuleName ["Data","Set"]], hiddenModules = [ModuleName ["Data","IntMap","Base"],ModuleName ["Data","IntSet","Base"],ModuleName ["Data","Map","Base"],ModuleName ["Data","Set","Base"],ModuleName ["Data","StrictPair"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/containers-0.5.0.0"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/containers-0.5.0.0"], hsLibraries = ["HScontainers-0.5.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "array-0.4.0.1-3b78425c10ff2dad7acf7e8c8ae014c3",InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926",InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/containers-0.5.0.0/containers.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/containers-0.5.0.0"]}),(InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926",InstalledPackageInfo {installedPackageId = InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926", sourcePackageId = PackageIdentifier {pkgName = PackageName "deepseq", pkgVersion = Version {versionBranch = [1,3,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Deep evaluation of data structures", description = "This package provides methods for fully evaluating data structures\n(\\\"deep evaluation\\\"). Deep evaluation is often used for adding\nstrictness to a program, e.g. in order to force pending exceptions,\nremove space leaks, or force lazy I/O to happen. It is also useful\nin parallel programs, to ensure pending work does not migrate to the\nwrong thread.\n\nThe primary use of this package is via the 'deepseq' function, a\n\\\"deep\\\" version of 'seq'. It is implemented on top of an 'NFData'\ntypeclass (\\\"Normal Form Data\\\", data structures with no unevaluated\ncomponents) which defines strategies for fully evaluating different\ndata types.\n", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","DeepSeq"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/deepseq-1.3.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/deepseq-1.3.0.1"], hsLibraries = ["HSdeepseq-1.3.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "array-0.4.0.1-3b78425c10ff2dad7acf7e8c8ae014c3",InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/deepseq-1.3.0.1/deepseq.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/deepseq-1.3.0.1"]}),(InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd",InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "GHC primitives", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Classes"],ModuleName ["GHC","CString"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Magic"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/ghc-prim-0.3.0.0"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/ghc-prim-0.3.0.0"], hsLibraries = ["HSghc-prim-0.3.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/ghc-prim-0.3.0.0/ghc-prim.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/ghc-prim-0.3.0.0"]}),(InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7",InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,5,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Integer library based on GMP", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"],ModuleName ["GHC","Integer","GMP","Prim"],ModuleName ["GHC","Integer","Logarithms"],ModuleName ["GHC","Integer","Logarithms","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/integer-gmp-0.5.0.0"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/integer-gmp-0.5.0.0","/usr/local/lib"], hsLibraries = ["HSinteger-gmp-0.5.0.0"], extraLibraries = ["gmp"], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/integer-gmp-0.5.0.0/integer-gmp.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/integer-gmp-0.5.0.0"]}),(InstalledPackageId "mtl-2.1.2-94c72af955e94b8d7b2f359dadd0cb62",InstalledPackageInfo {installedPackageId = InstalledPackageId "mtl-2.1.2-94c72af955e94b8d7b2f359dadd0cb62", sourcePackageId = PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,1,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Edward Kmett <ekmett@gmail.com>", author = "Andy Gill", stability = "", homepage = "http://github.com/ekmett/mtl", pkgUrl = "", synopsis = "Monad classes, using functional dependencies", description = "Monad classes using functional dependencies, with instances\nfor various monad transformers, inspired by the paper\n/Functional Programming with Overloading and Higher-Order Polymorphism/,\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","Cont"],ModuleName ["Control","Monad","Cont","Class"],ModuleName ["Control","Monad","Error"],ModuleName ["Control","Monad","Error","Class"],ModuleName ["Control","Monad","Identity"],ModuleName ["Control","Monad","List"],ModuleName ["Control","Monad","RWS"],ModuleName ["Control","Monad","RWS","Class"],ModuleName ["Control","Monad","RWS","Lazy"],ModuleName ["Control","Monad","RWS","Strict"],ModuleName ["Control","Monad","Reader"],ModuleName ["Control","Monad","Reader","Class"],ModuleName ["Control","Monad","State"],ModuleName ["Control","Monad","State","Class"],ModuleName ["Control","Monad","State","Lazy"],ModuleName ["Control","Monad","State","Strict"],ModuleName ["Control","Monad","Trans"],ModuleName ["Control","Monad","Writer"],ModuleName ["Control","Monad","Writer","Class"],ModuleName ["Control","Monad","Writer","Lazy"],ModuleName ["Control","Monad","Writer","Strict"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/mtl-2.1.2"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/mtl-2.1.2","/usr/local/lib"], hsLibraries = ["HSmtl-2.1.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "transformers-0.3.0.0-ff2bb6ac67241ebb987351a3db564af0"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/mtl-2.1.2/html/mtl.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/mtl-2.1.2/html"]}),(InstalledPackageId "network-2.4.1.2-5be4ce21effbb1a11c3b90006afd63d9",InstalledPackageInfo {installedPackageId = InstalledPackageId "network-2.4.1.2-5be4ce21effbb1a11c3b90006afd63d9", sourcePackageId = PackageIdentifier {pkgName = PackageName "network", pkgVersion = Version {versionBranch = [2,4,1,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Johan Tibell <johan.tibell@gmail.com>", author = "", stability = "", homepage = "https://github.com/haskell/network", pkgUrl = "", synopsis = "Low-level networking interface", description = "Low-level networking interface", category = "Network", exposed = True, exposedModules = [ModuleName ["Network"],ModuleName ["Network","BSD"],ModuleName ["Network","Socket"],ModuleName ["Network","Socket","ByteString"],ModuleName ["Network","Socket","ByteString","Lazy"],ModuleName ["Network","Socket","Internal"],ModuleName ["Network","URI"]], hiddenModules = [ModuleName ["Network","Socket","ByteString","IOVec"],ModuleName ["Network","Socket","ByteString","MsgHdr"],ModuleName ["Network","Socket","ByteString","Internal"],ModuleName ["Network","Socket","Types"]], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/network-2.4.1.2"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/network-2.4.1.2","/usr/local/lib"], hsLibraries = ["HSnetwork-2.4.1.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include","/usr/local/lib/cabal/ghc-7.6.3/network-2.4.1.2/include"], includes = ["HsNet.h"], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageId "parsec-3.1.3-7d16ef6a60127910ee03cf1d43ace489",InstalledPackageId "unix-2.6.0.1-0331dd8b9407cabaa0b542d86de016a7"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/network-2.4.1.2/html/network.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/network-2.4.1.2/html"]}),(InstalledPackageId "old-locale-1.0.0.5-6729cb9d9cc62d150655de8fc5401b91",InstalledPackageInfo {installedPackageId = InstalledPackageId "old-locale-1.0.0.5-6729cb9d9cc62d150655de8fc5401b91", sourcePackageId = PackageIdentifier {pkgName = PackageName "old-locale", pkgVersion = Version {versionBranch = [1,0,0,5], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "locale library", description = "This package provides the ability to adapt to\nlocale conventions such as date and time formats.", category = "System", exposed = True, exposedModules = [ModuleName ["System","Locale"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/old-locale-1.0.0.5"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/old-locale-1.0.0.5"], hsLibraries = ["HSold-locale-1.0.0.5"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/old-locale-1.0.0.5/old-locale.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/old-locale-1.0.0.5"]}),(InstalledPackageId "parsec-3.1.3-7d16ef6a60127910ee03cf1d43ace489",InstalledPackageInfo {installedPackageId = InstalledPackageId "parsec-3.1.3-7d16ef6a60127910ee03cf1d43ace489", sourcePackageId = PackageIdentifier {pkgName = PackageName "parsec", pkgVersion = Version {versionBranch = [3,1,3], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Antoine Latter <aslatter@gmail.com>", author = "Daan Leijen <daan@microsoft.com>, Paolo Martini <paolo@nemail.it>", stability = "", homepage = "http://www.cs.uu.nl/~daan/parsec.html", pkgUrl = "", synopsis = "Monadic parser combinators", description = "Parsec is designed from scratch as an industrial-strength parser\nlibrary.  It is simple, safe, well documented (on the package\nhomepage), has extensive libraries and good error messages,\nand is also fast.  It is defined as a monad transformer that can be\nstacked on arbitrary monads, and it is also parametric in the\ninput stream type.", category = "Parsing", exposed = True, exposedModules = [ModuleName ["Text","Parsec"],ModuleName ["Text","Parsec","String"],ModuleName ["Text","Parsec","ByteString"],ModuleName ["Text","Parsec","ByteString","Lazy"],ModuleName ["Text","Parsec","Text"],ModuleName ["Text","Parsec","Text","Lazy"],ModuleName ["Text","Parsec","Pos"],ModuleName ["Text","Parsec","Error"],ModuleName ["Text","Parsec","Prim"],ModuleName ["Text","Parsec","Char"],ModuleName ["Text","Parsec","Combinator"],ModuleName ["Text","Parsec","Token"],ModuleName ["Text","Parsec","Expr"],ModuleName ["Text","Parsec","Language"],ModuleName ["Text","Parsec","Perm"],ModuleName ["Text","ParserCombinators","Parsec"],ModuleName ["Text","ParserCombinators","Parsec","Char"],ModuleName ["Text","ParserCombinators","Parsec","Combinator"],ModuleName ["Text","ParserCombinators","Parsec","Error"],ModuleName ["Text","ParserCombinators","Parsec","Expr"],ModuleName ["Text","ParserCombinators","Parsec","Language"],ModuleName ["Text","ParserCombinators","Parsec","Perm"],ModuleName ["Text","ParserCombinators","Parsec","Pos"],ModuleName ["Text","ParserCombinators","Parsec","Prim"],ModuleName ["Text","ParserCombinators","Parsec","Token"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/parsec-3.1.3"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/parsec-3.1.3","/usr/local/lib"], hsLibraries = ["HSparsec-3.1.3"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageId "mtl-2.1.2-94c72af955e94b8d7b2f359dadd0cb62",InstalledPackageId "text-0.11.3.1-b49365bcfaf3954e4484c36c86c98126"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/parsec-3.1.3/html/parsec.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/parsec-3.1.3/html"]}),(InstalledPackageId "text-0.11.3.1-b49365bcfaf3954e4484c36c86c98126",InstalledPackageInfo {installedPackageId = InstalledPackageId "text-0.11.3.1-b49365bcfaf3954e4484c36c86c98126", sourcePackageId = PackageIdentifier {pkgName = PackageName "text", pkgVersion = Version {versionBranch = [0,11,3,1], versionTags = []}}, license = BSD3, copyright = "2009-2011 Bryan O'Sullivan, 2008-2009 Tom Harper", maintainer = "Bryan O'Sullivan <bos@serpentine.com>", author = "Bryan O'Sullivan <bos@serpentine.com>", stability = "", homepage = "https://github.com/bos/text", pkgUrl = "", synopsis = "An efficient packed Unicode text type.", description = "\nAn efficient packed, immutable Unicode text type (both strict and\nlazy), with a powerful loop fusion optimization framework.\n\nThe 'Text' type represents Unicode character strings, in a time and\nspace-efficient manner. This package provides text processing\ncapabilities that are optimized for performance critical use, both\nin terms of large data quantities and high speed.\n\nThe 'Text' type provides character-encoding, type-safe case\nconversion via whole-string case conversion functions. It also\nprovides a range of functions for converting 'Text' values to and from\n'ByteStrings', using several standard encodings.\n\nEfficient locale-sensitive support for text IO is also supported.\n\nThese modules are intended to be imported qualified, to avoid name\nclashes with Prelude functions, e.g.\n\n> import qualified Data.Text as T\n\nTo use an extended and very rich family of functions for working\nwith Unicode text (including normalization, regular expressions,\nnon-standard encodings, text breaking, and locales), see\nthe @text-icu@ package:\n<http://hackage.haskell.org/package/text-icu>\n\n&#8212;&#8212; RELEASE NOTES &#8212;&#8212;\n\nChanges in 0.11.2.0:\n\n* String literals are now converted directly from the format in\nwhich GHC stores them into 'Text', without an intermediate\ntransformation through 'String', and without inlining of\nconversion code at each site where a string literal is declared.\n", category = "Data, Text", exposed = True, exposedModules = [ModuleName ["Data","Text"],ModuleName ["Data","Text","Array"],ModuleName ["Data","Text","Encoding"],ModuleName ["Data","Text","Encoding","Error"],ModuleName ["Data","Text","Foreign"],ModuleName ["Data","Text","IO"],ModuleName ["Data","Text","Internal"],ModuleName ["Data","Text","Lazy"],ModuleName ["Data","Text","Lazy","Builder"],ModuleName ["Data","Text","Lazy","Builder","Int"],ModuleName ["Data","Text","Lazy","Builder","RealFloat"],ModuleName ["Data","Text","Lazy","Encoding"],ModuleName ["Data","Text","Lazy","IO"],ModuleName ["Data","Text","Lazy","Internal"],ModuleName ["Data","Text","Lazy","Read"],ModuleName ["Data","Text","Read"],ModuleName ["Data","Text","Unsafe"]], hiddenModules = [ModuleName ["Data","Text","Encoding","Fusion"],ModuleName ["Data","Text","Encoding","Fusion","Common"],ModuleName ["Data","Text","Encoding","Utf16"],ModuleName ["Data","Text","Encoding","Utf32"],ModuleName ["Data","Text","Encoding","Utf8"],ModuleName ["Data","Text","Fusion"],ModuleName ["Data","Text","Fusion","CaseMapping"],ModuleName ["Data","Text","Fusion","Common"],ModuleName ["Data","Text","Fusion","Internal"],ModuleName ["Data","Text","Fusion","Size"],ModuleName ["Data","Text","IO","Internal"],ModuleName ["Data","Text","Lazy","Builder","Functions"],ModuleName ["Data","Text","Lazy","Builder","Int","Digits"],ModuleName ["Data","Text","Lazy","Builder","Internal"],ModuleName ["Data","Text","Lazy","Builder","RealFloat","Functions"],ModuleName ["Data","Text","Lazy","Encoding","Fusion"],ModuleName ["Data","Text","Lazy","Fusion"],ModuleName ["Data","Text","Lazy","Search"],ModuleName ["Data","Text","Private"],ModuleName ["Data","Text","Search"],ModuleName ["Data","Text","Unsafe","Base"],ModuleName ["Data","Text","UnsafeChar"],ModuleName ["Data","Text","UnsafeShift"],ModuleName ["Data","Text","Util"]], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/text-0.11.3.1"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/text-0.11.3.1","/usr/local/lib"], hsLibraries = ["HStext-0.11.3.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "array-0.4.0.1-3b78425c10ff2dad7acf7e8c8ae014c3",InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926",InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd",InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/text-0.11.3.1/html/text.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/text-0.11.3.1/html"]}),(InstalledPackageId "time-1.4.0.1-10dc4804a19dc0000fab79908f1a9f50",InstalledPackageInfo {installedPackageId = InstalledPackageId "time-1.4.0.1-10dc4804a19dc0000fab79908f1a9f50", sourcePackageId = PackageIdentifier {pkgName = PackageName "time", pkgVersion = Version {versionBranch = [1,4,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "<ashley@semantic.org>", author = "Ashley Yakeley", stability = "stable", homepage = "http://semantic.org/TimeLib/", pkgUrl = "", synopsis = "A time library", description = "A time library", category = "System", exposed = True, exposedModules = [ModuleName ["Data","Time","Calendar"],ModuleName ["Data","Time","Calendar","MonthDay"],ModuleName ["Data","Time","Calendar","OrdinalDate"],ModuleName ["Data","Time","Calendar","WeekDate"],ModuleName ["Data","Time","Calendar","Julian"],ModuleName ["Data","Time","Calendar","Easter"],ModuleName ["Data","Time","Clock"],ModuleName ["Data","Time","Clock","POSIX"],ModuleName ["Data","Time","Clock","TAI"],ModuleName ["Data","Time","LocalTime"],ModuleName ["Data","Time","Format"],ModuleName ["Data","Time"]], hiddenModules = [ModuleName ["Data","Time","Calendar","Private"],ModuleName ["Data","Time","Calendar","Days"],ModuleName ["Data","Time","Calendar","Gregorian"],ModuleName ["Data","Time","Calendar","JulianYearDay"],ModuleName ["Data","Time","Clock","Scale"],ModuleName ["Data","Time","Clock","UTC"],ModuleName ["Data","Time","Clock","CTimeval"],ModuleName ["Data","Time","Clock","UTCDiff"],ModuleName ["Data","Time","LocalTime","TimeZone"],ModuleName ["Data","Time","LocalTime","TimeOfDay"],ModuleName ["Data","Time","LocalTime","LocalTime"],ModuleName ["Data","Time","Format","Parse"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/time-1.4.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/time-1.4.0.1"], hsLibraries = ["HStime-1.4.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/time-1.4.0.1/include"], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926",InstalledPackageId "old-locale-1.0.0.5-6729cb9d9cc62d150655de8fc5401b91"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/time-1.4.0.1/time.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/time-1.4.0.1"]}),(InstalledPackageId "transformers-0.3.0.0-ff2bb6ac67241ebb987351a3db564af0",InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.3.0.0-ff2bb6ac67241ebb987351a3db564af0", sourcePackageId = PackageIdentifier {pkgName = PackageName "transformers", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Ross Paterson <ross@soi.city.ac.uk>", author = "Andy Gill, Ross Paterson", stability = "", homepage = "", pkgUrl = "", synopsis = "Concrete functor and monad transformers", description = "A portable library of functor and monad transformers, inspired by\nthe paper \\\"Functional Programming with Overloading and Higher-Order\nPolymorphism\\\", by Mark P Jones,\nin /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).\n\nThis package contains:\n\n* the monad transformer class (in \"Control.Monad.Trans.Class\")\n\n* concrete functor and monad transformers, each with associated\noperations and functions to lift operations associated with other\ntransformers.\n\nIt can be used on its own in portable Haskell code, or with the monad\nclasses in the @mtl@ or @monads-tf@ packages, which automatically\nlift operations introduced by monad transformers through other\ntransformers.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Applicative","Backwards"],ModuleName ["Control","Applicative","Lift"],ModuleName ["Control","Monad","IO","Class"],ModuleName ["Control","Monad","Trans","Class"],ModuleName ["Control","Monad","Trans","Cont"],ModuleName ["Control","Monad","Trans","Error"],ModuleName ["Control","Monad","Trans","Identity"],ModuleName ["Control","Monad","Trans","List"],ModuleName ["Control","Monad","Trans","Maybe"],ModuleName ["Control","Monad","Trans","Reader"],ModuleName ["Control","Monad","Trans","RWS"],ModuleName ["Control","Monad","Trans","RWS","Lazy"],ModuleName ["Control","Monad","Trans","RWS","Strict"],ModuleName ["Control","Monad","Trans","State"],ModuleName ["Control","Monad","Trans","State","Lazy"],ModuleName ["Control","Monad","Trans","State","Strict"],ModuleName ["Control","Monad","Trans","Writer"],ModuleName ["Control","Monad","Trans","Writer","Lazy"],ModuleName ["Control","Monad","Trans","Writer","Strict"],ModuleName ["Data","Functor","Compose"],ModuleName ["Data","Functor","Constant"],ModuleName ["Data","Functor","Identity"],ModuleName ["Data","Functor","Product"],ModuleName ["Data","Functor","Reverse"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/transformers-0.3.0.0"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/transformers-0.3.0.0","/usr/local/lib"], hsLibraries = ["HStransformers-0.3.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/transformers-0.3.0.0/html/transformers.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/transformers-0.3.0.0/html"]}),(InstalledPackageId "unix-2.6.0.1-0331dd8b9407cabaa0b542d86de016a7",InstalledPackageInfo {installedPackageId = InstalledPackageId "unix-2.6.0.1-0331dd8b9407cabaa0b542d86de016a7", sourcePackageId = PackageIdentifier {pkgName = PackageName "unix", pkgVersion = Version {versionBranch = [2,6,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "POSIX functionality", description = "This package gives you access to the set of operating system\nservices standardised by POSIX 1003.1b (or the IEEE Portable\nOperating System Interface for Computing Environments -\nIEEE Std. 1003.1).\n\nThe package is not supported under Windows (except under Cygwin).", category = "System", exposed = True, exposedModules = [ModuleName ["System","Posix"],ModuleName ["System","Posix","ByteString"],ModuleName ["System","Posix","Error"],ModuleName ["System","Posix","Resource"],ModuleName ["System","Posix","Time"],ModuleName ["System","Posix","Unistd"],ModuleName ["System","Posix","User"],ModuleName ["System","Posix","Signals"],ModuleName ["System","Posix","Signals","Exts"],ModuleName ["System","Posix","Semaphore"],ModuleName ["System","Posix","SharedMem"],ModuleName ["System","Posix","ByteString","FilePath"],ModuleName ["System","Posix","Directory"],ModuleName ["System","Posix","Directory","ByteString"],ModuleName ["System","Posix","DynamicLinker","Module"],ModuleName ["System","Posix","DynamicLinker","Module","ByteString"],ModuleName ["System","Posix","DynamicLinker","Prim"],ModuleName ["System","Posix","DynamicLinker","ByteString"],ModuleName ["System","Posix","DynamicLinker"],ModuleName ["System","Posix","Files"],ModuleName ["System","Posix","Files","ByteString"],ModuleName ["System","Posix","IO"],ModuleName ["System","Posix","IO","ByteString"],ModuleName ["System","Posix","Env"],ModuleName ["System","Posix","Env","ByteString"],ModuleName ["System","Posix","Process"],ModuleName ["System","Posix","Process","Internals"],ModuleName ["System","Posix","Process","ByteString"],ModuleName ["System","Posix","Temp"],ModuleName ["System","Posix","Temp","ByteString"],ModuleName ["System","Posix","Terminal"],ModuleName ["System","Posix","Terminal","ByteString"]], hiddenModules = [ModuleName ["System","Posix","Directory","Common"],ModuleName ["System","Posix","DynamicLinker","Common"],ModuleName ["System","Posix","Files","Common"],ModuleName ["System","Posix","IO","Common"],ModuleName ["System","Posix","Process","Common"],ModuleName ["System","Posix","Terminal","Common"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/unix-2.6.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/unix-2.6.0.1"], hsLibraries = ["HSunix-2.6.0.1"], extraLibraries = ["rt","util"], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/unix-2.6.0.1/include"], includes = ["HsUnix.h","execvpe.h"], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageId "time-1.4.0.1-10dc4804a19dc0000fab79908f1a9f50"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/unix-2.6.0.1/unix.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/unix-2.6.0.1"]})]) (fromList [(PackageName "array",fromList [(Version {versionBranch = [0,4,0,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "array-0.4.0.1-3b78425c10ff2dad7acf7e8c8ae014c3", sourcePackageId = PackageIdentifier {pkgName = PackageName "array", pkgVersion = Version {versionBranch = [0,4,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Mutable and immutable arrays", description = "This package defines the classes @IArray@ of immutable arrays and\n@MArray@ of arrays mutable within appropriate monads, as well as\nsome instances of these classes.", category = "Data Structures", exposed = True, exposedModules = [ModuleName ["Data","Array","Base"],ModuleName ["Data","Array","IArray"],ModuleName ["Data","Array","IO"],ModuleName ["Data","Array","IO","Safe"],ModuleName ["Data","Array","IO","Internals"],ModuleName ["Data","Array","MArray"],ModuleName ["Data","Array","MArray","Safe"],ModuleName ["Data","Array","ST"],ModuleName ["Data","Array","ST","Safe"],ModuleName ["Data","Array","Storable"],ModuleName ["Data","Array","Storable","Safe"],ModuleName ["Data","Array","Storable","Internals"],ModuleName ["Data","Array","Unboxed"],ModuleName ["Data","Array","Unsafe"],ModuleName ["Data","Array"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/array-0.4.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/array-0.4.0.1"], hsLibraries = ["HSarray-0.4.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/array-0.4.0.1/array.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/array-0.4.0.1"]}])]),(PackageName "base",fromList [(Version {versionBranch = [4,6,0,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88", sourcePackageId = PackageIdentifier {pkgName = PackageName "base", pkgVersion = Version {versionBranch = [4,6,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Basic libraries", description = "This package contains the Prelude and its support libraries,\nand a large collection of useful libraries ranging from data\nstructures to parsing combinators and debugging utilities.", category = "", exposed = True, exposedModules = [ModuleName ["Foreign","Concurrent"],ModuleName ["GHC","Arr"],ModuleName ["GHC","Base"],ModuleName ["GHC","Char"],ModuleName ["GHC","Conc"],ModuleName ["GHC","Conc","IO"],ModuleName ["GHC","Conc","Signal"],ModuleName ["GHC","Conc","Sync"],ModuleName ["GHC","ConsoleHandler"],ModuleName ["GHC","Constants"],ModuleName ["GHC","Desugar"],ModuleName ["GHC","Enum"],ModuleName ["GHC","Environment"],ModuleName ["GHC","Err"],ModuleName ["GHC","Exception"],ModuleName ["GHC","Exts"],ModuleName ["GHC","Fingerprint"],ModuleName ["GHC","Fingerprint","Type"],ModuleName ["GHC","Float"],ModuleName ["GHC","Float","ConversionUtils"],ModuleName ["GHC","Float","RealFracMethods"],ModuleName ["GHC","Foreign"],ModuleName ["GHC","ForeignPtr"],ModuleName ["GHC","Generics"],ModuleName ["GHC","GHCi"],ModuleName ["GHC","Handle"],ModuleName ["GHC","IO"],ModuleName ["GHC","IO","Buffer"],ModuleName ["GHC","IO","BufferedIO"],ModuleName ["GHC","IO","Device"],ModuleName ["GHC","IO","Encoding"],ModuleName ["GHC","IO","Encoding","CodePage"],ModuleName ["GHC","IO","Encoding","Failure"],ModuleName ["GHC","IO","Encoding","Iconv"],ModuleName ["GHC","IO","Encoding","Latin1"],ModuleName ["GHC","IO","Encoding","Types"],ModuleName ["GHC","IO","Encoding","UTF16"],ModuleName ["GHC","IO","Encoding","UTF32"],ModuleName ["GHC","IO","Encoding","UTF8"],ModuleName ["GHC","IO","Exception"],ModuleName ["GHC","IO","FD"],ModuleName ["GHC","IO","Handle"],ModuleName ["GHC","IO","Handle","FD"],ModuleName ["GHC","IO","Handle","Internals"],ModuleName ["GHC","IO","Handle","Text"],ModuleName ["GHC","IO","Handle","Types"],ModuleName ["GHC","IO","IOMode"],ModuleName ["GHC","IOArray"],ModuleName ["GHC","IOBase"],ModuleName ["GHC","IORef"],ModuleName ["GHC","IP"],ModuleName ["GHC","Int"],ModuleName ["GHC","List"],ModuleName ["GHC","MVar"],ModuleName ["GHC","Num"],ModuleName ["GHC","PArr"],ModuleName ["GHC","Pack"],ModuleName ["GHC","Ptr"],ModuleName ["GHC","Read"],ModuleName ["GHC","Real"],ModuleName ["GHC","ST"],ModuleName ["GHC","Stack"],ModuleName ["GHC","Stats"],ModuleName ["GHC","Show"],ModuleName ["GHC","Stable"],ModuleName ["GHC","Storable"],ModuleName ["GHC","STRef"],ModuleName ["GHC","TypeLits"],ModuleName ["GHC","TopHandler"],ModuleName ["GHC","Unicode"],ModuleName ["GHC","Weak"],ModuleName ["GHC","Word"],ModuleName ["System","Timeout"],ModuleName ["GHC","Event"],ModuleName ["Control","Applicative"],ModuleName ["Control","Arrow"],ModuleName ["Control","Category"],ModuleName ["Control","Concurrent"],ModuleName ["Control","Concurrent","Chan"],ModuleName ["Control","Concurrent","MVar"],ModuleName ["Control","Concurrent","QSem"],ModuleName ["Control","Concurrent","QSemN"],ModuleName ["Control","Concurrent","SampleVar"],ModuleName ["Control","Exception"],ModuleName ["Control","Exception","Base"],ModuleName ["Control","Monad"],ModuleName ["Control","Monad","Fix"],ModuleName ["Control","Monad","Instances"],ModuleName ["Control","Monad","ST"],ModuleName ["Control","Monad","ST","Safe"],ModuleName ["Control","Monad","ST","Unsafe"],ModuleName ["Control","Monad","ST","Lazy"],ModuleName ["Control","Monad","ST","Lazy","Safe"],ModuleName ["Control","Monad","ST","Lazy","Unsafe"],ModuleName ["Control","Monad","ST","Strict"],ModuleName ["Control","Monad","Zip"],ModuleName ["Data","Bits"],ModuleName ["Data","Bool"],ModuleName ["Data","Char"],ModuleName ["Data","Complex"],ModuleName ["Data","Dynamic"],ModuleName ["Data","Either"],ModuleName ["Data","Eq"],ModuleName ["Data","Data"],ModuleName ["Data","Fixed"],ModuleName ["Data","Foldable"],ModuleName ["Data","Function"],ModuleName ["Data","Functor"],ModuleName ["Data","HashTable"],ModuleName ["Data","IORef"],ModuleName ["Data","Int"],ModuleName ["Data","Ix"],ModuleName ["Data","List"],ModuleName ["Data","Maybe"],ModuleName ["Data","Monoid"],ModuleName ["Data","Ord"],ModuleName ["Data","Ratio"],ModuleName ["Data","STRef"],ModuleName ["Data","STRef","Lazy"],ModuleName ["Data","STRef","Strict"],ModuleName ["Data","String"],ModuleName ["Data","Traversable"],ModuleName ["Data","Tuple"],ModuleName ["Data","Typeable"],ModuleName ["Data","Typeable","Internal"],ModuleName ["Data","Unique"],ModuleName ["Data","Version"],ModuleName ["Data","Word"],ModuleName ["Debug","Trace"],ModuleName ["Foreign"],ModuleName ["Foreign","C"],ModuleName ["Foreign","C","Error"],ModuleName ["Foreign","C","String"],ModuleName ["Foreign","C","Types"],ModuleName ["Foreign","ForeignPtr"],ModuleName ["Foreign","ForeignPtr","Safe"],ModuleName ["Foreign","ForeignPtr","Unsafe"],ModuleName ["Foreign","Marshal"],ModuleName ["Foreign","Marshal","Alloc"],ModuleName ["Foreign","Marshal","Array"],ModuleName ["Foreign","Marshal","Error"],ModuleName ["Foreign","Marshal","Pool"],ModuleName ["Foreign","Marshal","Safe"],ModuleName ["Foreign","Marshal","Utils"],ModuleName ["Foreign","Marshal","Unsafe"],ModuleName ["Foreign","Ptr"],ModuleName ["Foreign","Safe"],ModuleName ["Foreign","StablePtr"],ModuleName ["Foreign","Storable"],ModuleName ["Numeric"],ModuleName ["Prelude"],ModuleName ["System","Console","GetOpt"],ModuleName ["System","CPUTime"],ModuleName ["System","Environment"],ModuleName ["System","Exit"],ModuleName ["System","IO"],ModuleName ["System","IO","Error"],ModuleName ["System","IO","Unsafe"],ModuleName ["System","Info"],ModuleName ["System","Mem"],ModuleName ["System","Mem","StableName"],ModuleName ["System","Mem","Weak"],ModuleName ["System","Posix","Internals"],ModuleName ["System","Posix","Types"],ModuleName ["Text","ParserCombinators","ReadP"],ModuleName ["Text","ParserCombinators","ReadPrec"],ModuleName ["Text","Printf"],ModuleName ["Text","Read"],ModuleName ["Text","Read","Lex"],ModuleName ["Text","Show"],ModuleName ["Text","Show","Functions"],ModuleName ["Unsafe","Coerce"]], hiddenModules = [ModuleName ["GHC","Event","Array"],ModuleName ["GHC","Event","Clock"],ModuleName ["GHC","Event","Control"],ModuleName ["GHC","Event","EPoll"],ModuleName ["GHC","Event","IntMap"],ModuleName ["GHC","Event","Internal"],ModuleName ["GHC","Event","KQueue"],ModuleName ["GHC","Event","Manager"],ModuleName ["GHC","Event","PSQ"],ModuleName ["GHC","Event","Poll"],ModuleName ["GHC","Event","Thread"],ModuleName ["GHC","Event","Unique"],ModuleName ["Control","Monad","ST","Imp"],ModuleName ["Control","Monad","ST","Lazy","Imp"],ModuleName ["Foreign","ForeignPtr","Imp"],ModuleName ["System","Environment","ExecutablePath"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/base-4.6.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/base-4.6.0.1"], hsLibraries = ["HSbase-4.6.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/base-4.6.0.1/include"], includes = ["HsBase.h"], depends = [InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd",InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7",InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/base-4.6.0.1/base.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/base-4.6.0.1"]}])]),(PackageName "bytestring",fromList [(Version {versionBranch = [0,10,0,2], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43", sourcePackageId = PackageIdentifier {pkgName = PackageName "bytestring", pkgVersion = Version {versionBranch = [0,10,0,2], versionTags = []}}, license = BSD3, copyright = "Copyright (c) Don Stewart          2005-2009,\n(c) Duncan Coutts        2006-2012,\n(c) David Roundy         2003-2005,\n(c) Jasper Van der Jeugt 2010,\n(c) Simon Meier          2010-2011.", maintainer = "Don Stewart <dons00@gmail.com>,\nDuncan Coutts <duncan@community.haskell.org>", author = "Don Stewart,\nDuncan Coutts", stability = "", homepage = "", pkgUrl = "", synopsis = "Fast, compact, strict and lazy byte strings with a list interface", description = "An efficient compact, immutable byte string type (both strict and lazy)\nsuitable for binary or 8-bit character data.\n\nThe 'ByteString' type represents sequences of bytes or 8-bit characters.\nIt is suitable for high performance use, both in terms of large data\nquantities, or high speed requirements. The 'ByteStrin'g functions follow\nthe same style as Haskell\\'s ordinary lists, so it is easy to convert code\nfrom using 'String' to 'ByteString'.\n\nTwo 'ByteString' variants are provided:\n\n* Strict 'ByteString's keep the string as a single large array. This\nmakes them convenient for passing data between C and Haskell.\n\n* Lazy 'ByteString's use a lazy list of strict chunks which makes it\nsuitable for I\\/O streaming tasks.\n\nThe @Char8@ modules provide a character-based view of the same\nunderlying 'ByteString' types. This makes it convenient to handle mixed\nbinary and 8-bit character content (which is common in many file formats\nand network protocols).\n\nThe 'Builder' module provides an efficient way to build up 'ByteString's\nin an ad-hoc way by repeated concatenation. This is ideal for fast\nserialisation or pretty printing.\n\n'ByteString's are not designed for Unicode. For Unicode strings you should\nuse the 'Text' type from the @text@ package.\n\nThese modules are intended to be imported qualified, to avoid name clashes\nwith \"Prelude\" functions, e.g.\n\n> import qualified Data.ByteString as BS", category = "Data", exposed = True, exposedModules = [ModuleName ["Data","ByteString"],ModuleName ["Data","ByteString","Char8"],ModuleName ["Data","ByteString","Unsafe"],ModuleName ["Data","ByteString","Internal"],ModuleName ["Data","ByteString","Lazy"],ModuleName ["Data","ByteString","Lazy","Char8"],ModuleName ["Data","ByteString","Lazy","Internal"],ModuleName ["Data","ByteString","Lazy","Builder"],ModuleName ["Data","ByteString","Lazy","Builder","Extras"],ModuleName ["Data","ByteString","Lazy","Builder","ASCII"]], hiddenModules = [ModuleName ["Data","ByteString","Lazy","Builder","Internal"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Extras"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Internal"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Binary"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","ASCII"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Internal","Floating"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Internal","UncheckedShifts"],ModuleName ["Data","ByteString","Lazy","Builder","BasicEncoding","Internal","Base16"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/bytestring-0.10.0.2"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/bytestring-0.10.0.2"], hsLibraries = ["HSbytestring-0.10.0.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/bytestring-0.10.0.2/include"], includes = ["fpstring.h"], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926",InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/bytestring-0.10.0.2/bytestring.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/bytestring-0.10.0.2"]}])]),(PackageName "containers",fromList [(Version {versionBranch = [0,5,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "containers-0.5.0.0-ab1dae9a94cd3cc84e7b2805636ebfa2", sourcePackageId = PackageIdentifier {pkgName = PackageName "containers", pkgVersion = Version {versionBranch = [0,5,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "fox@ucw.cz", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Assorted concrete container types", description = "This package contains efficient general-purpose implementations\nof various basic immutable container types.  The declared cost of\neach operation is either worst-case or amortized, but remains\nvalid even if structures are shared.", category = "Data Structures", exposed = True, exposedModules = [ModuleName ["Data","Graph"],ModuleName ["Data","Sequence"],ModuleName ["Data","Tree"],ModuleName ["Data","IntMap"],ModuleName ["Data","IntMap","Lazy"],ModuleName ["Data","IntMap","Strict"],ModuleName ["Data","IntSet"],ModuleName ["Data","Map"],ModuleName ["Data","Map","Lazy"],ModuleName ["Data","Map","Strict"],ModuleName ["Data","Set"]], hiddenModules = [ModuleName ["Data","IntMap","Base"],ModuleName ["Data","IntSet","Base"],ModuleName ["Data","Map","Base"],ModuleName ["Data","Set","Base"],ModuleName ["Data","StrictPair"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/containers-0.5.0.0"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/containers-0.5.0.0"], hsLibraries = ["HScontainers-0.5.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "array-0.4.0.1-3b78425c10ff2dad7acf7e8c8ae014c3",InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926",InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/containers-0.5.0.0/containers.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/containers-0.5.0.0"]}])]),(PackageName "deepseq",fromList [(Version {versionBranch = [1,3,0,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926", sourcePackageId = PackageIdentifier {pkgName = PackageName "deepseq", pkgVersion = Version {versionBranch = [1,3,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Deep evaluation of data structures", description = "This package provides methods for fully evaluating data structures\n(\\\"deep evaluation\\\"). Deep evaluation is often used for adding\nstrictness to a program, e.g. in order to force pending exceptions,\nremove space leaks, or force lazy I/O to happen. It is also useful\nin parallel programs, to ensure pending work does not migrate to the\nwrong thread.\n\nThe primary use of this package is via the 'deepseq' function, a\n\\\"deep\\\" version of 'seq'. It is implemented on top of an 'NFData'\ntypeclass (\\\"Normal Form Data\\\", data structures with no unevaluated\ncomponents) which defines strategies for fully evaluating different\ndata types.\n", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","DeepSeq"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/deepseq-1.3.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/deepseq-1.3.0.1"], hsLibraries = ["HSdeepseq-1.3.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "array-0.4.0.1-3b78425c10ff2dad7acf7e8c8ae014c3",InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/deepseq-1.3.0.1/deepseq.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/deepseq-1.3.0.1"]}])]),(PackageName "ghc-prim",fromList [(Version {versionBranch = [0,3,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd", sourcePackageId = PackageIdentifier {pkgName = PackageName "ghc-prim", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "GHC primitives", description = "GHC primitives.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Prim"],ModuleName ["GHC","Classes"],ModuleName ["GHC","CString"],ModuleName ["GHC","Debug"],ModuleName ["GHC","Magic"],ModuleName ["GHC","PrimopWrappers"],ModuleName ["GHC","IntWord64"],ModuleName ["GHC","Tuple"],ModuleName ["GHC","Types"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/ghc-prim-0.3.0.0"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/ghc-prim-0.3.0.0"], hsLibraries = ["HSghc-prim-0.3.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "builtin_rts"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/ghc-prim-0.3.0.0/ghc-prim.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/ghc-prim-0.3.0.0"]}])]),(PackageName "integer-gmp",fromList [(Version {versionBranch = [0,5,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7", sourcePackageId = PackageIdentifier {pkgName = PackageName "integer-gmp", pkgVersion = Version {versionBranch = [0,5,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "Integer library based on GMP", description = "This package contains an Integer library based on GMP.", category = "", exposed = True, exposedModules = [ModuleName ["GHC","Integer"],ModuleName ["GHC","Integer","GMP","Internals"],ModuleName ["GHC","Integer","GMP","Prim"],ModuleName ["GHC","Integer","Logarithms"],ModuleName ["GHC","Integer","Logarithms","Internals"]], hiddenModules = [ModuleName ["GHC","Integer","Type"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/integer-gmp-0.5.0.0"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/integer-gmp-0.5.0.0","/usr/local/lib"], hsLibraries = ["HSinteger-gmp-0.5.0.0"], extraLibraries = ["gmp"], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/integer-gmp-0.5.0.0/integer-gmp.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/integer-gmp-0.5.0.0"]}])]),(PackageName "mtl",fromList [(Version {versionBranch = [2,1,2], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "mtl-2.1.2-94c72af955e94b8d7b2f359dadd0cb62", sourcePackageId = PackageIdentifier {pkgName = PackageName "mtl", pkgVersion = Version {versionBranch = [2,1,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Edward Kmett <ekmett@gmail.com>", author = "Andy Gill", stability = "", homepage = "http://github.com/ekmett/mtl", pkgUrl = "", synopsis = "Monad classes, using functional dependencies", description = "Monad classes using functional dependencies, with instances\nfor various monad transformers, inspired by the paper\n/Functional Programming with Overloading and Higher-Order Polymorphism/,\nby Mark P Jones, in /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Monad","Cont"],ModuleName ["Control","Monad","Cont","Class"],ModuleName ["Control","Monad","Error"],ModuleName ["Control","Monad","Error","Class"],ModuleName ["Control","Monad","Identity"],ModuleName ["Control","Monad","List"],ModuleName ["Control","Monad","RWS"],ModuleName ["Control","Monad","RWS","Class"],ModuleName ["Control","Monad","RWS","Lazy"],ModuleName ["Control","Monad","RWS","Strict"],ModuleName ["Control","Monad","Reader"],ModuleName ["Control","Monad","Reader","Class"],ModuleName ["Control","Monad","State"],ModuleName ["Control","Monad","State","Class"],ModuleName ["Control","Monad","State","Lazy"],ModuleName ["Control","Monad","State","Strict"],ModuleName ["Control","Monad","Trans"],ModuleName ["Control","Monad","Writer"],ModuleName ["Control","Monad","Writer","Class"],ModuleName ["Control","Monad","Writer","Lazy"],ModuleName ["Control","Monad","Writer","Strict"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/mtl-2.1.2"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/mtl-2.1.2","/usr/local/lib"], hsLibraries = ["HSmtl-2.1.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "transformers-0.3.0.0-ff2bb6ac67241ebb987351a3db564af0"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/mtl-2.1.2/html/mtl.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/mtl-2.1.2/html"]}])]),(PackageName "network",fromList [(Version {versionBranch = [2,4,1,2], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "network-2.4.1.2-5be4ce21effbb1a11c3b90006afd63d9", sourcePackageId = PackageIdentifier {pkgName = PackageName "network", pkgVersion = Version {versionBranch = [2,4,1,2], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Johan Tibell <johan.tibell@gmail.com>", author = "", stability = "", homepage = "https://github.com/haskell/network", pkgUrl = "", synopsis = "Low-level networking interface", description = "Low-level networking interface", category = "Network", exposed = True, exposedModules = [ModuleName ["Network"],ModuleName ["Network","BSD"],ModuleName ["Network","Socket"],ModuleName ["Network","Socket","ByteString"],ModuleName ["Network","Socket","ByteString","Lazy"],ModuleName ["Network","Socket","Internal"],ModuleName ["Network","URI"]], hiddenModules = [ModuleName ["Network","Socket","ByteString","IOVec"],ModuleName ["Network","Socket","ByteString","MsgHdr"],ModuleName ["Network","Socket","ByteString","Internal"],ModuleName ["Network","Socket","Types"]], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/network-2.4.1.2"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/network-2.4.1.2","/usr/local/lib"], hsLibraries = ["HSnetwork-2.4.1.2"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include","/usr/local/lib/cabal/ghc-7.6.3/network-2.4.1.2/include"], includes = ["HsNet.h"], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageId "parsec-3.1.3-7d16ef6a60127910ee03cf1d43ace489",InstalledPackageId "unix-2.6.0.1-0331dd8b9407cabaa0b542d86de016a7"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/network-2.4.1.2/html/network.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/network-2.4.1.2/html"]}])]),(PackageName "old-locale",fromList [(Version {versionBranch = [1,0,0,5], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "old-locale-1.0.0.5-6729cb9d9cc62d150655de8fc5401b91", sourcePackageId = PackageIdentifier {pkgName = PackageName "old-locale", pkgVersion = Version {versionBranch = [1,0,0,5], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "locale library", description = "This package provides the ability to adapt to\nlocale conventions such as date and time formats.", category = "System", exposed = True, exposedModules = [ModuleName ["System","Locale"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/old-locale-1.0.0.5"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/old-locale-1.0.0.5"], hsLibraries = ["HSold-locale-1.0.0.5"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = [], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/old-locale-1.0.0.5/old-locale.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/old-locale-1.0.0.5"]}])]),(PackageName "parsec",fromList [(Version {versionBranch = [3,1,3], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "parsec-3.1.3-7d16ef6a60127910ee03cf1d43ace489", sourcePackageId = PackageIdentifier {pkgName = PackageName "parsec", pkgVersion = Version {versionBranch = [3,1,3], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Antoine Latter <aslatter@gmail.com>", author = "Daan Leijen <daan@microsoft.com>, Paolo Martini <paolo@nemail.it>", stability = "", homepage = "http://www.cs.uu.nl/~daan/parsec.html", pkgUrl = "", synopsis = "Monadic parser combinators", description = "Parsec is designed from scratch as an industrial-strength parser\nlibrary.  It is simple, safe, well documented (on the package\nhomepage), has extensive libraries and good error messages,\nand is also fast.  It is defined as a monad transformer that can be\nstacked on arbitrary monads, and it is also parametric in the\ninput stream type.", category = "Parsing", exposed = True, exposedModules = [ModuleName ["Text","Parsec"],ModuleName ["Text","Parsec","String"],ModuleName ["Text","Parsec","ByteString"],ModuleName ["Text","Parsec","ByteString","Lazy"],ModuleName ["Text","Parsec","Text"],ModuleName ["Text","Parsec","Text","Lazy"],ModuleName ["Text","Parsec","Pos"],ModuleName ["Text","Parsec","Error"],ModuleName ["Text","Parsec","Prim"],ModuleName ["Text","Parsec","Char"],ModuleName ["Text","Parsec","Combinator"],ModuleName ["Text","Parsec","Token"],ModuleName ["Text","Parsec","Expr"],ModuleName ["Text","Parsec","Language"],ModuleName ["Text","Parsec","Perm"],ModuleName ["Text","ParserCombinators","Parsec"],ModuleName ["Text","ParserCombinators","Parsec","Char"],ModuleName ["Text","ParserCombinators","Parsec","Combinator"],ModuleName ["Text","ParserCombinators","Parsec","Error"],ModuleName ["Text","ParserCombinators","Parsec","Expr"],ModuleName ["Text","ParserCombinators","Parsec","Language"],ModuleName ["Text","ParserCombinators","Parsec","Perm"],ModuleName ["Text","ParserCombinators","Parsec","Pos"],ModuleName ["Text","ParserCombinators","Parsec","Prim"],ModuleName ["Text","ParserCombinators","Parsec","Token"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/parsec-3.1.3"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/parsec-3.1.3","/usr/local/lib"], hsLibraries = ["HSparsec-3.1.3"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageId "mtl-2.1.2-94c72af955e94b8d7b2f359dadd0cb62",InstalledPackageId "text-0.11.3.1-b49365bcfaf3954e4484c36c86c98126"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/parsec-3.1.3/html/parsec.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/parsec-3.1.3/html"]}])]),(PackageName "rts",fromList [(Version {versionBranch = [1,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "builtin_rts", sourcePackageId = PackageIdentifier {pkgName = PackageName "rts", pkgVersion = Version {versionBranch = [1,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "glasgow-haskell-users@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "", description = "", category = "", exposed = True, exposedModules = [], hiddenModules = [], trusted = False, importDirs = [], libraryDirs = ["/usr/local/lib/ghc-7.6.3"], hsLibraries = ["HSrts"], extraLibraries = ["m","ffi"], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/include"], includes = ["Stg.h"], depends = [], hugsOptions = [], ccOptions = [], ldOptions = ["-u","ghczmprim_GHCziTypes_Izh_static_info","-u","ghczmprim_GHCziTypes_Czh_static_info","-u","ghczmprim_GHCziTypes_Fzh_static_info","-u","ghczmprim_GHCziTypes_Dzh_static_info","-u","base_GHCziPtr_Ptr_static_info","-u","ghczmprim_GHCziTypes_Wzh_static_info","-u","base_GHCziInt_I8zh_static_info","-u","base_GHCziInt_I16zh_static_info","-u","base_GHCziInt_I32zh_static_info","-u","base_GHCziInt_I64zh_static_info","-u","base_GHCziWord_W8zh_static_info","-u","base_GHCziWord_W16zh_static_info","-u","base_GHCziWord_W32zh_static_info","-u","base_GHCziWord_W64zh_static_info","-u","base_GHCziStable_StablePtr_static_info","-u","ghczmprim_GHCziTypes_Izh_con_info","-u","ghczmprim_GHCziTypes_Czh_con_info","-u","ghczmprim_GHCziTypes_Fzh_con_info","-u","ghczmprim_GHCziTypes_Dzh_con_info","-u","base_GHCziPtr_Ptr_con_info","-u","base_GHCziPtr_FunPtr_con_info","-u","base_GHCziStable_StablePtr_con_info","-u","ghczmprim_GHCziTypes_False_closure","-u","ghczmprim_GHCziTypes_True_closure","-u","base_GHCziPack_unpackCString_closure","-u","base_GHCziIOziException_stackOverflow_closure","-u","base_GHCziIOziException_heapOverflow_closure","-u","base_ControlziExceptionziBase_nonTermination_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnMVar_closure","-u","base_GHCziIOziException_blockedIndefinitelyOnSTM_closure","-u","base_ControlziExceptionziBase_nestedAtomically_closure","-u","base_GHCziWeak_runFinalizzerBatch_closure","-u","base_GHCziTopHandler_flushStdHandles_closure","-u","base_GHCziTopHandler_runIO_closure","-u","base_GHCziTopHandler_runNonIO_closure","-u","base_GHCziConcziIO_ensureIOManagerIsRunning_closure","-u","base_GHCziConcziSync_runSparks_closure","-u","base_GHCziConcziSignal_runHandlers_closure","-L/usr/local/lib"], frameworkDirs = [], frameworks = [], haddockInterfaces = [], haddockHTMLs = []}])]),(PackageName "text",fromList [(Version {versionBranch = [0,11,3,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "text-0.11.3.1-b49365bcfaf3954e4484c36c86c98126", sourcePackageId = PackageIdentifier {pkgName = PackageName "text", pkgVersion = Version {versionBranch = [0,11,3,1], versionTags = []}}, license = BSD3, copyright = "2009-2011 Bryan O'Sullivan, 2008-2009 Tom Harper", maintainer = "Bryan O'Sullivan <bos@serpentine.com>", author = "Bryan O'Sullivan <bos@serpentine.com>", stability = "", homepage = "https://github.com/bos/text", pkgUrl = "", synopsis = "An efficient packed Unicode text type.", description = "\nAn efficient packed, immutable Unicode text type (both strict and\nlazy), with a powerful loop fusion optimization framework.\n\nThe 'Text' type represents Unicode character strings, in a time and\nspace-efficient manner. This package provides text processing\ncapabilities that are optimized for performance critical use, both\nin terms of large data quantities and high speed.\n\nThe 'Text' type provides character-encoding, type-safe case\nconversion via whole-string case conversion functions. It also\nprovides a range of functions for converting 'Text' values to and from\n'ByteStrings', using several standard encodings.\n\nEfficient locale-sensitive support for text IO is also supported.\n\nThese modules are intended to be imported qualified, to avoid name\nclashes with Prelude functions, e.g.\n\n> import qualified Data.Text as T\n\nTo use an extended and very rich family of functions for working\nwith Unicode text (including normalization, regular expressions,\nnon-standard encodings, text breaking, and locales), see\nthe @text-icu@ package:\n<http://hackage.haskell.org/package/text-icu>\n\n&#8212;&#8212; RELEASE NOTES &#8212;&#8212;\n\nChanges in 0.11.2.0:\n\n* String literals are now converted directly from the format in\nwhich GHC stores them into 'Text', without an intermediate\ntransformation through 'String', and without inlining of\nconversion code at each site where a string literal is declared.\n", category = "Data, Text", exposed = True, exposedModules = [ModuleName ["Data","Text"],ModuleName ["Data","Text","Array"],ModuleName ["Data","Text","Encoding"],ModuleName ["Data","Text","Encoding","Error"],ModuleName ["Data","Text","Foreign"],ModuleName ["Data","Text","IO"],ModuleName ["Data","Text","Internal"],ModuleName ["Data","Text","Lazy"],ModuleName ["Data","Text","Lazy","Builder"],ModuleName ["Data","Text","Lazy","Builder","Int"],ModuleName ["Data","Text","Lazy","Builder","RealFloat"],ModuleName ["Data","Text","Lazy","Encoding"],ModuleName ["Data","Text","Lazy","IO"],ModuleName ["Data","Text","Lazy","Internal"],ModuleName ["Data","Text","Lazy","Read"],ModuleName ["Data","Text","Read"],ModuleName ["Data","Text","Unsafe"]], hiddenModules = [ModuleName ["Data","Text","Encoding","Fusion"],ModuleName ["Data","Text","Encoding","Fusion","Common"],ModuleName ["Data","Text","Encoding","Utf16"],ModuleName ["Data","Text","Encoding","Utf32"],ModuleName ["Data","Text","Encoding","Utf8"],ModuleName ["Data","Text","Fusion"],ModuleName ["Data","Text","Fusion","CaseMapping"],ModuleName ["Data","Text","Fusion","Common"],ModuleName ["Data","Text","Fusion","Internal"],ModuleName ["Data","Text","Fusion","Size"],ModuleName ["Data","Text","IO","Internal"],ModuleName ["Data","Text","Lazy","Builder","Functions"],ModuleName ["Data","Text","Lazy","Builder","Int","Digits"],ModuleName ["Data","Text","Lazy","Builder","Internal"],ModuleName ["Data","Text","Lazy","Builder","RealFloat","Functions"],ModuleName ["Data","Text","Lazy","Encoding","Fusion"],ModuleName ["Data","Text","Lazy","Fusion"],ModuleName ["Data","Text","Lazy","Search"],ModuleName ["Data","Text","Private"],ModuleName ["Data","Text","Search"],ModuleName ["Data","Text","Unsafe","Base"],ModuleName ["Data","Text","UnsafeChar"],ModuleName ["Data","Text","UnsafeShift"],ModuleName ["Data","Text","Util"]], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/text-0.11.3.1"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/text-0.11.3.1","/usr/local/lib"], hsLibraries = ["HStext-0.11.3.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "array-0.4.0.1-3b78425c10ff2dad7acf7e8c8ae014c3",InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926",InstalledPackageId "ghc-prim-0.3.0.0-d5221a8c8a269b66ab9a07bdc23317dd",InstalledPackageId "integer-gmp-0.5.0.0-2f15426f5b53fe4c6490832f9b20d8d7"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/text-0.11.3.1/html/text.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/text-0.11.3.1/html"]}])]),(PackageName "time",fromList [(Version {versionBranch = [1,4,0,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "time-1.4.0.1-10dc4804a19dc0000fab79908f1a9f50", sourcePackageId = PackageIdentifier {pkgName = PackageName "time", pkgVersion = Version {versionBranch = [1,4,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "<ashley@semantic.org>", author = "Ashley Yakeley", stability = "stable", homepage = "http://semantic.org/TimeLib/", pkgUrl = "", synopsis = "A time library", description = "A time library", category = "System", exposed = True, exposedModules = [ModuleName ["Data","Time","Calendar"],ModuleName ["Data","Time","Calendar","MonthDay"],ModuleName ["Data","Time","Calendar","OrdinalDate"],ModuleName ["Data","Time","Calendar","WeekDate"],ModuleName ["Data","Time","Calendar","Julian"],ModuleName ["Data","Time","Calendar","Easter"],ModuleName ["Data","Time","Clock"],ModuleName ["Data","Time","Clock","POSIX"],ModuleName ["Data","Time","Clock","TAI"],ModuleName ["Data","Time","LocalTime"],ModuleName ["Data","Time","Format"],ModuleName ["Data","Time"]], hiddenModules = [ModuleName ["Data","Time","Calendar","Private"],ModuleName ["Data","Time","Calendar","Days"],ModuleName ["Data","Time","Calendar","Gregorian"],ModuleName ["Data","Time","Calendar","JulianYearDay"],ModuleName ["Data","Time","Clock","Scale"],ModuleName ["Data","Time","Clock","UTC"],ModuleName ["Data","Time","Clock","CTimeval"],ModuleName ["Data","Time","Clock","UTCDiff"],ModuleName ["Data","Time","LocalTime","TimeZone"],ModuleName ["Data","Time","LocalTime","TimeOfDay"],ModuleName ["Data","Time","LocalTime","LocalTime"],ModuleName ["Data","Time","Format","Parse"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/time-1.4.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/time-1.4.0.1"], hsLibraries = ["HStime-1.4.0.1"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/time-1.4.0.1/include"], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "deepseq-1.3.0.1-5cc4cd89bdc2e8f6db1833d95ec36926",InstalledPackageId "old-locale-1.0.0.5-6729cb9d9cc62d150655de8fc5401b91"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/time-1.4.0.1/time.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/time-1.4.0.1"]}])]),(PackageName "transformers",fromList [(Version {versionBranch = [0,3,0,0], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "transformers-0.3.0.0-ff2bb6ac67241ebb987351a3db564af0", sourcePackageId = PackageIdentifier {pkgName = PackageName "transformers", pkgVersion = Version {versionBranch = [0,3,0,0], versionTags = []}}, license = BSD3, copyright = "", maintainer = "Ross Paterson <ross@soi.city.ac.uk>", author = "Andy Gill, Ross Paterson", stability = "", homepage = "", pkgUrl = "", synopsis = "Concrete functor and monad transformers", description = "A portable library of functor and monad transformers, inspired by\nthe paper \\\"Functional Programming with Overloading and Higher-Order\nPolymorphism\\\", by Mark P Jones,\nin /Advanced School of Functional Programming/, 1995\n(<http://web.cecs.pdx.edu/~mpj/pubs/springschool.html>).\n\nThis package contains:\n\n* the monad transformer class (in \"Control.Monad.Trans.Class\")\n\n* concrete functor and monad transformers, each with associated\noperations and functions to lift operations associated with other\ntransformers.\n\nIt can be used on its own in portable Haskell code, or with the monad\nclasses in the @mtl@ or @monads-tf@ packages, which automatically\nlift operations introduced by monad transformers through other\ntransformers.", category = "Control", exposed = True, exposedModules = [ModuleName ["Control","Applicative","Backwards"],ModuleName ["Control","Applicative","Lift"],ModuleName ["Control","Monad","IO","Class"],ModuleName ["Control","Monad","Trans","Class"],ModuleName ["Control","Monad","Trans","Cont"],ModuleName ["Control","Monad","Trans","Error"],ModuleName ["Control","Monad","Trans","Identity"],ModuleName ["Control","Monad","Trans","List"],ModuleName ["Control","Monad","Trans","Maybe"],ModuleName ["Control","Monad","Trans","Reader"],ModuleName ["Control","Monad","Trans","RWS"],ModuleName ["Control","Monad","Trans","RWS","Lazy"],ModuleName ["Control","Monad","Trans","RWS","Strict"],ModuleName ["Control","Monad","Trans","State"],ModuleName ["Control","Monad","Trans","State","Lazy"],ModuleName ["Control","Monad","Trans","State","Strict"],ModuleName ["Control","Monad","Trans","Writer"],ModuleName ["Control","Monad","Trans","Writer","Lazy"],ModuleName ["Control","Monad","Trans","Writer","Strict"],ModuleName ["Data","Functor","Compose"],ModuleName ["Data","Functor","Constant"],ModuleName ["Data","Functor","Identity"],ModuleName ["Data","Functor","Product"],ModuleName ["Data","Functor","Reverse"]], hiddenModules = [], trusted = False, importDirs = ["/usr/local/lib/cabal/ghc-7.6.3/transformers-0.3.0.0"], libraryDirs = ["/usr/local/lib/cabal/ghc-7.6.3/transformers-0.3.0.0","/usr/local/lib"], hsLibraries = ["HStransformers-0.3.0.0"], extraLibraries = [], extraGHCiLibraries = [], includeDirs = ["/usr/local/include"], includes = [], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/cabal/ghc-7.6.3/transformers-0.3.0.0/html/transformers.haddock"], haddockHTMLs = ["/usr/local/share/doc/cabal/ghc-7.6.3/transformers-0.3.0.0/html"]}])]),(PackageName "unix",fromList [(Version {versionBranch = [2,6,0,1], versionTags = []},[InstalledPackageInfo {installedPackageId = InstalledPackageId "unix-2.6.0.1-0331dd8b9407cabaa0b542d86de016a7", sourcePackageId = PackageIdentifier {pkgName = PackageName "unix", pkgVersion = Version {versionBranch = [2,6,0,1], versionTags = []}}, license = BSD3, copyright = "", maintainer = "libraries@haskell.org", author = "", stability = "", homepage = "", pkgUrl = "", synopsis = "POSIX functionality", description = "This package gives you access to the set of operating system\nservices standardised by POSIX 1003.1b (or the IEEE Portable\nOperating System Interface for Computing Environments -\nIEEE Std. 1003.1).\n\nThe package is not supported under Windows (except under Cygwin).", category = "System", exposed = True, exposedModules = [ModuleName ["System","Posix"],ModuleName ["System","Posix","ByteString"],ModuleName ["System","Posix","Error"],ModuleName ["System","Posix","Resource"],ModuleName ["System","Posix","Time"],ModuleName ["System","Posix","Unistd"],ModuleName ["System","Posix","User"],ModuleName ["System","Posix","Signals"],ModuleName ["System","Posix","Signals","Exts"],ModuleName ["System","Posix","Semaphore"],ModuleName ["System","Posix","SharedMem"],ModuleName ["System","Posix","ByteString","FilePath"],ModuleName ["System","Posix","Directory"],ModuleName ["System","Posix","Directory","ByteString"],ModuleName ["System","Posix","DynamicLinker","Module"],ModuleName ["System","Posix","DynamicLinker","Module","ByteString"],ModuleName ["System","Posix","DynamicLinker","Prim"],ModuleName ["System","Posix","DynamicLinker","ByteString"],ModuleName ["System","Posix","DynamicLinker"],ModuleName ["System","Posix","Files"],ModuleName ["System","Posix","Files","ByteString"],ModuleName ["System","Posix","IO"],ModuleName ["System","Posix","IO","ByteString"],ModuleName ["System","Posix","Env"],ModuleName ["System","Posix","Env","ByteString"],ModuleName ["System","Posix","Process"],ModuleName ["System","Posix","Process","Internals"],ModuleName ["System","Posix","Process","ByteString"],ModuleName ["System","Posix","Temp"],ModuleName ["System","Posix","Temp","ByteString"],ModuleName ["System","Posix","Terminal"],ModuleName ["System","Posix","Terminal","ByteString"]], hiddenModules = [ModuleName ["System","Posix","Directory","Common"],ModuleName ["System","Posix","DynamicLinker","Common"],ModuleName ["System","Posix","Files","Common"],ModuleName ["System","Posix","IO","Common"],ModuleName ["System","Posix","Process","Common"],ModuleName ["System","Posix","Terminal","Common"]], trusted = False, importDirs = ["/usr/local/lib/ghc-7.6.3/unix-2.6.0.1"], libraryDirs = ["/usr/local/lib/ghc-7.6.3/unix-2.6.0.1"], hsLibraries = ["HSunix-2.6.0.1"], extraLibraries = ["rt","util"], extraGHCiLibraries = [], includeDirs = ["/usr/local/lib/ghc-7.6.3/unix-2.6.0.1/include"], includes = ["HsUnix.h","execvpe.h"], depends = [InstalledPackageId "base-4.6.0.1-f7bdc8987bd5928e0ee6e8cc8b246a88",InstalledPackageId "bytestring-0.10.0.2-59abd9894532f476aabac207680aae43",InstalledPackageId "time-1.4.0.1-10dc4804a19dc0000fab79908f1a9f50"], hugsOptions = [], ccOptions = [], ldOptions = [], frameworkDirs = [], frameworks = [], haddockInterfaces = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/unix-2.6.0.1/unix.haddock"], haddockHTMLs = ["/usr/local/share/doc/ghc-7.6.3/html/libraries/unix-2.6.0.1"]}])])]), pkgDescrFile = Just "./Ketchup.cabal", localPkgDescr = PackageDescription {package = PackageIdentifier {pkgName = PackageName "Ketchup", pkgVersion = Version {versionBranch = [0,1,0], versionTags = []}}, license = MIT, licenseFile = "LICENSE", copyright = "", maintainer = "zikyky@gmail.com", author = "Alessandro Gatti", stability = "", testedWith = [], homepage = "https://github.com/Hamcha/Ketchup", pkgUrl = "", bugReports = "", sourceRepos = [SourceRepo {repoKind = RepoHead, repoType = Just Git, repoLocation = Just "git://github.com/Hamcha/Ketchup.git", repoModule = Nothing, repoBranch = Nothing, repoTag = Nothing, repoSubdir = Nothing}], synopsis = "A super small web framework for those who don't like big and fancy codebases", description = "", category = "Web, Ketchup", customFieldsPD = [], buildDepends = [Dependency (PackageName "base") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [4,6,0,1], versionTags = []}))),Dependency (PackageName "bytestring") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,10,0,2], versionTags = []}))),Dependency (PackageName "containers") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,5,0,0], versionTags = []}))),Dependency (PackageName "network") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,4,1,2], versionTags = []})))], specVersionRaw = Right (UnionVersionRanges (ThisVersion (Version {versionBranch = [1,6], versionTags = []})) (LaterVersion (Version {versionBranch = [1,6], versionTags = []}))), buildType = Just Simple, library = Just (Library {exposedModules = [ModuleName ["Ketchup","Httpd"],ModuleName ["Ketchup","Routing"]], libExposed = True, libBuildInfo = BuildInfo {buildable = True, buildTools = [], cppOptions = [], ccOptions = [], ldOptions = [], pkgconfigDepends = [], frameworks = [], cSources = [], hsSourceDirs = ["."], otherModules = [ModuleName ["Ketchup","Utils"]], defaultLanguage = Nothing, otherLanguages = [], defaultExtensions = [], otherExtensions = [], oldExtensions = [], extraLibs = [], extraLibDirs = [], includeDirs = [], includes = [], installIncludes = [], options = [], ghcProfOptions = [], ghcSharedOptions = [], customFieldsBI = [], targetBuildDepends = [Dependency (PackageName "base") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [4,6,0,1], versionTags = []}))),Dependency (PackageName "bytestring") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,10,0,2], versionTags = []}))),Dependency (PackageName "containers") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [0,5,0,0], versionTags = []}))),Dependency (PackageName "network") (IntersectVersionRanges AnyVersion (ThisVersion (Version {versionBranch = [2,4,1,2], versionTags = []})))]}}), executables = [], testSuites = [], benchmarks = [], dataFiles = [], dataDir = "", extraSrcFiles = [], extraTmpFiles = []}, withPrograms = [("alex",ConfiguredProgram {programId = "alex", programVersion = Just (Version {versionBranch = [3,1,3], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/root/.cabal/bin/alex"}}),("ar",ConfiguredProgram {programId = "ar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/local/bin/ar"}}),("c2hs",ConfiguredProgram {programId = "c2hs", programVersion = Just (Version {versionBranch = [0,17,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/root/.cabal/bin/c2hs"}}),("gcc",ConfiguredProgram {programId = "gcc", programVersion = Just (Version {versionBranch = [4,7,3], versionTags = []}), programDefaultArgs = ["-Wl,--hash-size=31","-Wl,--reduce-memory-overheads"], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "gcc47"}}),("ghc",ConfiguredProgram {programId = "ghc", programVersion = Just (Version {versionBranch = [7,6,3], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/local/bin/ghc"}}),("ghc-pkg",ConfiguredProgram {programId = "ghc-pkg", programVersion = Just (Version {versionBranch = [7,6,3], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/local/bin/ghc-pkg"}}),("haddock",ConfiguredProgram {programId = "haddock", programVersion = Just (Version {versionBranch = [2,13,2], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/local/bin/haddock"}}),("happy",ConfiguredProgram {programId = "happy", programVersion = Just (Version {versionBranch = [1,19,3], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/root/.cabal/bin/happy"}}),("hpc",ConfiguredProgram {programId = "hpc", programVersion = Just (Version {versionBranch = [0,6], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/local/bin/hpc"}}),("hsc2hs",ConfiguredProgram {programId = "hsc2hs", programVersion = Just (Version {versionBranch = [0,67], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/local/bin/hsc2hs"}}),("ld",ConfiguredProgram {programId = "ld", programVersion = Nothing, programDefaultArgs = ["-x","--hash-size=31","--reduce-memory-overheads"], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/local/bin/ld"}}),("pkg-config",ConfiguredProgram {programId = "pkg-config", programVersion = Just (Version {versionBranch = [0,28], versionTags = []}), programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/local/bin/pkg-config"}}),("ranlib",ConfiguredProgram {programId = "ranlib", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/local/bin/ranlib"}}),("strip",ConfiguredProgram {programId = "strip", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/strip"}}),("tar",ConfiguredProgram {programId = "tar", programVersion = Nothing, programDefaultArgs = [], programOverrideArgs = [], programLocation = FoundOnSystem {locationPath = "/usr/bin/tar"}})], withPackageDB = [GlobalPackageDB,UserPackageDB], withVanillaLib = True, withProfLib = False, withSharedLib = False, withDynExe = False, withProfExe = False, withOptimization = NormalOptimisation, withGHCiLib = True, splitObjs = False, stripExes = True, progPrefix = "", progSuffix = ""}
diff --git a/example.hs b/example.hs
new file mode 100644
--- /dev/null
+++ b/example.hs
@@ -0,0 +1,26 @@
+{-# LANGUAGE OverloadedStrings #-}
+
+module Main where
+
+import qualified Data.ByteString as B
+import qualified Data.Map as M
+import           Ketchup.Httpd
+import           Ketchup.Routing
+
+handle hnd req params = do
+    sendReply hnd 200 [("Content-Type", ["text/html"])] response
+    where
+    response = B.concat ["<center>You requested <b>", url, "</b></center>"]
+    url = uri req
+
+greet hnd req params = do
+    sendReply hnd 200 [("Content-Type", ["text/html"])] response
+    where
+    response = B.concat ["<h1>Hi ", getName name, "!</h1>"]
+    getName (Just x) = x
+    getName Nothing  = "Anonymous"
+    name = M.lookup "user" params
+
+router = route [("/", handle), ("/greet/:user", greet)]
+
+main = do listenHTTP "*" 8080 router
