diff --git a/composer.json b/composer.json
index d6cdc7f..67095fe 100644
--- a/composer.json
+++ b/composer.json
@@ -25,6 +25,7 @@
     "easyrdf/easyrdf": "0.8.*",
     "phpunit/phpunit": "4.1.*",
     "phpunit/phpunit-mock-objects": "dev-master#e60bb929c50ae4237aaf680a4f6773f4ee17f0a2",
+    "willdurand/negotiation": "1.3.*",
     "zendframework/zend-feed": "2.2.*",
     "mikey179/vfsStream": "1.*"
   },
diff --git a/composer.lock b/composer.lock
index e1f9771..34ca670 100644
--- a/composer.lock
+++ b/composer.lock
@@ -4,7 +4,7 @@
         "Read more about it at http://getcomposer.org/doc/01-basic-usage.md#composer-lock-the-lock-file",
         "This file is @generated automatically"
     ],
-    "hash": "2b2309c748ec92230880579aaedfa1e6",
+    "hash": "8f128351f51886eefcd4609510ba00f1",
     "packages": [
         {
             "name": "doctrine/annotations",
@@ -80,22 +80,34 @@
         },
         {
             "name": "doctrine/cache",
-            "version": "v1.0",
+            "version": "v1.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/cache.git",
-                "reference": "v1.0"
+                "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://github.com/doctrine/cache/archive/v1.0.zip",
-                "reference": "v1.0",
+                "url": "https://api.github.com/repos/doctrine/cache/zipball/e16d7adf45664a50fa86f515b6d5e7f670130449",
+                "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.2"
             },
+            "conflict": {
+                "doctrine/common": ">2.2,<2.4"
+            },
+            "require-dev": {
+                "phpunit/phpunit": ">=3.7",
+                "satooshi/php-coveralls": "~0.6"
+            },
             "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
             "autoload": {
                 "psr-0": {
                     "Doctrine\\Common\\Cache\\": "lib/"
@@ -109,7 +121,8 @@
                 {
                     "name": "Jonathan Wage",
                     "email": "jonwage@gmail.com",
-                    "homepage": "http://www.jwage.com/"
+                    "homepage": "http://www.jwage.com/",
+                    "role": "Creator"
                 },
                 {
                     "name": "Guilherme Blanco",
@@ -125,7 +138,7 @@
                     "email": "kontakt@beberlei.de"
                 },
                 {
-                    "name": "Johannes M. Schmitt",
+                    "name": "Johannes Schmitt",
                     "email": "schmittjoh@gmail.com",
                     "homepage": "https://github.com/schmittjoh",
                     "role": "Developer of wrapped JMSSerializerBundle"
@@ -137,20 +150,20 @@
                 "cache",
                 "caching"
             ],
-            "time": "2013-01-10 22:43:46"
+            "time": "2013-10-25 19:04:14"
         },
         {
             "name": "doctrine/collections",
-            "version": "v1.1",
+            "version": "v1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/doctrine/collections.git",
-                "reference": "v1.1"
+                "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/doctrine/collections/zipball/v1.1",
-                "reference": "v1.1",
+                "url": "https://api.github.com/repos/doctrine/collections/zipball/b99c5c46c87126201899afe88ec490a25eedd6a2",
+                "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2",
                 "shasum": ""
             },
             "require": {
@@ -159,7 +172,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.1.x-dev"
+                    "dev-master": "1.2.x-dev"
                 }
             },
             "autoload": {
@@ -175,7 +188,8 @@
                 {
                     "name": "Jonathan Wage",
                     "email": "jonwage@gmail.com",
-                    "homepage": "http://www.jwage.com/"
+                    "homepage": "http://www.jwage.com/",
+                    "role": "Creator"
                 },
                 {
                     "name": "Guilherme Blanco",
@@ -191,7 +205,7 @@
                     "email": "kontakt@beberlei.de"
                 },
                 {
-                    "name": "Johannes M. Schmitt",
+                    "name": "Johannes Schmitt",
                     "email": "schmittjoh@gmail.com",
                     "homepage": "https://github.com/schmittjoh",
                     "role": "Developer of wrapped JMSSerializerBundle"
@@ -204,7 +218,7 @@
                 "collections",
                 "iterator"
             ],
-            "time": "2013-03-07 12:15:54"
+            "time": "2014-02-03 23:07:43"
         },
         {
             "name": "doctrine/common",
@@ -459,21 +473,21 @@
         },
         {
             "name": "guzzlehttp/guzzle",
-            "version": "4.1.3",
+            "version": "4.1.5",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/guzzle.git",
-                "reference": "012b2aecbda4e38f119c19580898685851015fa7"
+                "reference": "75e58ada121dffe1038331b808f8d3109499edc4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/012b2aecbda4e38f119c19580898685851015fa7",
-                "reference": "012b2aecbda4e38f119c19580898685851015fa7",
+                "url": "https://api.github.com/repos/guzzle/guzzle/zipball/75e58ada121dffe1038331b808f8d3109499edc4",
+                "reference": "75e58ada121dffe1038331b808f8d3109499edc4",
                 "shasum": ""
             },
             "require": {
                 "ext-json": "*",
-                "guzzlehttp/streams": "~1.3",
+                "guzzlehttp/streams": "~1.4",
                 "php": ">=5.4.0"
             },
             "require-dev": {
@@ -520,20 +534,20 @@
                 "rest",
                 "web service"
             ],
-            "time": "2014-07-16 03:01:02"
+            "time": "2014-08-02 22:52:37"
         },
         {
             "name": "guzzlehttp/streams",
-            "version": "1.3.0",
+            "version": "1.4.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/guzzle/streams.git",
-                "reference": "d6aaa91cfdbae86355dd2a168a3ca536755898a2"
+                "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/guzzle/streams/zipball/d6aaa91cfdbae86355dd2a168a3ca536755898a2",
-                "reference": "d6aaa91cfdbae86355dd2a168a3ca536755898a2",
+                "url": "https://api.github.com/repos/guzzle/streams/zipball/3b761a328e5ed6ed519e960aded95d7acbe77894",
+                "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894",
                 "shasum": ""
             },
             "require": {
@@ -545,7 +559,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "1.2.x-dev"
+                    "dev-master": "1.4.x-dev"
                 }
             },
             "autoload": {
@@ -573,25 +587,25 @@
                 "Guzzle",
                 "stream"
             ],
-            "time": "2014-07-15 22:02:02"
+            "time": "2014-07-19 18:43:42"
         },
         {
             "name": "kriswallsmith/assetic",
-            "version": "v1.1.1",
+            "version": "v1.1.2",
             "source": {
                 "type": "git",
                 "url": "https://github.com/kriswallsmith/assetic.git",
-                "reference": "v1.1.1"
+                "reference": "735cffd3982c6e8cdebe292d5db39d077f65890f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/v1.1.1",
-                "reference": "v1.1.1",
+                "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/735cffd3982c6e8cdebe292d5db39d077f65890f",
+                "reference": "735cffd3982c6e8cdebe292d5db39d077f65890f",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.1",
-                "symfony/process": ">=2.1,<3.0"
+                "symfony/process": "~2.1"
             },
             "require-dev": {
                 "cssmin/cssmin": "*",
@@ -601,9 +615,9 @@
                 "leafo/scssphp": "*",
                 "leafo/scssphp-compass": "*",
                 "mrclay/minify": "*",
-                "phpunit/phpunit": ">=3.7,<4.0",
+                "phpunit/phpunit": "~3.7",
                 "ptachoire/cssembed": "*",
-                "twig/twig": ">=1.6,<2.0"
+                "twig/twig": "~1.6"
             },
             "suggest": {
                 "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
@@ -644,26 +658,34 @@
                 "compression",
                 "minification"
             ],
-            "time": "2013-06-01 22:13:43"
+            "time": "2013-07-19 00:03:27"
         },
         {
             "name": "mikey179/vfsStream",
-            "version": "v1.2.0",
+            "version": "v1.3.0",
             "source": {
                 "type": "git",
                 "url": "https://github.com/mikey179/vfsStream.git",
-                "reference": "063fb10633f10c5ccbcac26227e94f46d9336f90"
+                "reference": "8571f349567e02af1b7efc0fc4e3a4a1c98e664e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/063fb10633f10c5ccbcac26227e94f46d9336f90",
-                "reference": "063fb10633f10c5ccbcac26227e94f46d9336f90",
+                "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/8571f349567e02af1b7efc0fc4e3a4a1c98e664e",
+                "reference": "8571f349567e02af1b7efc0fc4e3a4a1c98e664e",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.0"
             },
+            "require-dev": {
+                "phpunit/phpunit": "~4.1"
+            },
             "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3.x-dev"
+                }
+            },
             "autoload": {
                 "psr-0": {
                     "org\\bovigo\\vfs\\": "src/main/php"
@@ -674,20 +696,133 @@
                 "BSD"
             ],
             "homepage": "http://vfs.bovigo.org/",
-            "time": "2013-04-01 10:41:02"
+            "time": "2014-07-21 20:15:54"
+        },
+        {
+            "name": "ocramius/instantiator",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Ocramius/Instantiator.git",
+                "reference": "cc754c2289ffd4483c319f6ed6ee88ce21676f64"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Ocramius/Instantiator/zipball/cc754c2289ffd4483c319f6ed6ee88ce21676f64",
+                "reference": "cc754c2289ffd4483c319f6ed6ee88ce21676f64",
+                "shasum": ""
+            },
+            "require": {
+                "ocramius/lazy-map": "1.0.*",
+                "php": "~5.3"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.8",
+                "ext-phar": "*",
+                "phpunit/phpunit": "~4.0",
+                "squizlabs/php_codesniffer": "2.0.*@ALPHA"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "2.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Instantiator\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+            "homepage": "https://github.com/Ocramius/Instantiator",
+            "keywords": [
+                "constructor",
+                "instantiate"
+            ],
+            "time": "2014-06-15 11:44:46"
+        },
+        {
+            "name": "ocramius/lazy-map",
+            "version": "1.0.0",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/Ocramius/LazyMap.git",
+                "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/Ocramius/LazyMap/zipball/7fe3d347f5e618bcea7d39345ff83f3651d8b752",
+                "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.3"
+            },
+            "require-dev": {
+                "athletic/athletic": "~0.1.6",
+                "phpmd/phpmd": "1.5.*",
+                "phpunit/phpunit": ">=3.7",
+                "satooshi/php-coveralls": "~0.6",
+                "squizlabs/php_codesniffer": "1.4.*"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.0.x-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "LazyMap\\": "src"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "Marco Pivetta",
+                    "email": "ocramius@gmail.com",
+                    "homepage": "http://ocramius.github.com/",
+                    "role": "Developer"
+                }
+            ],
+            "description": "A library that provides lazy instantiation logic for a map of objects",
+            "homepage": "https://github.com/Ocramius/LazyMap",
+            "keywords": [
+                "lazy",
+                "lazy instantiation",
+                "lazy loading",
+                "map",
+                "service location"
+            ],
+            "time": "2013-11-09 22:30:54"
         },
         {
             "name": "phpunit/php-code-coverage",
-            "version": "2.0.8",
+            "version": "2.0.9",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-                "reference": "58401826c8cfc8fd689b60026e91c337df374bca"
+                "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/58401826c8cfc8fd689b60026e91c337df374bca",
-                "reference": "58401826c8cfc8fd689b60026e91c337df374bca",
+                "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ed8ac99ce38c3fd134128c898f7ca74665abef7f",
+                "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f",
                 "shasum": ""
             },
             "require": {
@@ -739,7 +874,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2014-05-26 14:55:24"
+            "time": "2014-06-29 08:14:40"
         },
         {
             "name": "phpunit/php-file-iterator",
@@ -926,16 +1061,16 @@
         },
         {
             "name": "phpunit/phpunit",
-            "version": "4.1.3",
+            "version": "4.1.4",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sebastianbergmann/phpunit.git",
-                "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91"
+                "reference": "a71c4842c5fb836d8b200624583b859ec34e8a26"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/939cb801b3b2aa253aedd0b279f40bb8f35cec91",
-                "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91",
+                "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a71c4842c5fb836d8b200624583b859ec34e8a26",
+                "reference": "a71c4842c5fb836d8b200624583b859ec34e8a26",
                 "shasum": ""
             },
             "require": {
@@ -996,7 +1131,7 @@
                 "testing",
                 "xunit"
             ],
-            "time": "2014-06-11 14:15:47"
+            "time": "2014-07-18 07:15:58"
         },
         {
             "name": "phpunit/phpunit-mock-objects",
@@ -1013,6 +1148,7 @@
                 "shasum": ""
             },
             "require": {
+                "ocramius/instantiator": "~1.0",
                 "php": ">=5.3.3",
                 "phpunit/php-text-template": "~1.2"
             },
@@ -1095,21 +1231,25 @@
         },
         {
             "name": "sdboyer/gliph",
-            "version": "0.1.4",
+            "version": "0.1.8",
             "source": {
                 "type": "git",
                 "url": "https://github.com/sdboyer/gliph.git",
-                "reference": "aad932ef7d808105341cc9a36538e9fe2cb5ee82"
+                "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/sdboyer/gliph/zipball/aad932ef7d808105341cc9a36538e9fe2cb5ee82",
-                "reference": "aad932ef7d808105341cc9a36538e9fe2cb5ee82",
+                "url": "https://api.github.com/repos/sdboyer/gliph/zipball/db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e",
+                "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3"
             },
+            "require-dev": {
+                "phpunit/phpunit": "3.7.*",
+                "satooshi/php-coveralls": "0.6.*"
+            },
             "type": "library",
             "autoload": {
                 "psr-0": {
@@ -1135,7 +1275,7 @@
                 "php",
                 "spl"
             ],
-            "time": "2013-09-27 01:15:21"
+            "time": "2014-08-03 14:34:47"
         },
         {
             "name": "sebastian/comparator",
@@ -1465,17 +1605,17 @@
         },
         {
             "name": "symfony/class-loader",
-            "version": "v2.4.1",
+            "version": "v2.4.8",
             "target-dir": "Symfony/Component/ClassLoader",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/ClassLoader.git",
-                "reference": "6a2ebedbc780130f07b3a15363743d08eb46820c"
+                "reference": "94b18e1beb7708872e237e1cab82c7369e817b0a"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/6a2ebedbc780130f07b3a15363743d08eb46820c",
-                "reference": "6a2ebedbc780130f07b3a15363743d08eb46820c",
+                "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/94b18e1beb7708872e237e1cab82c7369e817b0a",
+                "reference": "94b18e1beb7708872e237e1cab82c7369e817b0a",
                 "shasum": ""
             },
             "require": {
@@ -1502,7 +1642,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -1511,21 +1653,21 @@
             ],
             "description": "Symfony ClassLoader Component",
             "homepage": "http://symfony.com",
-            "time": "2013-11-26 16:40:27"
+            "time": "2014-07-09 09:04:55"
         },
         {
             "name": "symfony/css-selector",
-            "version": "v2.4.4",
+            "version": "v2.4.8",
             "target-dir": "Symfony/Component/CssSelector",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/CssSelector.git",
-                "reference": "479a5b409723f596ffc3b5178034e4d76ce615b3"
+                "reference": "52c35be379ec341c15d2edc7f798f7fd69708645"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/CssSelector/zipball/479a5b409723f596ffc3b5178034e4d76ce615b3",
-                "reference": "479a5b409723f596ffc3b5178034e4d76ce615b3",
+                "url": "https://api.github.com/repos/symfony/CssSelector/zipball/52c35be379ec341c15d2edc7f798f7fd69708645",
+                "reference": "52c35be379ec341c15d2edc7f798f7fd69708645",
                 "shasum": ""
             },
             "require": {
@@ -1564,21 +1706,21 @@
             ],
             "description": "Symfony CssSelector Component",
             "homepage": "http://symfony.com",
-            "time": "2014-04-18 20:37:09"
+            "time": "2014-07-09 09:04:55"
         },
         {
             "name": "symfony/debug",
-            "version": "v2.3.4",
+            "version": "v2.5.2",
             "target-dir": "Symfony/Component/Debug",
             "source": {
                 "type": "git",
-                "url": "https://github.com/symfony/Debug.git",
-                "reference": "729f6d19cfc401c4942e43fcc1059103bd6df130"
+                "url": "git@github.com:symfony/Debug.git",
+                "reference": "a725879a4b1c0e9a242c7a0480e787cb6465cb8f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Debug/zipball/729f6d19cfc401c4942e43fcc1059103bd6df130",
-                "reference": "729f6d19cfc401c4942e43fcc1059103bd6df130",
+                "url": "https://api.github.com/repos/symfony/Debug/zipball/a725879a4b1c0e9a242c7a0480e787cb6465cb8f",
+                "reference": "a725879a4b1c0e9a242c7a0480e787cb6465cb8f",
                 "shasum": ""
             },
             "require": {
@@ -1589,14 +1731,13 @@
                 "symfony/http-kernel": "~2.1"
             },
             "suggest": {
-                "symfony/class-loader": "",
                 "symfony/http-foundation": "",
                 "symfony/http-kernel": ""
             },
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.3-dev"
+                    "dev-master": "2.5-dev"
                 }
             },
             "autoload": {
@@ -1610,31 +1751,31 @@
             ],
             "authors": [
                 {
-                    "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
-                },
-                {
                     "name": "Symfony Community",
                     "homepage": "http://symfony.com/contributors"
+                },
+                {
+                    "name": "Fabien Potencier",
+                    "email": "fabien@symfony.com"
                 }
             ],
             "description": "Symfony Debug Component",
             "homepage": "http://symfony.com",
-            "time": "2013-08-08 14:16:10"
+            "time": "2014-07-09 09:05:48"
         },
         {
             "name": "symfony/dependency-injection",
-            "version": "v2.4.1",
+            "version": "v2.4.8",
             "target-dir": "Symfony/Component/DependencyInjection",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/DependencyInjection.git",
-                "reference": "7e5bde3a607dde1f8ddef5180759068ad53d259c"
+                "reference": "0655a6b985d2ecb248825b7f5ed569a85a822e53"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/7e5bde3a607dde1f8ddef5180759068ad53d259c",
-                "reference": "7e5bde3a607dde1f8ddef5180759068ad53d259c",
+                "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/0655a6b985d2ecb248825b7f5ed569a85a822e53",
+                "reference": "0655a6b985d2ecb248825b7f5ed569a85a822e53",
                 "shasum": ""
             },
             "require": {
@@ -1668,7 +1809,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -1677,21 +1820,21 @@
             ],
             "description": "Symfony DependencyInjection Component",
             "homepage": "http://symfony.com",
-            "time": "2014-01-01 09:02:49"
+            "time": "2014-07-09 09:04:55"
         },
         {
             "name": "symfony/event-dispatcher",
-            "version": "v2.4.1",
+            "version": "v2.4.8",
             "target-dir": "Symfony/Component/EventDispatcher",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/EventDispatcher.git",
-                "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601"
+                "reference": "6008a029b6a3c0816d58be2ca8923e324cc89d93"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/e3ba42f6a70554ed05749e61b829550f6ac33601",
-                "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601",
+                "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/6008a029b6a3c0816d58be2ca8923e324cc89d93",
+                "reference": "6008a029b6a3c0816d58be2ca8923e324cc89d93",
                 "shasum": ""
             },
             "require": {
@@ -1722,7 +1865,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -1731,26 +1876,29 @@
             ],
             "description": "Symfony EventDispatcher Component",
             "homepage": "http://symfony.com",
-            "time": "2013-12-28 08:12:03"
+            "time": "2014-07-09 09:04:55"
         },
         {
             "name": "symfony/http-foundation",
-            "version": "v2.4.1",
+            "version": "v2.4.8",
             "target-dir": "Symfony/Component/HttpFoundation",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/HttpFoundation.git",
-                "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844"
+                "reference": "68abe34601c519359b60363b99c29ecfb6679bc4"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/6c6b8a7bcd7e2cc920cd6acace563fdbf121d844",
-                "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844",
+                "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/68abe34601c519359b60363b99c29ecfb6679bc4",
+                "reference": "68abe34601c519359b60363b99c29ecfb6679bc4",
                 "shasum": ""
             },
             "require": {
                 "php": ">=5.3.3"
             },
+            "require-dev": {
+                "symfony/expression-language": "~2.4"
+            },
             "type": "library",
             "extra": {
                 "branch-alias": {
@@ -1772,7 +1920,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -1781,21 +1931,21 @@
             ],
             "description": "Symfony HttpFoundation Component",
             "homepage": "http://symfony.com",
-            "time": "2014-01-05 02:10:50"
+            "time": "2014-07-15 14:07:10"
         },
         {
             "name": "symfony/http-kernel",
-            "version": "v2.4.1",
+            "version": "v2.4.8",
             "target-dir": "Symfony/Component/HttpKernel",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/HttpKernel.git",
-                "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4"
+                "reference": "b2c3fc145e7b50c8e09daab303674126ca3a8c5b"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/0605eedeb52c4d3a3144128d8336395a57be60d4",
-                "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4",
+                "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/b2c3fc145e7b50c8e09daab303674126ca3a8c5b",
+                "reference": "b2c3fc145e7b50c8e09daab303674126ca3a8c5b",
                 "shasum": ""
             },
             "require": {
@@ -1843,7 +1993,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -1852,21 +2004,21 @@
             ],
             "description": "Symfony HttpKernel Component",
             "homepage": "http://symfony.com",
-            "time": "2014-01-05 02:12:11"
+            "time": "2014-07-15 14:52:02"
         },
         {
             "name": "symfony/process",
-            "version": "v2.3.4",
+            "version": "v2.5.2",
             "target-dir": "Symfony/Component/Process",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Process.git",
-                "reference": "1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b"
+                "reference": "5e53efbf61a7fbf73c79e3e08feea50f64c20bfa"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Process/zipball/1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b",
-                "reference": "1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b",
+                "url": "https://api.github.com/repos/symfony/Process/zipball/5e53efbf61a7fbf73c79e3e08feea50f64c20bfa",
+                "reference": "5e53efbf61a7fbf73c79e3e08feea50f64c20bfa",
                 "shasum": ""
             },
             "require": {
@@ -1875,7 +2027,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.3-dev"
+                    "dev-master": "2.5-dev"
                 }
             },
             "autoload": {
@@ -1890,7 +2042,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -1899,21 +2053,21 @@
             ],
             "description": "Symfony Process Component",
             "homepage": "http://symfony.com",
-            "time": "2013-08-22 06:42:25"
+            "time": "2014-07-09 09:05:48"
         },
         {
             "name": "symfony/property-access",
-            "version": "v2.4.1",
+            "version": "v2.5.2",
             "target-dir": "Symfony/Component/PropertyAccess",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/PropertyAccess.git",
-                "reference": "274951234150e303c83099a2429be6be35629fe9"
+                "reference": "c80993206d5d842c46fc0bdb7da576a42845acfb"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/PropertyAccess/zipball/274951234150e303c83099a2429be6be35629fe9",
-                "reference": "274951234150e303c83099a2429be6be35629fe9",
+                "url": "https://api.github.com/repos/symfony/PropertyAccess/zipball/c80993206d5d842c46fc0bdb7da576a42845acfb",
+                "reference": "c80993206d5d842c46fc0bdb7da576a42845acfb",
                 "shasum": ""
             },
             "require": {
@@ -1922,7 +2076,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.4-dev"
+                    "dev-master": "2.5-dev"
                 }
             },
             "autoload": {
@@ -1937,7 +2091,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -1957,21 +2113,21 @@
                 "property path",
                 "reflection"
             ],
-            "time": "2013-11-13 21:30:16"
+            "time": "2014-07-09 09:05:48"
         },
         {
             "name": "symfony/routing",
-            "version": "v2.4.1",
+            "version": "v2.4.8",
             "target-dir": "Symfony/Component/Routing",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Routing.git",
-                "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a"
+                "reference": "d290f15b7083cee926e17299ab6889210058b30e"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Routing/zipball/4abfb500aab8be458c9e3a227ea56b190584f78a",
-                "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a",
+                "url": "https://api.github.com/repos/symfony/Routing/zipball/d290f15b7083cee926e17299ab6889210058b30e",
+                "reference": "d290f15b7083cee926e17299ab6889210058b30e",
                 "shasum": ""
             },
             "require": {
@@ -2008,7 +2164,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -2023,7 +2181,7 @@
                 "uri",
                 "url"
             ],
