<?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

      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.
-->
<project name="RNG"
    xmlns="http://maven.apache.org/DECORATION/1.6.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/DECORATION/1.6.0 http://maven.apache.org/xsd/decoration-1.6.0.xsd">
  <bannerRight>
    <name>Apache Commons RNG</name>
    <!-- Use a full URL allows a correct banner for the modules. -->
    <src>https://commons.apache.org/proper/commons-rng/images/commons_rng.small.png</src>
    <href>https://commons.apache.org/proper/commons-rng/index.html</href>
  </bannerRight>

  <body>
    <head>
      <![CDATA[<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<link rel="stylesheet" href="$relativePath/style/module.css" type="text/css" />]]>
    </head>

    <menu name="RNG">
      <item name="Overview" href="/index.html"/>
      <item name="Downloads" href="https://commons.apache.org/rng/download_rng.cgi"/>
      <item name="Issue Tracking" href="/issue-tracking.html"/>
      <item name="Source Repository (current)"
         href="https://gitbox.apache.org/repos/asf/commons-rng.git"/>
      <!-- <item name="Wiki"   -->
      <!--       href="http://wiki.apache.org/commons/RNG"/> -->
      <item name="Developers Guide" href="/developers.html"/>
      <item name="Release History" href="/release-history.html" />
      <item name="Javadoc" href="/commons-rng-docs/apidocs/index.html" />
    </menu>

    <menu name="User Guide">
      <item name="Contents" href="/userguide/rng.html#Table_of_contents"/>
      <item name="Usage" href="/userguide/rng.html#a2._Usage_overview"/>
      <item name="Performance" href="/userguide/rng.html#a4._Performance"/>
      <item name="Quality" href="/userguide/rng.html#a5._Quality"/>
    </menu>
  </body>

  <custom>
    <!-- Custom properties controlling the commons-skin template. -->
    <commonsSkin>
      <!-- 
        Convert preformatted source section tags to prettyprint:
          <div class="source"><pre> to <div class="source"><pre class="prettyprint">
      -->
      <prettyPrintSourcePreTags>true</prettyPrintSourcePreTags>

      <!-- Add the "linenums" class to the prettyprint enabled source tags -->
      <prettyPrintLineNumbersEnabled>false</prettyPrintLineNumbersEnabled>
    </commonsSkin>
  </custom>
</project>
