<!doctype html>
<html class="no-js" ng-app="odeConsole">
  <head>
    <meta charset="utf-8">
    <title>Apache ODE Console</title>
    <meta name="description" content="">
    <meta name="viewport" content="width=device-width">
    <!-- Place favicon.ico and apple-touch-icon.png in the root directory -->

    <!-- build:css({.tmp,src}) styles/vendor.css -->
    <link rel="stylesheet" href="app/vendor.css">
    <!-- bower:css -->
    <link rel="stylesheet" href="../bower_components/ngtoast/dist/ngToast.css" />
    <link rel="stylesheet" href="../bower_components/angular-loading-bar/build/loading-bar.css" />
    <link rel="stylesheet" href="../bower_components/roboto-slab-fontface/roboto-slab-fontface.css" />
    <!-- endbower -->
    <!-- endbuild -->


    <!-- build:css({.tmp,src}) styles/app.css -->
    <!-- inject:css -->
    <link rel="stylesheet" href="app/index.css">
    <!-- endinject -->
    <!-- endbuild -->

  </head>
  <body>
    <!--[if lt IE 10]>
      <p class="browsehappy">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> to improve your experience.</p>
    <![endif]-->
    <toast></toast>
    <div ng-include="'components/navbar/navbar.html'"></div>

    <div ng-view></div>

    <script>
        /** configure ODE console here: */
        var ApacheOdeConsole = {
          endpoint: '' // put ODE's root URL here, e.g. "http://myhost:myport/ode" -- defaults to host/path opened in the browser.
        }
    </script>

    <!-- build:js scripts/vendor.js -->
    <!-- bower:js -->
    <script src="../bower_components/modernizr/modernizr.js"></script>
    <script src="../bower_components/jquery/dist/jquery.js"></script>
    <script src="../bower_components/angular/angular.js"></script>
    <script src="../bower_components/angular-animate/angular-animate.js"></script>
    <script src="../bower_components/angular-sanitize/angular-sanitize.js"></script>
    <script src="../bower_components/angular-route/angular-route.js"></script>
    <script src="../bower_components/angular-bootstrap/ui-bootstrap-tpls.js"></script>
    <script src="../bower_components/angular-smart-table/dist/smart-table.js"></script>
    <script src="../bower_components/angular-xml/angular-xml.js"></script>
    <script src="../bower_components/angular-poller/angular-poller.min.js"></script>
    <script src="../bower_components/moment/moment.js"></script>
    <script src="../bower_components/angular-moment/angular-moment.js"></script>
    <script src="../bower_components/ngtoast/dist/ngToast.js"></script>
    <script src="../bower_components/underscore/underscore.js"></script>
    <script src="../bower_components/angular-loading-bar/build/loading-bar.js"></script>
    <script src="../bower_components/ace-builds/src-min-noconflict/ace.js"></script>
    <script src="../bower_components/ace-builds/src-min-noconflict/mode-xml.js"></script>
    <script src="../bower_components/angular-ui-ace/ui-ace.js"></script>
    <script src="../bower_components/angular-base64-upload/src/angular-base64-upload.js"></script>
    <!-- endbower -->
    <!-- endbuild -->

    <!-- build:js({.tmp,src}) scripts/app.js -->
    <!-- inject:js -->
    <script src="app/index.js"></script>
    <script src="app/really.directive.js"></script>
    <script src="app/soap.service.js"></script>
    <script src="app/st-select.directive.js"></script>
    <script src="vendor/jquery.xpath.js"></script>
    <script src="vendor/vkbeautify.js"></script>
    <script src="components/navbar/navbar.controller.js"></script>
    <script src="app/dashboard/dashboard.controller.js"></script>
    <script src="app/process/process.controller.js"></script>
    <script src="app/process/process.service.js"></script>
    <script src="app/process/processactions.controller.js"></script>
    <script src="app/process/processlist.controller.js"></script>
    <script src="app/instance/instance.controller.js"></script>
    <script src="app/instance/instance.service.js"></script>
    <script src="app/instance/instanceactions.controller.js"></script>
    <script src="app/instance/instancelist.controller.js"></script>
    <!-- endinject -->

    <!-- inject:partials -->
    <!-- angular templates will be automaticaly converted in js and inserted here -->
    <!-- endinject -->
    <!-- endbuild -->

  </body>
</html>