-            "time": "2014-01-05 02:10:50"
+            "time": "2014-07-09 09:04:55"
         },
         {
             "name": "symfony/serializer",
@@ -2076,17 +2234,17 @@
         },
         {
             "name": "symfony/translation",
-            "version": "v2.3.4",
+            "version": "v2.5.2",
             "target-dir": "Symfony/Component/Translation",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Translation.git",
-                "reference": "65f888291f0896ad492f9abc6dc05c998373aded"
+                "reference": "059d57c361043f5a06eb348b9b7554213f9ab8d1"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Translation/zipball/65f888291f0896ad492f9abc6dc05c998373aded",
-                "reference": "65f888291f0896ad492f9abc6dc05c998373aded",
+                "url": "https://api.github.com/repos/symfony/Translation/zipball/059d57c361043f5a06eb348b9b7554213f9ab8d1",
+                "reference": "059d57c361043f5a06eb348b9b7554213f9ab8d1",
                 "shasum": ""
             },
             "require": {
@@ -2103,7 +2261,7 @@
             "type": "library",
             "extra": {
                 "branch-alias": {
-                    "dev-master": "2.3-dev"
+                    "dev-master": "2.5-dev"
                 }
             },
             "autoload": {
@@ -2118,7 +2276,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -2127,21 +2287,21 @@
             ],
             "description": "Symfony Translation Component",
             "homepage": "http://symfony.com",
-            "time": "2013-08-26 05:49:51"
+            "time": "2014-07-15 14:22:44"
         },
         {
             "name": "symfony/validator",
-            "version": "v2.4.1",
+            "version": "v2.4.8",
             "target-dir": "Symfony/Component/Validator",
             "source": {
                 "type": "git",
                 "url": "https://github.com/symfony/Validator.git",
-                "reference": "7ea4e53f8d68bf3ae9cca28765d49d7930618730"
+                "reference": "5b32e6d5c9ac1c454823348f4d9dc564975b2008"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/symfony/Validator/zipball/7ea4e53f8d68bf3ae9cca28765d49d7930618730",
-                "reference": "7ea4e53f8d68bf3ae9cca28765d49d7930618730",
+                "url": "https://api.github.com/repos/symfony/Validator/zipball/5b32e6d5c9ac1c454823348f4d9dc564975b2008",
+                "reference": "5b32e6d5c9ac1c454823348f4d9dc564975b2008",
                 "shasum": ""
             },
             "require": {
@@ -2183,7 +2343,9 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Symfony Community",
@@ -2192,7 +2354,7 @@
             ],
             "description": "Symfony Validator Component",
             "homepage": "http://symfony.com",
-            "time": "2014-01-01 08:14:50"
+            "time": "2014-07-15 14:07:10"
         },
         {
             "name": "symfony/yaml",
@@ -2245,16 +2407,16 @@
         },
         {
             "name": "twig/twig",
-            "version": "v1.15.0",
+            "version": "v1.15.1",
             "source": {
                 "type": "git",
                 "url": "https://github.com/fabpot/Twig.git",
-                "reference": "85e4ff98000157ff753d934b9f13659a953f5666"
+                "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/fabpot/Twig/zipball/85e4ff98000157ff753d934b9f13659a953f5666",
-                "reference": "85e4ff98000157ff753d934b9f13659a953f5666",
+                "url": "https://api.github.com/repos/fabpot/Twig/zipball/1fb5784662f438d7d96a541e305e28b812e2eeed",
+                "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed",
                 "shasum": ""
             },
             "require": {
@@ -2278,11 +2440,19 @@
             "authors": [
                 {
                     "name": "Fabien Potencier",
-                    "email": "fabien@symfony.com"
+                    "email": "fabien@symfony.com",
+                    "homepage": "http://fabien.potencier.org",
+                    "role": "Lead Developer"
                 },
                 {
                     "name": "Armin Ronacher",
-                    "email": "armin.ronacher@active-4.com"
+                    "email": "armin.ronacher@active-4.com",
+                    "role": "Project Founder"
+                },
+                {
+                    "name": "Twig Team",
+                    "homepage": "https://github.com/fabpot/Twig/graphs/contributors",
+                    "role": "Contributors"
                 }
             ],
             "description": "Twig, the flexible, fast, and secure template language for PHP",
@@ -2290,21 +2460,71 @@
             "keywords": [
                 "templating"
             ],
-            "time": "2013-12-06 07:47:10"
+            "time": "2014-02-13 10:19:29"
+        },
+        {
+            "name": "willdurand/negotiation",
+            "version": "1.3.3",
+            "source": {
+                "type": "git",
+                "url": "https://github.com/willdurand/Negotiation.git",
+                "reference": "a98fb6b9808610c1aa326c736893d3d77d9383b6"
+            },
+            "dist": {
+                "type": "zip",
+                "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/a98fb6b9808610c1aa326c736893d3d77d9383b6",
+                "reference": "a98fb6b9808610c1aa326c736893d3d77d9383b6",
+                "shasum": ""
+            },
+            "require": {
+                "php": ">=5.3.0"
+            },
+            "type": "library",
+            "extra": {
+                "branch-alias": {
+                    "dev-master": "1.3-dev"
+                }
+            },
+            "autoload": {
+                "psr-0": {
+                    "Negotiation": "src/"
+                }
+            },
+            "notification-url": "https://packagist.org/downloads/",
+            "license": [
+                "MIT"
+            ],
+            "authors": [
+                {
+                    "name": "William Durand",
+                    "email": "william.durand1@gmail.com",
+                    "homepage": "http://www.willdurand.fr"
+                }
+            ],
+            "description": "Content Negotiation tools for PHP provided as a standalone library.",
+            "homepage": "http://williamdurand.fr/Negotiation/",
+            "keywords": [
+                "accept",
+                "content",
+                "format",
+                "header",
+                "negotiation"
+            ],
+            "time": "2014-05-16 12:34:51"
         },
         {
             "name": "zendframework/zend-escaper",
-            "version": "2.2.1",
+            "version": "2.2.6",
             "target-dir": "Zend/Escaper",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/Component_ZendEscaper.git",
-                "reference": "release-2.2.1"
+                "reference": "80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zendframework/Component_ZendEscaper/zipball/release-2.2.1",
-                "reference": "release-2.2.1",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendEscaper/zipball/80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f",
+                "reference": "80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f",
                 "shasum": ""
             },
             "require": {
@@ -2330,21 +2550,21 @@
                 "escaper",
                 "zf2"
             ],
-            "time": "2013-05-01 21:53:03"
+            "time": "2014-01-04 13:00:13"
         },
         {
             "name": "zendframework/zend-feed",
-            "version": "2.2.1",
+            "version": "2.2.6",
             "target-dir": "Zend/Feed",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/Component_ZendFeed.git",
-                "reference": "release-2.2.1"
+                "reference": "8acb562d99dd0786d25c990530980d2d92b67b35"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zendframework/Component_ZendFeed/zipball/release-2.2.1",
-                "reference": "release-2.2.1",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendFeed/zipball/8acb562d99dd0786d25c990530980d2d92b67b35",
+                "reference": "8acb562d99dd0786d25c990530980d2d92b67b35",
                 "shasum": ""
             },
             "require": {
@@ -2378,21 +2598,21 @@
                 "feed",
                 "zf2"
             ],
-            "time": "2013-06-12 19:45:31"
+            "time": "2014-01-04 13:00:14"
         },
         {
             "name": "zendframework/zend-stdlib",
-            "version": "2.2.1",
+            "version": "2.2.6",
             "target-dir": "Zend/Stdlib",
             "source": {
                 "type": "git",
                 "url": "https://github.com/zendframework/Component_ZendStdlib.git",
-                "reference": "release-2.2.1"
+                "reference": "e646729f2274f4552b6a92e38d8e458efe08ebc5"
             },
             "dist": {
                 "type": "zip",
-                "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/release-2.2.1",
-                "reference": "release-2.2.1",
+                "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/e646729f2274f4552b6a92e38d8e458efe08ebc5",
+                "reference": "e646729f2274f4552b6a92e38d8e458efe08ebc5",
                 "shasum": ""
             },
             "require": {
@@ -2422,11 +2642,15 @@
                 "stdlib",
                 "zf2"
             ],
-            "time": "2013-06-12 19:46:58"
+            "time": "2014-01-04 13:00:28"
         }
     ],
-    "packages-dev": [],
-    "aliases": [],
+    "packages-dev": [
+
+    ],
+    "aliases": [
+
+    ],
     "minimum-stability": "stable",
     "stability-flags": {
         "symfony/yaml": 20,
@@ -2440,5 +2664,7 @@
     "platform": {
         "php": ">=5.4.2"
     },
-    "platform-dev": []
+    "platform-dev": [
+
+    ]
 }
diff --git a/core/core.services.yml b/core/core.services.yml
index a58f779..a5ec2a8 100644
--- a/core/core.services.yml
+++ b/core/core.services.yml
@@ -391,7 +391,7 @@ services:
       - { name: event_subscriber }
   router.route_preloader:
     class: Drupal\Core\Routing\RoutePreloader
-    arguments: ['@router.route_provider', '@state', '@content_negotiation']
+    arguments: ['@router.route_provider', '@state']
     tags:
       - { name: 'event_subscriber' }
   router.matcher.final_matcher:
@@ -477,7 +477,6 @@ services:
     arguments: [16]
   accept_header_matcher:
     class: Drupal\Core\Routing\AcceptHeaderMatcher
-    arguments: ['@content_negotiation']
     tags:
       - { name: route_filter }
   content_type_header_matcher:
@@ -578,12 +577,12 @@ services:
       - { name: event_subscriber }
     arguments: ['@router', '@router.request_context', NULL, '@request_stack']
   content_negotiation:
-    class: Drupal\Core\ContentNegotiation
+    class: Negotiation\FormatNegotiator
   view_subscriber:
     class: Drupal\Core\EventSubscriber\ViewSubscriber
     tags:
       - { name: event_subscriber }
-    arguments: ['@content_negotiation', '@title_resolver', '@ajax_response_renderer']
+    arguments: ['@title_resolver', '@ajax_response_renderer']
   html_view_subscriber:
     class: Drupal\Core\EventSubscriber\HtmlViewSubscriber
     tags:
@@ -685,7 +684,7 @@ services:
     arguments: ['@config.manager', '@config.storage', '@config.storage.snapshot']
   exception_controller:
     class: Drupal\Core\Controller\ExceptionController
-    arguments: ['@content_negotiation', '@title_resolver', '@html_page_renderer', '@html_fragment_renderer', '@string_translation', '@url_generator']
+    arguments: ['@title_resolver', '@html_page_renderer', '@html_fragment_renderer', '@string_translation', '@url_generator']
     calls:
       - [setContainer, ['@service_container']]
   exception_listener:
diff --git a/core/lib/Drupal/Core/ContentNegotiation.php b/core/lib/Drupal/Core/ContentNegotiation.php
deleted file mode 100644
index 500200c..0000000
--- a/core/lib/Drupal/Core/ContentNegotiation.php
+++ /dev/null
@@ -1,64 +0,0 @@
-<?php
-
-/**
- * @file
- * Definition of Drupal\Core\ContentNegotiation.
- */
-
-namespace Drupal\Core;
-
-use Symfony\Component\HttpFoundation\Request;
-
-/**
- * This class is a central library for content type negotiation.
- *
- * @todo Replace this class with a real content negotiation library based on
- *   mod_negotiation. Development of that is a work in progress.
- */
-class ContentNegotiation {
-
-  /**
-   * Gets the normalized type of a request.
-   *
-   * The normalized type is a short, lowercase version of the format, such as
-   * 'html', 'json' or 'atom'.
-   *
-   * @param Symfony\Component\HttpFoundation\Request $request
-   *   The request object from which to extract the content type.
-   *
-   * @return string
-   *   The normalized type of a given request.
-   */
-  public function getContentType(Request $request) {
-    // AJAX iframe uploads need special handling, because they contain a JSON
-    // response wrapped in <textarea>.
-    if ($request->get('ajax_iframe_upload', FALSE)) {
-      return 'iframeupload';
-    }
-
-    // Check all formats, if priority format is found return it.
-    $first_found_format = FALSE;
-    $priority = array('html', 'drupal_ajax', 'drupal_modal', 'drupal_dialog');
-    foreach ($request->getAcceptableContentTypes() as $mime_type) {
-      $format = $request->getFormat($mime_type);
-      if (in_array($format, $priority, TRUE)) {
-        return $format;
-      }
-      if (!is_null($format) && !$first_found_format) {
-        $first_found_format = $format;
-      }
-    }
-
-    // No HTML found, return first found.
-    if ($first_found_format) {
-      return $first_found_format;
-    }
-
-    if ($request->isXmlHttpRequest()) {
-      return 'ajax';
-    }
-
-    // Do HTML last so that it always wins.
-    return 'html';
-  }
-}
diff --git a/core/lib/Drupal/Core/Controller/ExceptionController.php b/core/lib/Drupal/Core/Controller/ExceptionController.php
index dbd227f..52ace0b 100644
--- a/core/lib/Drupal/Core/Controller/ExceptionController.php
+++ b/core/lib/Drupal/Core/Controller/ExceptionController.php
@@ -20,7 +20,6 @@
 use Drupal\Component\Utility\SafeMarkup;
 use Drupal\Component\Utility\String;
 use Symfony\Component\Debug\Exception\FlattenException;
-use Drupal\Core\ContentNegotiation;
 use Drupal\Core\Utility\Error;
 use Drupal\Core\StringTranslation\StringTranslationTrait;
 use Drupal\Core\StringTranslation\TranslationInterface;
@@ -32,13 +31,6 @@ class ExceptionController extends HtmlControllerBase implements ContainerAwareIn
   use StringTranslationTrait;
 
   /**
-   * The content negotiation library.
-   *
-   * @var \Drupal\Core\ContentNegotiation
-   */
-  protected $negotiation;
-
-  /**
    * The service container.
    *
    * @var \Symfony\Component\DependencyInjection\ContainerInterface
@@ -62,9 +54,6 @@ class ExceptionController extends HtmlControllerBase implements ContainerAwareIn
   /**
    * Constructor.
    *
-   * @param \Drupal\Core\ContentNegotiation $negotiation
-   *   The content negotiation library to use to determine the correct response
-   *   format.
    * @param \Drupal\Core\Controller\TitleResolverInterface $title_resolver
    *   The title resolver.
    * @param \Drupal\Core\Page\HtmlPageRendererInterface $renderer
@@ -75,9 +64,8 @@ class ExceptionController extends HtmlControllerBase implements ContainerAwareIn
    *   The url generator.
    * @param \Drupal\Core\Routing\UrlGeneratorInterface $url_generator
    */
