<!doctype html>
<!--
  ~ 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 lang="en" xmlns="http://www.w3.org/1999/xhtml" itemscope="itemscope" itemtype="http://schema.org/Product">
<head>
  <meta charset="utf-8">
  <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
  <meta name="viewport" content="width=device-width,initial-scale=1">

  <title>Apache Atlas</title>
  <meta http-equiv="Content-type" content="text/html;charset=UTF-8">


  <link href="/img/favicon.ico" rel="shortcut icon" type="image/x-icon">

  <link rel="stylesheet" href="/lib/font-awesome/css/font-awesome.min.css">
  <link rel="stylesheet" href="/css/sticky-footer-navbar.css">
  <link rel="stylesheet" href="/css/common.css">
  <link rel="stylesheet" href="/css/details.css">
  <link rel="stylesheet" href="/css/lineage.css">
  <link rel="stylesheet" href="/css/tags.css">
  <link rel="stylesheet" href="/lib/bootstrap/dist/css/bootstrap.css">
 </head>


<link href="img/favicon.ico" rel="shortcut icon" type="image/x-icon">
<body>
<header class="navbar navbar-static-top navbar-top" data-role="navigation">
    <div class="container" data-ng-include="'/modules/home/views/header.html'"></div>
</header>
<div class="content container">
    <div data-ng-include="'/modules/notification/views/notifications.html'"></div>
    <div class="col-lg-2 padding0" data-ng-include="'/modules/navigation/views/navigation.html'" ng-class="leftNav ? 'hide' : ''" ></div>
    <div data-ui-view class="ngView"></div>
</div>
<footer class="footer navbar-bottom">
    <div class="container">
        <p align="right">Powered by<img src="../img/logo-green.png"></p>
    </div>
</footer>

<script src="/lib/jquery/dist/jquery.js"></script>
<script src="/lib/angular/angular.js"></script>
<script src="/lib/bootstrap/dist/js/bootstrap.js"></script>
<script src="/lib/angular-bootstrap/ui-bootstrap-tpls.js"></script>
<script src="/lib/angular-cookies/angular-cookies.js"></script>
<script src="/lib/angular-resource/angular-resource.js"></script>
<script src="/lib/angular-route/angular-route.js"></script>
<script src="/lib/angular-sanitize/angular-sanitize.js"></script>
<script src="/lib/angular-ui-router/release/angular-ui-router.js"></script>
<script src="/lib/angular-ui-utils/ui-utils.js"></script>
<script src="/lib/lodash/lodash.js"></script>
<script src="/lib/d3/d3.js"></script>
<script src="/lib/d3-tip/index.js"></script>

<script src="/js/app.min.js"></script>
</body>
</html>