

<!DOCTYPE html>
<html lang="en">
  <head>
    <meta charset="utf-8">
    <title>Assets</title>
    <meta name="description" content="Assets of Apache Submarine">
    <meta name="author" content="The Apache Software Foundation">

    <!-- Enable responsive viewport -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no" />

    <!-- Le HTML5 shim, for IE6-8 support of HTML elements -->
    <!--[if lt IE 9]>
      <script src="http://html5shim.googlecode.com/svn/trunk/html5.js"></script>
    <![endif]-->

    <!-- Le styles -->
    <link href="https://maxcdn.bootstrapcdn.com/font-awesome/4.7.0/css/font-awesome.min.css" rel="stylesheet" integrity="sha384-wvfXpqpZZVQGK6TAh5PVlGOfQNHSoD2xbE+QkPxCAFlNEevoEH3Sl0sibVcOQVnN" crossorigin="anonymous">
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons">
    <link href="/assets/themes/submarine/bootstrap/css/bootstrap.css" rel="stylesheet">
    <link href="/assets/themes/submarine/css/style.css?body=1" rel="stylesheet" type="text/css">
    <link href="/assets/themes/submarine/css/syntax.css" rel="stylesheet"  type="text/css" media="screen" /> 
    <!-- Le fav and touch icons -->
    <!-- Update these with your own images
    <link rel="shortcut icon" href="images/favicon.ico">
    <link rel="apple-touch-icon" href="images/apple-touch-icon.png">
    <link rel="apple-touch-icon" sizes="72x72" href="images/apple-touch-icon-72x72.png">
    <link rel="apple-touch-icon" sizes="114x114" href="images/apple-touch-icon-114x114.png">
    -->
    <link rel="apple-touch-icon" sizes="180x180" href="/assets/themes/submarine/img/favicon/apple-touch-icon.png">
    <link rel="icon" type="image/png" sizes="32x32" href="/assets/themes/submarine/img/favicon/favicon-32x32.png">
    <link rel="icon" type="image/png" sizes="16x16" href="/assets/themes/submarine/img/favicon/favicon-16x16.png">
    <link rel="icon" type="image/png" href="/assets/themes/submarine/img/favicon/favicon.ico">
    <link rel="manifest" href="/assets/themes/submarine/img/favicon/manifest.json">
    <link rel="mask-icon" href="/assets/themes/submarine/img/favicon/safari-pinned-tab.svg" color="#438bc9">
    <meta name="theme-color" content="#ffffff">

    <!-- Js -->
    <script src="https://code.jquery.com/jquery-1.10.2.min.js"></script>
    <script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.3.15/angular.min.js"></script>
    <script src="https://angular-ui.github.io/bootstrap/ui-bootstrap-tpls-2.5.0.js"></script>
    <script src="/assets/themes/submarine/bootstrap/js/bootstrap.min.js"></script>
    <script src="/assets/themes/submarine/js/docs.js"></script>
    <script src="/assets/themes/submarine/js/anchor.min.js"></script>
    <script src="/assets/themes/submarine/js/moment.min.js"></script>
    <script src="/assets/themes/submarine/js/helium.controller.js"></script>
    <script src="/assets/themes/submarine/js/medium.controller.js"></script>

    <!-- atom & rss feed -->
    <link href="/atom.xml" type="application/atom+xml" rel="alternate" title="Sitewide ATOM Feed">
    <link href="/rss.xml" type="application/rss+xml" rel="alternate" title="Sitewide RSS Feed">
  </head>

  <body>
    
    <div class="navbar navbar-inverse navbar-fixed-top" role="navigation">
  <div class="container">
    <div class="navbar-header">
      <button type="button" class="navbar-toggle" data-toggle="collapse" data-target=".navbar-collapse">
        <span class="sr-only">Toggle navigation</span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
        <span class="icon-bar"></span>
      </button>
      <a class="navbar-brand" href="/">
        <img src="/assets/themes/submarine/img/submarine_white_logo.png" style="margin-top: -6px;" width="80" alt="I'm submarine">
        <span style="margin-left: 0px;"> Apache Submarine </span>
        <!-- <span style="margin-left: 4px; font-size: 16px; font-family: Arial;">0.4.0</span> -->
      </a>
    </div>

    <nav class="navbar-collapse collapse" role="navigation">
      <ul class="nav navbar-nav navbar-right">
        <!-- Quick Start -->
        <li class="docs">
          <a href="#" data-toggle="dropdown" class="dropdown-toggle">Quick Start<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="https://github.com/apache/submarine/blob/master/docs/userdocs/yarn">Submarine on YARN</a></li>
            <li><a href="https://github.com/apache/submarine/blob/master/docs/userdocs/k8s">Submarine on K8s</a></li>
          </ul>
        </li>

        <!-- Download -->
        <li><a href="/download.html">Download</a></li>

        <!-- Docs -->
        <li><a href="https://github.com/apache/submarine/tree/master/docs">Docs</a></li>

        <!-- GitHub -->
        <li>
          <a href="https://github.com/apache/submarine">GitHub</a>
        </li>

        <!-- Community -->
        <li class="docs">
          <a href="#" data-toggle="dropdown" class="dropdown-toggle">Community<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="/community/contributors.html">Contributors</a></li>
            <li><a href="/community/member.html">Member</a></li>
          </ul>
        </li>

        <!-- Apache -->
        <li class="docs">
          <a href="#" data-toggle="dropdown" class="dropdown-toggle">Apache<b class="caret"></b></a>
          <ul class="dropdown-menu">
            <li><a href="http://www.apache.org/foundation/how-it-works.html">Apache Software Foundation</a></li>
            <li><a href="http://www.apache.org/licenses/">Apache License</a></li>
            <li><a href="http://www.apache.org/foundation/sponsorship.html">Sponsorship</a></li>
            <li><a href="/assets.html">Assets</a></li>
            <li><a href="http://www.apache.org/foundation/thanks.html">Thanks</a></li>
          </ul>
        </li>
      </ul>
    </nav>
  </div>
</div>




    <div class="content">
      

<!--<div class="hero-unit Assets">
  <h1></h1>
</div>
-->

<div class="row">
  <div class="col-md-12">
    <!--
Licensed 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.
-->

<h3>Apache Submarine Logo</h3>

<p>Here you will find links and informations regarding the Apache Submarine logo</p>

<div style="text-align:center;">
  <div class="logopage_container">
    <img src="/assets/themes/submarine/img/submarine_black_256.png" width="200" alt="submarine" />
  </div>

  <div class="logopage_container" style="text-align:left">
    <div>Font used: <a href="https://www.google.com/fonts/specimen/Patua%20One">Patua One</a></div>
    <div><a href="/assets/themes/submarine/img/submarine_black_white_256.png">black white PNG format</a></div>
    <div><a href="/assets/themes/submarine/img/submarine_black_256.png">black NG format</a></div>
    <div><a href="/assets/themes/submarine/img/submarine_white_256.png">white PNG format</a></div>
    <div><a href="/assets/themes/submarine/img/submarine_blue_256.png">blue PNG format</a></div>
    <div><a href="/assets/themes/submarine/img/submarine_logo.psd">PSD format</a></div>
    <div><a href="/assets/themes/submarine/img/submarine_logo.svg">SVG format</a></div>
  </div>
</div>

  </div>
</div>


    </div>

    


    
    <footer>
      <!-- <p>&copy; 2020 The Apache Software Foundation</p>-->
    </footer>
  </body>
</html>