-  public function __construct(ContentNegotiation $negotiation, TitleResolverInterface $title_resolver, HtmlPageRendererInterface $renderer, HtmlFragmentRendererInterface $fragment_renderer, TranslationInterface $string_translation, UrlGeneratorInterface $url_generator) {
+  public function __construct(TitleResolverInterface $title_resolver, HtmlPageRendererInterface $renderer, HtmlFragmentRendererInterface $fragment_renderer, TranslationInterface $string_translation, UrlGeneratorInterface $url_generator) {
     parent::__construct($title_resolver, $url_generator);
-    $this->negotiation = $negotiation;
     $this->htmlPageRenderer = $renderer;
     $this->fragmentRenderer = $fragment_renderer;
     $this->stringTranslation = $string_translation;
@@ -107,7 +95,7 @@ public function setContainer(ContainerInterface $container = NULL) {
    *   A response object.
    */
   public function execute(FlattenException $exception, Request $request) {
-    $method = 'on' . $exception->getStatusCode() . $this->negotiation->getContentType($request);
+    $method = 'on' . $exception->getStatusCode() . $request->getRequestFormat();
 
     if (method_exists($this, $method)) {
       return $this->$method($exception, $request);
diff --git a/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php
index 377ae93..9fae03e 100644
--- a/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/ContentControllerSubscriber.php
@@ -7,7 +7,7 @@
 
 namespace Drupal\Core\EventSubscriber;
 
-use Drupal\Core\ContentNegotiation;
+use Negotiation\FormatNegotiatorInterface;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 use Symfony\Component\HttpKernel\Event\GetResponseEvent;
 use Symfony\Component\HttpKernel\KernelEvents;
@@ -20,17 +20,17 @@ class ContentControllerSubscriber implements EventSubscriberInterface {
   /**
    * Content negotiation library.
    *
-   * @var \Drupal\Core\ContentNegotiation
+   * @var \Negotiation\FormatNegotiatorInterface
    */
   protected $negotiation;
 
   /**
    * Constructs a new ContentControllerSubscriber object.
    *
-   * @param \Drupal\Core\ContentNegotiation $negotiation
+   * @param \Negotiation\FormatNegotiatorInterface $negotiation
    *   The Content Negotiation service.
    */
-  public function __construct(ContentNegotiation $negotiation) {
+  public function __construct(FormatNegotiatorInterface $negotiation) {
     $this->negotiation = $negotiation;
   }
 
@@ -56,7 +56,16 @@ public function onRequestDeriveFormat(GetResponseEvent $event) {
     $request = $event->getRequest();
 
     if (!$request->attributes->get('_format')) {
-      $request->setRequestFormat($this->negotiation->getContentType($request));
+      // The following formats have special high-priority according to Drupal.
+      // Any other formats should negotiate in order as appropriate.
+      $priorities = array('text/html', 'application/vnd.drupal-ajax', 'application/vnd.drupal-modal', 'application/vnd.drupal-dialog');
+
+      // Because we're registering new formats on the Request object, we will
+      // retrieve the raw mime type and then let the request map that to
+      // the format machine name. That way we only need to register new formats
+      // on the one object.
+      $format = $this->negotiation->getBest($accept_header = $request->headers->get('Accept'), $priorities);
+      $request->setRequestFormat($request->getFormat($format->getValue()));
     }
   }
 
@@ -84,7 +93,7 @@ public function onRequestDeriveContentWrapper(GetResponseEvent $event) {
    *   An array of event listener definitions.
    */
   static function getSubscribedEvents() {
-    $events[KernelEvents::REQUEST][] = array('onRequestDeriveFormat', 31);
+    $events[KernelEvents::REQUEST][] = array('onRequestDeriveFormat', 33);
     $events[KernelEvents::REQUEST][] = array('onRequestDeriveContentWrapper', 30);
 
     return $events;
diff --git a/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php b/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php
index 84b94c9..696b104 100644
--- a/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php
+++ b/core/lib/Drupal/Core/EventSubscriber/ViewSubscriber.php
@@ -18,8 +18,6 @@
 use Symfony\Component\HttpKernel\Event\GetResponseForControllerResultEvent;
 use Symfony\Component\EventDispatcher\EventSubscriberInterface;
 
-use Drupal\Core\ContentNegotiation;
-
 /**
  * Main subscriber for VIEW HTTP responses.
  *
@@ -30,13 +28,6 @@
 class ViewSubscriber implements EventSubscriberInterface {
 
   /**
-   * The content negotiation.
-   *
-   * @var \Drupal\Core\ContentNegotiation
-   */
-  protected $negotiation;
-
-  /**
    * The title resolver.
    *
    * @var \Drupal\Core\Controller\TitleResolverInterface
@@ -53,15 +44,12 @@ class ViewSubscriber implements EventSubscriberInterface {
   /**
    * Constructs a new ViewSubscriber.
    *
-   * @param \Drupal\Core\ContentNegotiation $negotiation
-   *   The content negotiation.
    * @param \Drupal\Core\Controller\TitleResolverInterface $title_resolver
    *   The title resolver.
    * @param \Drupal\Core\Ajax\AjaxResponseRenderer $ajax_renderer
    *   The ajax response renderer.
    */
-  public function __construct(ContentNegotiation $negotiation, TitleResolverInterface $title_resolver, AjaxResponseRenderer $ajax_renderer) {
-    $this->negotiation = $negotiation;
+  public function __construct(TitleResolverInterface $title_resolver, AjaxResponseRenderer $ajax_renderer) {
     $this->titleResolver = $title_resolver;
     $this->ajaxRenderer = $ajax_renderer;
   }
@@ -88,7 +76,7 @@ public function onView(GetResponseForControllerResultEvent $event) {
     // object.  The subrequest's response will get dissected and placed into
     // the larger page as needed.
     if ($event->getRequestType() == HttpKernelInterface::MASTER_REQUEST) {
-      $method = 'on' . $this->negotiation->getContentType($request);
+      $method = 'on' . $request->getRequestFormat();
 
       if (method_exists($this, $method)) {
         $event->setResponse($this->$method($event));
diff --git a/core/lib/Drupal/Core/Routing/AcceptHeaderMatcher.php b/core/lib/Drupal/Core/Routing/AcceptHeaderMatcher.php
index 34f0ae5..5ba6285 100644
--- a/core/lib/Drupal/Core/Routing/AcceptHeaderMatcher.php
+++ b/core/lib/Drupal/Core/Routing/AcceptHeaderMatcher.php
@@ -8,7 +8,7 @@
 namespace Drupal\Core\Routing;
 
 use Drupal\Component\Utility\String;
-use Drupal\Core\ContentNegotiation;
+use Negotiation\FormatNegotiatorInterface;
 use Symfony\Cmf\Component\Routing\NestedMatcher\RouteFilterInterface;
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Component\HttpKernel\Exception\NotAcceptableHttpException;
@@ -20,23 +20,6 @@
 class AcceptHeaderMatcher implements RouteFilterInterface {
 
   /**
-   * The content negotiation library.
-   *
-   * @var \Drupal\Core\ContentNegotiation
-   */
-  protected $contentNegotiation;
-
-  /**
-   * Constructs a new AcceptHeaderMatcher.
-   *
-   * @param \Drupal\Core\ContentNegotiation $cotent_negotiation
-   *   The content negotiation library.
-   */
-  public function __construct(ContentNegotiation $content_negotiation) {
-    $this->contentNegotiation = $content_negotiation;
-  }
-
-  /**
    * {@inheritdoc}
    */
   public function filter(RouteCollection $collection, Request $request) {
@@ -44,11 +27,11 @@ public function filter(RouteCollection $collection, Request $request) {
     // @todo replace by proper content negotiation library.
     $acceptable_mime_types = $request->getAcceptableContentTypes();
     $acceptable_formats = array_filter(array_map(array($request, 'getFormat'), $acceptable_mime_types));
-    $primary_format = $this->contentNegotiation->getContentType($request);
+    $primary_format = $request->getRequestFormat();
 
     foreach ($collection as $name => $route) {
       // _format could be a |-delimited list of supported formats.
-      $supported_formats = array_filter(explode('|', $route->getRequirement('_format')));
+      $supported_formats = array_unique(array_filter(explode('|', $route->getRequirement('_format'))));
 
       if (empty($supported_formats)) {
         // No format restriction on the route, so it always matches. Move it to
diff --git a/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php b/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php
index 4d0c707..be82238 100644
--- a/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php
+++ b/core/lib/Drupal/Core/Routing/Enhancer/AjaxEnhancer.php
@@ -9,7 +9,6 @@
 
 use Symfony\Component\HttpFoundation\Request;
 use Symfony\Cmf\Component\Routing\Enhancer\RouteEnhancerInterface;
-use Drupal\Core\ContentNegotiation;
 
 /**
  * Enhances an ajax route with the appropriate controller.
@@ -17,30 +16,13 @@
 class AjaxEnhancer implements RouteEnhancerInterface {
 
   /**
-   * Content negotiation library.
-   *
-   * @var \Drupal\CoreContentNegotiation
-   */
-  protected $negotiation;
-
-  /**
-   * Constructs a new \Drupal\Core\Routing\Enhancer\AjaxEnhancer object.
-   *
-   * @param \Drupal\Core\ContentNegotiation $negotiation
-   *   The Content Negotiation service.
-   */
-  public function __construct(ContentNegotiation $negotiation) {
-    $this->negotiation = $negotiation;
-  }
-
-  /**
    * {@inheritdoc}
    */
   public function enhance(array $defaults, Request $request) {
     // A request can have the 'ajax' content type when the controller supports
     // basically both simple HTML and Ajax routes by returning a render array.
     // In those cases we want to convert it to a proper ajax response as well.
-    if (empty($defaults['_content']) && $defaults['_controller'] != 'controller.ajax:content' && in_array($this->negotiation->getContentType($request), array('drupal_ajax', 'ajax', 'iframeupload'))) {
+    if (empty($defaults['_content']) && $defaults['_controller'] != 'controller.ajax:content' && in_array($request->getRequestFormat(), array('drupal_ajax', 'ajax', 'iframeupload'))) {
       $defaults['_content'] = isset($defaults['_controller']) ? $defaults['_controller'] : NULL;
       $defaults['_controller'] = 'controller.ajax:content';
     }
diff --git a/core/lib/Drupal/Core/Routing/RoutePreloader.php b/core/lib/Drupal/Core/Routing/RoutePreloader.php
index 7952d17..8e8d230 100644
--- a/core/lib/Drupal/Core/Routing/RoutePreloader.php
+++ b/core/lib/Drupal/Core/Routing/RoutePreloader.php
@@ -38,13 +38,6 @@ class RoutePreloader implements EventSubscriberInterface {
   protected $state;
 
   /**
-   * The content negotiation.
-   *
-   * @var \Drupal\Core\ContentNegotiation
-   */
-  protected $negotiation;
-
-  /**
    * Contains the non-admin routes while rebuilding the routes.
    *
    * @var array
@@ -58,13 +51,10 @@ class RoutePreloader implements EventSubscriberInterface {
    *   The route provider.
    * @param \Drupal\Core\State\StateInterface $state
    *   The state key value store.
-   * @param \Drupal\Core\ContentNegotiation $negotiation
-   *   The content negotiation.
    */
-  public function __construct(RouteProviderInterface $route_provider, StateInterface $state, ContentNegotiation $negotiation) {
+  public function __construct(RouteProviderInterface $route_provider, StateInterface $state) {
     $this->routeProvider = $route_provider;
     $this->state = $state;
-    $this->negotiation = $negotiation;
   }
 
   /**
@@ -75,7 +65,7 @@ public function __construct(RouteProviderInterface $route_provider, StateInterfa
    */
   public function onRequest(KernelEvent $event) {
     // Just preload on normal HTML pages, as they will display menu links.
-    if ($this->negotiation->getContentType($event->getRequest()) == 'html') {
+    if ($event->getRequest()->getRequestFormat() == 'html') {
       $this->loadNonAdminRoutes();
     }
   }
diff --git a/core/modules/rest/src/Plugin/views/display/RestExport.php b/core/modules/rest/src/Plugin/views/display/RestExport.php
index e41fef0..ac7485d 100644
--- a/core/modules/rest/src/Plugin/views/display/RestExport.php
+++ b/core/modules/rest/src/Plugin/views/display/RestExport.php
@@ -11,7 +11,6 @@
 use Drupal\Core\Form\FormErrorInterface;
 use Drupal\Core\State\StateInterface;
 use Drupal\Core\Routing\RouteProviderInterface;
-use Drupal\Core\ContentNegotiation;
 use Drupal\views\ViewExecutable;
 use Drupal\views\Plugin\views\display\PathPluginBase;
 use Symfony\Component\DependencyInjection\ContainerInterface;
@@ -73,13 +72,6 @@ class RestExport extends PathPluginBase {
   protected $mimeType;
 
   /**
-   * The content negotiation library.
-   *
-   * @var \Drupal\Core\ContentNegotiation
-   */
-  protected $contentNegotiation;
-
-  /**
    * Constructs a Drupal\rest\Plugin\ResourceBase object.
    *
    * @param array $configuration
@@ -94,12 +86,9 @@ class RestExport extends PathPluginBase {
    *   The state key value store.
    * @param \Drupal\Core\Form\FormErrorInterface $form_error
    *   The form error helper.
-   * @param \Drupal\Core\ContentNegotiation $content_negotiation
-   *   The content negotiation library.
    */
-  public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteProviderInterface $route_provider, StateInterface $state, FormErrorInterface $form_error, ContentNegotiation $content_negotiation) {
+  public function __construct(array $configuration, $plugin_id, $plugin_definition, RouteProviderInterface $route_provider, StateInterface $state, FormErrorInterface $form_error) {
     parent::__construct($configuration, $plugin_id, $plugin_definition, $route_provider, $state, $form_error);
-    $this->contentNegotiation = $content_negotiation;
   }
 
   /**
@@ -112,8 +101,7 @@ public static function create(ContainerInterface $container, array $configuratio
       $plugin_definition,
       $container->get('router.route_provider'),
       $container->get('state'),
-      $container->get('form_validator'),
-      $container->get('content_negotiation')
+      $container->get('form_validator')
     );
   }
 
@@ -123,7 +111,7 @@ public static function create(ContainerInterface $container, array $configuratio
   public function initDisplay(ViewExecutable $view, array &$display, array &$options = NULL) {
     parent::initDisplay($view, $display, $options);
 
-    $request_content_type = $this->contentNegotiation->getContentType($this->view->getRequest());
+    $request_content_type = $this->view->getRequest()->getRequestFormat();
     // Only use the requested content type if it's not 'html'. If it is then
     // default to 'json' to aid debugging.
     // @todo Remove the need for this when we have better content negotiation.
diff --git a/core/modules/rest/tests/src/CollectRoutesTest.php b/core/modules/rest/tests/src/CollectRoutesTest.php
index 5a0cac6..c010364 100644
--- a/core/modules/rest/tests/src/CollectRoutesTest.php
+++ b/core/modules/rest/tests/src/CollectRoutesTest.php
@@ -40,16 +40,10 @@ protected function setUp() {
 
     $container = new ContainerBuilder();
 
-    $content_negotiation = $this->getMockBuilder('\Drupal\Core\ContentNegotiation')
-      ->disableOriginalConstructor()
-      ->getMock();
-
     $request = $this->getMockBuilder('\Symfony\Component\HttpFoundation\Request')
       ->disableOriginalConstructor()
       ->getMock();
 
-    $container->set('content_negotiation', $content_negotiation);
-
     $this->view = $this->getMock('\Drupal\views\Entity\View', array('initHandlers'), array(
       array('id' => 'test_view'),
       'view',
diff --git a/core/tests/Drupal/Tests/Core/Controller/ExceptionControllerTest.php b/core/tests/Drupal/Tests/Core/Controller/ExceptionControllerTest.php
index 7307780..64e210e 100644
--- a/core/tests/Drupal/Tests/Core/Controller/ExceptionControllerTest.php
+++ b/core/tests/Drupal/Tests/Core/Controller/ExceptionControllerTest.php
@@ -30,13 +30,11 @@ public function test405HTML() {
     $translation = $this->getMock('Drupal\Core\StringTranslation\TranslationInterface');
     $url_generator = $this->getMock('Drupal\Core\Routing\UrlGeneratorInterface');
 
-    $content_negotiation = $this->getMock('Drupal\Core\ContentNegotiation');
-    $content_negotiation->expects($this->any())
-      ->method('getContentType')
-      ->will($this->returnValue('html'));
+    $request = new Request();
+    $request->setRequestFormat('html');
 
-    $exception_controller = new ExceptionController($content_negotiation, $title_resolver, $html_page_renderer, $html_fragment_renderer, $translation, $url_generator);
-    $response = $exception_controller->execute($flat_exception, new Request());
+    $exception_controller = new ExceptionController($title_resolver, $html_page_renderer, $html_fragment_renderer, $translation, $url_generator);
+    $response = $exception_controller->execute($flat_exception, $request);
     $this->assertEquals($response->getStatusCode(), 405, 'HTTP status of response is correct.');
     $this->assertEquals($response->getContent(), 'Method Not Allowed', 'HTTP response body is correct.');
   }
diff --git a/core/tests/Drupal/Tests/Core/Routing/AcceptHeaderMatcherTest.php b/core/tests/Drupal/Tests/Core/Routing/AcceptHeaderMatcherTest.php
index 22ffa8f..bb1feb2 100644
--- a/core/tests/Drupal/Tests/Core/Routing/AcceptHeaderMatcherTest.php
+++ b/core/tests/Drupal/Tests/Core/Routing/AcceptHeaderMatcherTest.php
@@ -7,10 +7,10 @@
 
 namespace Drupal\Tests\Core\Routing;
 
-use Drupal\Core\ContentNegotiation;
 use Drupal\Core\Routing\AcceptHeaderMatcher;
 use Drupal\Tests\Core\Routing\RoutingFixtures;
 use Drupal\Tests\UnitTestCase;
+use Negotiation\FormatNegotiator;
 use Symfony\Component\HttpFoundation\Request;
 
 /**
@@ -35,13 +35,21 @@ class AcceptHeaderMatcherTest extends UnitTestCase {
   protected $matcher;
 
   /**
+   * The content type negotiation library.
+   *
+   * @var \Negotiation\FormatNegotiator
+   */
+  protected $negotiator;
+
+  /**
    * {@inheritdoc}
    */
   public function setUp() {
     parent::setUp();
 
     $this->fixtures = new RoutingFixtures();
-    $this->matcher = new AcceptHeaderMatcher(new ContentNegotiation());
+    $this->matcher = new AcceptHeaderMatcher();
+    $this->negotiator = new FormatNegotiator();
   }
 
   /**
@@ -77,6 +85,9 @@ public function testAcceptFiltering($accept_header, $included_route, $excluded_r
 
     $request = Request::create('path/two', 'GET');
     $request->headers->set('Accept', $accept_header);
+
+    $format = $this->negotiator->getBest($accept_header = $request->headers->get('Accept'));
+    $request->setRequestFormat($request->getFormat($format->getValue()));
     $routes = $this->matcher->filter($collection, $request);
     $this->assertEquals(count($routes), 4, 'The correct number of routes was found.');
     $this->assertNotNull($routes->get($included_route), "Route $included_route was found when matching $accept_header.");
@@ -103,8 +114,9 @@ public function testNoRouteFound() {
 
     $request = Request::create('path/two', 'GET');
     $request->headers->set('Accept', 'application/json, text/xml;q=0.9');
+    $format = $this->negotiator->getBest($accept_header = $request->headers->get('Accept'));
+    $request->setRequestFormat($request->getFormat($format->getValue()));
     $this->matcher->filter($routes, $request);
     $this->fail('No exception was thrown.');
   }
-
 }
diff --git a/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php b/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php
index a928c97..98bfdcd 100644
--- a/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php
+++ b/core/tests/Drupal/Tests/Core/Routing/RoutePreloaderTest.php
@@ -34,12 +34,6 @@ class RoutePreloaderTest extends UnitTestCase {
    */
   protected $state;
 
-  /**
-   * The mocked content negotiator.
-   *
-   * @var \Drupal\Core\ContentNegotiation|\PHPUnit_Framework_MockObject_MockObject
-   */
-  protected $negotiation;
 
   /**
    * The tested preloader.
@@ -54,10 +48,7 @@ class RoutePreloaderTest extends UnitTestCase {
   protected function setUp() {
     $this->routeProvider = $this->getMock('Drupal\Core\Routing\RouteProviderInterface');
     $this->state = $this->getMock('\Drupal\Core\State\StateInterface');
-    $this->negotiation = $this->getMockBuilder('\Drupal\Core\ContentNegotiation')
-      ->disableOriginalConstructor()
-      ->getMock();
-    $this->preloader = new RoutePreloader($this->routeProvider, $this->state, $this->negotiation);
+    $this->preloader = new RoutePreloader($this->routeProvider, $this->state);
   }
 
   /**
@@ -136,12 +127,10 @@ public function testOnRequestNonHtml() {
       ->disableOriginalConstructor()
       ->getMock();
     $request = new Request();
+    $request->setRequestFormat('non-html');
     $event->expects($this->any())
       ->method('getRequest')
       ->will($this->returnValue($request));
-    $this->negotiation->expects($this->once())
-      ->method('getContentType')
-      ->will($this->returnValue('non-html'));
 
     $this->routeProvider->expects($this->never())
       ->method('getRoutesByNames');
@@ -159,12 +148,10 @@ public function testOnRequestOnHtml() {
       ->disableOriginalConstructor()
       ->getMock();
     $request = new Request();
+    $request->setRequestFormat('html');
     $event->expects($this->any())
       ->method('getRequest')
       ->will($this->returnValue($request));
-    $this->negotiation->expects($this->once())
-      ->method('getContentType')
-      ->will($this->returnValue('html'));
 
     $this->routeProvider->expects($this->once())
       ->method('getRoutesByNames')
diff --git a/core/vendor/composer/ClassLoader.php b/core/vendor/composer/ClassLoader.php
index 4433649..88684c5 100644
--- a/core/vendor/composer/ClassLoader.php
+++ b/core/vendor/composer/ClassLoader.php
@@ -143,8 +143,6 @@ public function add($prefix, $paths, $prepend = false)
      * @param string       $prefix  The prefix/namespace, with trailing '\\'
      * @param array|string $paths   The PSR-0 base directories
      * @param bool         $prepend Whether to prepend the directories
-     *
-     * @throws \InvalidArgumentException
      */
     public function addPsr4($prefix, $paths, $prepend = false)
     {
@@ -206,8 +204,6 @@ public function set($prefix, $paths)
      *
      * @param string       $prefix The prefix/namespace, with trailing '\\'
      * @param array|string $paths  The PSR-4 base directories
-     *
-     * @throws \InvalidArgumentException
      */
     public function setPsr4($prefix, $paths)
     {
diff --git a/core/vendor/composer/autoload_classmap.php b/core/vendor/composer/autoload_classmap.php
index 87d8298..52ced84 100644
--- a/core/vendor/composer/autoload_classmap.php
+++ b/core/vendor/composer/autoload_classmap.php
@@ -391,5 +391,6 @@
     'SebastianBergmann\\Exporter\\Exporter' => $vendorDir . '/sebastian/exporter/src/Exporter.php',
     'SebastianBergmann\\Version' => $vendorDir . '/sebastian/version/src/Version.php',
     'SessionHandlerInterface' => $vendorDir . '/symfony/http-foundation/Symfony/Component/HttpFoundation/Resources/stubs/SessionHandlerInterface.php',
+    'Symfony\\Component\\HttpFoundation\\Resources\\stubs\\FakeFile' => $vendorDir . '/symfony/http-foundation/Symfony/Component/HttpFoundation/Resources/stubs/FakeFile.php',
     'Text_Template' => $vendorDir . '/phpunit/php-text-template/Text/Template.php',
 );
diff --git a/core/vendor/composer/autoload_files.php b/core/vendor/composer/autoload_files.php
index 2ca5d44..ae1a45a 100644
--- a/core/vendor/composer/autoload_files.php
+++ b/core/vendor/composer/autoload_files.php
@@ -7,7 +7,7 @@
 
 return array(
     $vendorDir . '/guzzlehttp/streams/src/functions.php',
-    $vendorDir . '/kriswallsmith/assetic/src/functions.php',
     $vendorDir . '/guzzlehttp/guzzle/src/functions.php',
+    $vendorDir . '/kriswallsmith/assetic/src/functions.php',
     $baseDir . '/core/lib/Drupal.php',
 );
diff --git a/core/vendor/composer/autoload_namespaces.php b/core/vendor/composer/autoload_namespaces.php
index f49ab2c..dc6370d 100644
--- a/core/vendor/composer/autoload_namespaces.php
+++ b/core/vendor/composer/autoload_namespaces.php
@@ -27,6 +27,9 @@
     'Symfony\\Component\\ClassLoader\\' => array($vendorDir . '/symfony/class-loader'),
     'Symfony\\Cmf\\Component\\Routing' => array($vendorDir . '/symfony-cmf/routing'),
     'Psr\\Log\\' => array($vendorDir . '/psr/log'),
+    'Negotiation' => array($vendorDir . '/willdurand/negotiation/src'),
+    'LazyMap\\' => array($vendorDir . '/ocramius/lazy-map/src'),
+    'Instantiator\\' => array($vendorDir . '/ocramius/instantiator/src'),
     'Gliph' => array($vendorDir . '/sdboyer/gliph/src'),
     'EasyRdf_' => array($vendorDir . '/easyrdf/easyrdf/lib'),
     'Doctrine\\Common\\Lexer\\' => array($vendorDir . '/doctrine/lexer/lib'),
diff --git a/core/vendor/composer/include_paths.php b/core/vendor/composer/include_paths.php
index 951fdb1..1cc995d 100644
--- a/core/vendor/composer/include_paths.php
+++ b/core/vendor/composer/include_paths.php
@@ -10,8 +10,8 @@
     $vendorDir . '/phpunit/php-timer',
     $vendorDir . '/phpunit/php-token-stream',
     $vendorDir . '/phpunit/php-file-iterator',
+    $vendorDir . '/phpunit/phpunit-mock-objects',
     $vendorDir . '/phpunit/php-code-coverage',
     $vendorDir . '/phpunit/phpunit',
     $vendorDir . '/symfony/yaml',
-    $vendorDir . '/phpunit/phpunit-mock-objects',
 );
diff --git a/core/vendor/composer/installed.json b/core/vendor/composer/installed.json
index fbc00eb..d49c849 100644
--- a/core/vendor/composer/installed.json
+++ b/core/vendor/composer/installed.json
@@ -40,217 +40,6 @@
         ]
     },
     {
-        "name": "kriswallsmith/assetic",
-        "version": "v1.1.1",
-        "version_normalized": "1.1.1.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/kriswallsmith/assetic.git",
-            "reference": "v1.1.1"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/v1.1.1",
-            "reference": "v1.1.1",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.1",
-            "symfony/process": ">=2.1,<3.0"
-        },
-        "require-dev": {
-            "cssmin/cssmin": "*",
-            "joliclic/javascript-packer": "*",
-            "kamicane/packager": "*",
-            "leafo/lessphp": "*",
-            "leafo/scssphp": "*",
-            "leafo/scssphp-compass": "*",
-            "mrclay/minify": "*",
-            "phpunit/phpunit": ">=3.7,<4.0",
-            "ptachoire/cssembed": "*",
-            "twig/twig": ">=1.6,<2.0"
-        },
-        "suggest": {
-            "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
-            "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
-            "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
-            "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
-            "twig/twig": "Assetic provides the integration with the Twig templating engine"
-        },
-        "time": "2013-06-01 22:13:43",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.1-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Assetic": "src/"
-            },
-            "files": [
-                "src/functions.php"
-            ]
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Kris Wallsmith",
-                "email": "kris.wallsmith@gmail.com",
-                "homepage": "http://kriswallsmith.net/"
-            }
-        ],
-        "description": "Asset Management for PHP",
-        "homepage": "https://github.com/kriswallsmith/assetic",
-        "keywords": [
-            "assets",
-            "compression",
-            "minification"
-        ]
-    },
-    {
-        "name": "zendframework/zend-stdlib",
-        "version": "2.2.1",
-        "version_normalized": "2.2.1.0",
-        "target-dir": "Zend/Stdlib",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/zendframework/Component_ZendStdlib.git",
-            "reference": "release-2.2.1"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/release-2.2.1",
-            "reference": "release-2.2.1",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "suggest": {
-            "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
-            "zendframework/zend-servicemanager": "To support hydrator plugin manager usage"
-        },
-        "time": "2013-06-12 19:46:58",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.2-dev",
-                "dev-develop": "2.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Zend\\Stdlib\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "keywords": [
-            "stdlib",
-            "zf2"
-        ]
-    },
-    {
-        "name": "zendframework/zend-escaper",
-        "version": "2.2.1",
-        "version_normalized": "2.2.1.0",
-        "target-dir": "Zend/Escaper",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/zendframework/Component_ZendEscaper.git",
-            "reference": "release-2.2.1"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/Component_ZendEscaper/zipball/release-2.2.1",
-            "reference": "release-2.2.1",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "time": "2013-05-01 21:53:03",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.2-dev",
-                "dev-develop": "2.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Zend\\Escaper\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "keywords": [
-            "escaper",
-            "zf2"
-        ]
-    },
-    {
-        "name": "zendframework/zend-feed",
-        "version": "2.2.1",
-        "version_normalized": "2.2.1.0",
-        "target-dir": "Zend/Feed",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/zendframework/Component_ZendFeed.git",
-            "reference": "release-2.2.1"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/zendframework/Component_ZendFeed/zipball/release-2.2.1",
-            "reference": "release-2.2.1",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3",
-            "zendframework/zend-escaper": "self.version",
-            "zendframework/zend-stdlib": "self.version"
-        },
-        "suggest": {
-            "zendframework/zend-http": "Zend\\Http for PubSubHubbub, and optionally for use with Zend\\Feed\\Reader",
-            "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for default/recommended ExtensionManager implementations",
-            "zendframework/zend-validator": "Zend\\Validator component"
-        },
-        "time": "2013-06-12 19:45:31",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.2-dev",
-                "dev-develop": "2.3-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Zend\\Feed\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "description": "provides functionality for consuming RSS and Atom feeds",
-        "keywords": [
-            "feed",
-            "zf2"
-        ]
-    },
-    {
         "name": "doctrine/lexer",
         "version": "v1.0",
         "version_normalized": "1.0.0.0",
@@ -305,34 +94,29 @@
         ]
     },
     {
-        "name": "doctrine/collections",
-        "version": "v1.1",
-        "version_normalized": "1.1.0.0",
+        "name": "doctrine/inflector",
+        "version": "v1.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/collections.git",
-            "reference": "v1.1"
+            "url": "https://github.com/doctrine/inflector.git",
+            "reference": "v1.0"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/collections/zipball/v1.1",
-            "reference": "v1.1",
+            "url": "https://github.com/doctrine/inflector/archive/v1.0.zip",
+            "reference": "v1.0",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.2"
         },
-        "time": "2013-03-07 12:15:54",
+        "time": "2013-01-10 21:49:15",
         "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.1.x-dev"
-            }
-        },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Doctrine\\Common\\Collections\\": "lib/"
+                "Doctrine\\Common\\Inflector\\": "lib/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -365,38 +149,56 @@
                 "role": "Developer of wrapped JMSSerializerBundle"
             }
         ],
-        "description": "Collections Abstraction library",
+        "description": "Common String Manipulations with regard to casing and singular/plural rules.",
         "homepage": "http://www.doctrine-project.org",
         "keywords": [
-            "array",
-            "collections",
-            "iterator"
+            "inflection",
+            "pluarlize",
+            "singuarlize",
+            "string"
         ]
     },
     {
-        "name": "doctrine/cache",
-        "version": "v1.0",
-        "version_normalized": "1.0.0.0",
+        "name": "symfony-cmf/routing",
+        "version": "1.1.0",
+        "version_normalized": "1.1.0.0",
+        "target-dir": "Symfony/Cmf/Component/Routing",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/cache.git",
-            "reference": "v1.0"
+            "url": "https://github.com/symfony-cmf/Routing.git",
+            "reference": "9f8607950cbf888ec678713a35f3d0088857c85f"
         },
         "dist": {
             "type": "zip",
-            "url": "https://github.com/doctrine/cache/archive/v1.0.zip",
-            "reference": "v1.0",
+            "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/9f8607950cbf888ec678713a35f3d0088857c85f",
+            "reference": "9f8607950cbf888ec678713a35f3d0088857c85f",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.2"
+            "php": ">=5.3.3",
+            "psr/log": "~1.0",
+            "symfony/http-kernel": "~2.2",
+            "symfony/routing": "~2.2"
+        },
+        "require-dev": {
+            "symfony/config": "~2.2",
+            "symfony/dependency-injection": "~2.0",
+            "symfony/event-dispatcher": "~2.1"
+        },
+        "suggest": {
+            "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version ~2.1"
         },
-        "time": "2013-01-10 22:43:46",
+        "time": "2013-10-14 15:32:46",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.1-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Doctrine\\Common\\Cache\\": "lib/"
+                "Symfony\\Cmf\\Component\\Routing": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -405,61 +207,50 @@
         ],
         "authors": [
             {
-                "name": "Jonathan Wage",
-                "email": "jonwage@gmail.com",
-                "homepage": "http://www.jwage.com/"
-            },
-            {
-                "name": "Guilherme Blanco",
-                "email": "guilhermeblanco@gmail.com",
-                "homepage": "http://www.instaclick.com"
-            },
-            {
-                "name": "Roman Borschel",
-                "email": "roman@code-factory.org"
-            },
-            {
-                "name": "Benjamin Eberlei",
-                "email": "kontakt@beberlei.de"
-            },
-            {
-                "name": "Johannes M. Schmitt",
-                "email": "schmittjoh@gmail.com",
-                "homepage": "https://github.com/schmittjoh",
-                "role": "Developer of wrapped JMSSerializerBundle"
+                "name": "Symfony CMF Community",
+                "homepage": "https://github.com/symfony-cmf/Routing/contributors"
             }
         ],
-        "description": "Caching library offering an object-oriented API for many cache backends",
-        "homepage": "http://www.doctrine-project.org",
+        "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers",
+        "homepage": "http://cmf.symfony.com",
         "keywords": [
-            "cache",
-            "caching"
+            "database",
+            "routing"
         ]
     },
     {
-        "name": "doctrine/inflector",
-        "version": "v1.0",
-        "version_normalized": "1.0.0.0",
+        "name": "doctrine/annotations",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/inflector.git",
-            "reference": "v1.0"
+            "url": "https://github.com/doctrine/annotations.git",
+            "reference": "463d926a8dcc49271cb7db5a08364a70ed6e3cd3"
         },
         "dist": {
             "type": "zip",
-            "url": "https://github.com/doctrine/inflector/archive/v1.0.zip",
-            "reference": "v1.0",
+            "url": "https://api.github.com/repos/doctrine/annotations/zipball/463d926a8dcc49271cb7db5a08364a70ed6e3cd3",
+            "reference": "463d926a8dcc49271cb7db5a08364a70ed6e3cd3",
             "shasum": ""
         },
         "require": {
+            "doctrine/lexer": "1.*",
             "php": ">=5.3.2"
         },
-        "time": "2013-01-10 21:49:15",
+        "require-dev": {
+            "doctrine/cache": "1.*"
+        },
+        "time": "2013-11-19 05:59:59",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.0.x-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Doctrine\\Common\\Inflector\\": "lib/"
+                "Doctrine\\Common\\Annotations\\": "lib/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -470,7 +261,8 @@
             {
                 "name": "Jonathan Wage",
                 "email": "jonwage@gmail.com",
-                "homepage": "http://www.jwage.com/"
+                "homepage": "http://www.jwage.com/",
+                "role": "Creator"
             },
             {
                 "name": "Guilherme Blanco",
@@ -486,60 +278,57 @@
                 "email": "kontakt@beberlei.de"
             },
             {
-                "name": "Johannes M. Schmitt",
+                "name": "Johannes Schmitt",
                 "email": "schmittjoh@gmail.com",
-                "homepage": "https://github.com/schmittjoh",
+                "homepage": "http://jmsyst.com",
                 "role": "Developer of wrapped JMSSerializerBundle"
             }
         ],
-        "description": "Common String Manipulations with regard to casing and singular/plural rules.",
+        "description": "Docblock Annotations Parser",
         "homepage": "http://www.doctrine-project.org",
         "keywords": [
-            "inflection",
-            "pluarlize",
-            "singuarlize",
-            "string"
+            "annotations",
+            "docblock",
+            "parser"
         ]
     },
     {
-        "name": "symfony/debug",
-        "version": "v2.3.4",
-        "version_normalized": "2.3.4.0",
-        "target-dir": "Symfony/Component/Debug",
+        "name": "doctrine/common",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/Debug.git",
-            "reference": "729f6d19cfc401c4942e43fcc1059103bd6df130"
+            "url": "https://github.com/doctrine/common.git",
+            "reference": "a45d110f71c323e29f41eb0696fa230e3fa1b1b5"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/Debug/zipball/729f6d19cfc401c4942e43fcc1059103bd6df130",
-            "reference": "729f6d19cfc401c4942e43fcc1059103bd6df130",
+            "url": "https://api.github.com/repos/doctrine/common/zipball/a45d110f71c323e29f41eb0696fa230e3fa1b1b5",
+            "reference": "a45d110f71c323e29f41eb0696fa230e3fa1b1b5",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "doctrine/annotations": "1.*",
+            "doctrine/cache": "1.*",
+            "doctrine/collections": "1.*",
+            "doctrine/inflector": "1.*",
+            "doctrine/lexer": "1.*",
+            "php": ">=5.3.2"
         },
         "require-dev": {
-            "symfony/http-foundation": "~2.1",
-            "symfony/http-kernel": "~2.1"
-        },
-        "suggest": {
-            "symfony/class-loader": "",
-            "symfony/http-foundation": "",
-            "symfony/http-kernel": ""
+            "phpunit/phpunit": "~3.7"
         },
-        "time": "2013-08-08 14:16:10",
+        "time": "2014-01-12 22:00:08",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.3-dev"
+                "dev-master": "2.5.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Symfony\\Component\\Debug\\": ""
+                "Doctrine\\Common\\": "lib/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -548,104 +337,131 @@
         ],
         "authors": [
             {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "name": "Jonathan Wage",
+                "email": "jonwage@gmail.com",
+                "homepage": "http://www.jwage.com/",
+                "role": "Creator"
             },
             {
-                "name": "Symfony Community",
-                "homepage": "http://symfony.com/contributors"
+                "name": "Guilherme Blanco",
+                "email": "guilhermeblanco@gmail.com",
+                "homepage": "http://www.instaclick.com"
+            },
+            {
+                "name": "Roman Borschel",
+                "email": "roman@code-factory.org"
+            },
+            {
+                "name": "Benjamin Eberlei",
+                "email": "kontakt@beberlei.de"
+            },
+            {
+                "name": "Johannes Schmitt",
+                "email": "schmittjoh@gmail.com",
+                "homepage": "http://jmsyst.com",
+                "role": "Developer of wrapped JMSSerializerBundle"
             }
         ],
-        "description": "Symfony Debug Component",
-        "homepage": "http://symfony.com"
+        "description": "Common Library for Doctrine projects",
+        "homepage": "http://www.doctrine-project.org",
+        "keywords": [
+            "annotations",
+            "collections",
+            "eventmanager",
+            "persistence",
+            "spl"
+        ]
     },
     {
-        "name": "symfony/translation",
-        "version": "v2.3.4",
-        "version_normalized": "2.3.4.0",
-        "target-dir": "Symfony/Component/Translation",
+        "name": "easyrdf/easyrdf",
+        "version": "0.8.0",
+        "version_normalized": "0.8.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/Translation.git",
-            "reference": "65f888291f0896ad492f9abc6dc05c998373aded"
+            "url": "https://github.com/njh/easyrdf.git",
+            "reference": "3e43ab7274004e9f4192e06b9fc147781e1f85c2"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/Translation/zipball/65f888291f0896ad492f9abc6dc05c998373aded",
-            "reference": "65f888291f0896ad492f9abc6dc05c998373aded",
+            "url": "https://api.github.com/repos/njh/easyrdf/zipball/3e43ab7274004e9f4192e06b9fc147781e1f85c2",
+            "reference": "3e43ab7274004e9f4192e06b9fc147781e1f85c2",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "php": ">=5.2.8"
+        },
+        "replace": {
+            "njh/easyrdf": "self.version"
         },
         "require-dev": {
-            "symfony/config": "~2.0",
-            "symfony/yaml": "~2.2"
+            "phpunit/phpunit": ">=3.5.15",
+            "sami/sami": "dev-master",
+            "squizlabs/php_codesniffer": ">=1.4.3"
         },
         "suggest": {
-            "symfony/config": "",
-            "symfony/yaml": ""
+            "ml/json-ld": "dev-master"
         },
-        "time": "2013-08-26 05:49:51",
+        "time": "2013-12-30 22:31:37",
         "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.3-dev"
-            }
-        },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Symfony\\Component\\Translation\\": ""
+                "EasyRdf_": "lib/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "http://symfony.com/contributors"
+                "name": "Nicholas Humfrey",
+                "email": "njh@aelius.com",
+                "homepage": "http://www.aelius.com/njh/",
+                "role": "Developer"
             }
         ],
