<!DOCTYPE html>
<!--[if lt IE 7]>      <html class="no-js lt-ie9 lt-ie8 lt-ie7"> <![endif]-->
<!--[if IE 7]>         <html class="no-js lt-ie9 lt-ie8"> <![endif]-->
<!--[if IE 8]>         <html class="no-js lt-ie9"> <![endif]-->
<!--[if gt IE 8]><!--> <html class="no-js"> <!--<![endif]-->
    <head>
        <meta charset="utf-8">
        <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        <title>Oops, something went wrong...</title>
        <meta name="description" content="Eclipse is probably best known as a Java IDE, but it is more: it is an IDE framework, a tools framework, an open source project, a community, an eco-system, and a foundation.">
        <meta name="keywords" content="eclipse,project,plug-ins,plugins,java,ide,swt,refactoring,free java ide,tools,platform,open source,development environment,development,ide" />     
        <meta name="viewport" content="width=device-width">
		<link href="http://fonts.googleapis.com/css?family=Open+Sans" rel="stylesheet" type="text/css">
        <link rel="stylesheet" href="css/normalize.min.css">
        <link rel="stylesheet" href="css/main.min.css">
        <script src="js/vendor/modernizr-2.6.2-respond-1.1.0.min.js"></script>
    </head>
    <body id="broken_default">
        <!--[if lt IE 7]>
            <p class="chromeframe">You are using an <strong>outdated</strong> browser. Please <a href="http://browsehappy.com/">upgrade your browser</a> or <a href="http://www.google.com/chromeframe/?redirect=true">activate Google Chrome Frame</a> to improve your experience.</p>
        <![endif]-->

        <div class="header-container">
            <header class="wrapper clearfix">
                <h1 class="title"><a href="/"><img src="img/eclipse.png" alt="Eclipse Logo"/></a></h1>
               <div id="twitter-eclipsecon"> <a href="https://twitter.com/eclipsecon" class="twitter-follow-button" data-show-count="false">Follow @eclipsecon</a>
				<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script></div>
            </header>
        </div>

        <div class="main-container">
            <div class="main wrapper clearfix">

                <article>
                    <header>
                        <h1>Oops, something went wrong and we're completely broken down. </h1> 

                        <p>Someone or something has likely already alerted us about this, so sit back while we fix the site.</p> <p> Thank you for your patience.</p>
						
                    </header>             
                </article>

                <aside>
                    <a class="twitter-timeline"  href="https://twitter.com/EclipseFdn" data-widget-id="296300311444856832">Tweets by @EclipseFdn</a>
<script>!function(d,s,id){var js,fjs=d.getElementsByTagName(s)[0];if(!d.getElementById(id)){js=d.createElement(s);js.id=id;js.src="//platform.twitter.com/widgets.js";fjs.parentNode.insertBefore(js,fjs);}}(document,"script","twitter-wjs");</script>

                </aside>

            </div> <!-- #main -->
        </div> <!-- #main-container -->

        <div class="footer-container">
            <footer class="wrapper clearfix">
                <h3>Copyright &copy; 2013 The Eclipse Foundation. All Rights Reserved.</h3> 
                <div id="footer-social"><span>Stay connected</span>
              		<a href="https://www.facebook.com/eclipse.org" target="_blank"><img src="img/socialmediaicons/facebook-24x24.png" alt="Follow the Eclipse Foundation on Facebook"/></a>
              		<a href="https://plus.google.com/+Eclipse/posts" target="_blank"><img src="img/socialmediaicons/google+-24x24.png" alt="Follow the Eclipse Foundation on Google+"/></a>
              		<a href="https://twitter.com/eclipsefdn" target="_blank"><img src="img/socialmediaicons/twitter-24x24.png" alt="Follow the Eclipse Foundation on Twitter"/></a>
              		<a href="http://www.linkedin.com/company/eclipse-foundation" target="_blank"><img src="img/socialmediaicons/linkedin-24x24.png" alt="Follow the Eclipse Foundation on Linkedin"/></a>              		
              		<a href="http://www.youtube.com/user/EclipseFdn" target="_blank"><img src="img/socialmediaicons/youtube-24x24.png" alt="Follow the Eclipse Foundation on Youtube"/></a>
				</div>	
				
            </footer>
        </div>

        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
        <script>window.jQuery || document.write('<script src="js/vendor/jquery-1.9.0.min.js"><\/script>')</script>

        <script src="js/main.js"></script>

        <script>
            var _gaq=[['_setAccount','UA-910670-2'],['_trackPageview']];
            (function(d,t){var g=d.createElement(t),s=d.getElementsByTagName(t)[0];
            g.src=('https:'==location.protocol?'//ssl':'//www')+'.google-analytics.com/ga.js';
            s.parentNode.insertBefore(g,s)}(document,'script'));
        </script>
    </body>
</html>
