<!doctype html>
<html>
 <head> 
  <title>jsoup License</title> 
  <meta name="keywords" content="license, open source, mit"> 
  <meta name="description" content="jsoup is licensed under the MIT open source license"> 
  <meta name="viewport" content="width=device-width, initial-scale=1"> 
  <link type="text/css" rel="stylesheet" href="/rez/style.css"> 
  <script>
  (function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
  (i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
  m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
  })(window,document,'script','//www.google-analytics.com/analytics.js','ga');

  ga('create', 'UA-89734-10', 'auto');
  ga('send', 'pageview');

</script> 
 </head> 
 <body class="n1-"> 
  <div class="wrap"> 
   <div class="header"> 
    <div class="nav-sections"> 
     <ul> 
      <li class="n1-home"><h4><a href="/">jsoup</a></h4></li> 
      <li class="n1-news"><a href="/news/">News</a></li> 
      <li class="n1-bugs"><a href="/bugs">Bugs</a></li> 
      <li class="n1-discussion"><a href="/discussion">Discussion</a></li> 
      <li class="n1-download"><a href="/download">Download</a></li> 
      <li class="n1-api"><a href="/apidocs/">API Reference</a></li> 
      <li class="n1-cookbook"><a href="/cookbook/">Cookbook</a></li> 
      <li class="n1-try"><a href="http://try.jsoup.org/">Try jsoup</a></li> 
     </ul> 
    </div> 
   </div> 
   <div class="breadcrumb"> 
    <a href="/">jsoup</a> 
    <span class="seperator">&raquo;</span> jsoup License 
   </div> 
   <div class="content"> 
    <div class="col1"> 
     <h1>jsoup License</h1> 
     <p>The jsoup code-base (include source and compiled packages) are distributed under the open source MIT license as described below.</p> 
     <h3>The MIT License</h3> 
     <p>Copyright &copy; 2009 - 2013 <a href="http://jonathanhedley.com">Jonathan Hedley</a> (<a href="mailto:jonathan@hedley.net">jonathan@hedley.net</a>)</p> 
     <p>Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:</p> 
     <p>The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.</p> 
     <p>THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.</p> 
    </div>
    <!-- /col1 --> 
    <div class="col2"> 
    </div>
    <!-- /col2 --> 
   </div>
   <!-- /content--> 
   <div class="footer"> 
    <b>jsoup HTML parser</b> &copy; 2009 - 2015 
    <a href="http://jhy.io/" rel="author"><b>Jonathan Hedley</b></a> 
   </div> 
  </div>
  <!-- /wrap --> 
  <script src="/rez/prettify.js"></script>
  <script>prettyPrint();</script> 
 </body>
</html>