-        "description": "Symfony Translation Component",
-        "homepage": "http://symfony.com"
+        "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.",
+        "homepage": "http://www.easyrdf.org/",
+        "keywords": [
+            "Linked Data",
+            "RDF",
+            "Semantic Web",
+            "Turtle",
+            "rdfa",
+            "sparql"
+        ]
     },
     {
-        "name": "symfony/process",
-        "version": "v2.3.4",
-        "version_normalized": "2.3.4.0",
-        "target-dir": "Symfony/Component/Process",
+        "name": "symfony/yaml",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
+        "target-dir": "Symfony/Component/Yaml",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/Process.git",
-            "reference": "1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b"
+            "url": "https://github.com/symfony/Yaml.git",
+            "reference": "e49a47d60348665261f6e279ba383241deb73cab"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/Process/zipball/1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b",
-            "reference": "1e91553e1cedd0b8fb1da6ea4f89b02e21713d5b",
+            "url": "https://api.github.com/repos/symfony/Yaml/zipball/e49a47d60348665261f6e279ba383241deb73cab",
+            "reference": "e49a47d60348665261f6e279ba383241deb73cab",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.3"
         },
-        "time": "2013-08-22 06:42:25",
+        "time": "2014-02-24 16:21:51",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.3-dev"
+                "dev-master": "2.5-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Symfony\\Component\\Process\\": ""
+                "Symfony\\Component\\Yaml\\": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -655,103 +471,577 @@
         "authors": [
             {
                 "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
                 "name": "Symfony Community",
                 "homepage": "http://symfony.com/contributors"
             }
         ],
-        "description": "Symfony Process Component",
+        "description": "Symfony Yaml Component",
         "homepage": "http://symfony.com"
     },
     {
-        "name": "sdboyer/gliph",
-        "version": "0.1.4",
-        "version_normalized": "0.1.4.0",
+        "name": "sebastian/version",
+        "version": "1.0.3",
+        "version_normalized": "1.0.3.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sdboyer/gliph.git",
-            "reference": "aad932ef7d808105341cc9a36538e9fe2cb5ee82"
+            "url": "https://github.com/sebastianbergmann/version.git",
+            "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sdboyer/gliph/zipball/aad932ef7d808105341cc9a36538e9fe2cb5ee82",
-            "reference": "aad932ef7d808105341cc9a36538e9fe2cb5ee82",
+            "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
+            "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
             "shasum": ""
         },
-        "require": {
-            "php": ">=5.3"
-        },
-        "time": "2013-09-27 01:15:21",
+        "time": "2014-03-07 15:35:33",
         "type": "library",
         "installation-source": "dist",
         "autoload": {
-            "psr-0": {
-                "Gliph": "src/"
-            }
+            "classmap": [
+                "src/"
+            ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
+            "BSD-3-Clause"
         ],
         "authors": [
             {
-                "name": "Sam Boyer",
-                "email": "tech@samboyer.org"
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de",
+                "role": "lead"
             }
         ],
-        "description": "A graph library for PHP.",
-        "homepage": "http://github.com/sdboyer/gliph",
-        "keywords": [
-            "gliph",
-            "graph",
-            "library",
-            "php",
-            "spl"
-        ]
+        "description": "Library that helps with managing the version number of Git-hosted PHP projects",
+        "homepage": "https://github.com/sebastianbergmann/version"
     },
     {
-        "name": "symfony-cmf/routing",
-        "version": "1.1.0",
-        "version_normalized": "1.1.0.0",
-        "target-dir": "Symfony/Cmf/Component/Routing",
+        "name": "sebastian/exporter",
+        "version": "1.0.1",
+        "version_normalized": "1.0.1.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/exporter.git",
+            "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529",
+            "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "4.0.*@dev"
+        },
+        "time": "2014-02-16 08:26:31",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.0.x-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "src/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de",
+                "role": "lead"
+            },
+            {
+                "name": "Jeff Welch",
+                "email": "whatthejeff@gmail.com"
+            },
+            {
+                "name": "Volker Dusch",
+                "email": "github@wallbash.com"
+            },
+            {
+                "name": "Adam Harvey",
+                "email": "aharvey@php.net",
+                "role": "Lead"
+            },
+            {
+                "name": "Bernhard Schussek",
+                "email": "bschussek@2bepublished.at"
+            }
+        ],
+        "description": "Provides the functionality to export PHP variables for visualization",
+        "homepage": "http://www.github.com/sebastianbergmann/exporter",
+        "keywords": [
+            "export",
+            "exporter"
+        ]
+    },
+    {
+        "name": "sebastian/environment",
+        "version": "1.0.0",
+        "version_normalized": "1.0.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/environment.git",
+            "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a",
+            "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "4.0.*@dev"
+        },
+        "time": "2014-02-18 16:17:19",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.0.x-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "src/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de",
+                "role": "lead"
+            }
+        ],
+        "description": "Provides functionality to handle HHVM/PHP environments",
+        "homepage": "http://www.github.com/sebastianbergmann/environment",
+        "keywords": [
+            "Xdebug",
+            "environment",
+            "hhvm"
+        ]
+    },
+    {
+        "name": "sebastian/diff",
+        "version": "1.1.0",
+        "version_normalized": "1.1.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/diff.git",
+            "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d",
+            "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3"
+        },
+        "time": "2013-08-03 16:46:33",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.1-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "src/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de",
+                "role": "lead"
+            },
+            {
+                "name": "Kore Nordmann",
+                "email": "mail@kore-nordmann.de"
+            }
+        ],
+        "description": "Diff implementation",
+        "homepage": "http://www.github.com/sebastianbergmann/diff",
+        "keywords": [
+            "diff"
+        ]
+    },
+    {
+        "name": "sebastian/comparator",
+        "version": "1.0.0",
+        "version_normalized": "1.0.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/comparator.git",
+            "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2",
+            "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3",
+            "sebastian/diff": "~1.1",
+            "sebastian/exporter": "~1.0"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "~4.1"
+        },
+        "time": "2014-05-02 07:05:58",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.0.x-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "src/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de",
+                "role": "lead"
+            },
+            {
+                "name": "Jeff Welch",
+                "email": "whatthejeff@gmail.com"
+            },
+            {
+                "name": "Volker Dusch",
+                "email": "github@wallbash.com"
+            },
+            {
+                "name": "Bernhard Schussek",
+                "email": "bschussek@2bepublished.at"
+            }
+        ],
+        "description": "Provides the functionality to compare PHP values for equality",
+        "homepage": "http://www.github.com/sebastianbergmann/comparator",
+        "keywords": [
+            "comparator",
+            "compare",
+            "equality"
+        ]
+    },
+    {
+        "name": "phpunit/php-text-template",
+        "version": "1.2.0",
+        "version_normalized": "1.2.0.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/php-text-template.git",
+            "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+            "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3"
+        },
+        "time": "2014-01-30 17:20:04",
+        "type": "library",
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "Text/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "include-path": [
+            ""
+        ],
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sb@sebastian-bergmann.de",
+                "role": "lead"
+            }
+        ],
+        "description": "Simple template engine.",
+        "homepage": "https://github.com/sebastianbergmann/php-text-template/",
+        "keywords": [
+            "template"
+        ]
+    },
+    {
+        "name": "phpunit/php-timer",
+        "version": "1.0.5",
+        "version_normalized": "1.0.5.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/php-timer.git",
+            "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+            "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3"
+        },
+        "time": "2013-08-02 07:42:54",
+        "type": "library",
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "PHP/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "include-path": [
+            ""
+        ],
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sb@sebastian-bergmann.de",
+                "role": "lead"
+            }
+        ],
+        "description": "Utility class for timing",
+        "homepage": "https://github.com/sebastianbergmann/php-timer/",
+        "keywords": [
+            "timer"
+        ]
+    },
+    {
+        "name": "phpunit/php-token-stream",
+        "version": "1.2.2",
+        "version_normalized": "1.2.2.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/php-token-stream.git",
+            "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32",
+            "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32",
+            "shasum": ""
+        },
+        "require": {
+            "ext-tokenizer": "*",
+            "php": ">=5.3.3"
+        },
+        "time": "2014-03-03 05:10:30",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.2-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "PHP/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "include-path": [
+            ""
+        ],
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sb@sebastian-bergmann.de",
+                "role": "lead"
+            }
+        ],
+        "description": "Wrapper around PHP's tokenizer extension.",
+        "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+        "keywords": [
+            "tokenizer"
+        ]
+    },
+    {
+        "name": "phpunit/php-file-iterator",
+        "version": "1.3.4",
+        "version_normalized": "1.3.4.0",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
+            "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb",
+            "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3"
+        },
+        "time": "2013-10-10 15:34:57",
+        "type": "library",
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "File/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "include-path": [
+            ""
+        ],
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sb@sebastian-bergmann.de",
+                "role": "lead"
+            }
+        ],
+        "description": "FilterIterator implementation that filters files based on a list of suffixes.",
+        "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+        "keywords": [
+            "filesystem",
+            "iterator"
+        ]
+    },
+    {
+        "name": "phpunit/phpunit-mock-objects",
+        "version": "dev-master",
+        "version_normalized": "9999999-dev",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
+            "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/32f97c9198be565b6051983c70dc8d8e758725f4",
+            "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2",
+            "shasum": ""
+        },
+        "require": {
+            "ocramius/instantiator": "~1.0",
+            "php": ">=5.3.3",
+            "phpunit/php-text-template": "~1.2"
+        },
+        "require-dev": {
+            "phpunit/phpunit": "4.3.*@dev"
+        },
+        "suggest": {
+            "ext-soap": "*"
+        },
+        "time": "2014-06-12 07:22:27",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "2.3.x-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "src/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "include-path": [
+            ""
+        ],
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sb@sebastian-bergmann.de",
+                "role": "lead"
+            }
+        ],
+        "description": "Mock Object library for PHPUnit",
+        "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+        "keywords": [
+            "mock",
+            "xunit"
+        ]
+    },
+    {
+        "name": "symfony/serializer",
+        "version": "v2.5.2",
+        "version_normalized": "2.5.2.0",
+        "target-dir": "Symfony/Component/Serializer",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony-cmf/Routing.git",
-            "reference": "9f8607950cbf888ec678713a35f3d0088857c85f"
+            "url": "https://github.com/symfony/Serializer.git",
+            "reference": "33185b290310ab1fd8283fb8ed2a434cdb88b9b9"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony-cmf/Routing/zipball/9f8607950cbf888ec678713a35f3d0088857c85f",
-            "reference": "9f8607950cbf888ec678713a35f3d0088857c85f",
+            "url": "https://api.github.com/repos/symfony/Serializer/zipball/33185b290310ab1fd8283fb8ed2a434cdb88b9b9",
+            "reference": "33185b290310ab1fd8283fb8ed2a434cdb88b9b9",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3",
-            "psr/log": "~1.0",
-            "symfony/http-kernel": "~2.2",
-            "symfony/routing": "~2.2"
-        },
-        "require-dev": {
-            "symfony/config": "~2.2",
-            "symfony/dependency-injection": "~2.0",
-            "symfony/event-dispatcher": "~2.1"
-        },
-        "suggest": {
-            "symfony/event-dispatcher": "DynamicRouter can optionally trigger an event at the start of matching. Minimal version ~2.1"
+            "php": ">=5.3.3"
         },
-        "time": "2013-10-14 15:32:46",
+        "time": "2014-07-09 09:05:48",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.1-dev"
+                "dev-master": "2.5-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Symfony\\Cmf\\Component\\Routing": ""
+                "Symfony\\Component\\Serializer\\": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -760,50 +1050,47 @@
         ],
         "authors": [
             {
-                "name": "Symfony CMF Community",
-                "homepage": "https://github.com/symfony-cmf/Routing/contributors"
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
+            },
+            {
+                "name": "Symfony Community",
+                "homepage": "http://symfony.com/contributors"
             }
         ],
-        "description": "Extends the Symfony2 routing component for dynamic routes and chaining several routers",
-        "homepage": "http://cmf.symfony.com",
-        "keywords": [
-            "database",
-            "routing"
-        ]
+        "description": "Symfony Serializer Component",
+        "homepage": "http://symfony.com"
     },
     {
-        "name": "doctrine/annotations",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
+        "name": "sdboyer/gliph",
+        "version": "0.1.8",
+        "version_normalized": "0.1.8.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/annotations.git",
-            "reference": "463d926a8dcc49271cb7db5a08364a70ed6e3cd3"
+            "url": "https://github.com/sdboyer/gliph.git",
+            "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/annotations/zipball/463d926a8dcc49271cb7db5a08364a70ed6e3cd3",
-            "reference": "463d926a8dcc49271cb7db5a08364a70ed6e3cd3",
+            "url": "https://api.github.com/repos/sdboyer/gliph/zipball/db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e",
+            "reference": "db9e4b77622f91e2d338cc45f83c2cd0e3cf0e1e",
             "shasum": ""
         },
         "require": {
-            "doctrine/lexer": "1.*",
-            "php": ">=5.3.2"
+            "php": ">=5.3"
         },
         "require-dev": {
-            "doctrine/cache": "1.*"
+            "phpunit/phpunit": "3.7.*",
+            "satooshi/php-coveralls": "0.6.*"
         },
-        "time": "2013-11-19 05:59:59",
+        "time": "2014-08-03 14:34:47",
         "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "1.0.x-dev"
-            }
-        },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Doctrine\\Common\\Annotations\\": "lib/"
+                "Gliph": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -812,127 +1099,104 @@
         ],
         "authors": [
             {
-                "name": "Jonathan Wage",
-                "email": "jonwage@gmail.com",
-                "homepage": "http://www.jwage.com/",
-                "role": "Creator"
-            },
-            {
-                "name": "Guilherme Blanco",
-                "email": "guilhermeblanco@gmail.com",
-                "homepage": "http://www.instaclick.com"
-            },
-            {
-                "name": "Roman Borschel",
-                "email": "roman@code-factory.org"
-            },
-            {
-                "name": "Benjamin Eberlei",
-                "email": "kontakt@beberlei.de"
-            },
-            {
-                "name": "Johannes Schmitt",
-                "email": "schmittjoh@gmail.com",
-                "homepage": "http://jmsyst.com",
-                "role": "Developer of wrapped JMSSerializerBundle"
+                "name": "Sam Boyer",
+                "email": "tech@samboyer.org"
             }
         ],
-        "description": "Docblock Annotations Parser",
-        "homepage": "http://www.doctrine-project.org",
+        "description": "A graph library for PHP.",
+        "homepage": "http://github.com/sdboyer/gliph",
         "keywords": [
-            "annotations",
-            "docblock",
-            "parser"
+            "gliph",
+            "graph",
+            "library",
+            "php",
+            "spl"
         ]
     },
     {
-        "name": "twig/twig",
-        "version": "v1.15.0",
-        "version_normalized": "1.15.0.0",
+        "name": "symfony/class-loader",
+        "version": "v2.4.8",
+        "version_normalized": "2.4.8.0",
+        "target-dir": "Symfony/Component/ClassLoader",
         "source": {
             "type": "git",
-            "url": "https://github.com/fabpot/Twig.git",
-            "reference": "85e4ff98000157ff753d934b9f13659a953f5666"
+            "url": "https://github.com/symfony/ClassLoader.git",
+            "reference": "94b18e1beb7708872e237e1cab82c7369e817b0a"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/fabpot/Twig/zipball/85e4ff98000157ff753d934b9f13659a953f5666",
-            "reference": "85e4ff98000157ff753d934b9f13659a953f5666",
+            "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/94b18e1beb7708872e237e1cab82c7369e817b0a",
+            "reference": "94b18e1beb7708872e237e1cab82c7369e817b0a",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.2.4"
+            "php": ">=5.3.3"
+        },
+        "require-dev": {
+            "symfony/finder": "~2.0"
         },
-        "time": "2013-12-06 07:47:10",
+        "time": "2014-07-09 09:04:55",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.15-dev"
+                "dev-master": "2.4-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Twig_": "lib/"
+                "Symfony\\Component\\ClassLoader\\": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
                 "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
-                "name": "Armin Ronacher",
-                "email": "armin.ronacher@active-4.com"
+                "name": "Symfony Community",
+                "homepage": "http://symfony.com/contributors"
             }
         ],
-        "description": "Twig, the flexible, fast, and secure template language for PHP",
-        "homepage": "http://twig.sensiolabs.org",
-        "keywords": [
-            "templating"
-        ]
+        "description": "Symfony ClassLoader Component",
+        "homepage": "http://symfony.com"
     },
     {
-        "name": "doctrine/common",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
+        "name": "symfony/css-selector",
+        "version": "v2.4.8",
+        "version_normalized": "2.4.8.0",
+        "target-dir": "Symfony/Component/CssSelector",
         "source": {
             "type": "git",
-            "url": "https://github.com/doctrine/common.git",
-            "reference": "a45d110f71c323e29f41eb0696fa230e3fa1b1b5"
+            "url": "https://github.com/symfony/CssSelector.git",
+            "reference": "52c35be379ec341c15d2edc7f798f7fd69708645"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/doctrine/common/zipball/a45d110f71c323e29f41eb0696fa230e3fa1b1b5",
-            "reference": "a45d110f71c323e29f41eb0696fa230e3fa1b1b5",
+            "url": "https://api.github.com/repos/symfony/CssSelector/zipball/52c35be379ec341c15d2edc7f798f7fd69708645",
+            "reference": "52c35be379ec341c15d2edc7f798f7fd69708645",
             "shasum": ""
         },
         "require": {
-            "doctrine/annotations": "1.*",
-            "doctrine/cache": "1.*",
-            "doctrine/collections": "1.*",
-            "doctrine/inflector": "1.*",
-            "doctrine/lexer": "1.*",
-            "php": ">=5.3.2"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "~3.7"
+            "php": ">=5.3.3"
         },
-        "time": "2014-01-12 22:00:08",
+        "time": "2014-07-09 09:04:55",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.5.x-dev"
+                "dev-master": "2.4-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Doctrine\\Common\\": "lib/"
+                "Symfony\\Component\\CssSelector\\": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -941,64 +1205,53 @@
         ],
         "authors": [
             {
-                "name": "Jonathan Wage",
-                "email": "jonwage@gmail.com",
-                "homepage": "http://www.jwage.com/",
-                "role": "Creator"
-            },
-            {
-                "name": "Guilherme Blanco",
-                "email": "guilhermeblanco@gmail.com",
-                "homepage": "http://www.instaclick.com"
-            },
-            {
-                "name": "Roman Borschel",
-                "email": "roman@code-factory.org"
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
-                "name": "Benjamin Eberlei",
-                "email": "kontakt@beberlei.de"
+                "name": "Symfony Community",
+                "homepage": "http://symfony.com/contributors"
             },
             {
-                "name": "Johannes Schmitt",
-                "email": "schmittjoh@gmail.com",
-                "homepage": "http://jmsyst.com",
-                "role": "Developer of wrapped JMSSerializerBundle"
+                "name": "Jean-François Simon",
+                "email": "jeanfrancois.simon@sensiolabs.com"
             }
         ],
-        "description": "Common Library for Doctrine projects",
-        "homepage": "http://www.doctrine-project.org",
-        "keywords": [
-            "annotations",
-            "collections",
-            "eventmanager",
-            "persistence",
-            "spl"
-        ]
+        "description": "Symfony CssSelector Component",
+        "homepage": "http://symfony.com"
     },
     {
-        "name": "symfony/class-loader",
-        "version": "v2.4.1",
-        "version_normalized": "2.4.1.0",
-        "target-dir": "Symfony/Component/ClassLoader",
+        "name": "symfony/dependency-injection",
+        "version": "v2.4.8",
+        "version_normalized": "2.4.8.0",
+        "target-dir": "Symfony/Component/DependencyInjection",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/ClassLoader.git",
-            "reference": "6a2ebedbc780130f07b3a15363743d08eb46820c"
+            "url": "https://github.com/symfony/DependencyInjection.git",
+            "reference": "0655a6b985d2ecb248825b7f5ed569a85a822e53"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/ClassLoader/zipball/6a2ebedbc780130f07b3a15363743d08eb46820c",
-            "reference": "6a2ebedbc780130f07b3a15363743d08eb46820c",
+            "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/0655a6b985d2ecb248825b7f5ed569a85a822e53",
+            "reference": "0655a6b985d2ecb248825b7f5ed569a85a822e53",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.3"
         },
         "require-dev": {
-            "symfony/finder": "~2.0"
+            "symfony/config": "~2.2",
+            "symfony/expression-language": "~2.4",
+            "symfony/yaml": "~2.0"
+        },
+        "suggest": {
+            "symfony/config": "",
+            "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
+            "symfony/yaml": ""
         },
-        "time": "2013-11-26 16:40:27",
+        "time": "2014-07-09 09:04:55",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -1008,7 +1261,7 @@
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Symfony\\Component\\ClassLoader\\": ""
+                "Symfony\\Component\\DependencyInjection\\": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -1018,56 +1271,56 @@
         "authors": [
             {
                 "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
                 "name": "Symfony Community",
                 "homepage": "http://symfony.com/contributors"
             }
         ],
