<!--

    Licensed to the Apache Software Foundation (ASF) under one or more
    contributor license agreements.  See the NOTICE file distributed with
    this work for additional information regarding copyright ownership.
    The ASF licenses this file to You under the Apache License, Version 2.0
    (the "License"); you may not use this file except in compliance with
    the License.  You may obtain a copy of the License at

         http://www.apache.org/licenses/LICENSE-2.0

    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.

-->
<html>
  <head>
  	<!--
    <meta http-equiv="refresh" content="5;url=https://github.com/apache/camel/blob/master/docs/user-manual/en/SUMMARY.md"/>
    -->

  </head>
<body>

<h1>User Manual</h1>

<p>If you are seeing this message, it is because the User Manual was not built 
during the Apache Camel build.  To build Apache Camel User Manual you must 
use the maven release profile: <code>mvn clean install -Prelease</code>.</p>

<!--
<p>You can view end edit the current document directly on <a href="https://github.com/apache/camel/blob/master/docs/user-manual/en/SUMMARY.md">github</a>.</p>
-->
</body>
</html>
