<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
  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
  
  https://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.    
-->
<project name="jSieve">

    <skin>
        <groupId>org.apache.james</groupId>
        <artifactId>james-skin</artifactId>
        <version>${james-skin.version}</version>
    </skin>

  <bannerLeft>
    <name>JAMES jSieve</name>
    <src>images/james-logo.png</src>
    <href>https://james.apache.org/</href>
    <alt>james-logo.png</alt>
  </bannerLeft>

  <bannerRight>
    <name>The Apache Software Foundation</name>
    <src>images/logos/asf_logo_small.png</src>
    <href>https://www.apache.org/index.html</href>
  </bannerRight>

  <body>

        <links>
            <item
                name="Home"
                href="https://james.apache.org/index.html" />
            <item
                name="James"
                href="https://james.apache.org/documentation.html" />
            <item
                name="Mime4J"
                href="https://james.apache.org/mime4j/index.html" />
            <item
                name="jSieve"
                href="https://james.apache.org/jsieve/index.html" />
            <item
                name="jSPF"
                href="https://james.apache.org/jspf/index.html" />
            <item
                name="jDKIM"
                href="https://james.apache.org/jdkim/index.html" />
            <item
                name="Hupa"
                href="https://james.apache.org/hupa/index.html" />
        </links>
    <menu name="jSieve">
      <item name="Overview" href="/index.html" />
      <item name="Util" href="/util/index.html" />
      <item name="Changes" href="/jira-report.html" />
      <item name="Release Notes" href="/release-notes.html" />
      <item name="JavaDocs" href="/apidocs/index.html" />
      <item name="Issue Tracker" href="https://issues.apache.org/jira/browse/JSIEVE" />
      <item name="Specification" collapse="false">
        <item name="RFC 2234 ABNF" href="https://www.ietf.org/rfc/rfc2234.txt" />
        <item name="RFC 2244 ACAP" href="https://www.ietf.org/rfc/rfc2244.txt" />
        <item name="RFC 2298 MDN" href="https://www.ietf.org/rfc/rfc2298.txt" />
        <item name="RFC 5228 Sieve" href="https://tools.ietf.org/html/rfc5228" />
        <item name='RFC 4790 IAPCR' href='https://tools.ietf.org/html/rfc4790'/>
        <item name='RFC 5173 Body Extension' href='https://tools.ietf.org/html/rfc5173'/>
      </item>
      <item name="Download Releases" href="https://james.apache.org/download.cgi#Apache_JSieve" />
    </menu>
  </body>
</project>