-        "description": "Symfony ClassLoader Component",
+        "description": "Symfony DependencyInjection Component",
         "homepage": "http://symfony.com"
     },
     {
-        "name": "symfony/dependency-injection",
-        "version": "v2.4.1",
-        "version_normalized": "2.4.1.0",
-        "target-dir": "Symfony/Component/DependencyInjection",
+        "name": "symfony/debug",
+        "version": "v2.5.2",
+        "version_normalized": "2.5.2.0",
+        "target-dir": "Symfony/Component/Debug",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/DependencyInjection.git",
-            "reference": "7e5bde3a607dde1f8ddef5180759068ad53d259c"
+            "url": "git@github.com:symfony/Debug.git",
+            "reference": "a725879a4b1c0e9a242c7a0480e787cb6465cb8f"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/DependencyInjection/zipball/7e5bde3a607dde1f8ddef5180759068ad53d259c",
-            "reference": "7e5bde3a607dde1f8ddef5180759068ad53d259c",
+            "url": "https://api.github.com/repos/symfony/Debug/zipball/a725879a4b1c0e9a242c7a0480e787cb6465cb8f",
+            "reference": "a725879a4b1c0e9a242c7a0480e787cb6465cb8f",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.3"
         },
         "require-dev": {
-            "symfony/config": "~2.2",
-            "symfony/expression-language": "~2.4",
-            "symfony/yaml": "~2.0"
+            "symfony/http-foundation": "~2.1",
+            "symfony/http-kernel": "~2.1"
         },
         "suggest": {
-            "symfony/config": "",
-            "symfony/proxy-manager-bridge": "Generate service proxies to lazy load them",
-            "symfony/yaml": ""
+            "symfony/http-foundation": "",
+            "symfony/http-kernel": ""
         },
-        "time": "2014-01-01 09:02:49",
+        "time": "2014-07-09 09:05:48",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.4-dev"
+                "dev-master": "2.5-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Symfony\\Component\\DependencyInjection\\": ""
+                "Symfony\\Component\\Debug\\": ""
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -1076,37 +1329,40 @@
         ],
         "authors": [
             {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
                 "name": "Symfony Community",
                 "homepage": "http://symfony.com/contributors"
+            },
+            {
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com"
             }
         ],
-        "description": "Symfony DependencyInjection Component",
+        "description": "Symfony Debug Component",
         "homepage": "http://symfony.com"
     },
     {
         "name": "symfony/http-foundation",
-        "version": "v2.4.1",
-        "version_normalized": "2.4.1.0",
+        "version": "v2.4.8",
+        "version_normalized": "2.4.8.0",
         "target-dir": "Symfony/Component/HttpFoundation",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/HttpFoundation.git",
-            "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844"
+            "reference": "68abe34601c519359b60363b99c29ecfb6679bc4"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/6c6b8a7bcd7e2cc920cd6acace563fdbf121d844",
-            "reference": "6c6b8a7bcd7e2cc920cd6acace563fdbf121d844",
+            "url": "https://api.github.com/repos/symfony/HttpFoundation/zipball/68abe34601c519359b60363b99c29ecfb6679bc4",
+            "reference": "68abe34601c519359b60363b99c29ecfb6679bc4",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.3"
         },
-        "time": "2014-01-05 02:10:50",
+        "require-dev": {
+            "symfony/expression-language": "~2.4"
+        },
+        "time": "2014-07-15 14:07:10",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -1129,7 +1385,9 @@
         "authors": [
             {
                 "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
                 "name": "Symfony Community",
@@ -1141,18 +1399,18 @@
     },
     {
         "name": "symfony/event-dispatcher",
-        "version": "v2.4.1",
-        "version_normalized": "2.4.1.0",
+        "version": "v2.4.8",
+        "version_normalized": "2.4.8.0",
         "target-dir": "Symfony/Component/EventDispatcher",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/EventDispatcher.git",
-            "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601"
+            "reference": "6008a029b6a3c0816d58be2ca8923e324cc89d93"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/e3ba42f6a70554ed05749e61b829550f6ac33601",
-            "reference": "e3ba42f6a70554ed05749e61b829550f6ac33601",
+            "url": "https://api.github.com/repos/symfony/EventDispatcher/zipball/6008a029b6a3c0816d58be2ca8923e324cc89d93",
+            "reference": "6008a029b6a3c0816d58be2ca8923e324cc89d93",
             "shasum": ""
         },
         "require": {
@@ -1165,7 +1423,7 @@
             "symfony/dependency-injection": "",
             "symfony/http-kernel": ""
         },
-        "time": "2013-12-28 08:12:03",
+        "time": "2014-07-09 09:04:55",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -1185,7 +1443,9 @@
         "authors": [
             {
                 "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
                 "name": "Symfony Community",
@@ -1197,18 +1457,18 @@
     },
     {
         "name": "symfony/http-kernel",
-        "version": "v2.4.1",
-        "version_normalized": "2.4.1.0",
+        "version": "v2.4.8",
+        "version_normalized": "2.4.8.0",
         "target-dir": "Symfony/Component/HttpKernel",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/HttpKernel.git",
-            "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4"
+            "reference": "b2c3fc145e7b50c8e09daab303674126ca3a8c5b"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/0605eedeb52c4d3a3144128d8336395a57be60d4",
-            "reference": "0605eedeb52c4d3a3144128d8336395a57be60d4",
+            "url": "https://api.github.com/repos/symfony/HttpKernel/zipball/b2c3fc145e7b50c8e09daab303674126ca3a8c5b",
+            "reference": "b2c3fc145e7b50c8e09daab303674126ca3a8c5b",
             "shasum": ""
         },
         "require": {
@@ -1238,7 +1498,7 @@
             "symfony/dependency-injection": "",
             "symfony/finder": ""
         },
-        "time": "2014-01-05 02:12:11",
+        "time": "2014-07-15 14:52:02",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -1258,7 +1518,9 @@
         "authors": [
             {
                 "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
                 "name": "Symfony Community",
@@ -1270,18 +1532,18 @@
     },
     {
         "name": "symfony/routing",
-        "version": "v2.4.1",
-        "version_normalized": "2.4.1.0",
+        "version": "v2.4.8",
+        "version_normalized": "2.4.8.0",
         "target-dir": "Symfony/Component/Routing",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/Routing.git",
-            "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a"
+            "reference": "d290f15b7083cee926e17299ab6889210058b30e"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/Routing/zipball/4abfb500aab8be458c9e3a227ea56b190584f78a",
-            "reference": "4abfb500aab8be458c9e3a227ea56b190584f78a",
+            "url": "https://api.github.com/repos/symfony/Routing/zipball/d290f15b7083cee926e17299ab6889210058b30e",
+            "reference": "d290f15b7083cee926e17299ab6889210058b30e",
             "shasum": ""
         },
         "require": {
@@ -1300,7 +1562,7 @@
             "symfony/expression-language": "For using expression matching",
             "symfony/yaml": "For using the YAML loader"
         },
-        "time": "2014-01-05 02:10:50",
+        "time": "2014-07-09 09:04:55",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -1320,7 +1582,9 @@
         "authors": [
             {
                 "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
                 "name": "Symfony Community",
@@ -1338,28 +1602,28 @@
     },
     {
         "name": "symfony/property-access",
-        "version": "v2.4.1",
-        "version_normalized": "2.4.1.0",
+        "version": "v2.5.2",
+        "version_normalized": "2.5.2.0",
         "target-dir": "Symfony/Component/PropertyAccess",
         "source": {
             "type": "git",
             "url": "https://github.com/symfony/PropertyAccess.git",
-            "reference": "274951234150e303c83099a2429be6be35629fe9"
+            "reference": "c80993206d5d842c46fc0bdb7da576a42845acfb"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/PropertyAccess/zipball/274951234150e303c83099a2429be6be35629fe9",
-            "reference": "274951234150e303c83099a2429be6be35629fe9",
+            "url": "https://api.github.com/repos/symfony/PropertyAccess/zipball/c80993206d5d842c46fc0bdb7da576a42845acfb",
+            "reference": "c80993206d5d842c46fc0bdb7da576a42845acfb",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.3"
         },
-        "time": "2013-11-13 21:30:16",
+        "time": "2014-07-09 09:05:48",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.4-dev"
+                "dev-master": "2.5-dev"
             }
         },
         "installation-source": "dist",
@@ -1375,7 +1639,9 @@
         "authors": [
             {
                 "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
                 "name": "Symfony Community",
@@ -1397,377 +1663,163 @@
         ]
     },
     {
-        "name": "symfony/validator",
-        "version": "v2.4.1",
-        "version_normalized": "2.4.1.0",
-        "target-dir": "Symfony/Component/Validator",
+        "name": "symfony/translation",
+        "version": "v2.5.2",
+        "version_normalized": "2.5.2.0",
+        "target-dir": "Symfony/Component/Translation",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/Validator.git",
-            "reference": "7ea4e53f8d68bf3ae9cca28765d49d7930618730"
+            "url": "https://github.com/symfony/Translation.git",
+            "reference": "059d57c361043f5a06eb348b9b7554213f9ab8d1"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/Validator/zipball/7ea4e53f8d68bf3ae9cca28765d49d7930618730",
-            "reference": "7ea4e53f8d68bf3ae9cca28765d49d7930618730",
+            "url": "https://api.github.com/repos/symfony/Translation/zipball/059d57c361043f5a06eb348b9b7554213f9ab8d1",
+            "reference": "059d57c361043f5a06eb348b9b7554213f9ab8d1",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3",
-            "symfony/property-access": "~2.2",
-            "symfony/translation": "~2.0"
+            "php": ">=5.3.3"
         },
         "require-dev": {
-            "doctrine/annotations": "~1.0",
-            "doctrine/cache": "~1.0",
-            "symfony/config": "~2.2",
-            "symfony/http-foundation": "~2.1",
-            "symfony/intl": "~2.3",
-            "symfony/yaml": "~2.0"
+            "symfony/config": "~2.0",
+            "symfony/yaml": "~2.2"
         },
         "suggest": {
-            "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
-            "doctrine/cache": "For using the default cached annotation reader",
             "symfony/config": "",
-            "symfony/http-foundation": "",
-            "symfony/intl": "",
             "symfony/yaml": ""
         },
-        "time": "2014-01-01 08:14:50",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.4-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Symfony\\Component\\Validator\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "http://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Validator Component",
-        "homepage": "http://symfony.com"
-    },
-    {
-        "name": "easyrdf/easyrdf",
-        "version": "0.8.0",
-        "version_normalized": "0.8.0.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/njh/easyrdf.git",
-            "reference": "3e43ab7274004e9f4192e06b9fc147781e1f85c2"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/njh/easyrdf/zipball/3e43ab7274004e9f4192e06b9fc147781e1f85c2",
-            "reference": "3e43ab7274004e9f4192e06b9fc147781e1f85c2",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.2.8"
-        },
-        "replace": {
-            "njh/easyrdf": "self.version"
-        },
-        "require-dev": {
-            "phpunit/phpunit": ">=3.5.15",
-            "sami/sami": "dev-master",
-            "squizlabs/php_codesniffer": ">=1.4.3"
-        },
-        "suggest": {
-            "ml/json-ld": "dev-master"
-        },
-        "time": "2013-12-30 22:31:37",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "EasyRdf_": "lib/"
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "BSD-3-Clause"
-        ],
-        "authors": [
-            {
-                "name": "Nicholas Humfrey",
-                "email": "njh@aelius.com",
-                "homepage": "http://www.aelius.com/njh/",
-                "role": "Developer"
-            }
-        ],
-        "description": "EasyRdf is a PHP library designed to make it easy to consume and produce RDF.",
-        "homepage": "http://www.easyrdf.org/",
-        "keywords": [
-            "Linked Data",
-            "RDF",
-            "Semantic Web",
-            "Turtle",
-            "rdfa",
-            "sparql"
-        ]
-    },
-    {
-        "name": "symfony/yaml",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
-        "target-dir": "Symfony/Component/Yaml",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/Yaml.git",
-            "reference": "e49a47d60348665261f6e279ba383241deb73cab"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/Yaml/zipball/e49a47d60348665261f6e279ba383241deb73cab",
-            "reference": "e49a47d60348665261f6e279ba383241deb73cab",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "time": "2014-02-24 16:21:51",
+        "time": "2014-07-15 14:22:44",
         "type": "library",
         "extra": {
             "branch-alias": {
                 "dev-master": "2.5-dev"
             }
         },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Symfony\\Component\\Yaml\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com",
-                "homepage": "http://fabien.potencier.org",
-                "role": "Lead Developer"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "http://symfony.com/contributors"
-            }
-        ],
-        "description": "Symfony Yaml Component",
-        "homepage": "http://symfony.com"
-    },
-    {
-        "name": "symfony/css-selector",
-        "version": "v2.4.4",
-        "version_normalized": "2.4.4.0",
-        "target-dir": "Symfony/Component/CssSelector",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/symfony/CssSelector.git",
-            "reference": "479a5b409723f596ffc3b5178034e4d76ce615b3"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/symfony/CssSelector/zipball/479a5b409723f596ffc3b5178034e4d76ce615b3",
-            "reference": "479a5b409723f596ffc3b5178034e4d76ce615b3",
-            "shasum": ""
-        },
-        "require": {
-            "php": ">=5.3.3"
-        },
-        "time": "2014-04-18 20:37:09",
-        "type": "library",
-        "extra": {
-            "branch-alias": {
-                "dev-master": "2.4-dev"
-            }
-        },
-        "installation-source": "dist",
-        "autoload": {
-            "psr-0": {
-                "Symfony\\Component\\CssSelector\\": ""
-            }
-        },
-        "notification-url": "https://packagist.org/downloads/",
-        "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com",
-                "homepage": "http://fabien.potencier.org",
-                "role": "Lead Developer"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "http://symfony.com/contributors"
-            },
-            {
-                "name": "Jean-François Simon",
-                "email": "jeanfrancois.simon@sensiolabs.com"
-            }
-        ],
-        "description": "Symfony CssSelector Component",
-        "homepage": "http://symfony.com"
-    },
-    {
-        "name": "sebastian/version",
-        "version": "1.0.3",
-        "version_normalized": "1.0.3.0",
-        "source": {
-            "type": "git",
-            "url": "https://github.com/sebastianbergmann/version.git",
-            "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43"
-        },
-        "dist": {
-            "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/version/zipball/b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
-            "reference": "b6e1f0cf6b9e1ec409a0d3e2f2a5fb0998e36b43",
-            "shasum": ""
-        },
-        "time": "2014-03-07 15:35:33",
-        "type": "library",
-        "installation-source": "dist",
-        "autoload": {
-            "classmap": [
-                "src/"
-            ]
+        "installation-source": "dist",
+        "autoload": {
+            "psr-0": {
+                "Symfony\\Component\\Translation\\": ""
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
+            },
+            {
+                "name": "Symfony Community",
+                "homepage": "http://symfony.com/contributors"
             }
         ],
-        "description": "Library that helps with managing the version number of Git-hosted PHP projects",
-        "homepage": "https://github.com/sebastianbergmann/version"
+        "description": "Symfony Translation Component",
+        "homepage": "http://symfony.com"
     },
     {
-        "name": "sebastian/exporter",
-        "version": "1.0.1",
-        "version_normalized": "1.0.1.0",
+        "name": "symfony/validator",
+        "version": "v2.4.8",
+        "version_normalized": "2.4.8.0",
+        "target-dir": "Symfony/Component/Validator",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/exporter.git",
-            "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529"
+            "url": "https://github.com/symfony/Validator.git",
+            "reference": "5b32e6d5c9ac1c454823348f4d9dc564975b2008"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/exporter/zipball/1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529",
-            "reference": "1f9a98e6f5dfe0524cb8c6166f7c82f3e9ae1529",
+            "url": "https://api.github.com/repos/symfony/Validator/zipball/5b32e6d5c9ac1c454823348f4d9dc564975b2008",
+            "reference": "5b32e6d5c9ac1c454823348f4d9dc564975b2008",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "php": ">=5.3.3",
+            "symfony/property-access": "~2.2",
+            "symfony/translation": "~2.0"
         },
         "require-dev": {
-            "phpunit/phpunit": "4.0.*@dev"
+            "doctrine/annotations": "~1.0",
+            "doctrine/cache": "~1.0",
+            "symfony/config": "~2.2",
+            "symfony/http-foundation": "~2.1",
+            "symfony/intl": "~2.3",
+            "symfony/yaml": "~2.0"
         },
-        "time": "2014-02-16 08:26:31",
+        "suggest": {
+            "doctrine/annotations": "For using the annotation mapping. You will also need doctrine/cache.",
+            "doctrine/cache": "For using the default cached annotation reader",
+            "symfony/config": "",
+            "symfony/http-foundation": "",
+            "symfony/intl": "",
+            "symfony/yaml": ""
+        },
+        "time": "2014-07-15 14:07:10",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.0.x-dev"
+                "dev-master": "2.4-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
-            ]
+            "psr-0": {
+                "Symfony\\Component\\Validator\\": ""
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
-            },
-            {
-                "name": "Jeff Welch",
-                "email": "whatthejeff@gmail.com"
-            },
-            {
-                "name": "Volker Dusch",
-                "email": "github@wallbash.com"
-            },
-            {
-                "name": "Adam Harvey",
-                "email": "aharvey@php.net",
-                "role": "Lead"
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
             },
             {
-                "name": "Bernhard Schussek",
-                "email": "bschussek@2bepublished.at"
+                "name": "Symfony Community",
+                "homepage": "http://symfony.com/contributors"
             }
         ],
-        "description": "Provides the functionality to export PHP variables for visualization",
-        "homepage": "http://www.github.com/sebastianbergmann/exporter",
-        "keywords": [
-            "export",
-            "exporter"
-        ]
+        "description": "Symfony Validator Component",
+        "homepage": "http://symfony.com"
     },
     {
-        "name": "sebastian/environment",
-        "version": "1.0.0",
-        "version_normalized": "1.0.0.0",
+        "name": "twig/twig",
+        "version": "v1.15.1",
+        "version_normalized": "1.15.1.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/environment.git",
-            "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a"
+            "url": "https://github.com/fabpot/Twig.git",
+            "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/environment/zipball/79517609ec01139cd7e9fded0dd7ce08c952ef6a",
-            "reference": "79517609ec01139cd7e9fded0dd7ce08c952ef6a",
+            "url": "https://api.github.com/repos/fabpot/Twig/zipball/1fb5784662f438d7d96a541e305e28b812e2eeed",
+            "reference": "1fb5784662f438d7d96a541e305e28b812e2eeed",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "4.0.*@dev"
+            "php": ">=5.2.4"
         },
-        "time": "2014-02-18 16:17:19",
+        "time": "2014-02-13 10:19:29",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.0.x-dev"
+                "dev-master": "1.15-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
-            ]
+            "psr-0": {
+                "Twig_": "lib/"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -1775,342 +1827,404 @@
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
+            },
+            {
+                "name": "Armin Ronacher",
+                "email": "armin.ronacher@active-4.com",
+                "role": "Project Founder"
+            },
+            {
+                "name": "Twig Team",
+                "homepage": "https://github.com/fabpot/Twig/graphs/contributors",
+                "role": "Contributors"
             }
         ],
-        "description": "Provides functionality to handle HHVM/PHP environments",
-        "homepage": "http://www.github.com/sebastianbergmann/environment",
+        "description": "Twig, the flexible, fast, and secure template language for PHP",
+        "homepage": "http://twig.sensiolabs.org",
         "keywords": [
-            "Xdebug",
-            "environment",
-            "hhvm"
+            "templating"
         ]
     },
     {
-        "name": "sebastian/diff",
-        "version": "1.1.0",
-        "version_normalized": "1.1.0.0",
+        "name": "guzzlehttp/streams",
+        "version": "1.4.0",
+        "version_normalized": "1.4.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/diff.git",
-            "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d"
+            "url": "https://github.com/guzzle/streams.git",
+            "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d",
-            "reference": "1e091702a5a38e6b4c1ba9ca816e3dd343df2e2d",
+            "url": "https://api.github.com/repos/guzzle/streams/zipball/3b761a328e5ed6ed519e960aded95d7acbe77894",
+            "reference": "3b761a328e5ed6ed519e960aded95d7acbe77894",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "php": ">=5.4.0"
         },
-        "time": "2013-08-03 16:46:33",
+        "require-dev": {
+            "phpunit/phpunit": "~4.0"
+        },
+        "time": "2014-07-19 18:43:42",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.1-dev"
+                "dev-master": "1.4.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
+            "psr-4": {
+                "GuzzleHttp\\Stream\\": "src/"
+            },
+            "files": [
+                "src/functions.php"
             ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
-            },
-            {
-                "name": "Kore Nordmann",
-                "email": "mail@kore-nordmann.de"
+                "name": "Michael Dowling",
+                "email": "mtdowling@gmail.com",
+                "homepage": "https://github.com/mtdowling"
             }
         ],
-        "description": "Diff implementation",
-        "homepage": "http://www.github.com/sebastianbergmann/diff",
+        "description": "Provides a simple abstraction over streams of data (Guzzle 4+)",
+        "homepage": "http://guzzlephp.org/",
         "keywords": [
-            "diff"
+            "Guzzle",
+            "stream"
         ]
     },
     {
-        "name": "sebastian/comparator",
-        "version": "1.0.0",
-        "version_normalized": "1.0.0.0",
+        "name": "guzzlehttp/guzzle",
+        "version": "4.1.5",
+        "version_normalized": "4.1.5.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/comparator.git",
-            "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2"
+            "url": "https://github.com/guzzle/guzzle.git",
+            "reference": "75e58ada121dffe1038331b808f8d3109499edc4"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/comparator/zipball/f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2",
-            "reference": "f7069ee51fa9fb6c038e16a9d0e3439f5449dcf2",
+            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/75e58ada121dffe1038331b808f8d3109499edc4",
+            "reference": "75e58ada121dffe1038331b808f8d3109499edc4",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3",
-            "sebastian/diff": "~1.1",
-            "sebastian/exporter": "~1.0"
+            "ext-json": "*",
+            "guzzlehttp/streams": "~1.4",
+            "php": ">=5.4.0"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.1"
+            "ext-curl": "*",
+            "phpunit/phpunit": "~4.0",
+            "psr/log": "~1.0"
         },
-        "time": "2014-05-02 07:05:58",
+        "suggest": {
+            "ext-curl": "Guzzle will use specific adapters if cURL is present"
+        },
+        "time": "2014-08-02 22:52:37",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.0.x-dev"
+                "dev-master": "4.1.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
+            "psr-4": {
+                "GuzzleHttp\\": "src/"
+            },
+            "files": [
+                "src/functions.php"
             ]
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
-            },
-            {
-                "name": "Jeff Welch",
-                "email": "whatthejeff@gmail.com"
-            },
-            {
-                "name": "Volker Dusch",
-                "email": "github@wallbash.com"
-            },
-            {
-                "name": "Bernhard Schussek",
-                "email": "bschussek@2bepublished.at"
+                "name": "Michael Dowling",
+                "email": "mtdowling@gmail.com",
+                "homepage": "https://github.com/mtdowling"
             }
         ],
-        "description": "Provides the functionality to compare PHP values for equality",
-        "homepage": "http://www.github.com/sebastianbergmann/comparator",
+        "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
+        "homepage": "http://guzzlephp.org/",
         "keywords": [
-            "comparator",
-            "compare",
-            "equality"
+            "client",
+            "curl",
+            "framework",
+            "http",
+            "http client",
+            "rest",
+            "web service"
         ]
     },
     {
-        "name": "phpunit/php-text-template",
-        "version": "1.2.0",
-        "version_normalized": "1.2.0.0",
+        "name": "symfony/process",
+        "version": "v2.5.2",
+        "version_normalized": "2.5.2.0",
+        "target-dir": "Symfony/Component/Process",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-text-template.git",
-            "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a"
+            "url": "https://github.com/symfony/Process.git",
+            "reference": "5e53efbf61a7fbf73c79e3e08feea50f64c20bfa"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-text-template/zipball/206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
-            "reference": "206dfefc0ffe9cebf65c413e3d0e809c82fbf00a",
+            "url": "https://api.github.com/repos/symfony/Process/zipball/5e53efbf61a7fbf73c79e3e08feea50f64c20bfa",
+            "reference": "5e53efbf61a7fbf73c79e3e08feea50f64c20bfa",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.3"
         },
-        "time": "2014-01-30 17:20:04",
+        "time": "2014-07-09 09:05:48",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "2.5-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "Text/"
-            ]
+            "psr-0": {
+                "Symfony\\Component\\Process\\": ""
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
-        "include-path": [
-            ""
-        ],
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
+                "name": "Fabien Potencier",
+                "email": "fabien@symfony.com",
+                "homepage": "http://fabien.potencier.org",
+                "role": "Lead Developer"
+            },
+            {
+                "name": "Symfony Community",
+                "homepage": "http://symfony.com/contributors"
             }
         ],
-        "description": "Simple template engine.",
-        "homepage": "https://github.com/sebastianbergmann/php-text-template/",
-        "keywords": [
-            "template"
-        ]
+        "description": "Symfony Process Component",
+        "homepage": "http://symfony.com"
     },
     {
-        "name": "phpunit/php-timer",
-        "version": "1.0.5",
-        "version_normalized": "1.0.5.0",
+        "name": "kriswallsmith/assetic",
+        "version": "v1.1.2",
+        "version_normalized": "1.1.2.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-timer.git",
-            "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c"
+            "url": "https://github.com/kriswallsmith/assetic.git",
+            "reference": "735cffd3982c6e8cdebe292d5db39d077f65890f"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-timer/zipball/19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
-            "reference": "19689d4354b295ee3d8c54b4f42c3efb69cbc17c",
+            "url": "https://api.github.com/repos/kriswallsmith/assetic/zipball/735cffd3982c6e8cdebe292d5db39d077f65890f",
+            "reference": "735cffd3982c6e8cdebe292d5db39d077f65890f",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "php": ">=5.3.1",
+            "symfony/process": "~2.1"
         },
-        "time": "2013-08-02 07:42:54",
+        "require-dev": {
+            "cssmin/cssmin": "*",
+            "joliclic/javascript-packer": "*",
+            "kamicane/packager": "*",
+            "leafo/lessphp": "*",
+            "leafo/scssphp": "*",
+            "leafo/scssphp-compass": "*",
+            "mrclay/minify": "*",
+            "phpunit/phpunit": "~3.7",
+            "ptachoire/cssembed": "*",
+            "twig/twig": "~1.6"
+        },
+        "suggest": {
+            "leafo/lessphp": "Assetic provides the integration with the lessphp LESS compiler",
+            "leafo/scssphp": "Assetic provides the integration with the scssphp SCSS compiler",
+            "leafo/scssphp-compass": "Assetic provides the integration with the SCSS compass plugin",
+            "ptachoire/cssembed": "Assetic provides the integration with phpcssembed to embed data uris",
+            "twig/twig": "Assetic provides the integration with the Twig templating engine"
+        },
+        "time": "2013-07-19 00:03:27",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.1-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "PHP/"
+            "psr-0": {
+                "Assetic": "src/"
+            },
+            "files": [
+                "src/functions.php"
             ]
         },
         "notification-url": "https://packagist.org/downloads/",
-        "include-path": [
-            ""
-        ],
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
+                "name": "Kris Wallsmith",
+                "email": "kris.wallsmith@gmail.com",
+                "homepage": "http://kriswallsmith.net/"
             }
         ],
-        "description": "Utility class for timing",
-        "homepage": "https://github.com/sebastianbergmann/php-timer/",
+        "description": "Asset Management for PHP",
+        "homepage": "https://github.com/kriswallsmith/assetic",
         "keywords": [
-            "timer"
+            "assets",
+            "compression",
+            "minification"
         ]
     },
     {
-        "name": "phpunit/php-token-stream",
-        "version": "1.2.2",
-        "version_normalized": "1.2.2.0",
+        "name": "ocramius/lazy-map",
+        "version": "1.0.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-token-stream.git",
-            "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32"
+            "url": "https://github.com/Ocramius/LazyMap.git",
+            "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-token-stream/zipball/ad4e1e23ae01b483c16f600ff1bebec184588e32",
-            "reference": "ad4e1e23ae01b483c16f600ff1bebec184588e32",
+            "url": "https://api.github.com/repos/Ocramius/LazyMap/zipball/7fe3d347f5e618bcea7d39345ff83f3651d8b752",
+            "reference": "7fe3d347f5e618bcea7d39345ff83f3651d8b752",
             "shasum": ""
         },
         "require": {
-            "ext-tokenizer": "*",
             "php": ">=5.3.3"
         },
-        "time": "2014-03-03 05:10:30",
+        "require-dev": {
+            "athletic/athletic": "~0.1.6",
+            "phpmd/phpmd": "1.5.*",
+            "phpunit/phpunit": ">=3.7",
+            "satooshi/php-coveralls": "~0.6",
+            "squizlabs/php_codesniffer": "1.4.*"
+        },
+        "time": "2013-11-09 22:30:54",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.2-dev"
+                "dev-master": "1.0.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "PHP/"
-            ]
+            "psr-0": {
+                "LazyMap\\": "src"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
-        "include-path": [
-            ""
-        ],
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
+                "name": "Marco Pivetta",
+                "email": "ocramius@gmail.com",
+                "homepage": "http://ocramius.github.com/",
+                "role": "Developer"
             }
         ],
-        "description": "Wrapper around PHP's tokenizer extension.",
-        "homepage": "https://github.com/sebastianbergmann/php-token-stream/",
+        "description": "A library that provides lazy instantiation logic for a map of objects",
+        "homepage": "https://github.com/Ocramius/LazyMap",
         "keywords": [
-            "tokenizer"
+            "lazy",
+            "lazy instantiation",
+            "lazy loading",
+            "map",
+            "service location"
         ]
     },
     {
-        "name": "phpunit/php-file-iterator",
-        "version": "1.3.4",
-        "version_normalized": "1.3.4.0",
+        "name": "ocramius/instantiator",
+        "version": "1.0.0",
+        "version_normalized": "1.0.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/php-file-iterator.git",
-            "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb"
+            "url": "https://github.com/Ocramius/Instantiator.git",
+            "reference": "cc754c2289ffd4483c319f6ed6ee88ce21676f64"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-file-iterator/zipball/acd690379117b042d1c8af1fafd61bde001bf6bb",
-            "reference": "acd690379117b042d1c8af1fafd61bde001bf6bb",
+            "url": "https://api.github.com/repos/Ocramius/Instantiator/zipball/cc754c2289ffd4483c319f6ed6ee88ce21676f64",
+            "reference": "cc754c2289ffd4483c319f6ed6ee88ce21676f64",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "ocramius/lazy-map": "1.0.*",
+            "php": "~5.3"
         },
-        "time": "2013-10-10 15:34:57",
+        "require-dev": {
+            "athletic/athletic": "~0.1.8",
+            "ext-phar": "*",
+            "phpunit/phpunit": "~4.0",
+            "squizlabs/php_codesniffer": "2.0.*@ALPHA"
+        },
+        "time": "2014-06-15 11:44:46",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "2.0.x-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "File/"
-            ]
+            "psr-0": {
+                "Instantiator\\": "src"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
-        "include-path": [
-            ""
-        ],
         "license": [
-            "BSD-3-Clause"
+            "MIT"
         ],
         "authors": [
             {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
+                "name": "Marco Pivetta",
+                "email": "ocramius@gmail.com",
+                "homepage": "http://ocramius.github.com/",
+                "role": "Developer"
             }
         ],
-        "description": "FilterIterator implementation that filters files based on a list of suffixes.",
-        "homepage": "https://github.com/sebastianbergmann/php-file-iterator/",
+        "description": "A small, lightweight utility to instantiate objects in PHP without invoking their constructors",
+        "homepage": "https://github.com/Ocramius/Instantiator",
         "keywords": [
-            "filesystem",
-            "iterator"
+            "constructor",
+            "instantiate"
         ]
     },
     {
         "name": "phpunit/php-code-coverage",
-        "version": "2.0.8",
-        "version_normalized": "2.0.8.0",
+        "version": "2.0.9",
+        "version_normalized": "2.0.9.0",
         "source": {
             "type": "git",
             "url": "https://github.com/sebastianbergmann/php-code-coverage.git",
-            "reference": "58401826c8cfc8fd689b60026e91c337df374bca"
+            "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/58401826c8cfc8fd689b60026e91c337df374bca",
-            "reference": "58401826c8cfc8fd689b60026e91c337df374bca",
+            "url": "https://api.github.com/repos/sebastianbergmann/php-code-coverage/zipball/ed8ac99ce38c3fd134128c898f7ca74665abef7f",
+            "reference": "ed8ac99ce38c3fd134128c898f7ca74665abef7f",
             "shasum": ""
         },
         "require": {
@@ -2130,7 +2244,7 @@
             "ext-xdebug": ">=2.2.1",
             "ext-xmlwriter": "*"
         },
-        "time": "2014-05-26 14:55:24",
+        "time": "2014-06-29 08:14:40",
         "type": "library",
         "extra": {
             "branch-alias": {
@@ -2167,17 +2281,17 @@
     },
     {
         "name": "phpunit/phpunit",
-        "version": "4.1.3",
-        "version_normalized": "4.1.3.0",
+        "version": "4.1.4",
+        "version_normalized": "4.1.4.0",
         "source": {
             "type": "git",
             "url": "https://github.com/sebastianbergmann/phpunit.git",
-            "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91"
+            "reference": "a71c4842c5fb836d8b200624583b859ec34e8a26"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/939cb801b3b2aa253aedd0b279f40bb8f35cec91",
-            "reference": "939cb801b3b2aa253aedd0b279f40bb8f35cec91",
+            "url": "https://api.github.com/repos/sebastianbergmann/phpunit/zipball/a71c4842c5fb836d8b200624583b859ec34e8a26",
+            "reference": "a71c4842c5fb836d8b200624583b859ec34e8a26",
             "shasum": ""
         },
         "require": {
@@ -2199,205 +2313,263 @@
             "sebastian/version": "~1.0",
             "symfony/yaml": "~2.0"
         },
-        "suggest": {
-            "phpunit/php-invoker": "~1.1"
+        "suggest": {
+            "phpunit/php-invoker": "~1.1"
+        },
+        "time": "2014-07-18 07:15:58",
+        "bin": [
+            "phpunit"
+        ],
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "4.1.x-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "classmap": [
+                "src/"
+            ]
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "include-path": [
+            "",
+            "../../symfony/yaml/"
+        ],
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "authors": [
+            {
+                "name": "Sebastian Bergmann",
+                "email": "sebastian@phpunit.de",
+                "role": "lead"
+            }
+        ],
+        "description": "The PHP Unit Testing framework.",
+        "homepage": "http://www.phpunit.de/",
+        "keywords": [
+            "phpunit",
+            "testing",
+            "xunit"
+        ]
+    },
+    {
+        "name": "zendframework/zend-stdlib",
+        "version": "2.2.6",
+        "version_normalized": "2.2.6.0",
+        "target-dir": "Zend/Stdlib",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/zendframework/Component_ZendStdlib.git",
+            "reference": "e646729f2274f4552b6a92e38d8e458efe08ebc5"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/zendframework/Component_ZendStdlib/zipball/e646729f2274f4552b6a92e38d8e458efe08ebc5",
+            "reference": "e646729f2274f4552b6a92e38d8e458efe08ebc5",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3"
+        },
+        "suggest": {
+            "zendframework/zend-eventmanager": "To support aggregate hydrator usage",
+            "zendframework/zend-servicemanager": "To support hydrator plugin manager usage"
+        },
+        "time": "2014-01-04 13:00:28",
+        "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "2.2-dev",
+                "dev-develop": "2.3-dev"
+            }
+        },
+        "installation-source": "dist",
+        "autoload": {
+            "psr-0": {
+                "Zend\\Stdlib\\": ""
+            }
+        },
+        "notification-url": "https://packagist.org/downloads/",
+        "license": [
+            "BSD-3-Clause"
+        ],
+        "keywords": [
+            "stdlib",
+            "zf2"
+        ]
+    },
+    {
+        "name": "zendframework/zend-escaper",
+        "version": "2.2.6",
+        "version_normalized": "2.2.6.0",
+        "target-dir": "Zend/Escaper",
+        "source": {
+            "type": "git",
+            "url": "https://github.com/zendframework/Component_ZendEscaper.git",
+            "reference": "80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f"
+        },
+        "dist": {
+            "type": "zip",
+            "url": "https://api.github.com/repos/zendframework/Component_ZendEscaper/zipball/80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f",
+            "reference": "80abc4bc1f48b9fe8ed603aaa9eebd6e6f30fd0f",
+            "shasum": ""
+        },
+        "require": {
+            "php": ">=5.3.3"
         },
-        "time": "2014-06-11 14:15:47",
-        "bin": [
-            "phpunit"
-        ],
+        "time": "2014-01-04 13:00:13",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "4.1.x-dev"
+                "dev-master": "2.2-dev",
+                "dev-develop": "2.3-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
-            ]
+            "psr-0": {
+                "Zend\\Escaper\\": ""
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
-        "include-path": [
-            "",
-            "../../symfony/yaml/"
-        ],
         "license": [
             "BSD-3-Clause"
         ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sebastian@phpunit.de",
-                "role": "lead"
-            }
-        ],
-        "description": "The PHP Unit Testing framework.",
-        "homepage": "http://www.phpunit.de/",
         "keywords": [
-            "phpunit",
-            "testing",
-            "xunit"
+            "escaper",
+            "zf2"
         ]
     },
     {
-        "name": "phpunit/phpunit-mock-objects",
-        "version": "dev-master",
-        "version_normalized": "9999999-dev",
+        "name": "zendframework/zend-feed",
+        "version": "2.2.6",
+        "version_normalized": "2.2.6.0",
+        "target-dir": "Zend/Feed",
         "source": {
             "type": "git",
-            "url": "https://github.com/sebastianbergmann/phpunit-mock-objects.git",
-            "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2"
+            "url": "https://github.com/zendframework/Component_ZendFeed.git",
+            "reference": "8acb562d99dd0786d25c990530980d2d92b67b35"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/sebastianbergmann/phpunit-mock-objects/zipball/32f97c9198be565b6051983c70dc8d8e758725f4",
-            "reference": "e60bb929c50ae4237aaf680a4f6773f4ee17f0a2",
+            "url": "https://api.github.com/repos/zendframework/Component_ZendFeed/zipball/8acb562d99dd0786d25c990530980d2d92b67b35",
+            "reference": "8acb562d99dd0786d25c990530980d2d92b67b35",
             "shasum": ""
         },
         "require": {
             "php": ">=5.3.3",
-            "phpunit/php-text-template": "~1.2"
-        },
-        "require-dev": {
-            "phpunit/phpunit": "4.3.*@dev"
+            "zendframework/zend-escaper": "self.version",
+            "zendframework/zend-stdlib": "self.version"
         },
         "suggest": {
-            "ext-soap": "*"
+            "zendframework/zend-http": "Zend\\Http for PubSubHubbub, and optionally for use with Zend\\Feed\\Reader",
+            "zendframework/zend-servicemanager": "Zend\\ServiceManager component, for default/recommended ExtensionManager implementations",
+            "zendframework/zend-validator": "Zend\\Validator component"
         },
-        "time": "2014-06-12 07:22:27",
+        "time": "2014-01-04 13:00:14",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.3.x-dev"
+                "dev-master": "2.2-dev",
+                "dev-develop": "2.3-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "classmap": [
-                "src/"
-            ]
+            "psr-0": {
+                "Zend\\Feed\\": ""
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
-        "include-path": [
-            ""
-        ],
         "license": [
             "BSD-3-Clause"
         ],
-        "authors": [
-            {
-                "name": "Sebastian Bergmann",
-                "email": "sb@sebastian-bergmann.de",
-                "role": "lead"
-            }
-        ],
-        "description": "Mock Object library for PHPUnit",
-        "homepage": "https://github.com/sebastianbergmann/phpunit-mock-objects/",
+        "description": "provides functionality for consuming RSS and Atom feeds",
         "keywords": [
-            "mock",
-            "xunit"
+            "feed",
+            "zf2"
         ]
     },
     {
-        "name": "guzzlehttp/streams",
-        "version": "1.3.0",
+        "name": "mikey179/vfsStream",
+        "version": "v1.3.0",
         "version_normalized": "1.3.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/guzzle/streams.git",
-            "reference": "d6aaa91cfdbae86355dd2a168a3ca536755898a2"
+            "url": "https://github.com/mikey179/vfsStream.git",
+            "reference": "8571f349567e02af1b7efc0fc4e3a4a1c98e664e"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/streams/zipball/d6aaa91cfdbae86355dd2a168a3ca536755898a2",
-            "reference": "d6aaa91cfdbae86355dd2a168a3ca536755898a2",
+            "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/8571f349567e02af1b7efc0fc4e3a4a1c98e664e",
+            "reference": "8571f349567e02af1b7efc0fc4e3a4a1c98e664e",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.4.0"
+            "php": ">=5.3.0"
         },
         "require-dev": {
-            "phpunit/phpunit": "~4.0"
+            "phpunit/phpunit": "~4.1"
         },
-        "time": "2014-07-15 22:02:02",
+        "time": "2014-07-21 20:15:54",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "1.2.x-dev"
+                "dev-master": "1.3.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\Stream\\": "src/"
-            },
-            "files": [
-                "src/functions.php"
-            ]
+            "psr-0": {
+                "org\\bovigo\\vfs\\": "src/main/php"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "MIT"
-        ],
-        "authors": [
-            {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
-            }
+            "BSD"
         ],
-        "description": "Provides a simple abstraction over streams of data (Guzzle 4+)",
-        "homepage": "http://guzzlephp.org/",
-        "keywords": [
-            "Guzzle",
-            "stream"
-        ]
+        "homepage": "http://vfs.bovigo.org/"
     },
     {
-        "name": "guzzlehttp/guzzle",
-        "version": "4.1.3",
-        "version_normalized": "4.1.3.0",
+        "name": "doctrine/cache",
+        "version": "v1.3.0",
+        "version_normalized": "1.3.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/guzzle/guzzle.git",
-            "reference": "012b2aecbda4e38f119c19580898685851015fa7"
+            "url": "https://github.com/doctrine/cache.git",
+            "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/guzzle/guzzle/zipball/012b2aecbda4e38f119c19580898685851015fa7",
-            "reference": "012b2aecbda4e38f119c19580898685851015fa7",
+            "url": "https://api.github.com/repos/doctrine/cache/zipball/e16d7adf45664a50fa86f515b6d5e7f670130449",
+            "reference": "e16d7adf45664a50fa86f515b6d5e7f670130449",
             "shasum": ""
         },
         "require": {
-            "ext-json": "*",
-            "guzzlehttp/streams": "~1.3",
-            "php": ">=5.4.0"
+            "php": ">=5.3.2"
         },
-        "require-dev": {
-            "ext-curl": "*",
-            "phpunit/phpunit": "~4.0",
-            "psr/log": "~1.0"
+        "conflict": {
+            "doctrine/common": ">2.2,<2.4"
         },
-        "suggest": {
-            "ext-curl": "Guzzle will use specific adapters if cURL is present"
+        "require-dev": {
+            "phpunit/phpunit": ">=3.7",
+            "satooshi/php-coveralls": "~0.6"
         },
-        "time": "2014-07-16 03:01:02",
+        "time": "2013-10-25 19:04:14",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "4.1.x-dev"
+                "dev-master": "1.0.x-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
-            "psr-4": {
-                "GuzzleHttp\\": "src/"
-            },
-            "files": [
-                "src/functions.php"
-            ]
+            "psr-0": {
+                "Doctrine\\Common\\Cache\\": "lib/"
+            }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
@@ -2405,85 +2577,137 @@
         ],
         "authors": [
             {
-                "name": "Michael Dowling",
-                "email": "mtdowling@gmail.com",
-                "homepage": "https://github.com/mtdowling"
+                "name": "Jonathan Wage",
+                "email": "jonwage@gmail.com",
+                "homepage": "http://www.jwage.com/",
+                "role": "Creator"
+            },
+            {
+                "name": "Guilherme Blanco",
+                "email": "guilhermeblanco@gmail.com",
+                "homepage": "http://www.instaclick.com"
+            },
+            {
+                "name": "Roman Borschel",
+                "email": "roman@code-factory.org"
+            },
+            {
+                "name": "Benjamin Eberlei",
+                "email": "kontakt@beberlei.de"
+            },
+            {
+                "name": "Johannes Schmitt",
+                "email": "schmittjoh@gmail.com",
+                "homepage": "https://github.com/schmittjoh",
+                "role": "Developer of wrapped JMSSerializerBundle"
             }
         ],
-        "description": "Guzzle is a PHP HTTP client library and framework for building RESTful web service clients",
-        "homepage": "http://guzzlephp.org/",
+        "description": "Caching library offering an object-oriented API for many cache backends",
+        "homepage": "http://www.doctrine-project.org",
         "keywords": [
-            "client",
-            "curl",
-            "framework",
-            "http",
-            "http client",
-            "rest",
-            "web service"
+            "cache",
+            "caching"
         ]
     },
     {
-        "name": "mikey179/vfsStream",
-        "version": "v1.2.0",
+        "name": "doctrine/collections",
+        "version": "v1.2",
         "version_normalized": "1.2.0.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/mikey179/vfsStream.git",
-            "reference": "063fb10633f10c5ccbcac26227e94f46d9336f90"
+            "url": "https://github.com/doctrine/collections.git",
+            "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/mikey179/vfsStream/zipball/063fb10633f10c5ccbcac26227e94f46d9336f90",
-            "reference": "063fb10633f10c5ccbcac26227e94f46d9336f90",
+            "url": "https://api.github.com/repos/doctrine/collections/zipball/b99c5c46c87126201899afe88ec490a25eedd6a2",
+            "reference": "b99c5c46c87126201899afe88ec490a25eedd6a2",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.0"
+            "php": ">=5.3.2"
         },
-        "time": "2013-04-01 10:41:02",
+        "time": "2014-02-03 23:07:43",
         "type": "library",
+        "extra": {
+            "branch-alias": {
+                "dev-master": "1.2.x-dev"
+            }
+        },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "org\\bovigo\\vfs\\": "src/main/php"
+                "Doctrine\\Common\\Collections\\": "lib/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
         "license": [
-            "BSD"
+            "MIT"
         ],
-        "homepage": "http://vfs.bovigo.org/"
+        "authors": [
+            {
+                "name": "Jonathan Wage",
+                "email": "jonwage@gmail.com",
+                "homepage": "http://www.jwage.com/",
+                "role": "Creator"
+            },
+            {
+                "name": "Guilherme Blanco",
+                "email": "guilhermeblanco@gmail.com",
+                "homepage": "http://www.instaclick.com"
+            },
+            {
+                "name": "Roman Borschel",
+                "email": "roman@code-factory.org"
+            },
+            {
+                "name": "Benjamin Eberlei",
+                "email": "kontakt@beberlei.de"
+            },
+            {
+                "name": "Johannes Schmitt",
+                "email": "schmittjoh@gmail.com",
+                "homepage": "https://github.com/schmittjoh",
+                "role": "Developer of wrapped JMSSerializerBundle"
+            }
+        ],
+        "description": "Collections Abstraction library",
+        "homepage": "http://www.doctrine-project.org",
+        "keywords": [
+            "array",
+            "collections",
+            "iterator"
+        ]
     },
     {
-        "name": "symfony/serializer",
-        "version": "v2.5.2",
-        "version_normalized": "2.5.2.0",
-        "target-dir": "Symfony/Component/Serializer",
+        "name": "willdurand/negotiation",
+        "version": "1.3.3",
+        "version_normalized": "1.3.3.0",
         "source": {
             "type": "git",
-            "url": "https://github.com/symfony/Serializer.git",
-            "reference": "33185b290310ab1fd8283fb8ed2a434cdb88b9b9"
+            "url": "https://github.com/willdurand/Negotiation.git",
+            "reference": "a98fb6b9808610c1aa326c736893d3d77d9383b6"
         },
         "dist": {
             "type": "zip",
-            "url": "https://api.github.com/repos/symfony/Serializer/zipball/33185b290310ab1fd8283fb8ed2a434cdb88b9b9",
-            "reference": "33185b290310ab1fd8283fb8ed2a434cdb88b9b9",
+            "url": "https://api.github.com/repos/willdurand/Negotiation/zipball/a98fb6b9808610c1aa326c736893d3d77d9383b6",
+            "reference": "a98fb6b9808610c1aa326c736893d3d77d9383b6",
             "shasum": ""
         },
         "require": {
-            "php": ">=5.3.3"
+            "php": ">=5.3.0"
         },
-        "time": "2014-07-09 09:05:48",
+        "time": "2014-05-16 12:34:51",
         "type": "library",
         "extra": {
             "branch-alias": {
-                "dev-master": "2.5-dev"
+                "dev-master": "1.3-dev"
             }
         },
         "installation-source": "dist",
         "autoload": {
             "psr-0": {
-                "Symfony\\Component\\Serializer\\": ""
+                "Negotiation": "src/"
             }
         },
         "notification-url": "https://packagist.org/downloads/",
@@ -2492,17 +2716,19 @@
         ],
         "authors": [
             {
-                "name": "Fabien Potencier",
-                "email": "fabien@symfony.com",
-                "homepage": "http://fabien.potencier.org",
-                "role": "Lead Developer"
-            },
-            {
-                "name": "Symfony Community",
-                "homepage": "http://symfony.com/contributors"
+                "name": "William Durand",
+                "email": "william.durand1@gmail.com",
+                "homepage": "http://www.willdurand.fr"
             }
         ],
-        "description": "Symfony Serializer Component",
-        "homepage": "http://symfony.com"
+        "description": "Content Negotiation tools for PHP provided as a standalone library.",
+        "homepage": "http://williamdurand.fr/Negotiation/",
+        "keywords": [
+            "accept",
+            "content",
+            "format",
+            "header",
+            "negotiation"
+        ]
     }
 ]
diff --git a/core/vendor/willdurand/negotiation/.gitignore b/core/vendor/willdurand/negotiation/.gitignore
new file mode 100644
index 0000000..57872d0
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/.gitignore
@@ -0,0 +1 @@
+/vendor/
diff --git a/core/vendor/willdurand/negotiation/.travis.yml b/core/vendor/willdurand/negotiation/.travis.yml
new file mode 100644
index 0000000..0253fd1
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/.travis.yml
@@ -0,0 +1,18 @@
+language: php
+
+php:
+    - 5.3
+    - 5.4
+    - 5.5
+    - 5.6
+    - hhvm
+
+matrix:
+    allow_failures:
+        - php: hhvm
+
+before_script:
+    - composer self-update
+    - composer install --dev --prefer-dist --no-interaction
+
+script: phpunit --coverage-text
diff --git a/core/vendor/willdurand/negotiation/CONTRIBUTING.md b/core/vendor/willdurand/negotiation/CONTRIBUTING.md
new file mode 100644
index 0000000..3677a2c
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/CONTRIBUTING.md
@@ -0,0 +1,33 @@
+Contributing
+============
+
+First of all, **thank you** for contributing, **you are awesome**!
+
+Here are a few rules to follow in order to ease code reviews, and discussions before
+maintainers accept and merge your work.
+
+You MUST follow the [PSR-1](http://www.php-fig.org/psr/1/) and
+[PSR-2](http://www.php-fig.org/psr/2/). If you don't know about any of them, you
+should really read the recommendations. Can't wait? Use the [PHP-CS-Fixer
+tool](http://cs.sensiolabs.org/).
+
+You MUST run the test suite.
+
+You MUST write (or update) unit tests.
+
+You SHOULD write documentation.
+
+Please, write [commit messages that make
+sense](http://tbaggery.com/2008/04/19/a-note-about-git-commit-messages.html),
+and [rebase your branch](http://git-scm.com/book/en/Git-Branching-Rebasing)
+before submitting your Pull Request.
+
+One may ask you to [squash your
+commits](http://gitready.com/advanced/2009/02/10/squashing-commits-with-rebase.html)
+too. This is used to "clean" your Pull Request before merging it (we don't want
+commits such as `fix tests`, `fix 2`, `fix 3`, etc.).
+
+Also, while creating your Pull Request on GitHub, you MUST write a description
+which gives the context and/or explains why you are creating it.
+
+Thank you!
diff --git a/core/vendor/willdurand/negotiation/LICENSE b/core/vendor/willdurand/negotiation/LICENSE
new file mode 100644
index 0000000..a27c662
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/LICENSE
@@ -0,0 +1,19 @@
+Copyright (c) 2013 William Durand <william.durand1@gmail.com>
+
+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/core/vendor/willdurand/negotiation/README.md b/core/vendor/willdurand/negotiation/README.md
new file mode 100644
index 0000000..2e78516
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/README.md
@@ -0,0 +1,162 @@
+Negotiation
+===========
+
+[![Build Status](https://travis-ci.org/willdurand/Negotiation.png?branch=master)](http://travis-ci.org/willdurand/Negotiation)
+[![Total Downloads](https://poser.pugx.org/willdurand/Negotiation/downloads.png)](https://packagist.org/packages/willdurand/Negotiation)
+[![Latest Stable Version](https://poser.pugx.org/willdurand/Negotiation/v/stable.png)](https://packagist.org/packages/willdurand/Negotiation)
+
+**Negotiation** is a standalone library without any dependencies that allows you
+to implement [content
+negotiation](http://www.w3.org/Protocols/rfc2616/rfc2616-sec12.html) in your
+application, whatever framework you use.
+This library is based on [RFC
+2616](http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html). Negotiation is
+easy to use, and extensively unit tested.
+
+
+Installation
+------------
+
+The recommended way to install Negotiation is through
+[Composer](http://getcomposer.org/):
+
+``` json
+{
+    "require": {
+        "willdurand/negotiation": "@stable"
+    }
+}
+```
+
+**Protip:** you should browse the
+[`willdurand/negotiation`](https://packagist.org/packages/willdurand/negotiation)
+page to choose a stable version to use, avoid the `@stable` meta constraint.
+
+
+Usage
+-----
+
+In a nutshell:
+
+``` php
+<?php
+
+$negotiator = new \Negotiation\Negotiator();
+$bestHeader = $negotiator->getBest('en; q=0.1, fr; q=0.4, fu; q=0.9, de; q=0.2');
+// $bestHeader = 'fu';
+```
+
+The `getBest()` method, part of the `NegotiatorInterface`, returns either `null`
+or `AcceptHeader` instances. An `AcceptHeader` object owns a `value` and a
+`quality`.
+
+
+### Format Negotiation
+
+The **Format Negotiation** is handled by the `FormatNegotiator` class.
+Basically, pass an `Accept` header and optionally a set of preferred media types
+to the `getBest()` method in order to retrieve the best **media type**:
+
+``` php
+<?php
+
+$negotiator   = new \Negotiation\FormatNegotiator();
+
+$acceptHeader = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
+$priorities   = array('text/html', 'application/json', '*/*');
+
+$format = $negotiator->getBest($acceptHeader, $priorities);
+// $format->getValue() = text/html
+```
+
+The `FormatNegotiator` class also provides a `getBestFormat()` method that
+returns the best format given an `Accept` header string and a set of
+preferred/allowed formats or mime types:
+
+``` php
+<?php
+
+$negotiator   = new \Negotiation\FormatNegotiator();
+
+$acceptHeader = 'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8';
+$priorities   = array('html', 'application/json', '*/*');
+
+$format = $negotiator->getBestFormat($acceptHeader, $priorities);
+// $format = html
+```
+
+#### Other Methods
+
+* `registerFormat($format, array $mimeTypes, $override = false)`: registers a new
+  format with its mime types;
+* `getFormat($mimeType)`: returns the format for a given mime type, or null if
+not found;
+* `normalizePriorities($priorities)`: ensures that any formats are converted to
+  mime types.
+
+### Language Negotiation
+
+Language negotiation is handled by the `LanguageNegotiator` class:
+
+``` php
+<?php
+
+$negotiator = new \Negotiation\LanguageNegotiator();
+$language   = $negotiator->getBest('da, en-gb;q=0.8, en;q=0.7');
+// $language = da
+```
+
+
+### Charset/Encoding Negotiation
+
+Charset/Encoding negotiation works out of the box using the `Negotiator` class:
+
+``` php
+<?php
+
+$negotiator = new \Negotiation\Negotiator();
+$priorities = array(
+    'utf-8',
+    'big5',
+    'shift-jis',
+);
+
+$bestHeader = $negotiator->getBest('ISO-8859-1, Big5;q=0.6,utf-8;q=0.7, *;q=0.5', $priorities);
+// $bestHeader = 'utf-8'
+```
+
+
+Unit Tests
+----------
+
+Setup the test suite using Composer:
+
+    $ composer install --dev
+
+Run it using PHPUnit:
+
+    $ phpunit
+
+
+Contributing
+------------
+
+See CONTRIBUTING file.
+
+
+Credits
+-------
+
+* Some parts of this library are inspired by:
+
+    * [Symfony](http://github.com/symfony/symfony) framework;
+    * [FOSRest](http://github.com/FriendsOfSymfony/FOSRest);
+    * [PEAR HTTP2](https://github.com/pear/HTTP2).
+
+* William Durand <william.durand1@gmail.com>
+
+
+License
+-------
+
+Negotiation is released under the MIT License. See the bundled LICENSE file for details.
diff --git a/core/vendor/willdurand/negotiation/composer.json b/core/vendor/willdurand/negotiation/composer.json
new file mode 100644
index 0000000..5490534
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/composer.json
@@ -0,0 +1,24 @@
+{
+    "name": "willdurand/negotiation",
+    "description": "Content Negotiation tools for PHP provided as a standalone library.",
+    "keywords": [ "content", "negotiation", "format", "accept", "header" ],
+    "license": "MIT",
+    "homepage": "http://williamdurand.fr/Negotiation/",
+    "authors": [
+        {
+            "name": "William Durand",
+            "email": "william.durand1@gmail.com"
+        }
+    ],
+    "require": {
+        "php": ">=5.3.0"
+    },
+    "autoload": {
+        "psr-0": { "Negotiation": "src/" }
+    },
+    "extra": {
+        "branch-alias": {
+            "dev-master": "1.3-dev"
+        }
+    }
+}
diff --git a/core/vendor/willdurand/negotiation/phpunit.xml.dist b/core/vendor/willdurand/negotiation/phpunit.xml.dist
new file mode 100644
index 0000000..ac6f0f9
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/phpunit.xml.dist
@@ -0,0 +1,23 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<phpunit backupGlobals="false"
+    backupStaticAttributes="false"
+    colors="true"
+    convertErrorsToExceptions="true"
+    convertNoticesToExceptions="true"
+    convertWarningsToExceptions="true"
+    processIsolation="false"
+    stopOnFailure="false"
+    syntaxCheck="false"
+    bootstrap="tests/bootstrap.php"
+    >
+    <testsuites>
+        <testsuite name="Negotiation Test Suite">
+            <directory>./tests/</directory>
+        </testsuite>
+    </testsuites>
+    <filter>
+        <whitelist>
+            <directory>./src/Negotiation/</directory>
+        </whitelist>
+    </filter>
+</phpunit>
diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php b/core/vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php
new file mode 100644
index 0000000..b05e391
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/src/Negotiation/AcceptHeader.php
@@ -0,0 +1,89 @@
+<?php
+
+namespace Negotiation;
+
+/**
+ * @author William Durand <william.durand1@gmail.com>
+ */
+class AcceptHeader
+{
+    /**
+     * @var string
+     */
+    private $value;
+
+    /**
+     * @var float
+     */
+    private $quality;
+
+    /**
+     * @var array
+     */
+    private $parameters;
+
+    /**
+     * @param string $value
+     * @param float  $quality
+     * @param array  $parameters
+     */
+    public function __construct($value, $quality, array $parameters = array())
+    {
+        $this->value      = $value;
+        $this->quality    = $quality;
+        $this->parameters = $parameters;
+    }
+
+    /**
+      @return string
+     */
+    public function getValue()
+    {
+        return $this->value;
+    }
+
+    /**
+     * @return float
+     */
+    public function getQuality()
+    {
+        return $this->quality;
+    }
+
+    /**
+     * @return array
+     */
+    public function getParameters()
+    {
+        return $this->parameters;
+    }
+
+    /**
+     * @param string $key
+     * @param mixed  $default
+     *
+     * @return string|null
+     */
+    public function getParameter($key, $default = null)
+    {
+        return $this->hasParameter($key) ? $this->parameters[$key] : $default;
+    }
+
+    /**
+     * @param string $key
+     *
+     * @return boolean
+     */
+    public function hasParameter($key)
+    {
+        return isset($this->parameters[$key]);
+    }
+
+    /**
+     * @return boolean
+     */
+    public function isMediaRange()
+    {
+        return false !== strpos($this->value, '*');
+    }
+}
diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php b/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php
new file mode 100644
index 0000000..4fc68ae
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiator.php
@@ -0,0 +1,184 @@
+<?php
+
+namespace Negotiation;
+
+/**
+ * @author William Durand <william.durand1@gmail.com>
+ */
+class FormatNegotiator extends Negotiator implements FormatNegotiatorInterface
+{
+    // https://github.com/symfony/symfony/blob/master/src/Symfony/Component/HttpFoundation/Request.php
+    protected $formats = array(
+        'html' => array('text/html', 'application/xhtml+xml'),
+        'txt'  => array('text/plain'),
+        'js'   => array('application/javascript', 'application/x-javascript', 'text/javascript'),
+        'css'  => array('text/css'),
+        'json' => array('application/json', 'application/x-json'),
+        'xml'  => array('text/xml', 'application/xml', 'application/x-xml'),
+        'rdf'  => array('application/rdf+xml'),
+        'atom' => array('application/atom+xml'),
+        'rss'  => array('application/rss+xml'),
+    );
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getBest($header, array $priorities = array())
+    {
+        $acceptHeaders   = $this->parseHeader($header);
+        $priorities      = $this->sanitize($priorities);
+        $catchAllEnabled = $this->isCatchAllEnabled($priorities);
+        $catchAllHeader  = null;
+
+        foreach ($acceptHeaders as $accept) {
+            $mimeType = $accept->getValue();
+
+            if (self::CATCH_ALL_VALUE === $mimeType) {
+                $catchAllHeader = $accept;
+            }
+
+            if ('/*' !== substr($mimeType, -2)) {
+                if (in_array($mimeType, $priorities)) {
+                    return $accept;
+                }
+
+                $regex = '#^' . preg_quote($mimeType) . '#';
+
+                foreach ($priorities as $priority) {
+                    if (self::CATCH_ALL_VALUE !== $priority && 1 === preg_match($regex, $priority)) {
+                        return new AcceptHeader($priority, $accept->getQuality(), $this->parseParameters($priority));
+                    }
+                }
+
+                continue;
+            }
+
+            if (false === $catchAllEnabled &&
+                self::CATCH_ALL_VALUE === $mimeType &&
+                self::CATCH_ALL_VALUE !== $value = array_shift($priorities)
+            ) {
+                return new AcceptHeader($value, $accept->getQuality(), $this->parseParameters($value));
+            }
+
+            if (false === $pos = strpos($mimeType, ';')) {
+                $pos = strpos($mimeType, '/');
+            }
+
+            $regex = '#^' . preg_quote(substr($mimeType, 0, $pos)) . '/#';
+
+            foreach ($priorities as $priority) {
+                if (self::CATCH_ALL_VALUE !== $priority && 1 === preg_match($regex, $priority)) {
+                    return new AcceptHeader($priority, $accept->getQuality(), $this->parseParameters($priority));
+                }
+            }
+        }
+
+        // if client sends `*/*` in Accept header, and nothing has been negotiated before
+        // then, return the first priority value if available
+        if (null !== $catchAllHeader) {
+            $value = array_shift($priorities);
+
+            if (null !== $value && self::CATCH_ALL_VALUE !== $value) {
+                return new AcceptHeader(
+                    $value,
+                    $catchAllHeader->getQuality(),
+                    $this->parseParameters($catchAllHeader->getValue())
+                );
+            }
+        }
+
+        // if `$priorities` is empty or contains a catch-all mime type
+        if ($catchAllEnabled) {
+            return array_shift($acceptHeaders) ?: null;
+        }
+
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getBestFormat($acceptHeader, array $priorities = array())
+    {
+        $mimeTypes = $this->normalizePriorities($priorities);
+
+        if (null !== $accept = $this->getBest($acceptHeader, $mimeTypes)) {
+            if (0.0 < $accept->getQuality() &&
+                null !== $format = $this->getFormat($accept->getValue())
+            ) {
+                if (in_array($format, $priorities) || $this->isCatchAllEnabled($priorities)) {
+                    return $format;
+                }
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function registerFormat($format, array $mimeTypes, $override = false)
+    {
+        if (isset($this->formats[$format]) && false === $override) {
+            throw new \InvalidArgumentException(sprintf(
+                'Format "%s" already registered, and override was set to "false".',
+                $format
+            ));
+        }
+
+        $this->formats[$format] = $mimeTypes;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getFormat($mimeType)
+    {
+        if (false !== $pos = strpos($mimeType, ';')) {
+            $mimeType = substr($mimeType, 0, $pos);
+        }
+
+        foreach ($this->formats as $format => $mimeTypes) {
+            if (in_array($mimeType, (array) $mimeTypes)) {
+                return $format;
+            }
+        }
+
+        return null;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public function normalizePriorities($priorities)
+    {
+        $priorities = $this->sanitize($priorities);
+
+        $mimeTypes = array();
+        foreach ($priorities as $priority) {
+            if (strpos($priority, '/')) {
+                $mimeTypes[] = $priority;
+                continue;
+            }
+
+            if (isset($this->formats[$priority])) {
+                foreach ($this->formats[$priority] as $mimeType) {
+                    $mimeTypes[] = $mimeType;
+                }
+            }
+        }
+
+        return $mimeTypes;
+    }
+
+    /**
+     * @param array $priorities
+     *
+     * @return boolean
+     */
+    private function isCatchAllEnabled(array $priorities)
+    {
+        return 0 === count($priorities) || in_array(self::CATCH_ALL_VALUE, $priorities);
+    }
+}
diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php b/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php
new file mode 100644
index 0000000..05a6dd2
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/src/Negotiation/FormatNegotiatorInterface.php
@@ -0,0 +1,51 @@
+<?php
+
+namespace Negotiation;
+
+/**
+ * @author William Durand <william.durand1@gmail.com>
+ */
+interface FormatNegotiatorInterface extends NegotiatorInterface
+{
+    /**
+     * Return the best format (as a string) based on a given `Accept` header,
+     * and a set of priorities. Priorities are "formats" such as `json`, `xml`,
+     * etc. or "mime types" such as `application/json`, `application/xml`, etc.
+     *
+     * @param string $acceptHeader A string containing an `Accept` header.
+     * @param array  $priorities   A set of priorities.
+     *
+     * @return string
+     */
+    public function getBestFormat($acceptHeader, array $priorities = array());
+
+    /**
+     * Register a new format with its mime types.
+     *
+     * @param string  $format
+     * @param array   $mimeTypes
+     * @param boolean $override
+     *
+     * @return void
+     */
+    public function registerFormat($format, array $mimeTypes, $override = false);
+
+    /**
+     * Return the format for a given mime type, or null
+     * if not found.
+     *
+     * @param string $mimeType
+     *
+     * @return string|null
+     */
+    public function getFormat($mimeType);
+
+    /**
+     * Ensure that any formats are converted to mime types.
+     *
+     * @param array $priorities
+     *
+     * @return array
+     */
+    public function normalizePriorities($priorities);
+}
diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php b/core/vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php
new file mode 100644
index 0000000..bd3e53d
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/src/Negotiation/LanguageNegotiator.php
@@ -0,0 +1,79 @@
+<?php
+
+namespace Negotiation;
+
+/**
+ * @author William Durand <william.durand1@gmail.com>
+ */
+class LanguageNegotiator extends Negotiator
+{
+    /**
+     * {@inheritDoc}
+     */
+    protected function parseHeader($header)
+    {
+        $acceptHeaders = array();
+
+        $header      = preg_replace('/\s+/', '', $header);
+        $acceptParts = array();
+
+        preg_match_all(
+            '/(?<=[, ]|^)([a-zA-Z-]+|\*)(?:;q=([0-9.]+))?(?:$|\s*,\s*)/i',
+            $header,
+            $acceptParts,
+            PREG_SET_ORDER
+        );
+
+        $index    = 0;
+        $catchAll = null;
+        foreach ($acceptParts as $acceptPart) {
+            $value   = $acceptPart[1];
+            $quality = isset($acceptPart[2]) ? (float) $acceptPart[2] : 1.0;
+
+            if ('*' === $value) {
+                $catchAll = new AcceptHeader($value, $quality);
+            } else {
+                $acceptHeaders[] = array(
+                    'item'  => new AcceptHeader($value, $quality),
+                    'index' => $index
+                );
+            }
+
+            $index++;
+        }
+
+        return $this->sortAcceptHeaders($acceptHeaders, $catchAll);
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    protected function match(array $acceptHeaders, array $priorities = array())
+    {
+        $wildcardAccept  = null;
+
+        $prioritiesSet   = array();
+        $prioritiesSet[] = $priorities;
+        $prioritiesSet[] = array_map(function ($priority) {
+            return strtok($priority, '-');
+        }, $priorities);
+
+        foreach ($acceptHeaders as $accept) {
+            foreach ($prioritiesSet as $availablePriorities) {
+                $sanitizedPriorities = $this->sanitize($availablePriorities);
+
+                if (false !== $found = array_search(strtolower($accept->getValue()), $sanitizedPriorities)) {
+                    return $priorities[$found];
+                }
+
+                if ('*' === $accept->getValue()) {
+                    $wildcardAccept = $accept;
+                }
+            }
+        }
+
+        if (null !== $wildcardAccept) {
+            return reset($priorities);
+        }
+    }
+}
diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/Negotiator.php b/core/vendor/willdurand/negotiation/src/Negotiation/Negotiator.php
new file mode 100644
index 0000000..0d01c2e
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/src/Negotiation/Negotiator.php
@@ -0,0 +1,186 @@
+<?php
+
+namespace Negotiation;
+
+/**
+ * @author William Durand <william.durand1@gmail.com>
+ */
+class Negotiator implements NegotiatorInterface
+{
+    const CATCH_ALL_VALUE = '*/*';
+
+    /**
+     * {@inheritDoc}
+     */
+    public function getBest($header, array $priorities = array())
+    {
+        $acceptHeaders = $this->parseHeader($header);
+        $best          = reset($acceptHeaders);
+
+        if (0 === count($acceptHeaders)) {
+            return null;
+        }
+
+        if (0 !== count($priorities)) {
+            $value = $this->match($acceptHeaders, $priorities);
+
+            if (!empty($value)) {
+                $best = new AcceptHeader($value, 1.0, $this->parseParameters($value));
+            }
+        }
+
+        return $best;
+    }
+
+    /**
+     * @param string $header A string that contains an `Accept|Accept-*` header.
+     *
+     * @return array[AcceptHeader]
+     */
+    protected function parseHeader($header)
+    {
+        $acceptHeaders = array();
+
+        $header      = preg_replace('/\s+/', '', $header);
+        $acceptParts = preg_split('/\s*(?:,*("[^"]+"),*|,*(\'[^\']+\'),*|,+)\s*/',
+            $header, 0, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_DELIM_CAPTURE
+        );
+
+        $index    = 0;
+        $catchAll = null;
+        foreach ($acceptParts as $acceptPart) {
+            $quality    = 1.0;
+            $parts      = preg_split('/;\s*q=/i', $acceptPart, 0, PREG_SPLIT_NO_EMPTY);
+            $parameters = $this->parseParameters($acceptPart);
+
+            if (2 === count($parts)) {
+                $value   = $parts[0];
+                $quality = (float) $parts[1];
+            } else {
+                $value = $acceptPart;
+
+                if (self::CATCH_ALL_VALUE === $value) {
+                    $quality = 0.01;
+                } elseif ('*' === substr($value, -1)) {
+                    $quality = 0.02;
+                }
+            }
+
+            if (self::CATCH_ALL_VALUE === $value) {
+                $catchAll = new AcceptHeader($value, $quality, $parameters);
+            } else {
+                $acceptHeaders[] = array(
+                    'item'  => new AcceptHeader($value, $quality, $parameters),
+                    'index' => $index
+                );
+            }
+
+            $index++;
+        }
+
+        return $this->sortAcceptHeaders($acceptHeaders, $catchAll);
+    }
+
+    /**
+     * @param array        $acceptHeaders A set of AcceptHeader objects to sort.
+     * @param AcceptHeader $catchAll      A special AcceptHeader that represents the "catch all".
+     *
+     * @return array[AcceptHeader]
+     */
+    protected function sortAcceptHeaders(array $acceptHeaders, AcceptHeader $catchAll = null)
+    {
+        uasort($acceptHeaders, function ($a, $b) {
+            $qA = $a['item']->getQuality();
+            $qB = $b['item']->getQuality();
+
+            $vA = $a['item']->getValue();
+            $vB = $b['item']->getValue();
+
+            // put specific media type before the classic one
+            // e.g. `text/html;level=1` first, then `text/html`
+            if (strstr($vA, $vB)) {
+                return -1;
+            }
+
+            if ($qA === $qB) {
+                return $a['index'] > $b['index'] ? 1 : -1;
+            }
+
+            return $qA > $qB ? -1 : 1;
+        });
+
+        // put the catch all header at the end if available
+        if (null !== $catchAll) {
+            array_push($acceptHeaders, array('item' => $catchAll));
+        }
+
+        return array_map(function ($accept) {
+            return $accept['item'];
+        }, array_values($acceptHeaders));
+    }
+
+    /**
+     * @param array $values
+     *
+     * @return array
+     */
+    protected function sanitize(array $values)
+    {
+        return array_map(function ($value) {
+            return preg_replace('/\s+/', '', strtolower($value));
+        }, $values);
+    }
+
+    /**
+     * @param string $value
+     *
+     * @return array
+     */
+    protected function parseParameters($value)
+    {
+        $parts = explode(';', preg_replace('/\s+/', '', $value));
+        array_shift($parts);
+
+        $parameters = array();
+        foreach ($parts as $part) {
+            $part = explode('=', $part);
+
+            if (2 !== count($part)) {
+                continue;
+            }
+
+            if ('q' !== $key = strtolower($part[0])) {
+                $parameters[$key] = $part[1];
+            }
+        }
+
+        return $parameters;
+    }
+
+    /**
+     * @param AcceptHeader[] $acceptHeaders Sorted by quality
+     * @param array          $priorities    Configured priorities
+     *
+     * @return string|null Header string matched
+     */
+    protected function match(array $acceptHeaders, array $priorities  = array())
+    {
+        $sanitizedPriorities = $this->sanitize($priorities);
+
+        foreach ($acceptHeaders as $accept) {
+            if (false !== $found = array_search(strtolower($accept->getValue()), $sanitizedPriorities)) {
+                return $priorities[$found];
+            }
+
+            if ('*' === $accept->getValue()) {
+                $wildcardAccept = $accept;
+            }
+        }
+
+        if (null !== $wildcardAccept) {
+            return reset($priorities);
+        }
+
+        return null;
+    }
+}
diff --git a/core/vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php b/core/vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php
new file mode 100644
index 0000000..bee4fef
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/src/Negotiation/NegotiatorInterface.php
@@ -0,0 +1,17 @@
+<?php
+
+namespace Negotiation;
+
+/**
+ * @author William Durand <william.durand1@gmail.com>
+ */
+interface NegotiatorInterface
+{
+    /**
+     * @param string $header     A string containing an `Accept|Accept-*` header.
+     * @param array  $priorities A set of priorities.
+     *
+     * @return AcceptHeader
+     */
+    public function getBest($header, array $priorities = array());
+}
diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php
new file mode 100644
index 0000000..be7035b
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/AcceptHeaderTest.php
@@ -0,0 +1,46 @@
+<?php
+
+namespace Negotiation\Tests;
+
+use Negotiation\AcceptHeader;
+
+class AcceptHeaderTest extends TestCase
+{
+    private $acceptHeader;
+
+    protected function setUp()
+    {
+        $this->acceptHeader = new AcceptHeader('foo', 1.0, array(
+            'hello' => 'world',
+        ));
+    }
+
+    public function testGetParameter()
+    {
+        $this->assertTrue($this->acceptHeader->hasParameter('hello'));
+        $this->assertEquals('world', $this->acceptHeader->getParameter('hello'));
+
+        $this->assertFalse($this->acceptHeader->hasParameter('unknown'));
+        $this->assertNull($this->acceptHeader->getParameter('unknown'));
+        $this->assertFalse($this->acceptHeader->getParameter('unknown', false));
+    }
+
+    /**
+     * @dataProvider dataProviderForTestIsMediaRange
+     */
+    public function testIsMediaRange($value, $expected)
+    {
+        $header = new AcceptHeader($value, 1.0);
+
+        $this->assertEquals($expected, $header->isMediaRange());
+    }
+
+    public static function dataProviderForTestIsMediaRange()
+    {
+        return array(
+            array('text/*', true),
+            array('*/*', true),
+            array('application/json', false),
+        );
+    }
+}
diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php
new file mode 100644
index 0000000..d637588
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/FormatNegotiatorTest.php
@@ -0,0 +1,363 @@
+<?php
+
+namespace Negotiation\Tests;
+
+use Negotiation\FormatNegotiator;
+
+/**
+ * @author William Durand <william.durand1@gmail.com>
+ */
+class FormatNegotiatorTest extends TestCase
+{
+    private $negotiator;
+
+    protected function setUp()
+    {
+        $this->negotiator = new FormatNegotiator();
+    }
+
+    /**
+     * @dataProvider dataProviderForGetBest
+     */
+    public function testGetBest($acceptHeader, $priorities, $expected)
+    {
+        $acceptHeader = $this->negotiator->getBest($acceptHeader, $priorities);
+
+        if (null === $expected) {
+            $this->assertNull($acceptHeader);
+        } else {
+            $this->assertNotNull($acceptHeader);
+            if (is_array($expected)) {
+                $this->assertEquals($expected['value'],   $acceptHeader->getValue());
+                $this->assertEquals($expected['quality'], $acceptHeader->getQuality());
+
+                if (isset($expected['parameters'])) {
+                    foreach ($expected['parameters'] as $key => $value) {
+                        $this->assertTrue($acceptHeader->hasParameter($key));
+                        $this->assertEquals($value, $acceptHeader->getParameter($key));
+                    }
+
+                    $this->assertCount(count($expected['parameters']), $acceptHeader->getParameters());
+                }
+            } else {
+                $this->assertEquals($expected, $acceptHeader->getValue());
+            }
+        }
+    }
+
+    /**
+     * @dataProvider dataProviderForGetBestFormat
+     */
+    public function testGetBestFormat($acceptHeader, $priorities, $expected)
+    {
+        $bestFormat = $this->negotiator->getBestFormat($acceptHeader, $priorities);
+
+        $this->assertEquals($expected, $bestFormat);
+    }
+
+    public static function dataProviderForGetBest()
+    {
+        $pearAcceptHeader = 'text/html,application/xhtml+xml,application/xml;q=0.9,text/*;q=0.7,*/*,image/gif; q=0.8, image/jpeg; q=0.6, image/*';
+
+        return array(
+            // PEAR HTTP2 tests
+            array(
+                $pearAcceptHeader,
+                array(
+                    'image/gif',
+                    'image/png',
+                    'application/xhtml+xml',
+                    'application/xml',
+                    'text/html',
+                    'image/jpeg',
+                    'text/plain',
+                ),
+                'text/html'
+            ),
+            array(
+                $pearAcceptHeader,
+                array(
+                    'image/gif',
+                    'image/png',
+                    'application/xhtml+xml',
+                    'application/xml',
+                    'image/jpeg',
+                    'text/plain',
+                ),
+                'application/xhtml+xml'
+            ),
+            array(
+                $pearAcceptHeader,
+                array(
+                    'image/gif',
+                    'image/png',
+                    'application/xml',
+                    'image/jpeg',
+                    'text/plain',
+                ),
+                'application/xml'
+            ),
+            array(
+                $pearAcceptHeader,
+                array(
+                    'image/gif',
+                    'image/png',
+                    'image/jpeg',
+                    'text/plain',
+                ),
+                'image/gif'
+            ),
+            array(
+                $pearAcceptHeader,
+                array(
+                    'image/png',
+                    'image/jpeg',
+                    'text/plain',
+                ),
+                'text/plain'
+            ),
+            array(
+                $pearAcceptHeader,
+                array(
+                    'image/png',
+                    'image/jpeg',
+                ),
+                'image/jpeg'
+            ),
+            array(
+                $pearAcceptHeader,
+                array(
+                    'image/png',
+                ),
+                'image/png'
+            ),
+            array(
+                $pearAcceptHeader,
+                array(
+                    'audio/midi',
+                ),
+                'audio/midi'
+            ),
+            array(
+                'text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8',
+                array(
+                    'application/rss+xml',
+                    '*/*',
+                ),
+                'application/rss+xml'
+            ),
+            // See: http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
+            array(
+                'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5',
+                array(),
+                array(
+                    'value'   => 'text/html;level=1',
+                    'quality' => 1,
+                )
+            ),
+            array(
+                'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5',
+                array(
+                    'text/html'
+                ),
+                array(
+                    'value'   => 'text/html',
+                    'quality' => 0.7,
+                )
+            ),
+            array(
+                'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5',
+                array(
+                    'text/plain'
+                ),
+                array(
+                    'value'   => 'text/plain',
+                    'quality' => 0.3,
+                )
+            ),
+            array(
+                'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5',
+                array(
+                    'image/jpeg',
+                ),
+                array(
+                    'value'   => 'image/jpeg',
+                    'quality' => 0.5,
+                )
+            ),
+            array(
+                'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5',
+                array(
+                    'text/html;level=2'
+                ),
+                array(
+                    'value'   => 'text/html;level=2',
+                    'quality' => 0.4,
+                )
+            ),
+            array(
+                'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5',
+                array(
+                    'text/html;level=3'
+                ),
+                array(
+                    'value'      => 'text/html;level=3',
+                    'quality'    => 0.7,
+                    'parameters' => array(
+                        'level' => 3,
+                    ),
+                )
+            ),
+            // LWS / case sensitivity
+            array(
+                'text/* ; q=0.3, text/html ;Q=0.7, text/html ; level=1, text/html ;level = 2 ;q=0.4, */* ; q=0.5',
+                array(
+                    'text/html; level=2'
+                ),
+                array(
+                    'value'      => 'text/html;level=2',
+                    'quality'    => 0.4,
+                    'parameters' => array(
+                        'level' => 2,
+                    ),
+                )
+            ),
+            array(
+                'text/* ; q=0.3, text/html;Q=0.7, text/html ;level=1, text/html; level=2;q=0.4, */*;q=0.5',
+                array(
+                    'text/html; level=3'
+                ),
+                array(
+                    'value'      => 'text/html;level=3',
+                    'quality'    => 0.7,
+                    'parameters' => array(
+                        'level' => 3,
+                    ),
+                )
+            ),
+            array(
+                '*/*',
+                array(),
+                array(
+                    'value'      => '*/*',
+                    'quality'    => 0.01,
+                    'parameters' => array(),
+                ),
+            ),
+            // Incompatible
+            array(
+                'text/html',
+                array(
+                    'application/rss'
+                ),
+                null
+            ),
+            array(
+                'text/rdf+n3; q=0.8, application/rdf+json; q=0.8, text/turtle; q=1.0, text/n3; q=0.8, application/ld+json; q=0.5, application/rdf+xml; q=0.8',
+                array(),
+                'text/turtle'
+            ),
+            array(
+                'application/rdf+xml;q=0.5,text/html;q=.3',
+                array(),
+                'application/rdf+xml'
+            ),
+            array(
+                'application/xhtml+xml;q=0.5',
+                array(),
+                'application/xhtml+xml'
+            ),
+            array(
+                'application/rdf+xml;q=0.5,text/html;q=.5',
+                array(),
+                'application/rdf+xml'
+            ),
+            array(
+                'text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c',
+                array(),
+                'text/html',
+            ),
+            // IE8 Accept header
+            array(
+                'image/jpeg, application/x-ms-application, image/gif, application/xaml+xml, image/pjpeg, application/x-ms-xbap, */*',
+                array(
+                    'text/html',
+                    'application/xhtml+xml',
+                    '*/*'
+                ),
+                'text/html',
+            ),
+        );
+    }
+
+    public static function dataProviderForGetBestFormat()
+    {
+        return array(
+            array(null, array('html', 'json', '*/*'), null),
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array(), 'html'),
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('html', 'json', '*/*'), 'html'),
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('html', 'json', '*/*'), 'html'),
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('rss', '*/*'), 'rss'),
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('xml'), 'xml'),
+            // This shows clearly that the acceptheader is leading over server priorities
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('xml', 'html'), 'html'),
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('json', 'xml'), 'xml'),
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8', array('json'), 'json'),
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*', array('json'), 'json'),
+            array('text/html,application/xhtml+xml,application/xml;q=0.9,*/*', array('json'), 'json'),
+            array('text/html,application/xhtml+xml,application/xml', array('json'), null),
+            array('text/plain; q=0.5, text/html, text/x-dvi; q=0.8, text/x-c', array('*/*'), 'html'),
+            array('text/html, application/json;q=0.8, text/csv;q=0.7', array(), 'html'),
+            array('text/html', array('text/xml'), null),
+            array('text/*, text/html, text/html;level=1, */*', array(), 'html'),
+            array('text/html; q=0.0', array(), null),
+        );
+    }
+
+    public function testGetFormat()
+    {
+        $this->assertEquals('html', $this->negotiator->getFormat('application/xhtml+xml'));
+    }
+
+    public function testGetFormatReturnsNullIfNotFound()
+    {
+        $this->assertNull($this->negotiator->getFormat('foo'));
+    }
+
+    public function testRegisterFormat()
+    {
+        $format   = 'foo';
+        $mimeType = 'foo/bar';
+
+        $this->negotiator->registerFormat($format, array($mimeType));
+        $this->assertEquals($format, $this->negotiator->getFormat($mimeType));
+    }
+
+    /**
+     * @expectedException InvalidArgumentException
+     * @expectedExceptionMessage Format "html" already registered, and override was set to "false".
+     */
+    public function testRegisterFormatWithExistingFormat()
+    {
+        $this->negotiator->registerFormat('html', array());
+    }
+
+    /**
+     * @dataProvider dataProviderForNormalizePriorities
+     */
+    public function testNormalizePriorities($priorities, $expected)
+    {
+        $priorities = $this->negotiator->normalizePriorities($priorities);
+
+        $this->assertEquals($expected, $priorities);
+    }
+
+    public static function dataProviderForNormalizePriorities()
+    {
+        return array(
+            array(array('application/json', 'application/xml'), array('application/json', 'application/xml')),
+            array(array('json', 'application/xml', 'text/*', 'rdf', '*/*'), array('application/json', 'application/x-json', 'application/xml', 'text/*', 'application/rdf+xml', '*/*')),
+            array(array('json', 'html', '*/*'), array('application/json', 'application/x-json', 'text/html', 'application/xhtml+xml', '*/*')),
+        );
+    }
+}
diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php
new file mode 100644
index 0000000..3a4efb8
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/LanguageNegotiatorTest.php
@@ -0,0 +1,110 @@
+<?php
+
+namespace Negotiation\Tests;
+
+use Negotiation\LanguageNegotiator;
+
+class LanguageNegotiatorTest extends TestCase
+{
+    private $negotiator;
+
+    protected function setUp()
+    {
+        $this->negotiator = new LanguageNegotiator();
+    }
+
+    /**
+     * 'fu' has a quality rating of 0.9 which is higher than the rest
+     * we expect Negotiator to return the 'fu' content.
+     *
+     * See: http://svn.apache.org/repos/asf/httpd/test/framework/trunk/t/modules/negotiation.t
+     */
+    public function testGetBestUsesQuality()
+    {
+        $acceptLanguageHeader = 'en; q=0.1, fr; q=0.4, fu; q=0.9, de; q=0.2';
+        $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader);
+
+        $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader);
+        $this->assertEquals('fu', $acceptHeader->getValue());
+    }
+
+    /**
+     * 'bu' has the highest quality rating, but is non-existent,
+     * so we expect the next highest rated 'fr' content to be returned.
+     *
+     * See: http://svn.apache.org/repos/asf/httpd/test/framework/trunk/t/modules/negotiation.t
+     */
+    public function testGetBestIgnoresNonExistentContent()
+    {
+        $acceptLanguageHeader = 'en; q=0.1, fr; q=0.4, bu; q=1.0';
+        $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, array('en', 'fr'));
+
+        $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader);
+        $this->assertEquals('fr', $acceptHeader->getValue());
+    }
+
+    /**
+     * @dataProvider dataProviderForGetBest
+     */
+    public function testGetBest($acceptLanguageHeader, $expected)
+    {
+        $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader);
+
+        if (null === $expected) {
+            $this->assertNull($acceptHeader);
+        } else {
+            $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader);
+            $this->assertEquals($expected, $acceptHeader->getValue());
+        }
+    }
+
+    /**
+     * Given a accept header containing a generic language (here 'en')
+     *  And priorities containing a localized version of that language
+     * Then the best language is mapped to 'en'
+     */
+    public function testGenericLanguageAreMappedToSpecific()
+    {
+        $acceptLanguageHeader = 'fr-FR, en;q=0.8';
+        $priorities           = array('en-US', 'de-DE');
+
+        $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, $priorities);
+
+        $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader);
+        $this->assertEquals('en-US', $acceptHeader->getValue());
+    }
+
+    public function testGetBestWithWildcard()
+    {
+        $acceptLanguageHeader = 'en, *;q=0.9';
+        $priorities           = array('fr');
+
+        $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, $priorities);
+
+        $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader);
+        $this->assertEquals('fr', $acceptHeader->getValue());
+    }
+
+    public function testGetBestDoesNotMatchPriorities()
+    {
+        $acceptLanguageHeader = 'en, de';
+        $priorities           = array('fr');
+
+        $acceptHeader = $this->negotiator->getBest($acceptLanguageHeader, $priorities);
+
+        $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader);
+        $this->assertEquals('en', $acceptHeader->getValue());
+    }
+
+    public static function dataProviderForGetBest()
+    {
+        return array(
+            array('da, en-gb;q=0.8, en;q=0.7', 'da'),
+            array('da, en-gb;q=0.8, en;q=0.7, *', 'da'),
+            array('es-ES;q=0.7, es; q=0.6 ,fr; q=1.0, en; q=0.5,dk , fr-CH', 'fr-CH'),
+            array('fr-FR,fr;q=0.1,en-US;q=0.6,en;q=0.4', 'fr-FR'),
+            array('', null),
+            array(null, null),
+        );
+    }
+}
diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php
new file mode 100644
index 0000000..514e337
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/NegotiatorTest.php
@@ -0,0 +1,325 @@
+<?php
+
+namespace Negotiation\Tests;
+
+use Negotiation\Negotiator;
+
+/**
+ * @author William Durand <william.durand1@gmail.com>
+ */
+class NegotiatorTest extends TestCase
+{
+    private $negotiator;
+
+    protected function setUp()
+    {
+        $this->negotiator = new Negotiator();
+    }
+
+    public function testGetBestReturnsNullWithNullHeader()
+    {
+        $this->assertNull($this->negotiator->getBest(null));
+    }
+
+    public function testGetBestReturnsNullWithEmptyHeader()
+    {
+        $this->assertNull($this->negotiator->getBest(''));
+    }
+
+    public function testGetBestRespectsPriorities()
+    {
+        $acceptHeader = $this->negotiator->getBest('foo, bar, yo', array('yo'));
+
+        $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader);
+        $this->assertEquals('yo', $acceptHeader->getValue());
+    }
+
+    public function testGetBestInCaseInsensitive()
+    {
+        $acceptHeader = $this->negotiator->getBest('foo, bar, yo', array('YO'));
+
+        $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader);
+        $this->assertEquals('YO', $acceptHeader->getValue());
+    }
+
+    public function testGetBestWithQualities()
+    {
+        $acceptHeader = $this->negotiator->getBest('foo;q=0.1, bar, yo;q=0.9');
+
+        $this->assertInstanceOf('Negotiation\AcceptHeader', $acceptHeader);
+        $this->assertEquals('bar', $acceptHeader->getValue());
+        $this->assertFalse($acceptHeader->hasParameter('q'));
+    }
+
+    /**
+     * @dataProvider dataProviderForTestGetBest
+     */
+    public function testGetBest($acceptHeader, $priorities, $expected, $parameters = array())
+    {
+        $acceptHeader = $this->negotiator->getBest($acceptHeader, $priorities);
+
+        if (null === $expected) {
+            $this->assertNull($acceptHeader);
+        } else {
+            $this->assertEquals($expected, $acceptHeader->getValue());
+
+            foreach ($parameters as $k => $v) {
+                $this->assertEquals($v, $acceptHeader->getParameter($k));
+            }
+        }
+    }
+
+    /**
+     * @dataProvider dataProviderForTestParseAcceptHeader
+     */
+    public function testParseAcceptHeader($header, $expected)
+    {
+        $negotiator = new TestableNegotiator();
+        $accepts    = $negotiator->parseHeader($header);
+
+        $this->assertCount(count($expected), $accepts);
+        $this->assertEquals($expected, array_map(function ($result) {
+            return $result->getValue();
+        }, $accepts));
+    }
+
+    /**
+     * @dataProvider dataProviderForTestParseAcceptHeaderWithQualities
+     */
+    public function testParseAcceptHeaderWithQualities($header, $expected)
+    {
+        $negotiator = new TestableNegotiator();
+        $accepts    = $negotiator->parseHeader($header);
+
+        $this->assertEquals(count($expected), count($accepts));
+
+        $i = 0;
+        foreach ($expected as $value => $quality) {
+            $this->assertEquals($value, $accepts[$i]->getValue());
+            $this->assertEquals($quality, $accepts[$i]->getQuality());
+            $i++;
+        }
+    }
+
+    /**
+     * @dataProvider dataProviderForTestParseAcceptHeaderEnsuresPrecedence
+     */
+    public function testParseAcceptHeaderEnsuresPrecedence($header, $expected)
+    {
+        $negotiator = new TestableNegotiator();
+        $accepts    = $negotiator->parseHeader($header);
+
+        $this->assertCount(count($expected), $accepts);
+
+        $i = 0;
+        foreach ($expected as $value => $quality) {
+            $this->assertEquals($value,   $accepts[$i]->getValue());
+            $this->assertEquals($quality, $accepts[$i]->getQuality());
+
+            $i++;
+        }
+    }
+
+    /**
+     * @dataProvider dataProviderForParseParameters
+     */
+    public function testParseParameters($value, $expected)
+    {
+        $negotiator = new TestableNegotiator();
+        $parameters = $negotiator->parseParameters($value);
+
+        $this->assertCount(count($expected), $parameters);
+
+        foreach ($expected as $key => $value) {
+            $this->assertArrayHasKey($key, $parameters);
+            $this->assertEquals($value, $parameters[$key]);
+        }
+    }
+
+    public static function dataProviderForTestParseAcceptHeader()
+    {
+        return array(
+            array('gzip,deflate,sdch', array('gzip', 'deflate', 'sdch')),
+            array("gzip, deflate\t,sdch", array('gzip', 'deflate', 'sdch')),
+            array('"this;should,not=matter"', array('"this;should,not=matter"')),
+            array('*;q=0.3,ISO-8859-1,utf-8;q=0.7', array('ISO-8859-1', 'utf-8', '*')),
+            array('*;q=0.3,ISO-8859-1;q=0.7,utf-8;q=0.7',  array('ISO-8859-1', 'utf-8', '*')),
+            array('*;q=0.3,utf-8;q=0.7,ISO-8859-1;q=0.7',  array('utf-8', 'ISO-8859-1', '*')),
+        );
+    }
+
+    public static function dataProviderForTestParseAcceptHeaderWithQualities()
+    {
+        return array(
+            array('text/html;q=0.8', array('text/html' => 0.8)),
+            array('text/html;foo=bar;q=0.8 ', array('text/html;foo=bar' => 0.8)),
+            array('text/html;charset=utf-8; q=0.8', array('text/html;charset=utf-8' => 0.8)),
+            array('text/html,application/xml;q=0.9,*/*;charset=utf-8; q=0.8', array('text/html' => 1.0, 'application/xml' => 0.9, '*/*;charset=utf-8' => 0.8)),
+            array('text/html,application/xhtml+xml', array('text/html' => 1, 'application/xhtml+xml' => 1)),
+            array('text/html, application/json;q=0.8, text/csv;q=0.7', array('text/html' => 1, 'application/json' => 0.8, 'text/csv' => 0.7)),
+            array('iso-8859-5, unicode-1-1;q=0.8', array('iso-8859-5' => 1, 'unicode-1-1' => 0.8)),
+            array('gzip;q=1.0, identity; q=0.5, *;q=0', array('gzip' => 1, 'identity' => 0.5, '*' => 0)),
+        );
+    }
+
+    public static function dataProviderForTestGetBest()
+    {
+        $pearCharsetHeader  = 'ISO-8859-1, Big5;q=0.6,utf-8;q=0.7, *;q=0.5';
+        $pearCharsetHeader2 = 'ISO-8859-1, Big5;q=0.6,utf-8;q=0.7';
+
+        return array(
+            array(
+                $pearCharsetHeader,
+                array(
+                    'utf-8',
+                    'big5',
+                    'iso-8859-1',
+                    'shift-jis',
+                ),
+                'iso-8859-1'
+            ),
+            array(
+                $pearCharsetHeader,
+                array(
+                    'utf-8',
+                    'big5',
+                    'shift-jis',
+                ),
+                'utf-8'
+            ),
+            array(
+                $pearCharsetHeader,
+                array(
+                    'Big5',
+                    'shift-jis',
+                ),
+                'Big5'
+            ),
+            array(
+                $pearCharsetHeader,
+                array(
+                    'shift-jis',
+                ),
+                'shift-jis'
+            ),
+            array(
+                $pearCharsetHeader2,
+                array(
+                    'utf-8',
+                    'big5',
+                    'iso-8859-1',
+                    'shift-jis',
+                ),
+                'iso-8859-1'
+            ),
+            array(
+                $pearCharsetHeader2,
+                array(
+                    'utf-8',
+                    'big5',
+                    'shift-jis',
+                ),
+                'utf-8'
+            ),
+            array(
+                $pearCharsetHeader2,
+                array(
+                    'Big5',
+                    'shift-jis',
+                ),
+                'Big5'
+            ),
+            array(
+                'utf-8;q=0.6,iso-8859-5;q=0.9',
+                array(
+                    'iso-8859-5',
+                    'utf-8',
+                ),
+                'iso-8859-5'
+            ),
+            array(
+                '',
+                array(
+                    'iso-8859-5',
+                    'utf-8',
+                ),
+                null
+            ),
+            array(
+                'audio/*; q=0.2, audio/basic',
+                array(),
+                'audio/basic',
+            ),
+        );
+    }
+
+    public static function dataProviderForTestParseAcceptHeaderEnsuresPrecedence()
+    {
+        return array(
+            array(
+                'text/*;q=0.3, text/html;q=0.7, text/html;level=1, text/html;level=2;q=0.4, */*;q=0.5',
+                array(
+                    'text/html;level=1' => 1,
+                    'text/html;level=2' => 0.4,
+                    'text/html'         => 0.7,
+                    'text/*'            => 0.3,
+                    '*/*'               => 0.5,
+                )
+            ),
+            array(
+                'text/html,application/xhtml+xml,application/xml;q=0.9,text/*;q=0.7,*/*,image/gif; q=0.8, image/jpeg; q=0.6, image/*',
+                array(
+                    'text/html'             => 1,
+                    'application/xhtml+xml' => 1,
+                    'application/xml'       => 0.9,
+                    'image/gif'             => 0.8,
+                    'text/*'                => 0.7,
+                    'image/jpeg'            => 0.6,
+                    'image/*'               => 0.02,
+                    '*/*'                   => 0.01,
+                )
+            ),
+        );
+    }
+
+    public static function dataProviderForParseParameters()
+    {
+        return array(
+            array(
+                'application/json ;q=1.0; level=2;foo= bar',
+                array(
+                    'level' => 2,
+                    'foo'   => 'bar',
+                ),
+            ),
+            array(
+                'application/json ;q = 1.0; level = 2;     FOO  = bAr',
+                array(
+                    'level' => 2,
+                    'foo'   => 'bAr',
+                ),
+            ),
+            array(
+                'application/json;q=1.0',
+                array(),
+            ),
+            array(
+                'application/json;foo',
+                array(),
+            ),
+        );
+    }
+}
+
+class TestableNegotiator extends Negotiator
+{
+    public function parseHeader($acceptHeader)
+    {
+        return parent::parseHeader($acceptHeader);
+    }
+
+    public function parseParameters($value)
+    {
+        return parent::parseParameters($value);
+    }
+}
diff --git a/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php
new file mode 100644
index 0000000..df8e032
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/tests/Negotiation/Tests/TestCase.php
@@ -0,0 +1,10 @@
+<?php
+
+namespace Negotiation\Tests;
+
+/**
+ * @author William Durand <william.durand1@gmail.com>
+ */
+class TestCase extends \PHPUnit_Framework_TestCase
+{
+}
diff --git a/core/vendor/willdurand/negotiation/tests/bootstrap.php b/core/vendor/willdurand/negotiation/tests/bootstrap.php
new file mode 100644
index 0000000..c63e17a
--- /dev/null
+++ b/core/vendor/willdurand/negotiation/tests/bootstrap.php
@@ -0,0 +1,15 @@
+<?php
+
+if (! ($loader = @include __DIR__ . '/../vendor/autoload.php')) {
+    die(<<<EOT
+You need to install the project dependencies using Composer:
+$ wget http://getcomposer.org/composer.phar
+OR
+$ curl -s https://getcomposer.org/installer | php
+$ php composer.phar install --dev
+$ phpunit
+EOT
+    );
+}
+
+$loader->add('Negotiation\Tests', __DIR__);
