diff --git a/.gitignore b/.gitignore
index cf2e9c3..dcd4928 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,4 @@
-/api-viewer/bower_components/
-/api-viewer/node_modules/
+_site
+.sass-cache
+generate/nodegit
+node_modules/
diff --git a/Gemfile b/Gemfile
new file mode 100644
index 0000000..053c27d
--- /dev/null
+++ b/Gemfile
@@ -0,0 +1,2 @@
+source 'https://rubygems.org'
+gem 'github-pages'
diff --git a/Gemfile.lock b/Gemfile.lock
new file mode 100644
index 0000000..de86246
--- /dev/null
+++ b/Gemfile.lock
@@ -0,0 +1,126 @@
+GEM
+  remote: https://rubygems.org/
+  specs:
+    RedCloth (4.2.9)
+    activesupport (4.2.0)
+      i18n (~> 0.7)
+      json (~> 1.7, >= 1.7.7)
+      minitest (~> 5.1)
+      thread_safe (~> 0.3, >= 0.3.4)
+      tzinfo (~> 1.1)
+    blankslate (2.1.2.4)
+    celluloid (0.16.0)
+      timers (~> 4.0.0)
+    classifier-reborn (2.0.3)
+      fast-stemmer (~> 1.0)
+    coffee-script (2.3.0)
+      coffee-script-source
+      execjs
+    coffee-script-source (1.9.0)
+    colorator (0.1)
+    execjs (2.3.0)
+    fast-stemmer (1.0.2)
+    ffi (1.9.6)
+    gemoji (2.1.0)
+    github-pages (33)
+      RedCloth (= 4.2.9)
+      github-pages-health-check (~> 0.2)
+      jekyll (= 2.4.0)
+      jekyll-coffeescript (= 1.0.1)
+      jekyll-mentions (= 0.2.1)
+      jekyll-redirect-from (= 0.6.2)
+      jekyll-sass-converter (= 1.2.0)
+      jekyll-sitemap (= 0.6.3)
+      jemoji (= 0.4.0)
+      kramdown (= 1.5.0)
+      liquid (= 2.6.1)
+      maruku (= 0.7.0)
+      mercenary (~> 0.3)
+      pygments.rb (= 0.6.1)
+      rdiscount (= 2.1.7)
+      redcarpet (= 3.1.2)
+      terminal-table (~> 1.4)
+    github-pages-health-check (0.2.1)
+      net-dns (~> 0.6)
+      public_suffix (~> 1.4)
+    hitimes (1.2.2)
+    html-pipeline (1.9.0)
+      activesupport (>= 2)
+      nokogiri (~> 1.4)
+    i18n (0.7.0)
+    jekyll (2.4.0)
+      classifier-reborn (~> 2.0)
+      colorator (~> 0.1)
+      jekyll-coffeescript (~> 1.0)
+      jekyll-gist (~> 1.0)
+      jekyll-paginate (~> 1.0)
+      jekyll-sass-converter (~> 1.0)
+      jekyll-watch (~> 1.1)
+      kramdown (~> 1.3)
+      liquid (~> 2.6.1)
+      mercenary (~> 0.3.3)
+      pygments.rb (~> 0.6.0)
+      redcarpet (~> 3.1)
+      safe_yaml (~> 1.0)
+      toml (~> 0.1.0)
+    jekyll-coffeescript (1.0.1)
+      coffee-script (~> 2.2)
+    jekyll-gist (1.1.0)
+    jekyll-mentions (0.2.1)
+      html-pipeline (~> 1.9.0)
+      jekyll (~> 2.0)
+    jekyll-paginate (1.1.0)
+    jekyll-redirect-from (0.6.2)
+      jekyll (~> 2.0)
+    jekyll-sass-converter (1.2.0)
+      sass (~> 3.2)
+    jekyll-sitemap (0.6.3)
+    jekyll-watch (1.2.1)
+      listen (~> 2.7)
+    jemoji (0.4.0)
+      gemoji (~> 2.0)
+      html-pipeline (~> 1.9)
+      jekyll (~> 2.0)
+    json (1.8.2)
+    kramdown (1.5.0)
+    liquid (2.6.1)
+    listen (2.8.5)
+      celluloid (>= 0.15.2)
+      rb-fsevent (>= 0.9.3)
+      rb-inotify (>= 0.9)
+    maruku (0.7.0)
+    mercenary (0.3.5)
+    mini_portile (0.6.2)
+    minitest (5.5.1)
+    net-dns (0.8.0)
+    nokogiri (1.6.6.2)
+      mini_portile (~> 0.6.0)
+    parslet (1.5.0)
+      blankslate (~> 2.0)
+    posix-spawn (0.3.9)
+    public_suffix (1.4.6)
+    pygments.rb (0.6.1)
+      posix-spawn (~> 0.3.6)
+      yajl-ruby (~> 1.2.0)
+    rb-fsevent (0.9.4)
+    rb-inotify (0.9.5)
+      ffi (>= 0.5.0)
+    rdiscount (2.1.7)
+    redcarpet (3.1.2)
+    safe_yaml (1.0.4)
+    sass (3.4.11)
+    terminal-table (1.4.5)
+    thread_safe (0.3.4)
+    timers (4.0.1)
+      hitimes
+    toml (0.1.2)
+      parslet (~> 1.5.0)
+    tzinfo (1.2.2)
+      thread_safe (~> 0.1)
+    yajl-ruby (1.2.1)
+
+PLATFORMS
+  ruby
+
+DEPENDENCIES
+  github-pages
diff --git a/README.md b/README.md
index 4b4c1d9..614d656 100644
--- a/README.md
+++ b/README.md
@@ -1,2 +1,19 @@
-`bower install`
-`http-server`
+`script/bootstrap`
+`script/server`
+`open http://localhost:4000`
+
+## Generating the site
+
+While in development, the generator will not clone the nodegit repo. You'll need to soft-link the nodegit repository into `generate/`.
+
+```bash
+ln -s /path/to/nodegit generate/nodegit
+```
+
+Once linked, generate the site.
+
+```bash
+node generate
+```
+
+If you're running `script/server` in another terminal tab, it will read the changes and regenerate the site.
diff --git a/TODO.md b/TODO.md
deleted file mode 100644
index 3928020..0000000
--- a/TODO.md
+++ /dev/null
@@ -1 +0,0 @@
-- [ ] Start demo with HELP displayed so that available commands are known.
diff --git a/_config.yml b/_config.yml
new file mode 100644
index 0000000..12ffa8e
--- /dev/null
+++ b/_config.yml
@@ -0,0 +1,17 @@
+# Site settings
+title: NodeGit
+description: Asynchronous native Node bindings to libgit2
+url: "http://nodegit.org"
+date_format: "ordinal"
+current_nodegit_version: 0.3.0
+other_nodegit_versions:
+  - HEAD
+  - 0.2.7
+
+# Build settings
+markdown: redcarpet
+redcarpet:
+  extensions: [tables, no_intra_emphasis, autolink]
+highlighter: pygments
+permalink: pretty
+exclude: ["node_modules","generate","package.json","README.md"]
diff --git a/_includes/footer.html b/_includes/footer.html
new file mode 100644
index 0000000..2f6d26a
--- /dev/null
+++ b/_includes/footer.html
@@ -0,0 +1,9 @@
+
diff --git a/_includes/head.html b/_includes/head.html
new file mode 100644
index 0000000..32787e5
--- /dev/null
+++ b/_includes/head.html
@@ -0,0 +1,56 @@
+
+   
+   
+   
+
+  {% if page.title %}{{ page.title }}{% else %}{{ site.title }}{% endif %} 
+   
+
+   
+   
+   
+  
+  
+  
+
+
diff --git a/_includes/header.html b/_includes/header.html
new file mode 100644
index 0000000..c6899ba
--- /dev/null
+++ b/_includes/header.html
@@ -0,0 +1,52 @@
+
+
+
+  {% if page.url == '/' %}
+    
+      
{{ site.description}} 
+      
+      
Latest release: {{ site.current_nodegit_version }} — Changelog 
+    
+  {% else %}
+    
+      
{{ page.title }} 
+      
{{ page.description }}
+    
+  {% endif %}
+
 
diff --git a/_layouts/default.html b/_layouts/default.html
new file mode 100644
index 0000000..aa63145
--- /dev/null
+++ b/_layouts/default.html
@@ -0,0 +1,34 @@
+
+
+
+  {% include head.html %}
+
+  
+
+    {% include header.html %}
+
+    
+      
+        
+          {% if page.return_to %}
+          {% for section_hash in page.return_to %}
+          
+          {% endfor %}
+          {% endif %}
+          
+        
+        
+          {{ content }}
+        
+      
+    
 
+
+    {% include footer.html %}
+
+  
+
+
diff --git a/_layouts/full.html b/_layouts/full.html
new file mode 100644
index 0000000..e3f68b6
--- /dev/null
+++ b/_layouts/full.html
@@ -0,0 +1,23 @@
+
+
+
+  {% include head.html %}
+
+  
+
+    {% include header.html %}
+
+    
+
+    {% include footer.html %}
+
+  
+
+
+
diff --git a/_layouts/guides.html b/_layouts/guides.html
new file mode 100644
index 0000000..fffcf76
--- /dev/null
+++ b/_layouts/guides.html
@@ -0,0 +1,12 @@
+---
+layout: full
+---
+
+{% assign sections = page.content|split:'***' %}
+
+{% for section in sections %}
+  
+    {{ section | markdownify }}
+  
+{% endfor %}
+
 
diff --git a/_layouts/page.html b/_layouts/page.html
new file mode 100644
index 0000000..74c1a11
--- /dev/null
+++ b/_layouts/page.html
@@ -0,0 +1,14 @@
+---
+layout: default
+---
+
+
+  
+
+  
+    {{ content }}
+   
+
+
 
diff --git a/_layouts/post.html b/_layouts/post.html
new file mode 100644
index 0000000..a2b4e52
--- /dev/null
+++ b/_layouts/post.html
@@ -0,0 +1,15 @@
+---
+layout: default
+---
+
+
+  
+
+  
+    {{ content }}
+   
+
+
 
diff --git a/_posts/2015-02-12-welcome-to-jekyll.markdown b/_posts/2015-02-12-welcome-to-jekyll.markdown
new file mode 100644
index 0000000..4f48cfd
--- /dev/null
+++ b/_posts/2015-02-12-welcome-to-jekyll.markdown
@@ -0,0 +1,25 @@
+---
+layout: post
+title:  "Welcome to Jekyll!"
+date:   2015-02-12 11:17:26
+categories: jekyll update
+---
+You’ll find this post in your `_posts` directory. Go ahead and edit it and re-build the site to see your changes. You can rebuild the site in many different ways, but the most common way is to run `jekyll serve`, which launches a web server and auto-regenerates your site when a file is updated.
+
+To add new posts, simply add a file in the `_posts` directory that follows the convention `YYYY-MM-DD-name-of-post.ext` and includes the necessary front matter. Take a look at the source for this post to get an idea about how it works.
+
+Jekyll also offers powerful support for code snippets:
+
+{% highlight ruby %}
+def print_hi(name)
+  puts "Hi, #{name}"
+end
+print_hi('Tom')
+#=> prints 'Hi, Tom' to STDOUT.
+{% endhighlight %}
+
+Check out the [Jekyll docs][jekyll] for more info on how to get the most out of Jekyll. File all bugs/feature requests at [Jekyll’s GitHub repo][jekyll-gh]. If you have questions, you can ask them on [Jekyll’s dedicated Help repository][jekyll-help].
+
+[jekyll]:      http://jekyllrb.com
+[jekyll-gh]:   https://github.com/jekyll/jekyll
+[jekyll-help]: https://github.com/jekyll/jekyll-help
diff --git a/_sass/_layout.scss b/_sass/_layout.scss
new file mode 100644
index 0000000..2f78f3f
--- /dev/null
+++ b/_sass/_layout.scss
@@ -0,0 +1,590 @@
+/* Layout */
+
+/**
+ * Set `margin-bottom` to maintain vertical rhythm
+ */
+h1, h2, h3,
+p, blockquote, pre,
+ul, ol, dl, figure, .highlight
+%vertical-rhythm {
+    margin-bottom: $spacing-unit / 2;
+}
+
+html, body {
+  background:#fff;
+}
+
+body {
+  padding:0 $spacing-unit $spacing-unit;
+}
+
+.wrapper {
+  max-width:960px;
+  margin:0 auto;
+  overflow:hidden;
+  padding:($spacing-unit / 2) 0 0;
+}
+
+/* Header */
+
+header {
+  display:block;
+  background:#fff;
+  overflow:hidden;
+
+  .site-info {
+    float:left;
+  }
+
+  span {
+    opacity:0.6;
+  }
+
+  h1 {
+    float:left;
+    font-size:$font-size;
+    margin:0 $spacing-unit 0 0;
+  }
+
+  h1, img {
+    height:$font-size * $line-height;
+    line-height:$line-height;
+    position:relative;
+    top:-$spacing-unit / 16;
+  }
+
+  .hamburger, .version {
+    top:-$spacing-unit / 4;
+    display:inline-block;
+    padding:$spacing-unit/4 $spacing-unit/3;
+    border:1px solid #ededed;
+    border-radius:4px;
+  }
+
+  .hamburger {
+    display:none;
+  }
+
+  .version {
+    float:left;
+    position:relative;
+    cursor:pointer;
+
+    &:after {
+      content:'\25BE';
+      position:relative;
+      top:-1px;
+      left:$spacing-unit / 8;
+      margin-right:$spacing-unit / 8;
+      opacity:0.6;
+    }
+  }
+
+  .version-menu {
+    display:none;
+  }
+
+  nav {
+    float:right;
+    font-size:$font-size;
+
+    a {
+      color:$text-color;
+    }
+
+    ul {
+      float:right;
+    }
+
+    li {
+      float:left;
+      margin:0 0 0 $spacing-unit;
+
+      &.active a {
+        color:$key-color;
+      }
+    }
+  }
+}
+
+/* Banner */
+
+.banner {
+  color:#fff;
+  margin:0 (-$spacing-unit);
+  overflow:hidden;
+  background: #f1595f;
+  background: -moz-linear-gradient(left,  #f1595f 0%, #f17b59 100%);
+  background: -webkit-gradient(linear, left top, right top, color-stop(0%,#f1595f), color-stop(100%,#f17b59));
+  background: -webkit-linear-gradient(left,  #f1595f 0%,#f17b59 100%);
+  background: -o-linear-gradient(left,  #f1595f 0%,#f17b59 100%);
+  background: -ms-linear-gradient(left,  #f1595f 0%,#f17b59 100%);
+  background: linear-gradient(to right,  #f1595f 0%,#f17b59 100%);
+  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#f1595f', endColorstr='#f17b59',GradientType=1 );
+
+  h2 {
+    line-height:1;
+    text-shadow:rgba(#000, 0.5) 0 1px 0;
+    color:#fff;
+    margin-bottom:0;
+  }
+
+  h2, p {
+    position:relative;
+    z-index:1;
+  }
+
+  .wrapper {
+    position:relative;
+    padding:$spacing-unit $spacing-unit $spacing-unit/2;
+
+    &:after {
+      content:'';
+      position:absolute;
+      top:50%;
+      right:0;
+      margin:-90px 0 0;
+      height:200px;
+      width:200px;
+      background:url(/img/nodegit-mark.svg);
+      background-size:200px;
+      opacity:0.4;
+      z-index:0;
+    }
+  }
+
+  .hero {
+    text-align:center;
+
+    h2 {
+      margin-bottom:$spacing-unit/2;
+    }
+
+    &:after {
+      display:none;
+    }
+  }
+
+  p {
+    color:mix(#fff, $key-color, 60%);
+  }
+
+  a {
+    color:mix(#fff, $key-color, 60%);
+
+    &:hover {
+      color:#fff;
+    }
+  }
+
+  .buttons {
+    font-size:$font-size * 1.2;
+
+    a {
+      display:inline-block;
+      padding:$spacing-unit/3 $spacing-unit/1.5;
+      background:mix(#000, $key-color, 40%);
+      border:1px solid mix(#000, $key-color, 40%);
+      margin:0 $spacing-unit/4;
+      color:#fff;
+      border-radius:5px;
+      margin-bottom:$spacing-unit/2;
+
+      &:hover {
+        background:mix(#000, $key-color, 50%);
+        border-color:mix(#000, $key-color, 50%);
+      }
+
+      &.secondary {
+        background:transparent;
+        border:1px solid mix(#fff, $key-color, 60%);
+
+        &:hover {
+          border-color:#fff;
+        }
+      }
+    }
+  }
+}
+
+/* Page Content */
+
+.page-content {
+
+  .wrapper {
+    padding:$spacing-unit 0;
+  }
+
+  .outline {
+    float:right;
+    width:220px;
+    padding:0 0 0 $spacing-unit;
+    font-size:$font-size * 0.9;
+    display:block;
+
+    ul {
+      border:none;
+      list-style:none;
+
+      li {
+        padding:0;
+        background:none;
+        margin:0;
+      }
+    }
+  }
+
+  .main {
+    overflow:hidden;
+    width:auto;
+
+    table {
+      a {
+        color:$text-color;
+        font-weight:500;
+
+        span {
+          font-weight:normal;
+        }
+
+        &:hover {
+          color:$headline-color;
+        }
+      }
+
+      .tags {
+        position:relative;
+        top:-2px;
+        right:-12px;
+        white-space:nowrap;
+
+        span {
+          padding-top:2px;
+          padding-bottom:2px;
+        }
+      }
+    }
+  }
+
+  ul {
+    list-style:disc;
+
+    li {
+      margin:0 0 8px;
+      padding:0 0 0 25px;
+      background-image:url(/img/nodegit-mark.svg);
+      background-repeat:no-repeat;
+      background-size:16px;
+      background-position:0 5px;
+    }
+  }
+
+  .guides {
+    padding:0;
+    margin:0;
+
+    .document {
+      width:30%;
+      float:left;
+      box-sizing:border-box;
+      position:relative;
+      margin:0 5% 30px 0;
+
+      h2 {
+        padding-bottom:8px;
+        border-bottom:1px solid #ededed;
+
+        a {
+          color:#222;
+        }
+      }
+
+      blockquote {
+        border:none;
+        margin:-10px 0 0;
+        padding:0;
+        color:#999;
+      }
+
+      ul {
+        list-style:none;
+
+        li {
+          margin-left:0;
+        }
+      }
+
+      &:nth-child(3n) {
+        margin-right:0;
+      }
+
+      &:nth-child(3n+1) {
+        clear:left;
+      }
+    }
+  }
+}
+
+span.tags {
+  margin:0 0 0 6px;
+  position:relative;
+  top:-0.23em;
+
+  span {
+    font-size:12px;
+    display:inline-block;
+    padding:6px 8px;
+    border-radius:3px;
+    text-transform:uppercase;
+    color:#fff;
+    margin:0 8px 0 0;
+    font-family:$font-family;
+    font-weight:500;
+
+    &.enum {
+      background:#92D4D3;
+    }
+
+    &.sync {
+      background:#FD8487;
+    }
+
+    &.async {
+      background:#77D971;
+    }
+
+    &.experimental {
+      background:#FFBB85;
+    }
+  }
+}
+
+table {
+  border-collapse:collapse;
+  width:100%;
+  margin:0 0 $spacing-unit/2;
+
+  th {
+    font-weight:500;
+    color:#aaa;
+  }
+
+  td {
+    border-top:1px solid #ededed;
+  }
+
+  th, td {
+    padding:8px $spacing-unit/2;
+    text-align:left;
+
+    span {
+      color:#aaa;
+    }
+  }
+}
+
+@media all and (max-width: 940px) {
+  header {
+    nav {
+      font-size:$font-size*0.85;
+    }
+  }
+
+  h2 {
+    font-size:$font-size * 1.7;
+  }
+}
+
+@media all and (max-width: 880px) {
+  header {
+    overflow:hidden;
+    margin-left:-$spacing-unit;
+    margin-right:-$spacing-unit;
+
+    .site-info {
+      float:none;
+      margin-left:$spacing-unit;
+      margin-right:$spacing-unit;
+
+      h1 {
+        float:left;
+      }
+
+      .version {
+        float:right;
+      }
+    }
+
+    nav {
+      clear:both;
+      float:none;
+      width:100%;
+      border-top:1px solid #ededed;
+      margin:0;
+      background:#f8f8f8;
+
+      ul {
+        float:none;
+        display: -webkit-flex;
+        display: flex;
+        margin:0 $spacing-unit/2;
+      }
+
+      li {
+        -webkit-flex: 1 1 auto;
+        flex: 1 1 auto;
+        margin:0;
+        text-align:center;
+
+        a {
+          display:block;
+          line-height:3em;
+        }
+      }
+    }
+  }
+}
+
+@media all and (max-width: 680px) {
+  body {
+    padding:0 $spacing-unit/1.5 $spacing-unit/2;
+  }
+
+  h2 {
+    font-size:$font-size * 1.5;
+  }
+
+  .banner {
+    .hero {
+      h2 {
+        margin:0 $spacing-unit*2 $spacing-unit/2;
+      }
+
+      .buttons {
+        font-size:$font-size*0.85;
+      }
+    }
+  }
+
+  .page-content {
+    .outline {
+      display:none;
+    }
+
+    .guides {
+      .document {
+        width:45%;
+
+        &:nth-child(3n+1) {
+          clear:none;
+        }
+
+        &:nth-child(3n) {
+          clear:none;
+          margin-right:5%;
+        }
+
+        &:nth-child(2n+1) {
+          clear:left;
+        }
+
+        &:nth-child(2n) {
+          margin-right:0;
+        }
+      }
+    }
+  }
+}
+
+@media all and (max-width: 520px) {
+  header {
+    .hamburger {
+      position:relative;
+      cursor: pointer;
+      display:inline-block;
+      float:right;
+      margin:0 0 0 $spacing-unit/4;
+      width:16px;
+      height:$font-size*0.8;
+      top:-$spacing-unit/4;
+      background:url(/img/hamburger.svg);
+      background-size:19px 24px;
+      background-repeat:no-repeat;
+      background-position:center;
+      z-index:100;
+
+      &.open {
+        background-color:#f4f4f4;
+        border-color:#dadada;
+      }
+    }
+
+    nav {
+      max-height:0;
+      -webkit-transition: max-height 0.4s ease-in-out;
+      -moz-transition: max-height 0.4s ease-in-out;
+      -ms-transition: max-height 0.4s ease-in-out;
+      -o-transition: max-height 0.4s ease-in-out;
+      transition: max-height 0.4s ease-in-out;
+
+      ul {
+        width:100%;
+        display:block;
+
+        li {
+          float:none;
+          width:100%;
+          border-bottom:1px solid #ededed;
+          -webkit-flex: none;
+          flex: none;
+        }
+      }
+    }
+
+    nav.open {
+      max-height:500px;
+    }
+  }
+}
+
+@media all and (max-width: 400px) {
+  header {
+    .version {
+      clear:both;
+      float:none;
+      position:relative;
+      box-sizing:border-box;
+      margin-top:$spacing-unit/4;
+      width:100%;
+
+      &:after {
+        position:absolute;
+        right:$spacing-unit/4;
+        top:$spacing-unit/4;
+        left:auto;
+      }
+    }
+  }
+
+  .banner {
+    .hero {
+      h2 {
+        margin:0 $spacing-unit/2 $spacing-unit/2;
+      }
+
+      .buttons {
+        font-size:$font-size*0.85;
+      }
+    }
+  }
+
+  .page-content {
+    .guides {
+      .document {
+        float:none;
+        width:100%;
+        margin:0 0 30px;
+      }
+    }
+  }
+}
diff --git a/_sass/_reset.scss b/_sass/_reset.scss
new file mode 100644
index 0000000..d9f27b5
--- /dev/null
+++ b/_sass/_reset.scss
@@ -0,0 +1,48 @@
+/* http://meyerweb.com/eric/tools/css/reset/
+   v2.0 | 20110126
+   License: none (public domain)
+*/
+
+html, body, div, span, applet, object, iframe,
+h1, h2, h3, h4, h5, h6, p, blockquote, pre,
+a, abbr, acronym, address, big, cite, code,
+del, dfn, em, img, ins, kbd, q, s, samp,
+small, strike, strong, sub, sup, tt, var,
+b, u, i, center,
+dl, dt, dd, ol, ul, li,
+fieldset, form, label, legend,
+table, caption, tbody, tfoot, thead, tr, th, td,
+article, aside, canvas, details, embed,
+figure, figcaption, footer, header, hgroup,
+menu, nav, output, ruby, section, summary,
+time, mark, audio, video {
+  margin: 0;
+  padding: 0;
+  border: 0;
+  font-size: 100%;
+  font: inherit;
+  vertical-align: baseline;
+}
+/* HTML5 display-role reset for older browsers */
+article, aside, details, figcaption, figure,
+footer, header, hgroup, menu, nav, section {
+  display: block;
+}
+body {
+  line-height: 1;
+}
+ol, ul {
+  list-style: none;
+}
+blockquote, q {
+  quotes: none;
+}
+blockquote:before, blockquote:after,
+q:before, q:after {
+  content: '';
+  content: none;
+}
+table {
+  border-collapse: collapse;
+  border-spacing: 0;
+}
diff --git a/_sass/_syntax-highlighting.scss b/_sass/_syntax-highlighting.scss
new file mode 100644
index 0000000..2e8f45a
--- /dev/null
+++ b/_sass/_syntax-highlighting.scss
@@ -0,0 +1,95 @@
+/*
+  Darkly Pygments Theme
+  (c) 2014 Sourcey
+  http://sourcey.com
+*/
+
+.highlight {
+  font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;
+  white-space: pre;
+  overflow: auto;
+  word-wrap: normal; /* horizontal scrolling */
+  -moz-border-radius: 3px;
+  -webkit-border-radius: 3px;
+  border-radius: 5px;
+  padding: $spacing-unit/2;
+  color: #727272;
+  font-size:$font-size*.8;
+  margin-bottom:$spacing-unit/2;
+  border:1px solid #ededed;
+
+  pre {
+    margin:0;
+
+    code {
+      border:none;
+      background:none;
+      padding:0;
+    }
+  }
+}
+.highlight .hll { background-color: #d6d6d6 }
+.highlight  { background: #f8f8f8; color: #4d4d4c }
+.highlight .c { color: #8e908c } /* Comment */
+.highlight .err { color: #c82829 } /* Error */
+.highlight .k { color: #8959a8 } /* Keyword */
+.highlight .l { color: #f5871f } /* Literal */
+.highlight .n { color: #4d4d4c } /* Name */
+.highlight .o { color: #3e999f } /* Operator */
+.highlight .p { color: #4d4d4c } /* Punctuation */
+.highlight .cm { color: #8e908c } /* Comment.Multiline */
+.highlight .cp { color: #8e908c } /* Comment.Preproc */
+.highlight .c1 { color: #8e908c } /* Comment.Single */
+.highlight .cs { color: #8e908c } /* Comment.Special */
+.highlight .gd { color: #c82829 } /* Generic.Deleted */
+.highlight .ge { font-style: italic } /* Generic.Emph */
+.highlight .gh { color: #4d4d4c; font-weight: bold } /* Generic.Heading */
+.highlight .gi { color: #718c00 } /* Generic.Inserted */
+.highlight .gp { color: #8e908c; font-weight: bold } /* Generic.Prompt */
+.highlight .gs { font-weight: bold } /* Generic.Strong */
+.highlight .gu { color: #3e999f; font-weight: bold } /* Generic.Subheading */
+.highlight .kc { color: #8959a8 } /* Keyword.Constant */
+.highlight .kd { color: #8959a8 } /* Keyword.Declaration */
+.highlight .kn { color: #3e999f } /* Keyword.Namespace */
+.highlight .kp { color: #8959a8 } /* Keyword.Pseudo */
+.highlight .kr { color: #8959a8 } /* Keyword.Reserved */
+.highlight .kt { color: #eab700 } /* Keyword.Type */
+.highlight .ld { color: #718c00 } /* Literal.Date */
+.highlight .m { color: #f5871f } /* Literal.Number */
+.highlight .s { color: #718c00 } /* Literal.String */
+.highlight .na { color: #4271ae } /* Name.Attribute */
+.highlight .nb { color: #4d4d4c } /* Name.Builtin */
+.highlight .nc { color: #eab700 } /* Name.Class */
+.highlight .no { color: #c82829 } /* Name.Constant */
+.highlight .nd { color: #3e999f } /* Name.Decorator */
+.highlight .ni { color: #4d4d4c } /* Name.Entity */
+.highlight .ne { color: #c82829 } /* Name.Exception */
+.highlight .nf { color: #4271ae } /* Name.Function */
+.highlight .nl { color: #4d4d4c } /* Name.Label */
+.highlight .nn { color: #eab700 } /* Name.Namespace */
+.highlight .nx { color: #4271ae } /* Name.Other */
+.highlight .py { color: #4d4d4c } /* Name.Property */
+.highlight .nt { color: #3e999f } /* Name.Tag */
+.highlight .nv { color: #c82829 } /* Name.Variable */
+.highlight .ow { color: #3e999f } /* Operator.Word */
+.highlight .w { color: #4d4d4c } /* Text.Whitespace */
+.highlight .mf { color: #f5871f } /* Literal.Number.Float */
+.highlight .mh { color: #f5871f } /* Literal.Number.Hex */
+.highlight .mi { color: #f5871f } /* Literal.Number.Integer */
+.highlight .mo { color: #f5871f } /* Literal.Number.Oct */
+.highlight .sb { color: #718c00 } /* Literal.String.Backtick */
+.highlight .sc { color: #4d4d4c } /* Literal.String.Char */
+.highlight .sd { color: #8e908c } /* Literal.String.Doc */
+.highlight .s2 { color: #718c00 } /* Literal.String.Double */
+.highlight .se { color: #f5871f } /* Literal.String.Escape */
+.highlight .sh { color: #718c00 } /* Literal.String.Heredoc */
+.highlight .si { color: #f5871f } /* Literal.String.Interpol */
+.highlight .sx { color: #718c00 } /* Literal.String.Other */
+.highlight .sr { color: #718c00 } /* Literal.String.Regex */
+.highlight .s1 { color: #718c00 } /* Literal.String.Single */
+.highlight .ss { color: #718c00 } /* Literal.String.Symbol */
+.highlight .bp { color: #4d4d4c } /* Name.Builtin.Pseudo */
+.highlight .vc { color: #c82829 } /* Name.Variable.Class */
+.highlight .vg { color: #c82829 } /* Name.Variable.Global */
+.highlight .vi { color: #c82829 } /* Name.Variable.Instance */
+.highlight .il { color: #f5871f } /* Literal.Number.Integer.Long */
diff --git a/_sass/_type.scss b/_sass/_type.scss
new file mode 100644
index 0000000..d864184
--- /dev/null
+++ b/_sass/_type.scss
@@ -0,0 +1,96 @@
+@import url(http://fonts.googleapis.com/css?family=Bitter:400,700);
+
+body {
+  font-family:$font-family;
+  font-size:$font-size;
+  line-height:$line-height;
+  color:$text-color;
+}
+
+h1, h2, h3, nav, .version, .version-menu, .buttons {
+  font-family: Bitter, $font-family;
+  line-height:1;
+}
+
+h1, h2, h3, h4, h5 {
+  color:$headline-color;
+}
+
+h2 {
+  font-size:$font-size * 2;
+  margin-top:$spacing-unit;
+
+  span {
+    color:#aaa;
+  }
+
+  &:first-child {
+    margin-top:0;
+  }
+}
+
+h3 {
+  font-size:$font-size * 1.2;
+}
+
+h4 {
+  font-weight:500;
+  color:#999;
+}
+
+h5 {
+  border-bottom:1px solid #ededed;
+  padding:0 0 $spacing-unit/4;
+  margin:0 0 $spacing-unit/3;
+}
+
+.version, .version-menu {
+  font-size:$font-size*0.8;
+}
+
+strong {
+  font-weight:bold;
+  color:#222;
+}
+
+a {
+  text-decoration:none;
+  color:$key-color;
+
+  span {
+    color:#aaa;
+  }
+
+  &:hover {
+    color:darken($key-color, 20%);
+
+    span {
+      color:#727272;
+    }
+  }
+}
+
+.outline {
+  font-weight:500;
+
+  a {
+    color:$text-color;
+
+    &:hover {
+      color:$headline-color;
+    }
+
+    &.selected {
+      color:$key-color;
+    }
+  }
+}
+
+code {
+  font-family:Consolas, 'Liberation Mono', Menlo, Courier, monospace;
+  background:#f8f8f8;
+  padding:4px;
+  border:1px solid #ededed;
+  border-radius:3px;
+  font-size:13px;
+}
diff --git a/api-viewer/Gruntfile.coffee b/api-viewer/Gruntfile.coffee
deleted file mode 100644
index 18bc9bf..0000000
--- a/api-viewer/Gruntfile.coffee
+++ /dev/null
@@ -1,6 +0,0 @@
-module.exports = ->
-  @loadTasks "build/tasks"
-
-  @registerTask "default", [
-    "requirejs"
-  ]
diff --git a/api-viewer/README.md b/api-viewer/README.md
deleted file mode 100644
index e69de29..0000000
diff --git a/api-viewer/bower.json b/api-viewer/bower.json
deleted file mode 100644
index b4bee49..0000000
--- a/api-viewer/bower.json
+++ /dev/null
@@ -1,12 +0,0 @@
-{
-  "name": "api-viewer",
-  "versions": "0.1.0",
-  "dependencies": {
-    "combyne-amd-loader": "~0.1.0",
-    "requirejs": "~2.1.13",
-    "webapp": "git@github.com:webapp/library.git"
-  },
-  "devDependencies": {
-    "almond": "~0.2.9"
-  }
-}
diff --git a/api-viewer/build/tasks/requirejs.coffee b/api-viewer/build/tasks/requirejs.coffee
deleted file mode 100644
index bf0b8db..0000000
--- a/api-viewer/build/tasks/requirejs.coffee
+++ /dev/null
@@ -1,17 +0,0 @@
-module.exports = ->
-  @loadNpmTasks "grunt-contrib-requirejs"
-
-  @config "requirejs",
-    release:
-      options:
-        mainConfigFile: "src/config.js"
-        baseUrl: "src"
-        include: ["webapp/config"]
-        insertRequire: ["./index"]
-        findNestedDependencies: true
-        out: "dist/source.min.js"
-        optimize: "uglify2"
-        name: "almond"
-        wrap: true
-        paths:
-          "almond": "../bower_components/almond/almond"
diff --git a/api-viewer/dist/source.min.js b/api-viewer/dist/source.min.js
deleted file mode 100644
index 2752c5f..0000000
--- a/api-viewer/dist/source.min.js
+++ /dev/null
@@ -1,7 +0,0 @@
-/**
- * @license almond 0.2.9 Copyright (c) 2011-2014, The Dojo Foundation All Rights Reserved.
- * Available via the MIT or new BSD license.
- * see: http://github.com/jrburke/almond for details
- */
-
-!function(){var n,e,i;!function(r){function t(n,e){return v.call(n,e)}function o(n,e){var i,r,t,o,c,s,f,u,l,p,a,d=e&&e.split("/"),m=j.map,g=m&&m["*"]||{};if(n&&"."===n.charAt(0))if(e){for(d=d.slice(0,d.length-1),n=n.split("/"),c=n.length-1,j.nodeIdCompat&&x.test(n[c])&&(n[c]=n[c].replace(x,"")),n=d.concat(n),l=0;l0&&(n.splice(l-1,2),l-=2)}n=n.join("/")}else 0===n.indexOf("./")&&(n=n.substring(2));if((d||g)&&m){for(i=n.split("/"),l=i.length;l>0;l-=1){if(r=i.slice(0,l).join("/"),d)for(p=d.length;p>0;p-=1)if(t=m[d.slice(0,p).join("/")],t&&(t=t[r])){o=t,s=l;break}if(o)break;!f&&g&&g[r]&&(f=g[r],u=l)}!o&&f&&(o=f,s=u),o&&(i.splice(0,s,o),n=i.join("/"))}return n}function c(n,e){return function(){return d.apply(r,w.call(arguments,0).concat([n,e]))}}function s(n){return function(e){return o(e,n)}}function f(n){return function(e){h[n]=e}}function u(n){if(t(b,n)){var e=b[n];delete b[n],y[n]=!0,a.apply(r,e)}if(!t(h,n)&&!t(y,n))throw new Error("No "+n);return h[n]}function l(n){var e,i=n?n.indexOf("!"):-1;return i>-1&&(e=n.substring(0,i),n=n.substring(i+1,n.length)),[e,n]}function p(n){return function(){return j&&j.config&&j.config[n]||{}}}var a,d,m,g,h={},b={},j={},y={},v=Object.prototype.hasOwnProperty,w=[].slice,x=/\.js$/;m=function(n,e){var i,r=l(n),t=r[0];return n=r[1],t&&(t=o(t,e),i=u(t)),t?n=i&&i.normalize?i.normalize(n,s(e)):o(n,e):(n=o(n,e),r=l(n),t=r[0],n=r[1],t&&(i=u(t))),{f:t?t+"!"+n:n,n:n,pr:t,p:i}},g={require:function(n){return c(n)},exports:function(n){var e=h[n];return"undefined"!=typeof e?e:h[n]={}},module:function(n){return{id:n,uri:"",exports:h[n],config:p(n)}}},a=function(n,e,i,o){var s,l,p,a,d,j,v=[],w=typeof i;if(o=o||n,"undefined"===w||"function"===w){for(e=!e.length&&i.length?["require","exports","module"]:e,d=0;d
-
-
-   
-   
-  API Viewer 
-
-
-   
-
-  
-  
-
-
diff --git a/api-viewer/package.json b/api-viewer/package.json
deleted file mode 100644
index 5e76867..0000000
--- a/api-viewer/package.json
+++ /dev/null
@@ -1,7 +0,0 @@
-{
-  "name": "api-viewer",
-  "devDependencies": {
-    "grunt": "^0.4.5",
-    "grunt-contrib-requirejs": "^0.4.4"
-  }
-}
diff --git a/api-viewer/src/components/api-list/api-list.js b/api-viewer/src/components/api-list/api-list.js
deleted file mode 100644
index 87e5b74..0000000
--- a/api-viewer/src/components/api-list/api-list.js
+++ /dev/null
@@ -1,20 +0,0 @@
-define(function(require, exports, module) {
-  "use strict";
-
-  var Component = require("webapp/component");
-  var template = require("template!./template");
-
-  var ApiList = Component.extend({
-    template: template,
-
-    initialize: function() {
-      this.channel.subscribe(this.render, this);
-    },
-
-    afterRender: function() {
-      console.log("here");
-    }
-  });
-
-  module.exports = ApiList;
-});
diff --git a/api-viewer/src/components/api-list/template.html b/api-viewer/src/components/api-list/template.html
deleted file mode 100644
index c27e7da..0000000
--- a/api-viewer/src/components/api-list/template.html
+++ /dev/null
@@ -1,7 +0,0 @@
-
-{%each%}
-  
-    {{jsClassName}} 
-   
-{%endeach%}
- 
diff --git a/api-viewer/src/components/api-viewer/api-viewer.js b/api-viewer/src/components/api-viewer/api-viewer.js
deleted file mode 100644
index 74f2864..0000000
--- a/api-viewer/src/components/api-viewer/api-viewer.js
+++ /dev/null
@@ -1,32 +0,0 @@
-define(function(require, exports, module) {
-  "use strict";
-
-  var $ = require("jquery");
-  var Component = require("webapp/component");
-  var Channel = require("webapp/channel");
-  var ApiList = require("../api-list/api-list");
-  var template = require("template!./template");
-
-  Component.register(ApiList, "api-list");
-
-  var ApiViewer = Component.extend({
-    template: template,
-    channel: "api-viewer",
-
-    afterRender: function() {
-      ApiList.activateAll(this.$el);
-    },
-
-    getApi: function(version) {
-      return $.getJSON("/api-viewer/versions/" + version + ".json");
-    },
-
-    initialize: function() {
-      this.channel.subscribe("version", function(value) {
-        this.getApi(value).then(this.channel.publish.bind(this.channel));
-      }, this);
-    }
-  });
-
-  module.exports = ApiViewer;
-});
diff --git a/api-viewer/src/components/api-viewer/template.html b/api-viewer/src/components/api-viewer/template.html
deleted file mode 100644
index cd7b724..0000000
--- a/api-viewer/src/components/api-viewer/template.html
+++ /dev/null
@@ -1 +0,0 @@
- 
diff --git a/api-viewer/src/config.js b/api-viewer/src/config.js
deleted file mode 100644
index 4d12a3a..0000000
--- a/api-viewer/src/config.js
+++ /dev/null
@@ -1,15 +0,0 @@
-require.config({
-  packages: [{
-    "name": "webapp",
-    "main": "index.js",
-    "location": "../bower_components/webapp/lib"
-  }],
-
-  paths: {
-    "bower_components": "../bower_components",
-    "combyne": "../bower_components/combyne/dist/combyne",
-    "template": "../bower_components/combyne-amd-loader/loader"
-  },
-
-  deps: ["webapp/config"]
-});
diff --git a/api-viewer/src/index.js b/api-viewer/src/index.js
deleted file mode 100644
index ea3ebc2..0000000
--- a/api-viewer/src/index.js
+++ /dev/null
@@ -1,23 +0,0 @@
-define(function(require, exports, module) {
-  "use strict";
-
-  require("webapp/config");
-
-  var Component = require("webapp/component");
-  var ApiViewer = require("./components/api-viewer/api-viewer");
-
-  Component.configure({
-    fetchTemplate: function(template) {
-      return template;
-    },
-   
-    renderTemplate: function(template, context) {
-      return template.render(context);
-    }
-  });
-
-  // Register the components for this application.
-  Component.register(ApiViewer, "api-viewer").activateAll();
-
-  module.exports = ApiViewer;
-});
diff --git a/api-viewer/versions/wip.json b/api-viewer/versions/wip.json
deleted file mode 100644
index c012028..0000000
--- a/api-viewer/versions/wip.json
+++ /dev/null
@@ -1,29579 +0,0 @@
-[
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "attr.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": null,
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": null,
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "values",
-            "type": "const char *",
-            "comment": null,
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "attr",
-        "cFunctionName": "git_attr_add_macro",
-        "cppFunctionName": "AddMacro",
-        "jsFunctionName": "addMacro",
-        "cppClassName": "GitAttr"
-      },
-      {
-        "type": "function",
-        "file": "attr.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": null,
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "attr",
-        "cFunctionName": "git_attr_cache_flush",
-        "cppFunctionName": "CacheFlush",
-        "jsFunctionName": "cacheFlush",
-        "cppClassName": "GitAttr"
-      },
-      {
-        "type": "function",
-        "file": "attr.h",
-        "args": [
-          {
-            "name": "value_out",
-            "type": "const char **",
-            "comment": "Output of the value of the attribute.  Use the GIT_ATTR_...\n             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just\n             use the string value for attributes set to a value.  You\n             should NOT modify or free this value.",
-            "cType": "const char **",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository containing the path.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "flags",
-            "type": "uint32_t",
-            "comment": "A combination of GIT_ATTR_CHECK... flags.",
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "The path to check for attributes.  Relative paths are\n             interpreted relative to the repo root.  The file does\n             not have to exist, but if it does not, then it will be\n             treated as a plain file (not a directory).",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The name of the attribute to look up.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "attr",
-        "cFunctionName": "git_attr_get",
-        "cppFunctionName": "Get",
-        "jsFunctionName": "get",
-        "isAsync": true,
-        "cppClassName": "GitAttr"
-      },
-      {
-        "type": "function",
-        "file": "attr.h",
-        "args": [
-          {
-            "name": "values_out",
-            "type": "const char **",
-            "comment": "An array of num_attr entries that will have string\n             pointers written into it for the values of the attributes.\n             You should not modify or free the values that are written\n             into this array (although of course, you should free the\n             array itself if you allocated it).",
-            "cType": "const char **",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository containing the path.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "flags",
-            "type": "uint32_t",
-            "comment": "A combination of GIT_ATTR_CHECK... flags.",
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "The path inside the repo to check attributes.  This\n             does not have to exist, but if it does not, then\n             it will be treated as a plain file (i.e. not a directory).",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "num_attr",
-            "type": "size_t",
-            "comment": "The number of attributes being looked up",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "names",
-            "type": "const char **",
-            "comment": "An array of num_attr strings containing attribute names.",
-            "cType": "const char **",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "attr",
-        "cFunctionName": "git_attr_get_many",
-        "cppFunctionName": "GetMany",
-        "jsFunctionName": "getMany",
-        "cppClassName": "GitAttr"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "attr",
-    "cppClassName": "GitAttr",
-    "jsClassName": "Attr",
-    "filename": "attr",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "attr"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "blame.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_blame **",
-            "comment": "pointer that will receive the resulting blame data",
-            "cType": "git_blame **",
-            "cppClassName": "GitBlame",
-            "jsClassName": "Blame",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "reference",
-            "type": "git_blame *",
-            "comment": "cached blame from the history of the file (usually the output\n                  from git_blame_file)",
-            "cType": "git_blame *",
-            "cppClassName": "GitBlame",
-            "jsClassName": "Blame",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "buffer",
-            "type": "const char *",
-            "comment": "the (possibly) modified contents of the file",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "buffer_len",
-            "type": "size_t",
-            "comment": "number of valid bytes in the buffer",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or an error code. (use giterr_last for information\n         about the error)",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blame",
-        "cFunctionName": "git_blame_buffer",
-        "cppFunctionName": "Buffer",
-        "jsFunctionName": "buffer",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitBlame"
-      },
-      {
-        "type": "function",
-        "file": "blame.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_blame **",
-            "comment": "pointer that will receive the blame object",
-            "cType": "git_blame **",
-            "cppClassName": "GitBlame",
-            "jsClassName": "Blame",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository whose history is to be walked",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "path to file to consider",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "options",
-            "type": "git_blame_options *",
-            "comment": "options for the blame operation.  If NULL, this is treated as\n                though GIT_BLAME_OPTIONS_INIT were passed.",
-            "cType": "git_blame_options *",
-            "cppClassName": "GitBlameOptions",
-            "jsClassName": "BlameOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or an error code. (use giterr_last for information\n         about the error.)",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blame",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_blame_file-2"
-          ]
-        },
-        "cFunctionName": "git_blame_file",
-        "cppFunctionName": "File",
-        "jsFunctionName": "file",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitBlame"
-      },
-      {
-        "type": "function",
-        "file": "blame.h",
-        "args": [
-          {
-            "name": "blame",
-            "type": "git_blame *",
-            "comment": "the blame structure to query",
-            "cType": "git_blame *",
-            "cppClassName": "GitBlame",
-            "jsClassName": "Blame",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "index",
-            "type": "uint32_t",
-            "comment": "index of the hunk to retrieve",
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_blame_hunk *",
-          "comment": " the hunk at the given index, or NULL on error",
-          "cType": "const git_blame_hunk *",
-          "cppClassName": "GitBlameHunk",
-          "jsClassName": "BlameHunk",
-          "isLibgitType": true,
-          "isEnum": false,
-          "fields": {
-            "boundary": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blame",
-        "cFunctionName": "git_blame_get_hunk_byindex",
-        "cppFunctionName": "GetHunkByindex",
-        "jsFunctionName": "getHunkByindex",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitBlame"
-      },
-      {
-        "type": "function",
-        "file": "blame.h",
-        "args": [
-          {
-            "name": "blame",
-            "type": "git_blame *",
-            "comment": "the blame structure to query",
-            "cType": "git_blame *",
-            "cppClassName": "GitBlame",
-            "jsClassName": "Blame",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "lineno",
-            "type": "uint32_t",
-            "comment": "the (1-based) line number to find a hunk for",
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_blame_hunk *",
-          "comment": " the hunk that contains the given line, or NULL on error",
-          "cType": "const git_blame_hunk *",
-          "cppClassName": "GitBlameHunk",
-          "jsClassName": "BlameHunk",
-          "isLibgitType": true,
-          "isEnum": false,
-          "fields": {
-            "boundary": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blame",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_blame_get_hunk_byline-1"
-          ]
-        },
-        "cFunctionName": "git_blame_get_hunk_byline",
-        "cppFunctionName": "GetHunkByline",
-        "jsFunctionName": "getHunkByline",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitBlame"
-      },
-      {
-        "type": "function",
-        "file": "blame.h",
-        "args": [
-          {
-            "name": "blame",
-            "type": "git_blame *",
-            "comment": null,
-            "cType": "git_blame *",
-            "cppClassName": "GitBlame",
-            "jsClassName": "Blame",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "uint32_t",
-          "comment": null,
-          "cType": "uint32_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blame",
-        "cFunctionName": "git_blame_get_hunk_count",
-        "cppFunctionName": "GetHunkCount",
-        "jsFunctionName": "getHunkCount",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitBlame"
-      },
-      {
-        "type": "function",
-        "file": "blame.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_blame_options *",
-            "comment": "The `git_blame_options` struct to initialize",
-            "cType": "git_blame_options *",
-            "cppClassName": "GitBlameOptions",
-            "jsClassName": "BlameOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "Version of struct; pass `GIT_BLAME_OPTIONS_VERSION`",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blame",
-        "cFunctionName": "git_blame_init_options",
-        "cppFunctionName": "InitOptions",
-        "jsFunctionName": "initOptions",
-        "cppClassName": "GitBlame"
-      }
-    ],
-    "type": "class",
-    "cType": "git_blame",
-    "typeName": "blame",
-    "cppClassName": "GitBlame",
-    "jsClassName": "Blame",
-    "filename": "blame",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/blame.h",
-      "../include/repository.h",
-      "../include/blame_options.h",
-      "../include/blame_hunk.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "freeFunctionName": "git_blame_free",
-    "name": "blame"
-  },
-  {
-    "typeName": "blame_flag",
-    "type": "enum",
-    "cType": "git_blame_flag_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_BLAME_NORMAL",
-        "value": 0,
-        "JsName": "NORMAL"
-      },
-      {
-        "name": "GIT_BLAME_TRACK_COPIES_SAME_FILE",
-        "value": 1,
-        "JsName": "TRACK_COPIES_SAME_FILE"
-      },
-      {
-        "name": "GIT_BLAME_TRACK_COPIES_SAME_COMMIT_MOVES",
-        "value": 2,
-        "JsName": "TRACK_COPIES_SAME_COMMIT_MOVES"
-      },
-      {
-        "name": "GIT_BLAME_TRACK_COPIES_SAME_COMMIT_COPIES",
-        "value": 4,
-        "JsName": "TRACK_COPIES_SAME_COMMIT_COPIES"
-      },
-      {
-        "name": "GIT_BLAME_TRACK_COPIES_ANY_COMMIT_COPIES",
-        "value": 8,
-        "JsName": "TRACK_COPIES_ANY_COMMIT_COPIES"
-      },
-      {
-        "name": "GIT_BLAME_FIRST_PARENT",
-        "value": 16,
-        "JsName": "FIRST_PARENT"
-      }
-    ],
-    "owner": "Blame",
-    "JsName": "FLAG"
-  },
-  {
-    "type": "class",
-    "value": "git_blame_hunk",
-    "file": "blame.h",
-    "fields": [
-      {
-        "type": "uint16_t",
-        "name": "lines_in_hunk",
-        "cType": "uint16_t",
-        "cppFunctionName": "LinesInHunk",
-        "jsFunctionName": "linesInHunk",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_oid",
-        "name": "final_commit_id",
-        "cType": "git_oid",
-        "cppFunctionName": "FinalCommitId",
-        "jsFunctionName": "finalCommitId",
-        "cppClassName": "GitOid",
-        "jsClassName": "Oid",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "shouldAlloc": true,
-        "functions": {
-          "git_oid_cpy": {
-            "ignore": true
-          },
-          "git_oid_fmt": {
-            "ignore": true
-          },
-          "git_oid_fromraw": {
-            "ignore": true
-          },
-          "git_oid_fromstr": {
-            "jsFunctionName": "fromString",
-            "isAsync": false
-          },
-          "git_oid_fromstrn": {
-            "ignore": true
-          },
-          "git_oid_fromstrp": {
-            "ignore": true
-          },
-          "git_oid_nfmt": {
-            "ignore": true
-          },
-          "git_oid_pathfmt": {
-            "ignore": true
-          },
-          "git_oid_shorten_add": {
-            "ignore": true
-          },
-          "git_oid_shorten_free": {
-            "ignore": true
-          },
-          "git_oid_shorten_new": {
-            "ignore": true
-          },
-          "git_oid_tostr": {
-            "ignore": true,
-            "jsFunctionName": "toString"
-          }
-        },
-        "fields": {
-          "id": {
-            "ignore": true
-          }
-        }
-      },
-      {
-        "type": "uint16_t",
-        "name": "final_start_line_number",
-        "cType": "uint16_t",
-        "cppFunctionName": "FinalStartLineNumber",
-        "jsFunctionName": "finalStartLineNumber",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_signature *",
-        "name": "final_signature",
-        "cType": "git_signature *",
-        "cppFunctionName": "FinalSignature",
-        "jsFunctionName": "finalSignature",
-        "cppClassName": "GitSignature",
-        "jsClassName": "Signature",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "functions": {
-          "git_signature_new": {
-            "isAsync": false
-          }
-        }
-      },
-      {
-        "type": "git_oid",
-        "name": "orig_commit_id",
-        "cType": "git_oid",
-        "cppFunctionName": "OrigCommitId",
-        "jsFunctionName": "origCommitId",
-        "cppClassName": "GitOid",
-        "jsClassName": "Oid",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "shouldAlloc": true,
-        "functions": {
-          "git_oid_cpy": {
-            "ignore": true
-          },
-          "git_oid_fmt": {
-            "ignore": true
-          },
-          "git_oid_fromraw": {
-            "ignore": true
-          },
-          "git_oid_fromstr": {
-            "jsFunctionName": "fromString",
-            "isAsync": false
-          },
-          "git_oid_fromstrn": {
-            "ignore": true
-          },
-          "git_oid_fromstrp": {
-            "ignore": true
-          },
-          "git_oid_nfmt": {
-            "ignore": true
-          },
-          "git_oid_pathfmt": {
-            "ignore": true
-          },
-          "git_oid_shorten_add": {
-            "ignore": true
-          },
-          "git_oid_shorten_free": {
-            "ignore": true
-          },
-          "git_oid_shorten_new": {
-            "ignore": true
-          },
-          "git_oid_tostr": {
-            "ignore": true,
-            "jsFunctionName": "toString"
-          }
-        },
-        "fields": {
-          "id": {
-            "ignore": true
-          }
-        }
-      },
-      {
-        "type": "const char *",
-        "name": "orig_path",
-        "cType": "const char *",
-        "cppFunctionName": "OrigPath",
-        "jsFunctionName": "origPath",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint16_t",
-        "name": "orig_start_line_number",
-        "cType": "uint16_t",
-        "cppFunctionName": "OrigStartLineNumber",
-        "jsFunctionName": "origStartLineNumber",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_signature *",
-        "name": "orig_signature",
-        "cType": "git_signature *",
-        "cppFunctionName": "OrigSignature",
-        "jsFunctionName": "origSignature",
-        "cppClassName": "GitSignature",
-        "jsClassName": "Signature",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "functions": {
-          "git_signature_new": {
-            "isAsync": false
-          }
-        }
-      }
-    ],
-    "used": {
-      "returns": [
-        "git_blame_get_hunk_byindex",
-        "git_blame_get_hunk_byline"
-      ],
-      "needs": []
-    },
-    "typeName": "blame_hunk",
-    "cType": "git_blame_hunk",
-    "functions": [],
-    "cppClassName": "GitBlameHunk",
-    "jsClassName": "BlameHunk",
-    "filename": "blame_hunk",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/oid.h",
-      "../include/signature.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "blame_hunk"
-  },
-  {
-    "type": "struct",
-    "value": "git_blame_options",
-    "file": "blame.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint32_t",
-        "name": "flags",
-        "cType": "uint32_t",
-        "cppFunctionName": "Flags",
-        "jsFunctionName": "flags",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint16_t",
-        "name": "min_match_characters",
-        "cType": "uint16_t",
-        "cppFunctionName": "MinMatchCharacters",
-        "jsFunctionName": "minMatchCharacters",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_oid",
-        "name": "newest_commit",
-        "cType": "git_oid",
-        "cppFunctionName": "NewestCommit",
-        "jsFunctionName": "newestCommit",
-        "cppClassName": "GitOid",
-        "jsClassName": "Oid",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "shouldAlloc": true,
-        "functions": {
-          "git_oid_cpy": {
-            "ignore": true
-          },
-          "git_oid_fmt": {
-            "ignore": true
-          },
-          "git_oid_fromraw": {
-            "ignore": true
-          },
-          "git_oid_fromstr": {
-            "jsFunctionName": "fromString",
-            "isAsync": false
-          },
-          "git_oid_fromstrn": {
-            "ignore": true
-          },
-          "git_oid_fromstrp": {
-            "ignore": true
-          },
-          "git_oid_nfmt": {
-            "ignore": true
-          },
-          "git_oid_pathfmt": {
-            "ignore": true
-          },
-          "git_oid_shorten_add": {
-            "ignore": true
-          },
-          "git_oid_shorten_free": {
-            "ignore": true
-          },
-          "git_oid_shorten_new": {
-            "ignore": true
-          },
-          "git_oid_tostr": {
-            "ignore": true,
-            "jsFunctionName": "toString"
-          }
-        },
-        "fields": {
-          "id": {
-            "ignore": true
-          }
-        }
-      },
-      {
-        "type": "git_oid",
-        "name": "oldest_commit",
-        "cType": "git_oid",
-        "cppFunctionName": "OldestCommit",
-        "jsFunctionName": "oldestCommit",
-        "cppClassName": "GitOid",
-        "jsClassName": "Oid",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "shouldAlloc": true,
-        "functions": {
-          "git_oid_cpy": {
-            "ignore": true
-          },
-          "git_oid_fmt": {
-            "ignore": true
-          },
-          "git_oid_fromraw": {
-            "ignore": true
-          },
-          "git_oid_fromstr": {
-            "jsFunctionName": "fromString",
-            "isAsync": false
-          },
-          "git_oid_fromstrn": {
-            "ignore": true
-          },
-          "git_oid_fromstrp": {
-            "ignore": true
-          },
-          "git_oid_nfmt": {
-            "ignore": true
-          },
-          "git_oid_pathfmt": {
-            "ignore": true
-          },
-          "git_oid_shorten_add": {
-            "ignore": true
-          },
-          "git_oid_shorten_free": {
-            "ignore": true
-          },
-          "git_oid_shorten_new": {
-            "ignore": true
-          },
-          "git_oid_tostr": {
-            "ignore": true,
-            "jsFunctionName": "toString"
-          }
-        },
-        "fields": {
-          "id": {
-            "ignore": true
-          }
-        }
-      },
-      {
-        "type": "uint32_t",
-        "name": "min_line",
-        "cType": "uint32_t",
-        "cppFunctionName": "MinLine",
-        "jsFunctionName": "minLine",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint32_t",
-        "name": "max_line",
-        "cType": "uint32_t",
-        "cppFunctionName": "MaxLine",
-        "jsFunctionName": "maxLine",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_blame_file",
-        "git_blame_init_options"
-      ]
-    },
-    "typeName": "blame_options",
-    "cType": "git_blame_options",
-    "functions": [],
-    "cppClassName": "GitBlameOptions",
-    "jsClassName": "BlameOptions",
-    "filename": "blame_options",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/oid.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "blame_options"
-  },
-  {
-    "type": "class",
-    "value": "git_blob",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_blob_filtered_content",
-        "git_blob_free",
-        "git_blob_id",
-        "git_blob_is_binary",
-        "git_blob_lookup",
-        "git_blob_lookup_prefix",
-        "git_blob_owner",
-        "git_blob_rawcontent",
-        "git_blob_rawsize",
-        "git_diff_blob_to_buffer",
-        "git_diff_blobs",
-        "git_filter_list_apply_to_blob",
-        "git_filter_list_load",
-        "git_patch_from_blob_and_buffer",
-        "git_patch_from_blobs"
-      ]
-    },
-    "typeName": "blob",
-    "cType": "git_blob",
-    "functions": [
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "git_oid *",
-            "comment": "return the id of the written blob",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository where to blob will be written",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "buffer",
-            "type": "const void *",
-            "comment": "data to be written into the blob",
-            "cType": "const void *",
-            "cppClassName": "Buffer",
-            "jsClassName": "Buffer",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "len",
-            "type": "size_t",
-            "comment": "length of the data",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "cFunctionName": "git_blob_create_frombuffer",
-        "cppFunctionName": "CreateFrombuffer",
-        "jsFunctionName": "createFrombuffer",
-        "cppClassName": "GitBlob"
-      },
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "git_oid *",
-            "comment": "return the id of the written blob",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository where the blob will be written.\n\tthis repository can be bare or not",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "file from which the blob will be created",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "cFunctionName": "git_blob_create_fromdisk",
-        "cppFunctionName": "CreateFromdisk",
-        "jsFunctionName": "createFromdisk",
-        "cppClassName": "GitBlob"
-      },
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "git_oid *",
-            "comment": "return the id of the written blob",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository where the blob will be written.\n\tthis repository cannot be bare",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "relative_path",
-            "type": "const char *",
-            "comment": "file from which the blob will be created,\n\trelative to the repository's working dir",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "cFunctionName": "git_blob_create_fromworkdir",
-        "cppFunctionName": "CreateFromworkdir",
-        "jsFunctionName": "createFromworkdir",
-        "cppClassName": "GitBlob"
-      },
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "blob",
-            "type": "const git_blob *",
-            "comment": "a previously loaded blob.",
-            "cType": "const git_blob *",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " SHA1 hash for this blob.",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "cFunctionName": "git_blob_id",
-        "cppFunctionName": "Id",
-        "jsFunctionName": "id",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitBlob"
-      },
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "blob",
-            "type": "const git_blob *",
-            "comment": "The blob which content should be analyzed",
-            "cType": "const git_blob *",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the content of the blob is detected\n as binary; 0 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "cFunctionName": "git_blob_is_binary",
-        "cppFunctionName": "IsBinary",
-        "jsFunctionName": "isBinary",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitBlob"
-      },
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "blob",
-            "type": "git_blob **",
-            "comment": "pointer to the looked up blob",
-            "cType": "git_blob **",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repo to use when locating the blob.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "identity of the blob to locate.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_blob_lookup-4"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_blob_lookup-1"
-          ]
-        },
-        "cFunctionName": "git_blob_lookup",
-        "cppFunctionName": "Lookup",
-        "jsFunctionName": "lookup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitBlob"
-      },
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "blob",
-            "type": "git_blob **",
-            "comment": "pointer to the looked up blob",
-            "cType": "git_blob **",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repo to use when locating the blob.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "identity of the blob to locate.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "len",
-            "type": "size_t",
-            "comment": "the length of the short identifier",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "cFunctionName": "git_blob_lookup_prefix",
-        "cppFunctionName": "LookupPrefix",
-        "jsFunctionName": "lookupPrefix",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitBlob"
-      },
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "blob",
-            "type": "const git_blob *",
-            "comment": "A previously loaded blob.",
-            "cType": "const git_blob *",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " Repository that contains this blob.",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "cFunctionName": "git_blob_owner",
-        "cppFunctionName": "Owner",
-        "jsFunctionName": "owner",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitBlob"
-      },
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "blob",
-            "type": "const git_blob *",
-            "comment": "pointer to the blob",
-            "cType": "const git_blob *",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const void *",
-          "comment": " the pointer",
-          "cType": "const void *",
-          "cppClassName": "Wrapper",
-          "jsClassName": "Buffer",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_blob_rawcontent-6"
-          ],
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_blob_rawcontent-1"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_blob_rawcontent-2"
-          ]
-        },
-        "cFunctionName": "git_blob_rawcontent",
-        "cppFunctionName": "Rawcontent",
-        "jsFunctionName": "rawcontent",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitBlob"
-      },
-      {
-        "type": "function",
-        "file": "blob.h",
-        "args": [
-          {
-            "name": "blob",
-            "type": "const git_blob *",
-            "comment": "pointer to the blob",
-            "cType": "const git_blob *",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_off_t",
-          "comment": " size on bytes",
-          "cType": "git_off_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "blob",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_blob_rawsize-7"
-          ],
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_blob_rawsize-2"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_blob_rawsize-3",
-            "ex/v0.21.2/general.html#git_blob_rawsize-4"
-          ]
-        },
-        "cFunctionName": "git_blob_rawsize",
-        "cppFunctionName": "Rawsize",
-        "jsFunctionName": "rawsize",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitBlob"
-      }
-    ],
-    "cppClassName": "GitBlob",
-    "jsClassName": "Blob",
-    "filename": "blob",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/wrapper.h",
-      "node_buffer.h",
-      "../include/oid.h",
-      "../include/repository.h",
-      "../include/blob.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_blob_free",
-    "name": "blob"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "Pointer where to store the underlying reference.",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": null,
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "branch_name",
-            "type": "const char *",
-            "comment": "Name for the branch; this name is\n validated for consistency. It should also not conflict with\n an already existing branch name.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "target",
-            "type": "const git_commit *",
-            "comment": "Commit to which this branch should point. This object\n must belong to the given `repo`.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing branch.",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false,
-            "isOptional": true
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false,
-            "isOptional": true
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog.\n If NULL, the default is \"Branch: created\"; if you want something more\n useful, provide a message.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false,
-            "isOptional": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, GIT_EINVALIDSPEC or an error code.\n A proper reference is written in the refs/heads namespace\n pointing to the provided target commit.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_create",
-        "cppFunctionName": "Create",
-        "jsFunctionName": "create",
-        "isAsync": true,
-        "cppClassName": "GitBranch"
-      },
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "branch",
-            "type": "git_reference *",
-            "comment": "A valid reference representing a branch",
-            "cType": "git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or an error code.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_delete",
-        "cppFunctionName": "Delete",
-        "jsFunctionName": "delete",
-        "cppClassName": "GitBranch"
-      },
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "branch",
-            "type": "const git_reference *",
-            "comment": "Current underlying reference of the branch.",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if HEAD points at the branch, 0 if it isn't,\n error code otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_is_head",
-        "cppFunctionName": "IsHead",
-        "jsFunctionName": "isHead",
-        "cppClassName": "GitBranch"
-      },
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "iter",
-            "type": "git_branch_iterator *",
-            "comment": "the iterator to free",
-            "cType": "git_branch_iterator *",
-            "cppClassName": "GitBranchIterator",
-            "jsClassName": "BranchIterator",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_iterator_free",
-        "cppFunctionName": "IteratorFree",
-        "jsFunctionName": "iteratorFree",
-        "cppClassName": "GitBranch"
-      },
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_branch_iterator **",
-            "comment": "the iterator",
-            "cType": "git_branch_iterator **",
-            "cppClassName": "GitBranchIterator",
-            "jsClassName": "BranchIterator",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where to find the branches.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "list_flags",
-            "type": "git_branch_t",
-            "comment": "Filtering flags for the branch\n listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE\n or GIT_BRANCH_ALL.",
-            "cType": "git_branch_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": true,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success  or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_iterator_new",
-        "cppFunctionName": "IteratorNew",
-        "jsFunctionName": "iteratorNew",
-        "isAsync": true,
-        "cppClassName": "GitBranch"
-      },
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "pointer to the looked-up branch reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to look up the branch",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "branch_name",
-            "type": "const char *",
-            "comment": "Name of the branch to be looked-up;\n this name is validated for consistency.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "branch_type",
-            "type": "git_branch_t",
-            "comment": "Type of the considered branch. This should\n be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE.",
-            "cType": "git_branch_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": true,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success; GIT_ENOTFOUND when no matching branch\n exists, GIT_EINVALIDSPEC, otherwise an error code.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_lookup",
-        "cppFunctionName": "Lookup",
-        "jsFunctionName": "lookup",
-        "isAsync": true,
-        "cppClassName": "GitBranch"
-      },
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": null,
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "branch",
-            "type": "git_reference *",
-            "comment": "Current underlying reference of the branch.",
-            "cType": "git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "new_branch_name",
-            "type": "const char *",
-            "comment": "Target name of the branch once the move\n is performed; this name is validated for consistency.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing branch.",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EINVALIDSPEC or an error code.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_move",
-        "cppFunctionName": "Move",
-        "jsFunctionName": "move",
-        "isAsync": true,
-        "cppClassName": "GitBranch"
-      },
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "const char **",
-            "comment": "where the pointer of branch name is stored;\n this is valid as long as the ref is not freed.",
-            "cType": "const char **",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "the reference ideally pointing to a branch",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success; otherwise an error code (e.g., if the\n  ref is no local or remote branch).",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_name",
-        "cppFunctionName": "Name",
-        "jsFunctionName": "name",
-        "isAsync": true,
-        "cppClassName": "GitBranch"
-      },
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "branch",
-            "type": "git_reference *",
-            "comment": "the branch to configure",
-            "cType": "git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "upstream_name",
-            "type": "const char *",
-            "comment": "remote-tracking or local branch to set as\n upstream. Pass NULL to unset.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false,
-            "isOptional": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_set_upstream",
-        "cppFunctionName": "SetUpstream",
-        "jsFunctionName": "setUpstream",
-        "isAsync": false,
-        "cppClassName": "GitBranch"
-      },
-      {
-        "type": "function",
-        "file": "branch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "Pointer where to store the retrieved\n reference.",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "branch",
-            "type": "const git_reference *",
-            "comment": "Current underlying reference of the branch.",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success; GIT_ENOTFOUND when no remote tracking\n reference exists, otherwise an error code.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "branch",
-        "cFunctionName": "git_branch_upstream",
-        "cppFunctionName": "Upstream",
-        "jsFunctionName": "upstream",
-        "isAsync": false,
-        "cppClassName": "GitBranch"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "branch",
-    "cppClassName": "GitBranch",
-    "jsClassName": "Branch",
-    "filename": "branch",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/reference.h",
-      "../include/repository.h",
-      "../include/commit.h",
-      "../include/signature.h",
-      "../include/branch_iterator.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "branch"
-  },
-  {
-    "typeName": "branch",
-    "type": "enum",
-    "cType": "git_branch_t",
-    "isMask": false,
-    "values": [
-      {
-        "name": "GIT_BRANCH_LOCAL",
-        "value": 1,
-        "JsName": "LOCAL"
-      },
-      {
-        "name": "GIT_BRANCH_REMOTE",
-        "value": 2,
-        "JsName": "REMOTE"
-      },
-      {
-        "name": "GIT_BRANCH_ALL",
-        "value": 3,
-        "JsName": "ALL"
-      }
-    ],
-    "owner": "Branch",
-    "JsName": "BRANCH"
-  },
-  {
-    "type": "class",
-    "value": "git_branch_iterator",
-    "file": "branch.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_branch_iterator_free",
-        "git_branch_iterator_new",
-        "git_branch_next"
-      ]
-    },
-    "typeName": "branch_iterator",
-    "cType": "git_branch_iterator",
-    "functions": [],
-    "cppClassName": "GitBranchIterator",
-    "jsClassName": "BranchIterator",
-    "filename": "branch_iterator",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "branch_iterator"
-  },
-  {
-    "type": "class",
-    "value": "git_buf",
-    "file": "buffer.h",
-    "fields": [
-      {
-        "type": "char *",
-        "name": "ptr",
-        "cType": "char *",
-        "cppFunctionName": "Ptr",
-        "jsFunctionName": "ptr",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "size_t",
-        "name": "asize",
-        "cType": "size_t",
-        "cppFunctionName": "Asize",
-        "jsFunctionName": "asize",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "size_t",
-        "name": "size",
-        "cType": "size_t",
-        "cppFunctionName": "Size",
-        "jsFunctionName": "size",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_blob_filtered_content",
-        "git_buf_free",
-        "git_buf_grow",
-        "git_buf_set",
-        "git_config_find_global",
-        "git_config_find_system",
-        "git_config_find_xdg",
-        "git_diff_commit_as_email",
-        "git_diff_format_email",
-        "git_diff_stats_to_buf",
-        "git_filter_list_apply_to_blob",
-        "git_filter_list_apply_to_data",
-        "git_filter_list_apply_to_file",
-        "git_message_prettify",
-        "git_object_short_id",
-        "git_patch_to_buf",
-        "git_refspec_rtransform",
-        "git_refspec_transform",
-        "git_remote_default_branch",
-        "git_repository_discover",
-        "git_repository_message"
-      ]
-    },
-    "typeName": "buf",
-    "cType": "git_buf",
-    "functions": [
-      {
-        "type": "function",
-        "file": "buffer.h",
-        "args": [
-          {
-            "name": "buffer",
-            "type": "git_buf *",
-            "comment": "The buffer to be resized; may or may not be allocated yet",
-            "cType": "git_buf *",
-            "cppClassName": "GitBuf",
-            "jsClassName": "Buf",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false,
-            "shouldAlloc": true
-          },
-          {
-            "name": "target_size",
-            "type": "size_t",
-            "comment": "The desired available size",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, -1 on allocation failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false,
-          "isErrorCode": true
-        },
-        "group": "buf",
-        "cFunctionName": "git_buf_grow",
-        "cppFunctionName": "Grow",
-        "jsFunctionName": "grow",
-        "isPrototypeMethod": true,
-        "isAsync": true,
-        "cppClassName": "GitBuf"
-      },
-      {
-        "type": "function",
-        "file": "buffer.h",
-        "args": [
-          {
-            "name": "buffer",
-            "type": "git_buf *",
-            "comment": "The buffer to set",
-            "cType": "git_buf *",
-            "cppClassName": "GitBuf",
-            "jsClassName": "Buf",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false,
-            "shouldAlloc": true
-          },
-          {
-            "name": "data",
-            "type": "const void *",
-            "comment": "The data to copy into the buffer",
-            "cType": "const void *",
-            "cppClassName": "Buffer",
-            "jsClassName": "Buffer",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "datalen",
-            "type": "size_t",
-            "comment": "The length of the data to copy into the buffer",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, -1 on allocation failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false,
-          "isErrorCode": true
-        },
-        "group": "buf",
-        "cFunctionName": "git_buf_set",
-        "cppFunctionName": "Set",
-        "jsFunctionName": "set",
-        "isPrototypeMethod": true,
-        "isAsync": true,
-        "cppClassName": "GitBuf"
-      }
-    ],
-    "cppClassName": "GitBuf",
-    "jsClassName": "Buf",
-    "filename": "buf",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/buf.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "freeFunctionName": "git_buf_free",
-    "name": "buf"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "checkout.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository to check out (must be non-bare)",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "opts",
-            "type": "const git_checkout_options *",
-            "comment": "specifies checkout options (may be NULL)",
-            "cType": "const git_checkout_options *",
-            "cppClassName": "GitCheckoutOptions",
-            "jsClassName": "CheckoutOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EUNBORNBRANCH if HEAD points to a non\n         existing branch, non-zero value returned by `notify_cb`, or\n         other error code \n<\n 0 (use giterr_last for error details)",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "checkout",
-        "cFunctionName": "git_checkout_head",
-        "cppFunctionName": "Head",
-        "jsFunctionName": "head",
-        "cppClassName": "GitCheckout"
-      },
-      {
-        "type": "function",
-        "file": "checkout.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository into which to check out (must be non-bare)",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "index to be checked out (or NULL to use repository index)",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "opts",
-            "type": "const git_checkout_options *",
-            "comment": "specifies checkout options (may be NULL)",
-            "cType": "const git_checkout_options *",
-            "cppClassName": "GitCheckoutOptions",
-            "jsClassName": "CheckoutOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "checkout",
-        "cFunctionName": "git_checkout_index",
-        "cppFunctionName": "Index",
-        "jsFunctionName": "index",
-        "cppClassName": "GitCheckout"
-      },
-      {
-        "type": "function",
-        "file": "checkout.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_checkout_options *",
-            "comment": "the `git_checkout_options` struct to initialize.",
-            "cType": "git_checkout_options *",
-            "cppClassName": "GitCheckoutOptions",
-            "jsClassName": "CheckoutOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION`",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "checkout",
-        "cFunctionName": "git_checkout_init_options",
-        "cppFunctionName": "InitOptions",
-        "jsFunctionName": "initOptions",
-        "cppClassName": "GitCheckout"
-      },
-      {
-        "type": "function",
-        "file": "checkout.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository to check out (must be non-bare)",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "treeish",
-            "type": "const git_object *",
-            "comment": "a commit, tag or tree which content will be used to update\n the working directory (or NULL to use HEAD)",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "opts",
-            "type": "const git_checkout_options *",
-            "comment": "specifies checkout options (may be NULL)",
-            "cType": "const git_checkout_options *",
-            "cppClassName": "GitCheckoutOptions",
-            "jsClassName": "CheckoutOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, non-zero return value from `notify_cb`, or error\n         code \n<\n 0 (use giterr_last for error details)",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "checkout",
-        "cFunctionName": "git_checkout_tree",
-        "cppFunctionName": "Tree",
-        "jsFunctionName": "tree",
-        "cppClassName": "GitCheckout"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "checkout",
-    "cppClassName": "GitCheckout",
-    "jsClassName": "Checkout",
-    "filename": "checkout",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/repository.h",
-      "../include/checkout_options.h",
-      "../include/index.h",
-      "../include/object.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "checkout"
-  },
-  {
-    "typeName": "checkout_notify",
-    "type": "enum",
-    "cType": "git_checkout_notify_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_CHECKOUT_NOTIFY_NONE",
-        "value": 0,
-        "JsName": "NONE"
-      },
-      {
-        "name": "GIT_CHECKOUT_NOTIFY_CONFLICT",
-        "value": 1,
-        "JsName": "CONFLICT"
-      },
-      {
-        "name": "GIT_CHECKOUT_NOTIFY_DIRTY",
-        "value": 2,
-        "JsName": "DIRTY"
-      },
-      {
-        "name": "GIT_CHECKOUT_NOTIFY_UPDATED",
-        "value": 4,
-        "JsName": "UPDATED"
-      },
-      {
-        "name": "GIT_CHECKOUT_NOTIFY_UNTRACKED",
-        "value": 8,
-        "JsName": "UNTRACKED"
-      },
-      {
-        "name": "GIT_CHECKOUT_NOTIFY_IGNORED",
-        "value": 16,
-        "JsName": "IGNORED"
-      },
-      {
-        "name": "GIT_CHECKOUT_NOTIFY_ALL",
-        "value": 65535,
-        "JsName": "ALL"
-      }
-    ],
-    "owner": "Checkout",
-    "JsName": "NOTIFY"
-  },
-  {
-    "type": "struct",
-    "value": "git_checkout_options",
-    "file": "checkout.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "checkout_strategy",
-        "cType": "unsigned int",
-        "cppFunctionName": "CheckoutStrategy",
-        "jsFunctionName": "checkoutStrategy",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "int",
-        "name": "disable_filters",
-        "cType": "int",
-        "cppFunctionName": "DisableFilters",
-        "jsFunctionName": "disableFilters",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "dir_mode",
-        "cType": "unsigned int",
-        "cppFunctionName": "DirMode",
-        "jsFunctionName": "dirMode",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "file_mode",
-        "cType": "unsigned int",
-        "cppFunctionName": "FileMode",
-        "jsFunctionName": "fileMode",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "int",
-        "name": "file_open_flags",
-        "cType": "int",
-        "cppFunctionName": "FileOpenFlags",
-        "jsFunctionName": "fileOpenFlags",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "notify_flags",
-        "cType": "unsigned int",
-        "cppFunctionName": "NotifyFlags",
-        "jsFunctionName": "notifyFlags",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_checkout_notify_cb",
-        "name": "notify_cb",
-        "cType": "git_checkout_notify_cb",
-        "cppFunctionName": "NotifyCb",
-        "jsFunctionName": "notifyCb",
-        "cppClassName": "GitCheckoutNotifyCb",
-        "jsClassName": "CheckoutNotifyCb",
-        "isCallbackFunction": true,
-        "args": [
-          {
-            "name": "why",
-            "cType": "git_checkout_notify_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": true
-          },
-          {
-            "name": "path",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String"
-          },
-          {
-            "name": "baseline",
-            "cType": "const git_diff_file *",
-            "cppClassName": "GitDiffFile",
-            "jsClassName": "DiffFile",
-            "isLibgitType": true,
-            "isEnum": false
-          },
-          {
-            "name": "target",
-            "cType": "const git_diff_file *",
-            "cppClassName": "GitDiffFile",
-            "jsClassName": "DiffFile",
-            "isLibgitType": true,
-            "isEnum": false
-          },
-          {
-            "name": "workdir",
-            "cType": "const git_diff_file *",
-            "cppClassName": "GitDiffFile",
-            "jsClassName": "DiffFile",
-            "isLibgitType": true,
-            "isEnum": false
-          },
-          {
-            "name": "payload",
-            "cType": "void *",
-            "cppClassName": "Void",
-            "jsClassName": "Void"
-          }
-        ],
-        "returnType": "int",
-        "returnNoResults": 1,
-        "returnSuccess": 0,
-        "returnError": -1
-      },
-      {
-        "type": "void *",
-        "name": "notify_payload",
-        "cType": "void *",
-        "cppFunctionName": "NotifyPayload",
-        "jsFunctionName": "notifyPayload",
-        "cppClassName": "Void",
-        "jsClassName": "Void",
-        "isCallbackFunction": false,
-        "payloadFor": "notify_cb"
-      },
-      {
-        "type": "git_checkout_progress_cb",
-        "name": "progress_cb",
-        "cType": "git_checkout_progress_cb",
-        "cppFunctionName": "ProgressCb",
-        "jsFunctionName": "progressCb",
-        "cppClassName": "GitCheckoutProgressCb",
-        "jsClassName": "CheckoutProgressCb",
-        "isCallbackFunction": true,
-        "args": [
-          {
-            "name": "path",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String"
-          },
-          {
-            "name": "completed_steps",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number"
-          },
-          {
-            "name": "total_steps",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number"
-          },
-          {
-            "name": "payload",
-            "cType": "void *",
-            "cppClassName": "Void",
-            "jsClassName": "Void"
-          }
-        ],
-        "returnType": "int",
-        "returnNoResults": 1,
-        "returnSuccess": 0,
-        "returnError": -1
-      },
-      {
-        "type": "void *",
-        "name": "progress_payload",
-        "cType": "void *",
-        "cppFunctionName": "ProgressPayload",
-        "jsFunctionName": "progressPayload",
-        "cppClassName": "Void",
-        "jsClassName": "Void",
-        "isCallbackFunction": false,
-        "payloadFor": "progress_cb"
-      },
-      {
-        "type": "git_strarray",
-        "name": "paths",
-        "cType": "git_strarray",
-        "cppFunctionName": "Paths",
-        "jsFunctionName": "paths",
-        "cppClassName": "GitStrarray",
-        "jsClassName": "Strarray",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      },
-      {
-        "type": "git_tree *",
-        "name": "baseline",
-        "cType": "git_tree *",
-        "cppFunctionName": "Baseline",
-        "jsFunctionName": "baseline",
-        "cppClassName": "GitTree",
-        "jsClassName": "Tree",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "functions": {
-          "git_tree_walk": {
-            "ignore": true
-          }
-        }
-      },
-      {
-        "type": "const char *",
-        "name": "target_directory",
-        "cType": "const char *",
-        "cppFunctionName": "TargetDirectory",
-        "jsFunctionName": "targetDirectory",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "ancestor_label",
-        "cType": "const char *",
-        "cppFunctionName": "AncestorLabel",
-        "jsFunctionName": "ancestorLabel",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "our_label",
-        "cType": "const char *",
-        "cppFunctionName": "OurLabel",
-        "jsFunctionName": "ourLabel",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "their_label",
-        "cType": "const char *",
-        "cppFunctionName": "TheirLabel",
-        "jsFunctionName": "theirLabel",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_checkout_head",
-        "git_checkout_index",
-        "git_checkout_init_options",
-        "git_checkout_tree",
-        "git_clone_into",
-        "git_clone_local_into",
-        "git_merge"
-      ]
-    },
-    "typeName": "checkout_options",
-    "cType": "git_checkout_options",
-    "functions": [],
-    "cppClassName": "GitCheckoutOptions",
-    "jsClassName": "CheckoutOptions",
-    "filename": "checkout_options",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/diff_file.h",
-      "../include/strarray.h",
-      "../include/tree.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "checkout_options"
-  },
-  {
-    "typeName": "checkout_strategy",
-    "type": "enum",
-    "cType": "git_checkout_strategy_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_CHECKOUT_NONE",
-        "value": 0,
-        "JsName": "NONE"
-      },
-      {
-        "name": "GIT_CHECKOUT_SAFE",
-        "value": 1,
-        "JsName": "SAFE"
-      },
-      {
-        "name": "GIT_CHECKOUT_SAFE_CREATE",
-        "value": 2,
-        "JsName": "SAFE_CREATE"
-      },
-      {
-        "name": "GIT_CHECKOUT_FORCE",
-        "value": 4,
-        "JsName": "FORCE"
-      },
-      {
-        "name": "GIT_CHECKOUT_ALLOW_CONFLICTS",
-        "value": 16,
-        "JsName": "ALLOW_CONFLICTS"
-      },
-      {
-        "name": "GIT_CHECKOUT_REMOVE_UNTRACKED",
-        "value": 32,
-        "JsName": "REMOVE_UNTRACKED"
-      },
-      {
-        "name": "GIT_CHECKOUT_REMOVE_IGNORED",
-        "value": 64,
-        "JsName": "REMOVE_IGNORED"
-      },
-      {
-        "name": "GIT_CHECKOUT_UPDATE_ONLY",
-        "value": 128,
-        "JsName": "UPDATE_ONLY"
-      },
-      {
-        "name": "GIT_CHECKOUT_DONT_UPDATE_INDEX",
-        "value": 256,
-        "JsName": "DONT_UPDATE_INDEX"
-      },
-      {
-        "name": "GIT_CHECKOUT_NO_REFRESH",
-        "value": 512,
-        "JsName": "NO_REFRESH"
-      },
-      {
-        "name": "GIT_CHECKOUT_SKIP_UNMERGED",
-        "value": 1024,
-        "JsName": "SKIP_UNMERGED"
-      },
-      {
-        "name": "GIT_CHECKOUT_USE_OURS",
-        "value": 2048,
-        "JsName": "USE_OURS"
-      },
-      {
-        "name": "GIT_CHECKOUT_USE_THEIRS",
-        "value": 4096,
-        "JsName": "USE_THEIRS"
-      },
-      {
-        "name": "GIT_CHECKOUT_DISABLE_PATHSPEC_MATCH",
-        "value": 8192,
-        "JsName": "DISABLE_PATHSPEC_MATCH"
-      },
-      {
-        "name": "GIT_CHECKOUT_SKIP_LOCKED_DIRECTORIES",
-        "value": 262144,
-        "JsName": "SKIP_LOCKED_DIRECTORIES"
-      },
-      {
-        "name": "GIT_CHECKOUT_DONT_OVERWRITE_IGNORED",
-        "value": 524288,
-        "JsName": "DONT_OVERWRITE_IGNORED"
-      },
-      {
-        "name": "GIT_CHECKOUT_CONFLICT_STYLE_MERGE",
-        "value": 1048576,
-        "JsName": "CONFLICT_STYLE_MERGE"
-      },
-      {
-        "name": "GIT_CHECKOUT_CONFLICT_STYLE_DIFF3",
-        "value": 2097152,
-        "JsName": "CONFLICT_STYLE_DIFF3"
-      },
-      {
-        "name": "GIT_CHECKOUT_UPDATE_SUBMODULES",
-        "value": 65536,
-        "JsName": "UPDATE_SUBMODULES"
-      },
-      {
-        "name": "GIT_CHECKOUT_UPDATE_SUBMODULES_IF_CHANGED",
-        "value": 131072,
-        "JsName": "UPDATE_SUBMODULES_IF_CHANGED"
-      }
-    ],
-    "owner": "Checkout",
-    "JsName": "STRATEGY"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "cherrypick.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to cherry-pick",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "commit",
-            "type": "git_commit *",
-            "comment": "the commit to cherry-pick",
-            "cType": "git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "cherry_pick_options",
-            "type": "const git_cherry_pick_options *",
-            "comment": "the cherry-pick options (or null for defaults)",
-            "cType": "const git_cherry_pick_options *",
-            "cppClassName": "GitCherryPickOptions",
-            "jsClassName": "CherryPickOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " zero on success, -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "cherry",
-        "cFunctionName": "git_cherry_pick",
-        "cppFunctionName": "Pick",
-        "jsFunctionName": "pick",
-        "cppClassName": "GitCherry"
-      },
-      {
-        "type": "function",
-        "file": "cherrypick.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_index **",
-            "comment": "pointer to store the index result in",
-            "cType": "git_index **",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository that contains the given commits",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "cherry_pick_commit",
-            "type": "git_commit *",
-            "comment": "the commit to cherry-pick",
-            "cType": "git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "our_commit",
-            "type": "git_commit *",
-            "comment": "the commit to revert against (eg, HEAD)",
-            "cType": "git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "mainline",
-            "type": "unsigned int",
-            "comment": "the parent of the revert commit, if it is a merge",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "merge_options",
-            "type": "const git_merge_options *",
-            "comment": "the merge options (or null for defaults)",
-            "cType": "const git_merge_options *",
-            "cppClassName": "GitMergeOptions",
-            "jsClassName": "MergeOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " zero on success, -1 on failure.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "cherry",
-        "cFunctionName": "git_cherry_pick_commit",
-        "cppFunctionName": "PickCommit",
-        "jsFunctionName": "pickCommit",
-        "isAsync": true,
-        "cppClassName": "GitCherry"
-      },
-      {
-        "type": "function",
-        "file": "cherrypick.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_cherry_pick_options *",
-            "comment": "the `git_cherry_pick_options` struct to initialize",
-            "cType": "git_cherry_pick_options *",
-            "cppClassName": "GitCherryPickOptions",
-            "jsClassName": "CherryPickOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "Version of struct; pass `GIT_CHERRY_PICK_OPTIONS_VERSION`",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "cherry",
-        "cFunctionName": "git_cherry_pick_init_options",
-        "cppFunctionName": "PickInitOptions",
-        "jsFunctionName": "pickInitOptions",
-        "cppClassName": "GitCherry"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "cherry",
-    "cppClassName": "GitCherry",
-    "jsClassName": "Cherry",
-    "filename": "cherry",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/repository.h",
-      "../include/commit.h",
-      "../include/cherry_pick_options.h",
-      "../include/index.h",
-      "../include/merge_options.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "cherry"
-  },
-  {
-    "type": "struct",
-    "value": "git_cherry_pick_options",
-    "file": "cherrypick.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "mainline",
-        "cType": "unsigned int",
-        "cppFunctionName": "Mainline",
-        "jsFunctionName": "mainline",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_merge_options",
-        "name": "merge_opts",
-        "cType": "git_merge_options",
-        "cppFunctionName": "MergeOpts",
-        "jsFunctionName": "mergeOpts",
-        "cppClassName": "GitMergeOptions",
-        "jsClassName": "MergeOptions",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      },
-      {
-        "type": "git_checkout_options",
-        "name": "checkout_opts",
-        "cType": "git_checkout_options",
-        "cppFunctionName": "CheckoutOpts",
-        "jsFunctionName": "checkoutOpts",
-        "cppClassName": "GitCheckoutOptions",
-        "jsClassName": "CheckoutOptions",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_cherry_pick",
-        "git_cherry_pick_init_options"
-      ]
-    },
-    "typeName": "cherry_pick_options",
-    "cType": "git_cherry_pick_options",
-    "functions": [],
-    "cppClassName": "GitCherryPickOptions",
-    "jsClassName": "CherryPickOptions",
-    "filename": "cherry_pick_options",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/merge_options.h",
-      "../include/checkout_options.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "cherry_pick_options"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "clone.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_repository **",
-            "comment": "pointer that will receive the resulting repository object",
-            "cType": "git_repository **",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "the remote repository to clone",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "local_path",
-            "type": "const char *",
-            "comment": "local directory to clone to",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "options",
-            "type": "const git_clone_options *",
-            "comment": "configuration options for the clone.  If NULL, the\n        function works as though GIT_OPTIONS_INIT were passed.",
-            "cType": "const git_clone_options *",
-            "cppClassName": "GitCloneOptions",
-            "jsClassName": "CloneOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false,
-            "isOptional": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "clone",
-        "examples": {
-          "network/clone.c": [
-            "ex/v0.21.2/network/clone.html#git_clone-1"
-          ]
-        },
-        "cFunctionName": "git_clone",
-        "cppFunctionName": "Clone",
-        "jsFunctionName": "clone",
-        "isAsync": true,
-        "cppClassName": "GitClone"
-      },
-      {
-        "type": "function",
-        "file": "clone.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_clone_options *",
-            "comment": "The `git_clone_options` struct to initialize",
-            "cType": "git_clone_options *",
-            "cppClassName": "GitCloneOptions",
-            "jsClassName": "CloneOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "Version of struct; pass `GIT_CLONE_OPTIONS_VERSION`",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "clone",
-        "cFunctionName": "git_clone_init_options",
-        "cppFunctionName": "InitOptions",
-        "jsFunctionName": "initOptions",
-        "cppClassName": "GitClone"
-      },
-      {
-        "type": "function",
-        "file": "clone.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to use",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote repository to clone from",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "co_opts",
-            "type": "const git_checkout_options *",
-            "comment": "options to use during checkout",
-            "cType": "const git_checkout_options *",
-            "cppClassName": "GitCheckoutOptions",
-            "jsClassName": "CheckoutOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "branch",
-            "type": "const char *",
-            "comment": "the branch to checkout after the clone, pass NULL for the\n        remote's default branch",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity used when updating the reflog.",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "clone",
-        "cFunctionName": "git_clone_into",
-        "cppFunctionName": "Into",
-        "jsFunctionName": "into",
-        "cppClassName": "GitClone"
-      },
-      {
-        "type": "function",
-        "file": "clone.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to use",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote repository to clone from",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "co_opts",
-            "type": "const git_checkout_options *",
-            "comment": "options to use during checkout",
-            "cType": "const git_checkout_options *",
-            "cppClassName": "GitCheckoutOptions",
-            "jsClassName": "CheckoutOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "branch",
-            "type": "const char *",
-            "comment": "the branch to checkout after the clone, pass NULL for the\n        remote's default branch",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "link",
-            "type": "int",
-            "comment": "wether to use hardlinks instead of copying\n objects. This is only possible if both repositories are on the same\n filesystem.",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "the identity used when updating the reflog",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, any non-zero return value from a callback\n         function, or a negative value to indicate an error (use\n         `giterr_last` for a detailed error message)",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "clone",
-        "cFunctionName": "git_clone_local_into",
-        "cppFunctionName": "LocalInto",
-        "jsFunctionName": "localInto",
-        "cppClassName": "GitClone"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "clone",
-    "cppClassName": "GitClone",
-    "jsClassName": "Clone",
-    "filename": "clone",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/repository.h",
-      "../include/clone_options.h",
-      "../include/remote.h",
-      "../include/checkout_options.h",
-      "../include/signature.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "clone"
-  },
-  {
-    "typeName": "clone_local",
-    "type": "enum",
-    "cType": "git_clone_local_t",
-    "isMask": false,
-    "values": [
-      {
-        "name": "GIT_CLONE_LOCAL_AUTO",
-        "value": 0,
-        "JsName": "AUTO"
-      },
-      {
-        "name": "GIT_CLONE_LOCAL",
-        "value": 1,
-        "JsName": "LOCAL"
-      },
-      {
-        "name": "GIT_CLONE_NO_LOCAL",
-        "value": 2,
-        "JsName": "NO_LOCAL"
-      },
-      {
-        "name": "GIT_CLONE_LOCAL_NO_LINKS",
-        "value": 3,
-        "JsName": "NO_LINKS"
-      }
-    ],
-    "owner": "Clone",
-    "JsName": "LOCAL"
-  },
-  {
-    "type": "struct",
-    "value": "git_clone_options",
-    "file": "clone.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_checkout_options",
-        "name": "checkout_opts",
-        "cType": "git_checkout_options",
-        "cppFunctionName": "CheckoutOpts",
-        "jsFunctionName": "checkoutOpts",
-        "cppClassName": "GitCheckoutOptions",
-        "jsClassName": "CheckoutOptions",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      },
-      {
-        "type": "git_remote_callbacks",
-        "name": "remote_callbacks",
-        "cType": "git_remote_callbacks",
-        "cppFunctionName": "RemoteCallbacks",
-        "jsFunctionName": "remoteCallbacks",
-        "cppClassName": "GitRemoteCallbacks",
-        "jsClassName": "RemoteCallbacks",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "fields": {
-          "completion": {
-            "ignore": true
-          },
-          "sideband_progress": {
-            "ignore": true
-          },
-          "transfer_progress": {
-            "ignore": true
-          },
-          "update_tips": {
-            "ignore": true
-          }
-        }
-      },
-      {
-        "type": "int",
-        "name": "bare",
-        "cType": "int",
-        "cppFunctionName": "Bare",
-        "jsFunctionName": "bare",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "int",
-        "name": "ignore_cert_errors",
-        "cType": "int",
-        "cppFunctionName": "IgnoreCertErrors",
-        "jsFunctionName": "ignoreCertErrors",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_clone_local_t",
-        "name": "local",
-        "cType": "git_clone_local_t",
-        "cppFunctionName": "Local",
-        "jsFunctionName": "local",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true,
-        "isMask": true
-      },
-      {
-        "type": "const char *",
-        "name": "remote_name",
-        "cType": "const char *",
-        "cppFunctionName": "RemoteName",
-        "jsFunctionName": "remoteName",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "checkout_branch",
-        "cType": "const char *",
-        "cppFunctionName": "CheckoutBranch",
-        "jsFunctionName": "checkoutBranch",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_signature *",
-        "name": "signature",
-        "cType": "git_signature *",
-        "cppFunctionName": "Signature",
-        "jsFunctionName": "signature",
-        "cppClassName": "GitSignature",
-        "jsClassName": "Signature",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "functions": {
-          "git_signature_new": {
-            "isAsync": false
-          }
-        }
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_clone",
-        "git_clone_init_options"
-      ]
-    },
-    "typeName": "clone_options",
-    "cType": "git_clone_options",
-    "functions": [],
-    "cppClassName": "GitCloneOptions",
-    "jsClassName": "CloneOptions",
-    "filename": "clone_options",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/checkout_options.h",
-      "../include/remote_callbacks.h",
-      "../include/signature.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "clone_options"
-  },
-  {
-    "type": "class",
-    "value": "git_commit",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_branch_create",
-        "git_cherry_pick",
-        "git_cherry_pick_commit",
-        "git_commit_amend",
-        "git_commit_author",
-        "git_commit_committer",
-        "git_commit_create",
-        "git_commit_free",
-        "git_commit_id",
-        "git_commit_lookup",
-        "git_commit_lookup_prefix",
-        "git_commit_message",
-        "git_commit_message_encoding",
-        "git_commit_message_raw",
-        "git_commit_nth_gen_ancestor",
-        "git_commit_owner",
-        "git_commit_parent",
-        "git_commit_parent_id",
-        "git_commit_parentcount",
-        "git_commit_raw_header",
-        "git_commit_summary",
-        "git_commit_time",
-        "git_commit_time_offset",
-        "git_commit_tree",
-        "git_commit_tree_id",
-        "git_diff_commit_as_email",
-        "git_merge_commits",
-        "git_revert",
-        "git_revert_commit"
-      ]
-    },
-    "typeName": "commit",
-    "cType": "git_commit",
-    "functions": [
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "git_oid *",
-            "comment": null,
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "commit_to_amend",
-            "type": "const git_commit *",
-            "comment": null,
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "update_ref",
-            "type": "const char *",
-            "comment": null,
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "author",
-            "type": "const git_signature *",
-            "comment": null,
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "committer",
-            "type": "const git_signature *",
-            "comment": null,
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "message_encoding",
-            "type": "const char *",
-            "comment": null,
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "message",
-            "type": "const char *",
-            "comment": null,
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": null,
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "cFunctionName": "git_commit_amend",
-        "cppFunctionName": "Amend",
-        "jsFunctionName": "amend",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_signature *",
-          "comment": " the author of a commit",
-          "cType": "const git_signature *",
-          "cppClassName": "GitSignature",
-          "jsClassName": "Signature",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_signature_new": {
-              "isAsync": false
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_commit_author-6"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_commit_author-19",
-            "ex/v0.21.2/general.html#git_commit_author-20"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_author-12",
-            "ex/v0.21.2/log.html#git_commit_author-13"
-          ]
-        },
-        "cFunctionName": "git_commit_author",
-        "cppFunctionName": "Author",
-        "jsFunctionName": "author",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_signature *",
-          "comment": " the committer of a commit",
-          "cType": "const git_signature *",
-          "cppClassName": "GitSignature",
-          "jsClassName": "Signature",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_signature_new": {
-              "isAsync": false
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_commit_committer-5"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_commit_committer-18"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_committer-11"
-          ]
-        },
-        "cFunctionName": "git_commit_committer",
-        "cppFunctionName": "Committer",
-        "jsFunctionName": "committer",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "git_oid *",
-            "comment": "Pointer in which to store the OID of the newly created commit",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where to store the commit",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "update_ref",
-            "type": "const char *",
-            "comment": "If not NULL, name of the reference that\n\twill be updated to point to this commit. If the reference\n\tis not direct, it will be resolved to a direct reference.\n\tUse \"HEAD\" to update the HEAD of the current branch and\n\tmake it point to this commit. If the reference doesn't\n\texist yet, it will be created. If it does exist, the first\n\tparent must be the tip of this branch.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false,
-            "isOptional": true
-          },
-          {
-            "name": "author",
-            "type": "const git_signature *",
-            "comment": "Signature with author and author time of commit",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "committer",
-            "type": "const git_signature *",
-            "comment": "Signature with committer and * commit time of commit",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "message_encoding",
-            "type": "const char *",
-            "comment": "The encoding for the message in the\n  commit, represented with a standard encoding name.\n  E.g. \"UTF-8\". If NULL, no encoding header is written and\n  UTF-8 is assumed.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false,
-            "isOptional": true
-          },
-          {
-            "name": "message",
-            "type": "const char *",
-            "comment": "Full message for this commit",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": "An instance of a `git_tree` object that will\n  be used as the tree for the commit. This tree object must\n  also be owned by the given `repo`.",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "parent_count",
-            "type": "size_t",
-            "comment": "Number of parents for this commit",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "parents",
-            "type": "const git_commit *[]",
-            "comment": "Array of `parent_count` pointers to `git_commit`\n  objects that will be used as the parents for this commit. This\n  array may be NULL if `parent_count` is 0 (root commit). All the\n  given commits must be owned by the `repo`.",
-            "cType": "const git_commit **",
-            "cppClassName": "Array",
-            "jsClassName": "Array",
-            "isReturn": false,
-            "isSelf": false,
-            "arrayElementCppClassName": "GitCommit"
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code\n\tThe created commit will be written to the Object Database and\n\tthe given reference will be updated to point to it",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "cFunctionName": "git_commit_create",
-        "cppFunctionName": "Create",
-        "jsFunctionName": "create",
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "git_oid *",
-            "comment": null,
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": null,
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "update_ref",
-            "type": "const char *",
-            "comment": null,
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "author",
-            "type": "const git_signature *",
-            "comment": null,
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "committer",
-            "type": "const git_signature *",
-            "comment": null,
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "message_encoding",
-            "type": "const char *",
-            "comment": null,
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "message",
-            "type": "const char *",
-            "comment": null,
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": null,
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "parent_count",
-            "type": "size_t",
-            "comment": null,
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_commit_create_v-23"
-          ],
-          "init.c": [
-            "ex/v0.21.2/init.html#git_commit_create_v-1"
-          ]
-        },
-        "cFunctionName": "git_commit_create_v",
-        "cppFunctionName": "CreateV",
-        "jsFunctionName": "createV",
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " object identity for the commit.",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_commit_id-12"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_id-6"
-          ]
-        },
-        "cFunctionName": "git_commit_id",
-        "cppFunctionName": "Id",
-        "jsFunctionName": "id",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "git_commit **",
-            "comment": "pointer to the looked up commit",
-            "cType": "git_commit **",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repo to use when locating the commit.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_commit_lookup-5",
-            "ex/v0.21.2/general.html#git_commit_lookup-6",
-            "ex/v0.21.2/general.html#git_commit_lookup-7"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_lookup-1"
-          ]
-        },
-        "cFunctionName": "git_commit_lookup",
-        "cppFunctionName": "Lookup",
-        "jsFunctionName": "lookup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "git_commit **",
-            "comment": "pointer to the looked up commit",
-            "cType": "git_commit **",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repo to use when locating the commit.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "identity of the commit to locate. If the object is\n\t\tan annotated tag it will be peeled back to the commit.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "len",
-            "type": "size_t",
-            "comment": "the length of the short identifier",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "cFunctionName": "git_commit_lookup_prefix",
-        "cppFunctionName": "LookupPrefix",
-        "jsFunctionName": "lookupPrefix",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the message of a commit",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_commit_message-3",
-            "ex/v0.21.2/cat-file.html#git_commit_message-4"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_commit_message-13",
-            "ex/v0.21.2/general.html#git_commit_message-14",
-            "ex/v0.21.2/general.html#git_commit_message-15"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_message-9",
-            "ex/v0.21.2/log.html#git_commit_message-10"
-          ],
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_commit_message-2"
-          ]
-        },
-        "cFunctionName": "git_commit_message",
-        "cppFunctionName": "Message",
-        "jsFunctionName": "message",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " NULL, or the encoding",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "cFunctionName": "git_commit_message_encoding",
-        "cppFunctionName": "MessageEncoding",
-        "jsFunctionName": "messageEncoding",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the raw message of a commit",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "cFunctionName": "git_commit_message_raw",
-        "cppFunctionName": "MessageRaw",
-        "jsFunctionName": "messageRaw",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "ancestor",
-            "type": "git_commit **",
-            "comment": "Pointer where to store the ancestor commit",
-            "cType": "git_commit **",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "n",
-            "type": "unsigned int",
-            "comment": "the requested generation",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success; GIT_ENOTFOUND if no matching ancestor exists\n or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "cFunctionName": "git_commit_nth_gen_ancestor",
-        "cppFunctionName": "NthGenAncestor",
-        "jsFunctionName": "nthGenAncestor",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "A previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " Repository that contains this commit.",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_owner-7",
-            "ex/v0.21.2/log.html#git_commit_owner-8"
-          ]
-        },
-        "cFunctionName": "git_commit_owner",
-        "cppFunctionName": "Owner",
-        "jsFunctionName": "owner",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_commit **",
-            "comment": "Pointer where to store the parent commit",
-            "cType": "git_commit **",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "n",
-            "type": "unsigned int",
-            "comment": "the position of the parent (from 0 to `parentcount`)",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_commit_parent-22"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_parent-21",
-            "ex/v0.21.2/log.html#git_commit_parent-22"
-          ]
-        },
-        "cFunctionName": "git_commit_parent",
-        "cppFunctionName": "Parent",
-        "jsFunctionName": "parent",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "n",
-            "type": "unsigned int",
-            "comment": "the position of the parent (from 0 to `parentcount`)",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " the id of the parent, NULL on error.",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_commit_parent_id-9"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_parent_id-23"
-          ]
-        },
-        "cFunctionName": "git_commit_parent_id",
-        "cppFunctionName": "ParentId",
-        "jsFunctionName": "parentId",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "unsigned int",
-          "comment": " integer of count of parents",
-          "cType": "unsigned int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_commit_parentcount-8"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_commit_parentcount-21"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_parentcount-19",
-            "ex/v0.21.2/log.html#git_commit_parentcount-20"
-          ]
-        },
-        "cFunctionName": "git_commit_parentcount",
-        "cppFunctionName": "Parentcount",
-        "jsFunctionName": "parentcount",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the header text of the commit",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "cFunctionName": "git_commit_raw_header",
-        "cppFunctionName": "RawHeader",
-        "jsFunctionName": "rawHeader",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the summary of a commit or NULL on error",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "cFunctionName": "git_commit_summary",
-        "cppFunctionName": "Summary",
-        "jsFunctionName": "summary",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_time_t",
-          "comment": " the time of a commit",
-          "cType": "git_time_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_commit_time-16",
-            "ex/v0.21.2/general.html#git_commit_time-17"
-          ]
-        },
-        "cFunctionName": "git_commit_time",
-        "cppFunctionName": "Time",
-        "jsFunctionName": "time",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " positive or negative timezone offset, in minutes from UTC",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "cFunctionName": "git_commit_time_offset",
-        "cppFunctionName": "TimeOffset",
-        "jsFunctionName": "timeOffset",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "tree_out",
-            "type": "git_tree **",
-            "comment": "pointer where to store the tree object",
-            "cType": "git_tree **",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "log.c": [
-            "ex/v0.21.2/log.html#git_commit_tree-14",
-            "ex/v0.21.2/log.html#git_commit_tree-15",
-            "ex/v0.21.2/log.html#git_commit_tree-16",
-            "ex/v0.21.2/log.html#git_commit_tree-17",
-            "ex/v0.21.2/log.html#git_commit_tree-18"
-          ]
-        },
-        "cFunctionName": "git_commit_tree",
-        "cppFunctionName": "Tree",
-        "jsFunctionName": "tree",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      },
-      {
-        "type": "function",
-        "file": "commit.h",
-        "args": [
-          {
-            "name": "commit",
-            "type": "const git_commit *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " the id of tree pointed to by commit.",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "commit",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_commit_tree_id-7"
-          ]
-        },
-        "cFunctionName": "git_commit_tree_id",
-        "cppFunctionName": "TreeId",
-        "jsFunctionName": "treeId",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCommit"
-      }
-    ],
-    "cppClassName": "GitCommit",
-    "jsClassName": "Commit",
-    "filename": "commit",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/oid.h",
-      "../include/commit.h",
-      "../include/signature.h",
-      "../include/tree.h",
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_commit_free",
-    "name": "commit"
-  },
-  {
-    "type": "class",
-    "value": "git_config",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_config_add_backend",
-        "git_config_add_file_ondisk",
-        "git_config_delete_entry",
-        "git_config_delete_multivar",
-        "git_config_foreach",
-        "git_config_foreach_match",
-        "git_config_free",
-        "git_config_get_bool",
-        "git_config_get_entry",
-        "git_config_get_int32",
-        "git_config_get_int64",
-        "git_config_get_mapped",
-        "git_config_get_multivar_foreach",
-        "git_config_get_string",
-        "git_config_iterator_glob_new",
-        "git_config_iterator_new",
-        "git_config_multivar_iterator_new",
-        "git_config_new",
-        "git_config_open_default",
-        "git_config_open_global",
-        "git_config_open_level",
-        "git_config_open_ondisk",
-        "git_config_refresh",
-        "git_config_set_bool",
-        "git_config_set_int32",
-        "git_config_set_int64",
-        "git_config_set_multivar",
-        "git_config_set_string",
-        "git_config_snapshot",
-        "git_repository_config",
-        "git_repository_config_snapshot"
-      ]
-    },
-    "typeName": "config",
-    "cType": "git_config",
-    "functions": [
-      {
-        "type": "function",
-        "file": "config.h",
-        "args": [
-          {
-            "name": "cfg",
-            "type": "git_config *",
-            "comment": "where to look for the variable",
-            "cType": "git_config *",
-            "cppClassName": "GitConfig",
-            "jsClassName": "Config",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "the variable's name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "value",
-            "type": "int64_t",
-            "comment": "Long integer value for the variable",
-            "cType": "int64_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "config",
-        "cFunctionName": "git_config_set_int64",
-        "cppFunctionName": "SetInt64",
-        "jsFunctionName": "setInt64",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitConfig"
-      },
-      {
-        "type": "function",
-        "file": "config.h",
-        "args": [
-          {
-            "name": "cfg",
-            "type": "git_config *",
-            "comment": "where to look for the variable",
-            "cType": "git_config *",
-            "cppClassName": "GitConfig",
-            "jsClassName": "Config",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "the variable's name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "regexp",
-            "type": "const char *",
-            "comment": "a regular expression to indicate which values to replace",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "value",
-            "type": "const char *",
-            "comment": "the new value.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "config",
-        "cFunctionName": "git_config_set_multivar",
-        "cppFunctionName": "SetMultivar",
-        "jsFunctionName": "setMultivar",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitConfig"
-      },
-      {
-        "type": "function",
-        "file": "config.h",
-        "args": [
-          {
-            "name": "cfg",
-            "type": "git_config *",
-            "comment": "where to look for the variable",
-            "cType": "git_config *",
-            "cppClassName": "GitConfig",
-            "jsClassName": "Config",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "the variable's name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "value",
-            "type": "const char *",
-            "comment": "the string to store.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "config",
-        "cFunctionName": "git_config_set_string",
-        "cppFunctionName": "SetString",
-        "jsFunctionName": "setString",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitConfig"
-      },
-      {
-        "type": "function",
-        "file": "config.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_config **",
-            "comment": "pointer in which to store the snapshot config object",
-            "cType": "git_config **",
-            "cppClassName": "GitConfig",
-            "jsClassName": "Config",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "config",
-            "type": "git_config *",
-            "comment": "configuration to snapshot",
-            "cType": "git_config *",
-            "cppClassName": "GitConfig",
-            "jsClassName": "Config",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "config",
-        "cFunctionName": "git_config_snapshot",
-        "cppFunctionName": "Snapshot",
-        "jsFunctionName": "snapshot",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitConfig"
-      }
-    ],
-    "cppClassName": "GitConfig",
-    "jsClassName": "Config",
-    "filename": "config",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/config.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_config_free",
-    "name": "config"
-  },
-  {
-    "typeName": "config_level",
-    "type": "enum",
-    "cType": "git_config_level_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_CONFIG_LEVEL_SYSTEM",
-        "value": 1,
-        "JsName": "SYSTEM"
-      },
-      {
-        "name": "GIT_CONFIG_LEVEL_XDG",
-        "value": 2,
-        "JsName": "XDG"
-      },
-      {
-        "name": "GIT_CONFIG_LEVEL_GLOBAL",
-        "value": 3,
-        "JsName": "GLOBAL"
-      },
-      {
-        "name": "GIT_CONFIG_LEVEL_LOCAL",
-        "value": 4,
-        "JsName": "LOCAL"
-      },
-      {
-        "name": "GIT_CONFIG_LEVEL_APP",
-        "value": 5,
-        "JsName": "APP"
-      },
-      {
-        "name": "GIT_CONFIG_HIGHEST_LEVEL",
-        "value": -1,
-        "JsName": "HIGHEST_LEVEL"
-      }
-    ],
-    "owner": "Config",
-    "JsName": "LEVEL"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "transport.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_cred **",
-            "comment": null,
-            "cType": "git_cred **",
-            "cppClassName": "GitCred",
-            "jsClassName": "Cred",
-            "isReturn": true,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 for success or an error code for failure",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "cred",
-        "cFunctionName": "git_cred_default_new",
-        "cppFunctionName": "DefaultNew",
-        "jsFunctionName": "defaultNew",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitCred"
-      },
-      {
-        "type": "function",
-        "file": "transport.h",
-        "args": [
-          {
-            "name": "cred",
-            "type": "git_cred *",
-            "comment": "object to check",
-            "cType": "git_cred *",
-            "cppClassName": "GitCred",
-            "jsClassName": "Cred",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the credential object has non-NULL username, 0 otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "cred",
-        "cFunctionName": "git_cred_has_username",
-        "cppFunctionName": "HasUsername",
-        "jsFunctionName": "hasUsername",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitCred"
-      },
-      {
-        "type": "function",
-        "file": "transport.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_cred **",
-            "comment": "The newly created credential object.",
-            "cType": "git_cred **",
-            "cppClassName": "GitCred",
-            "jsClassName": "Cred",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "username",
-            "type": "const char *",
-            "comment": "username to use to authenticate",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 for success or an error code for failure",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "cred",
-        "cFunctionName": "git_cred_ssh_key_from_agent",
-        "cppFunctionName": "SshKeyFromAgent",
-        "jsFunctionName": "sshKeyFromAgent",
-        "isAsync": false,
-        "isConstructorMethod": true,
-        "cppClassName": "GitCred"
-      },
-      {
-        "type": "function",
-        "file": "transport.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_cred **",
-            "comment": "The newly created credential object.",
-            "cType": "git_cred **",
-            "cppClassName": "GitCred",
-            "jsClassName": "Cred",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "username",
-            "type": "const char *",
-            "comment": "username to use to authenticate",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "publickey",
-            "type": "const char *",
-            "comment": "The path to the public key of the credential.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "privatekey",
-            "type": "const char *",
-            "comment": "The path to the private key of the credential.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "passphrase",
-            "type": "const char *",
-            "comment": "The passphrase of the credential.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 for success or an error code for failure",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "cred",
-        "cFunctionName": "git_cred_ssh_key_new",
-        "cppFunctionName": "SshKeyNew",
-        "jsFunctionName": "sshKeyNew",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitCred"
-      },
-      {
-        "type": "function",
-        "file": "transport.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_cred **",
-            "comment": "The newly created credential object.",
-            "cType": "git_cred **",
-            "cppClassName": "GitCred",
-            "jsClassName": "Cred",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "username",
-            "type": "const char *",
-            "comment": "The username of the credential.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "password",
-            "type": "const char *",
-            "comment": "The password of the credential.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 for success or an error code for failure",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "cred",
-        "cFunctionName": "git_cred_userpass_plaintext_new",
-        "cppFunctionName": "UserpassPlaintextNew",
-        "jsFunctionName": "userpassPlaintextNew",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitCred"
-      }
-    ],
-    "type": "class",
-    "cType": "git_cred",
-    "typeName": "cred",
-    "cppClassName": "GitCred",
-    "jsClassName": "Cred",
-    "filename": "cred",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/cred.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "cred"
-  },
-  {
-    "type": "class",
-    "value": "git_cred_default",
-    "file": "transport.h",
-    "used": {
-      "returns": [],
-      "needs": []
-    },
-    "typeName": "cred_default",
-    "cType": "git_cred_default",
-    "functions": [],
-    "cppClassName": "GitCredDefault",
-    "jsClassName": "CredDefault",
-    "filename": "cred_default",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "cred_default"
-  },
-  {
-    "type": "class",
-    "value": "git_cred_userpass_payload",
-    "file": "cred_helpers.h",
-    "fields": [
-      {
-        "type": "char *",
-        "name": "username",
-        "cType": "char *",
-        "cppFunctionName": "Username",
-        "jsFunctionName": "username",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "char *",
-        "name": "password",
-        "cType": "char *",
-        "cppFunctionName": "Password",
-        "jsFunctionName": "password",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": []
-    },
-    "typeName": "cred_userpass_payload",
-    "cType": "git_cred_userpass_payload",
-    "functions": [],
-    "cppClassName": "GitCredUserpassPayload",
-    "jsClassName": "CredUserpassPayload",
-    "filename": "cred_userpass_payload",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "cDependencies": [
-      "git2/cred_helpers.h"
-    ],
-    "name": "cred_userpass_payload"
-  },
-  {
-    "typeName": "credtype",
-    "type": "enum",
-    "cType": "git_credtype_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_CREDTYPE_USERPASS_PLAINTEXT",
-        "value": 1,
-        "JsName": "USERPASS_PLAINTEXT"
-      },
-      {
-        "name": "GIT_CREDTYPE_SSH_KEY",
-        "value": 2,
-        "JsName": "SSH_KEY"
-      },
-      {
-        "name": "GIT_CREDTYPE_SSH_CUSTOM",
-        "value": 4,
-        "JsName": "SSH_CUSTOM"
-      },
-      {
-        "name": "GIT_CREDTYPE_DEFAULT",
-        "value": 8,
-        "JsName": "DEFAULT"
-      },
-      {
-        "name": "GIT_CREDTYPE_SSH_INTERACTIVE",
-        "value": 16,
-        "JsName": "SSH_INTERACTIVE"
-      }
-    ],
-    "owner": "Cred",
-    "JsName": "TYPE"
-  },
-  {
-    "typeName": "delta",
-    "type": "enum",
-    "cType": "git_delta_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_DELTA_UNMODIFIED",
-        "value": 0,
-        "JsName": "UNMODIFIED"
-      },
-      {
-        "name": "GIT_DELTA_ADDED",
-        "value": 1,
-        "JsName": "ADDED"
-      },
-      {
-        "name": "GIT_DELTA_DELETED",
-        "value": 2,
-        "JsName": "DELETED"
-      },
-      {
-        "name": "GIT_DELTA_MODIFIED",
-        "value": 3,
-        "JsName": "MODIFIED"
-      },
-      {
-        "name": "GIT_DELTA_RENAMED",
-        "value": 4,
-        "JsName": "RENAMED"
-      },
-      {
-        "name": "GIT_DELTA_COPIED",
-        "value": 5,
-        "JsName": "COPIED"
-      },
-      {
-        "name": "GIT_DELTA_IGNORED",
-        "value": 6,
-        "JsName": "IGNORED"
-      },
-      {
-        "name": "GIT_DELTA_UNTRACKED",
-        "value": 7,
-        "JsName": "UNTRACKED"
-      },
-      {
-        "name": "GIT_DELTA_TYPECHANGE",
-        "value": 8,
-        "JsName": "TYPECHANGE"
-      }
-    ],
-    "owner": "Enums",
-    "JsName": "DELTA"
-  },
-  {
-    "type": "class",
-    "value": "git_diff",
-    "file": "diff.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_diff_find_similar",
-        "git_diff_foreach",
-        "git_diff_format_email",
-        "git_diff_free",
-        "git_diff_get_delta",
-        "git_diff_get_perfdata",
-        "git_diff_get_stats",
-        "git_diff_index_to_workdir",
-        "git_diff_is_sorted_icase",
-        "git_diff_merge",
-        "git_diff_num_deltas",
-        "git_diff_num_deltas_of_type",
-        "git_diff_print",
-        "git_diff_tree_to_index",
-        "git_diff_tree_to_tree",
-        "git_diff_tree_to_workdir",
-        "git_diff_tree_to_workdir_with_index",
-        "git_patch_from_diff",
-        "git_pathspec_match_diff"
-      ]
-    },
-    "typeName": "diff",
-    "cType": "git_diff",
-    "functions": [
-      {
-        "type": "function",
-        "file": "diff.h",
-        "args": [
-          {
-            "name": "diff",
-            "type": "const git_diff *",
-            "comment": "Diff list object",
-            "cType": "const git_diff *",
-            "cppClassName": "GitDiff",
-            "jsClassName": "Diff",
-            "isLibgitType": true,
-            "isEnum": false,
-            "cDependencies": [
-              "git2/sys/diff.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "idx",
-            "type": "size_t",
-            "comment": "Index into diff list",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_diff_delta *",
-          "comment": " Pointer to git_diff_delta (or NULL if `idx` out of range)",
-          "cType": "const git_diff_delta *",
-          "cppClassName": "GitDiffDelta",
-          "jsClassName": "DiffDelta",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "diff",
-        "cFunctionName": "git_diff_get_delta",
-        "cppFunctionName": "GetDelta",
-        "jsFunctionName": "getDelta",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitDiff"
-      },
-      {
-        "type": "function",
-        "file": "sys/diff.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_diff_perfdata *",
-            "comment": "Structure to be filled with diff performance data",
-            "cType": "git_diff_perfdata *",
-            "cppClassName": "GitDiffPerfdata",
-            "jsClassName": "DiffPerfdata",
-            "isLibgitType": true,
-            "isEnum": false,
-            "cDependencies": [
-              "git2/sys/diff.h"
-            ],
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "diff",
-            "type": "const git_diff *",
-            "comment": "Diff to read performance data from",
-            "cType": "const git_diff *",
-            "cppClassName": "GitDiff",
-            "jsClassName": "Diff",
-            "isLibgitType": true,
-            "isEnum": false,
-            "cDependencies": [
-              "git2/sys/diff.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 for success, \n<\n0 for error",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "diff",
-        "cFunctionName": "git_diff_get_perfdata",
-        "cppFunctionName": "GetPerfdata",
-        "jsFunctionName": "getPerfdata",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitDiff"
-      },
-      {
-        "type": "function",
-        "file": "diff.h",
-        "args": [
-          {
-            "name": "diff",
-            "type": "const git_diff *",
-            "comment": "A git_diff generated by one of the above functions",
-            "cType": "const git_diff *",
-            "cppClassName": "GitDiff",
-            "jsClassName": "Diff",
-            "isLibgitType": true,
-            "isEnum": false,
-            "cDependencies": [
-              "git2/sys/diff.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " Count of number of deltas in the list",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "diff",
-        "examples": {
-          "log.c": [
-            "ex/v0.21.2/log.html#git_diff_num_deltas-28"
-          ]
-        },
-        "cFunctionName": "git_diff_num_deltas",
-        "cppFunctionName": "NumDeltas",
-        "jsFunctionName": "numDeltas",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitDiff"
-      },
-      {
-        "type": "function",
-        "file": "diff.h",
-        "args": [
-          {
-            "name": "diff",
-            "type": "git_diff **",
-            "comment": "Output pointer to a git_diff pointer to be allocated.",
-            "cType": "git_diff **",
-            "cppClassName": "GitDiff",
-            "jsClassName": "Diff",
-            "isLibgitType": true,
-            "isEnum": false,
-            "cDependencies": [
-              "git2/sys/diff.h"
-            ],
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository containing the trees.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "old_tree",
-            "type": "git_tree *",
-            "comment": "A git_tree object to diff from, or NULL for empty tree.",
-            "cType": "git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "new_tree",
-            "type": "git_tree *",
-            "comment": "A git_tree object to diff to, or NULL for empty tree.",
-            "cType": "git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "opts",
-            "type": "const git_diff_options *",
-            "comment": "Structure with options to influence diff or NULL for defaults.",
-            "cType": "const git_diff_options *",
-            "cppClassName": "GitDiffOptions",
-            "jsClassName": "DiffOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false,
-            "isOptional": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "diff",
-        "examples": {
-          "diff.c": [
-            "ex/v0.21.2/diff.html#git_diff_tree_to_tree-3"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_diff_tree_to_tree-26",
-            "ex/v0.21.2/log.html#git_diff_tree_to_tree-27"
-          ]
-        },
-        "cFunctionName": "git_diff_tree_to_tree",
-        "cppFunctionName": "TreeToTree",
-        "jsFunctionName": "treeToTree",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitDiff"
-      }
-    ],
-    "cppClassName": "GitDiff",
-    "jsClassName": "Diff",
-    "filename": "diff",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/diff.h",
-      "../include/diff_delta.h",
-      "../include/diff_perfdata.h",
-      "../include/repository.h",
-      "../include/tree.h",
-      "../include/diff_options.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_diff_free",
-    "cDependencies": [
-      "git2/sys/diff.h"
-    ],
-    "name": "diff"
-  },
-  {
-    "type": "class",
-    "value": "git_diff_delta",
-    "file": "diff.h",
-    "fields": [
-      {
-        "type": "git_delta_t",
-        "name": "status",
-        "cType": "git_delta_t",
-        "cppFunctionName": "Status",
-        "jsFunctionName": "status",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true,
-        "isMask": true
-      },
-      {
-        "type": "uint32_t",
-        "name": "flags",
-        "cType": "uint32_t",
-        "cppFunctionName": "Flags",
-        "jsFunctionName": "flags",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint16_t",
-        "name": "similarity",
-        "cType": "uint16_t",
-        "cppFunctionName": "Similarity",
-        "jsFunctionName": "similarity",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint16_t",
-        "name": "nfiles",
-        "cType": "uint16_t",
-        "cppFunctionName": "Nfiles",
-        "jsFunctionName": "nfiles",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_diff_file",
-        "name": "old_file",
-        "cType": "git_diff_file",
-        "cppFunctionName": "OldFile",
-        "jsFunctionName": "oldFile",
-        "cppClassName": "GitDiffFile",
-        "jsClassName": "DiffFile",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      },
-      {
-        "type": "git_diff_file",
-        "name": "new_file",
-        "cType": "git_diff_file",
-        "cppFunctionName": "NewFile",
-        "jsFunctionName": "newFile",
-        "cppClassName": "GitDiffFile",
-        "jsClassName": "DiffFile",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      }
-    ],
-    "used": {
-      "returns": [
-        "git_diff_get_delta",
-        "git_patch_get_delta",
-        "git_pathspec_match_list_diff_entry"
-      ],
-      "needs": [
-        "git_diff_print_callback__to_buf",
-        "git_diff_print_callback__to_file_handle"
-      ]
-    },
-    "typeName": "diff_delta",
-    "cType": "git_diff_delta",
-    "functions": [],
-    "cppClassName": "GitDiffDelta",
-    "jsClassName": "DiffDelta",
-    "filename": "diff_delta",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/diff_file.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "diff_delta"
-  },
-  {
-    "type": "class",
-    "value": "git_diff_file",
-    "file": "diff.h",
-    "fields": [
-      {
-        "type": "git_oid",
-        "name": "id",
-        "cType": "git_oid",
-        "cppFunctionName": "Id",
-        "jsFunctionName": "id",
-        "cppClassName": "GitOid",
-        "jsClassName": "Oid",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "shouldAlloc": true,
-        "functions": {
-          "git_oid_cpy": {
-            "ignore": true
-          },
-          "git_oid_fmt": {
-            "ignore": true
-          },
-          "git_oid_fromraw": {
-            "ignore": true
-          },
-          "git_oid_fromstr": {
-            "jsFunctionName": "fromString",
-            "isAsync": false
-          },
-          "git_oid_fromstrn": {
-            "ignore": true
-          },
-          "git_oid_fromstrp": {
-            "ignore": true
-          },
-          "git_oid_nfmt": {
-            "ignore": true
-          },
-          "git_oid_pathfmt": {
-            "ignore": true
-          },
-          "git_oid_shorten_add": {
-            "ignore": true
-          },
-          "git_oid_shorten_free": {
-            "ignore": true
-          },
-          "git_oid_shorten_new": {
-            "ignore": true
-          },
-          "git_oid_tostr": {
-            "ignore": true,
-            "jsFunctionName": "toString"
-          }
-        },
-        "fields": {
-          "id": {
-            "ignore": true
-          }
-        }
-      },
-      {
-        "type": "const char *",
-        "name": "path",
-        "cType": "const char *",
-        "cppFunctionName": "Path",
-        "jsFunctionName": "path",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_off_t",
-        "name": "size",
-        "cType": "git_off_t",
-        "cppFunctionName": "Size",
-        "jsFunctionName": "size",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true
-      },
-      {
-        "type": "uint32_t",
-        "name": "flags",
-        "cType": "uint32_t",
-        "cppFunctionName": "Flags",
-        "jsFunctionName": "flags",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint16_t",
-        "name": "mode",
-        "cType": "uint16_t",
-        "cppFunctionName": "Mode",
-        "jsFunctionName": "mode",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": []
-    },
-    "typeName": "diff_file",
-    "cType": "git_diff_file",
-    "functions": [],
-    "cppClassName": "GitDiffFile",
-    "jsClassName": "DiffFile",
-    "filename": "diff_file",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/oid.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "diff_file"
-  },
-  {
-    "typeName": "diff_find",
-    "type": "enum",
-    "cType": "git_diff_find_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_DIFF_FIND_BY_CONFIG",
-        "value": 0,
-        "JsName": "BY_CONFIG"
-      },
-      {
-        "name": "GIT_DIFF_FIND_RENAMES",
-        "value": 1,
-        "JsName": "RENAMES"
-      },
-      {
-        "name": "GIT_DIFF_FIND_RENAMES_FROM_REWRITES",
-        "value": 2,
-        "JsName": "RENAMES_FROM_REWRITES"
-      },
-      {
-        "name": "GIT_DIFF_FIND_COPIES",
-        "value": 4,
-        "JsName": "COPIES"
-      },
-      {
-        "name": "GIT_DIFF_FIND_COPIES_FROM_UNMODIFIED",
-        "value": 8,
-        "JsName": "COPIES_FROM_UNMODIFIED"
-      },
-      {
-        "name": "GIT_DIFF_FIND_REWRITES",
-        "value": 16,
-        "JsName": "REWRITES"
-      },
-      {
-        "name": "GIT_DIFF_BREAK_REWRITES",
-        "value": 32,
-        "JsName": "BREAK_REWRITES"
-      },
-      {
-        "name": "GIT_DIFF_FIND_AND_BREAK_REWRITES",
-        "value": 48,
-        "JsName": "AND_BREAK_REWRITES"
-      },
-      {
-        "name": "GIT_DIFF_FIND_FOR_UNTRACKED",
-        "value": 64,
-        "JsName": "FOR_UNTRACKED"
-      },
-      {
-        "name": "GIT_DIFF_FIND_ALL",
-        "value": 255,
-        "JsName": "ALL"
-      },
-      {
-        "name": "GIT_DIFF_FIND_IGNORE_LEADING_WHITESPACE",
-        "value": 0,
-        "JsName": "IGNORE_LEADING_WHITESPACE"
-      },
-      {
-        "name": "GIT_DIFF_FIND_IGNORE_WHITESPACE",
-        "value": 4096,
-        "JsName": "IGNORE_WHITESPACE"
-      },
-      {
-        "name": "GIT_DIFF_FIND_DONT_IGNORE_WHITESPACE",
-        "value": 8192,
-        "JsName": "DONT_IGNORE_WHITESPACE"
-      },
-      {
-        "name": "GIT_DIFF_FIND_EXACT_MATCH_ONLY",
-        "value": 16384,
-        "JsName": "EXACT_MATCH_ONLY"
-      },
-      {
-        "name": "GIT_DIFF_BREAK_REWRITES_FOR_RENAMES_ONLY",
-        "value": 32768,
-        "JsName": "BREAK_REWRITES_FOR_RENAMES_ONLY"
-      },
-      {
-        "name": "GIT_DIFF_FIND_REMOVE_UNMODIFIED",
-        "value": 65536,
-        "JsName": "REMOVE_UNMODIFIED"
-      }
-    ],
-    "owner": "Diff",
-    "JsName": "FIND"
-  },
-  {
-    "typeName": "diff_flag",
-    "type": "enum",
-    "cType": "git_diff_flag_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_DIFF_FLAG_BINARY",
-        "value": 1,
-        "JsName": "BINARY"
-      },
-      {
-        "name": "GIT_DIFF_FLAG_NOT_BINARY",
-        "value": 2,
-        "JsName": "NOT_BINARY"
-      },
-      {
-        "name": "GIT_DIFF_FLAG_VALID_ID",
-        "value": 4,
-        "JsName": "VALID_ID"
-      }
-    ],
-    "owner": "Diff",
-    "JsName": "FLAG"
-  },
-  {
-    "typeName": "diff_format",
-    "type": "enum",
-    "cType": "git_diff_format_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_DIFF_FORMAT_PATCH",
-        "value": 1,
-        "JsName": "PATCH"
-      },
-      {
-        "name": "GIT_DIFF_FORMAT_PATCH_HEADER",
-        "value": 2,
-        "JsName": "PATCH_HEADER"
-      },
-      {
-        "name": "GIT_DIFF_FORMAT_RAW",
-        "value": 3,
-        "JsName": "RAW"
-      },
-      {
-        "name": "GIT_DIFF_FORMAT_NAME_ONLY",
-        "value": 4,
-        "JsName": "NAME_ONLY"
-      },
-      {
-        "name": "GIT_DIFF_FORMAT_NAME_STATUS",
-        "value": 5,
-        "JsName": "NAME_STATUS"
-      }
-    ],
-    "owner": "Diff",
-    "JsName": "FORMAT"
-  },
-  {
-    "typeName": "diff_format_email_flags",
-    "type": "enum",
-    "cType": "git_diff_format_email_flags_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_DIFF_FORMAT_EMAIL_NONE",
-        "value": 0,
-        "JsName": "FORMAT_EMAIL_NONE"
-      },
-      {
-        "name": "GIT_DIFF_FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER",
-        "value": 1,
-        "JsName": "FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER"
-      }
-    ],
-    "owner": "Diff",
-    "JsName": "FORMAT_EMAIL_FLAGS"
-  },
-  {
-    "type": "class",
-    "value": "git_diff_hunk",
-    "file": "diff.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_diff_print_callback__to_buf",
-        "git_diff_print_callback__to_file_handle",
-        "git_patch_get_hunk"
-      ]
-    },
-    "fields": [
-      {
-        "name": "old_start",
-        "type": "int",
-        "cType": "int",
-        "cppFunctionName": "OldStart",
-        "jsFunctionName": "oldStart",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "old_lines",
-        "type": "int",
-        "cType": "int",
-        "cppFunctionName": "OldLines",
-        "jsFunctionName": "oldLines",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "new_start",
-        "type": "int",
-        "cType": "int",
-        "cppFunctionName": "NewStart",
-        "jsFunctionName": "newStart",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "new_lines",
-        "type": "int",
-        "cType": "int",
-        "cppFunctionName": "NewLines",
-        "jsFunctionName": "newLines",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "header_len",
-        "type": "size_t",
-        "cType": "size_t",
-        "cppFunctionName": "HeaderLen",
-        "jsFunctionName": "headerLen",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "header",
-        "type": "char *",
-        "cType": "char *",
-        "cppFunctionName": "Header",
-        "jsFunctionName": "header",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      }
-    ],
-    "typeName": "diff_hunk",
-    "cType": "git_diff_hunk",
-    "functions": [],
-    "cppClassName": "GitDiffHunk",
-    "jsClassName": "DiffHunk",
-    "filename": "diff_hunk",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "diff_hunk"
-  },
-  {
-    "type": "class",
-    "value": "git_diff_line",
-    "file": "diff.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_diff_print_callback__to_buf",
-        "git_diff_print_callback__to_file_handle",
-        "git_patch_get_line_in_hunk"
-      ]
-    },
-    "fields": [
-      {
-        "name": "origin",
-        "type": "int",
-        "cType": "int",
-        "cppFunctionName": "Origin",
-        "jsFunctionName": "origin",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "old_lineno",
-        "type": "int",
-        "cType": "int",
-        "cppFunctionName": "OldLineno",
-        "jsFunctionName": "oldLineno",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "new_lineno",
-        "type": "int",
-        "cType": "int",
-        "cppFunctionName": "NewLineno",
-        "jsFunctionName": "newLineno",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "num_lines",
-        "type": "int",
-        "cType": "int",
-        "cppFunctionName": "NumLines",
-        "jsFunctionName": "numLines",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "content_len",
-        "type": "size_t",
-        "cType": "size_t",
-        "cppFunctionName": "ContentLen",
-        "jsFunctionName": "contentLen",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "content_offset",
-        "type": "git_off_t",
-        "cType": "git_off_t",
-        "cppFunctionName": "ContentOffset",
-        "jsFunctionName": "contentOffset",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true
-      },
-      {
-        "name": "content",
-        "type": "const char *",
-        "cType": "const char *",
-        "cppFunctionName": "Content",
-        "jsFunctionName": "content",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      }
-    ],
-    "typeName": "diff_line",
-    "cType": "git_diff_line",
-    "functions": [],
-    "cppClassName": "GitDiffLine",
-    "jsClassName": "DiffLine",
-    "filename": "diff_line",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "diff_line"
-  },
-  {
-    "typeName": "diff_line",
-    "type": "enum",
-    "cType": "git_diff_line_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_DIFF_LINE_CONTEXT",
-        "value": 32,
-        "JsName": "CONTEXT"
-      },
-      {
-        "name": "GIT_DIFF_LINE_ADDITION",
-        "value": 43,
-        "JsName": "ADDITION"
-      },
-      {
-        "name": "GIT_DIFF_LINE_DELETION",
-        "value": 45,
-        "JsName": "DELETION"
-      },
-      {
-        "name": "GIT_DIFF_LINE_CONTEXT_EOFNL",
-        "value": 61,
-        "JsName": "CONTEXT_EOFNL"
-      },
-      {
-        "name": "GIT_DIFF_LINE_ADD_EOFNL",
-        "value": 62,
-        "JsName": "ADD_EOFNL"
-      },
-      {
-        "name": "GIT_DIFF_LINE_DEL_EOFNL",
-        "value": 60,
-        "JsName": "DEL_EOFNL"
-      },
-      {
-        "name": "GIT_DIFF_LINE_FILE_HDR",
-        "value": 70,
-        "JsName": "FILE_HDR"
-      },
-      {
-        "name": "GIT_DIFF_LINE_HUNK_HDR",
-        "value": 72,
-        "JsName": "HUNK_HDR"
-      },
-      {
-        "name": "GIT_DIFF_LINE_BINARY",
-        "value": 66,
-        "JsName": "BINARY"
-      }
-    ],
-    "owner": "Diff",
-    "JsName": "LINE"
-  },
-  {
-    "typeName": "diff_option",
-    "type": "enum",
-    "cType": "git_diff_option_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_DIFF_NORMAL",
-        "value": 0,
-        "JsName": "NORMAL"
-      },
-      {
-        "name": "GIT_DIFF_REVERSE",
-        "value": 1,
-        "JsName": "REVERSE"
-      },
-      {
-        "name": "GIT_DIFF_INCLUDE_IGNORED",
-        "value": 2,
-        "JsName": "INCLUDE_IGNORED"
-      },
-      {
-        "name": "GIT_DIFF_RECURSE_IGNORED_DIRS",
-        "value": 4,
-        "JsName": "RECURSE_IGNORED_DIRS"
-      },
-      {
-        "name": "GIT_DIFF_INCLUDE_UNTRACKED",
-        "value": 8,
-        "JsName": "INCLUDE_UNTRACKED"
-      },
-      {
-        "name": "GIT_DIFF_RECURSE_UNTRACKED_DIRS",
-        "value": 16,
-        "JsName": "RECURSE_UNTRACKED_DIRS"
-      },
-      {
-        "name": "GIT_DIFF_INCLUDE_UNMODIFIED",
-        "value": 32,
-        "JsName": "INCLUDE_UNMODIFIED"
-      },
-      {
-        "name": "GIT_DIFF_INCLUDE_TYPECHANGE",
-        "value": 64,
-        "JsName": "INCLUDE_TYPECHANGE"
-      },
-      {
-        "name": "GIT_DIFF_INCLUDE_TYPECHANGE_TREES",
-        "value": 128,
-        "JsName": "INCLUDE_TYPECHANGE_TREES"
-      },
-      {
-        "name": "GIT_DIFF_IGNORE_FILEMODE",
-        "value": 256,
-        "JsName": "IGNORE_FILEMODE"
-      },
-      {
-        "name": "GIT_DIFF_IGNORE_SUBMODULES",
-        "value": 512,
-        "JsName": "IGNORE_SUBMODULES"
-      },
-      {
-        "name": "GIT_DIFF_IGNORE_CASE",
-        "value": 1024,
-        "JsName": "IGNORE_CASE"
-      },
-      {
-        "name": "GIT_DIFF_DISABLE_PATHSPEC_MATCH",
-        "value": 4096,
-        "JsName": "DISABLE_PATHSPEC_MATCH"
-      },
-      {
-        "name": "GIT_DIFF_SKIP_BINARY_CHECK",
-        "value": 8192,
-        "JsName": "SKIP_BINARY_CHECK"
-      },
-      {
-        "name": "GIT_DIFF_ENABLE_FAST_UNTRACKED_DIRS",
-        "value": 16384,
-        "JsName": "ENABLE_FAST_UNTRACKED_DIRS"
-      },
-      {
-        "name": "GIT_DIFF_UPDATE_INDEX",
-        "value": 32768,
-        "JsName": "UPDATE_INDEX"
-      },
-      {
-        "name": "GIT_DIFF_FORCE_TEXT",
-        "value": 1048576,
-        "JsName": "FORCE_TEXT"
-      },
-      {
-        "name": "GIT_DIFF_FORCE_BINARY",
-        "value": 2097152,
-        "JsName": "FORCE_BINARY"
-      },
-      {
-        "name": "GIT_DIFF_IGNORE_WHITESPACE",
-        "value": 4194304,
-        "JsName": "IGNORE_WHITESPACE"
-      },
-      {
-        "name": "GIT_DIFF_IGNORE_WHITESPACE_CHANGE",
-        "value": 8388608,
-        "JsName": "IGNORE_WHITESPACE_CHANGE"
-      },
-      {
-        "name": "GIT_DIFF_IGNORE_WHITESPACE_EOL",
-        "value": 16777216,
-        "JsName": "IGNORE_WHITESPACE_EOL"
-      },
-      {
-        "name": "GIT_DIFF_SHOW_UNTRACKED_CONTENT",
-        "value": 33554432,
-        "JsName": "SHOW_UNTRACKED_CONTENT"
-      },
-      {
-        "name": "GIT_DIFF_SHOW_UNMODIFIED",
-        "value": 67108864,
-        "JsName": "SHOW_UNMODIFIED"
-      },
-      {
-        "name": "GIT_DIFF_PATIENCE",
-        "value": 268435456,
-        "JsName": "PATIENCE"
-      },
-      {
-        "name": "GIT_DIFF_MINIMAL",
-        "value": 536870912,
-        "JsName": "MINIMAL"
-      },
-      {
-        "name": "GIT_DIFF_SHOW_BINARY",
-        "value": 1073741824,
-        "JsName": "SHOW_BINARY"
-      }
-    ],
-    "owner": "Diff",
-    "JsName": "OPTION"
-  },
-  {
-    "type": "struct",
-    "value": "git_diff_options",
-    "file": "diff.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint32_t",
-        "name": "flags",
-        "cType": "uint32_t",
-        "cppFunctionName": "Flags",
-        "jsFunctionName": "flags",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_submodule_ignore_t",
-        "name": "ignore_submodules",
-        "cType": "git_submodule_ignore_t",
-        "cppFunctionName": "IgnoreSubmodules",
-        "jsFunctionName": "ignoreSubmodules",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true,
-        "isMask": true
-      },
-      {
-        "type": "git_strarray",
-        "name": "pathspec",
-        "cType": "git_strarray",
-        "cppFunctionName": "Pathspec",
-        "jsFunctionName": "pathspec",
-        "cppClassName": "GitStrarray",
-        "jsClassName": "Strarray",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      },
-      {
-        "type": "git_diff_notify_cb",
-        "name": "notify_cb",
-        "cType": "git_diff_notify_cb",
-        "cppFunctionName": "NotifyCb",
-        "jsFunctionName": "notifyCb",
-        "cppClassName": "GitDiffNotifyCb",
-        "jsClassName": "DiffNotifyCb",
-        "isCallbackFunction": true,
-        "args": [
-          {
-            "name": "diff_so_far",
-            "cType": "const git_diff *",
-            "cppClassName": "GitDiff",
-            "jsClassName": "Diff",
-            "isLibgitType": true,
-            "isEnum": false,
-            "cDependencies": [
-              "git2/sys/diff.h"
-            ],
-            "functions": {
-              "git_diff_blob_to_buffer": {
-                "ignore": true
-              },
-              "git_diff_blobs": {
-                "ignore": true
-              },
-              "git_diff_buffers": {
-                "ignore": true
-              },
-              "git_diff_commit_as_email": {
-                "ignore": true
-              },
-              "git_diff_find_init_options": {
-                "ignore": true
-              },
-              "git_diff_find_similar": {
-                "ignore": true
-              },
-              "git_diff_foreach": {
-                "ignore": true
-              },
-              "git_diff_format_email": {
-                "ignore": true
-              },
-              "git_diff_format_email_init_options": {
-                "ignore": true
-              },
-              "git_diff_free": {
-                "ignore": true
-              },
-              "git_diff_get_stats": {
-                "ignore": true
-              },
-              "git_diff_index_to_workdir": {
-                "ignore": true
-              },
-              "git_diff_init_options": {
-                "ignore": true
-              },
-              "git_diff_is_sorted_icase": {
-                "ignore": true
-              },
-              "git_diff_merge": {
-                "ignore": true
-              },
-              "git_diff_num_deltas_of_type": {
-                "ignore": true
-              },
-              "git_diff_print": {
-                "ignore": true
-              },
-              "git_diff_print_callback__to_buf": {
-                "ignore": true
-              },
-              "git_diff_print_callback__to_file_handle": {
-                "ignore": true
-              },
-              "git_diff_stats_deletions": {
-                "ignore": true
-              },
-              "git_diff_stats_files_changed": {
-                "ignore": true
-              },
-              "git_diff_stats_free": {
-                "ignore": true
-              },
-              "git_diff_stats_insertions": {
-                "ignore": true
-              },
-              "git_diff_stats_to_buf": {
-                "ignore": true
-              },
-              "git_diff_status_char": {
-                "ignore": true
-              },
-              "git_diff_tree_to_index": {
-                "ignore": true
-              },
-              "git_diff_tree_to_tree": {
-                "args": {
-                  "opts": {
-                    "isOptional": true
-                  }
-                }
-              },
-              "git_diff_tree_to_workdir": {
-                "ignore": true
-              },
-              "git_diff_tree_to_workdir_with_index": {
-                "ignore": true
-              }
-            }
-          },
-          {
-            "name": "delta_to_add",
-            "cType": "git_diff_delta *",
-            "cppClassName": "GitDiffDelta",
-            "jsClassName": "DiffDelta",
-            "isLibgitType": true,
-            "isEnum": false
-          },
-          {
-            "name": "matched_pathspec",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String"
-          },
-          {
-            "name": "payload",
-            "cType": "void *",
-            "cppClassName": "Void",
-            "jsClassName": "Void"
-          }
-        ],
-        "returnType": "int",
-        "returnNoResults": 1,
-        "returnSuccess": 0,
-        "returnError": -1
-      },
-      {
-        "type": "void *",
-        "name": "notify_payload",
-        "cType": "void *",
-        "cppFunctionName": "NotifyPayload",
-        "jsFunctionName": "notifyPayload",
-        "cppClassName": "Void",
-        "jsClassName": "Void",
-        "isCallbackFunction": false,
-        "payloadFor": "notify_cb"
-      },
-      {
-        "type": "uint16_t",
-        "name": "context_lines",
-        "cType": "uint16_t",
-        "cppFunctionName": "ContextLines",
-        "jsFunctionName": "contextLines",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint16_t",
-        "name": "interhunk_lines",
-        "cType": "uint16_t",
-        "cppFunctionName": "InterhunkLines",
-        "jsFunctionName": "interhunkLines",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint16_t",
-        "name": "id_abbrev",
-        "cType": "uint16_t",
-        "cppFunctionName": "IdAbbrev",
-        "jsFunctionName": "idAbbrev",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_off_t",
-        "name": "max_size",
-        "cType": "git_off_t",
-        "cppFunctionName": "MaxSize",
-        "jsFunctionName": "maxSize",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true
-      },
-      {
-        "type": "const char *",
-        "name": "old_prefix",
-        "cType": "const char *",
-        "cppFunctionName": "OldPrefix",
-        "jsFunctionName": "oldPrefix",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "new_prefix",
-        "cType": "const char *",
-        "cppFunctionName": "NewPrefix",
-        "jsFunctionName": "newPrefix",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_diff_blob_to_buffer",
-        "git_diff_blobs",
-        "git_diff_buffers",
-        "git_diff_commit_as_email",
-        "git_diff_index_to_workdir",
-        "git_diff_init_options",
-        "git_diff_tree_to_index",
-        "git_diff_tree_to_tree",
-        "git_diff_tree_to_workdir",
-        "git_diff_tree_to_workdir_with_index",
-        "git_patch_from_blob_and_buffer",
-        "git_patch_from_blobs",
-        "git_patch_from_buffers"
-      ]
-    },
-    "typeName": "diff_options",
-    "cType": "git_diff_options",
-    "functions": [],
-    "cppClassName": "GitDiffOptions",
-    "jsClassName": "DiffOptions",
-    "filename": "diff_options",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/strarray.h",
-      "../include/diff.h",
-      "../include/diff_delta.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "diff_options"
-  },
-  {
-    "type": "class",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "size_t",
-        "name": "stat_calls",
-        "cType": "size_t",
-        "cppFunctionName": "StatCalls",
-        "jsFunctionName": "statCalls",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "size_t",
-        "name": "oid_calculations",
-        "cType": "size_t",
-        "cppFunctionName": "OidCalculations",
-        "jsFunctionName": "oidCalculations",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "typeName": "diff_perfdata",
-    "cType": "git_diff_perfdata",
-    "functions": [],
-    "cppClassName": "GitDiffPerfdata",
-    "jsClassName": "DiffPerfdata",
-    "filename": "diff_perfdata",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "cDependencies": [
-      "git2/sys/diff.h"
-    ],
-    "name": "diff_perfdata"
-  },
-  {
-    "type": "class",
-    "value": "git_diff_stats",
-    "file": "diff.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_diff_get_stats",
-        "git_diff_stats_deletions",
-        "git_diff_stats_files_changed",
-        "git_diff_stats_free",
-        "git_diff_stats_insertions",
-        "git_diff_stats_to_buf"
-      ]
-    },
-    "typeName": "diff_stats",
-    "cType": "git_diff_stats",
-    "functions": [],
-    "cppClassName": "GitDiffStats",
-    "jsClassName": "DiffStats",
-    "filename": "diff_stats",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "diff_stats"
-  },
-  {
-    "typeName": "diff_stats_format",
-    "type": "enum",
-    "cType": "git_diff_stats_format_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_DIFF_STATS_NONE",
-        "value": 0,
-        "JsName": "STATS_NONE"
-      },
-      {
-        "name": "GIT_DIFF_STATS_FULL",
-        "value": 1,
-        "JsName": "STATS_FULL"
-      },
-      {
-        "name": "GIT_DIFF_STATS_SHORT",
-        "value": 2,
-        "JsName": "STATS_SHORT"
-      },
-      {
-        "name": "GIT_DIFF_STATS_NUMBER",
-        "value": 4,
-        "JsName": "STATS_NUMBER"
-      },
-      {
-        "name": "GIT_DIFF_STATS_INCLUDE_SUMMARY",
-        "value": 8,
-        "JsName": "STATS_INCLUDE_SUMMARY"
-      }
-    ],
-    "owner": "Diff",
-    "JsName": "STATS_FORMAT"
-  },
-  {
-    "type": "class",
-    "value": "git_error",
-    "file": "errors.h",
-    "fields": [
-      {
-        "type": "char *",
-        "name": "message",
-        "cType": "char *",
-        "cppFunctionName": "Message",
-        "jsFunctionName": "message",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "int",
-        "name": "klass",
-        "cType": "int",
-        "cppFunctionName": "Klass",
-        "jsFunctionName": "klass",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [
-        "giterr_last"
-      ],
-      "needs": [
-        "giterr_detach"
-      ]
-    },
-    "typeName": "error",
-    "cType": "git_error",
-    "functions": [],
-    "cppClassName": "GitError",
-    "jsClassName": "Error",
-    "filename": "error",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "error"
-  },
-  {
-    "typeName": "error",
-    "type": "enum",
-    "cType": "git_error_t",
-    "isMask": false,
-    "values": [
-      {
-        "name": "GITERR_NONE",
-        "value": 0,
-        "JsName": "GITERR_NONE"
-      },
-      {
-        "name": "GITERR_NOMEMORY",
-        "value": 1,
-        "JsName": "GITERR_NOMEMORY"
-      },
-      {
-        "name": "GITERR_OS",
-        "value": 2,
-        "JsName": "GITERR_OS"
-      },
-      {
-        "name": "GITERR_INVALID",
-        "value": 3,
-        "JsName": "GITERR_INVALID"
-      },
-      {
-        "name": "GITERR_REFERENCE",
-        "value": 4,
-        "JsName": "GITERR_REFERENCE"
-      },
-      {
-        "name": "GITERR_ZLIB",
-        "value": 5,
-        "JsName": "GITERR_ZLIB"
-      },
-      {
-        "name": "GITERR_REPOSITORY",
-        "value": 6,
-        "JsName": "GITERR_REPOSITORY"
-      },
-      {
-        "name": "GITERR_CONFIG",
-        "value": 7,
-        "JsName": "GITERR_CONFIG"
-      },
-      {
-        "name": "GITERR_REGEX",
-        "value": 8,
-        "JsName": "GITERR_REGEX"
-      },
-      {
-        "name": "GITERR_ODB",
-        "value": 9,
-        "JsName": "GITERR_ODB"
-      },
-      {
-        "name": "GITERR_INDEX",
-        "value": 10,
-        "JsName": "GITERR_INDEX"
-      },
-      {
-        "name": "GITERR_OBJECT",
-        "value": 11,
-        "JsName": "GITERR_OBJECT"
-      },
-      {
-        "name": "GITERR_NET",
-        "value": 12,
-        "JsName": "GITERR_NET"
-      },
-      {
-        "name": "GITERR_TAG",
-        "value": 13,
-        "JsName": "GITERR_TAG"
-      },
-      {
-        "name": "GITERR_TREE",
-        "value": 14,
-        "JsName": "GITERR_TREE"
-      },
-      {
-        "name": "GITERR_INDEXER",
-        "value": 15,
-        "JsName": "GITERR_INDEXER"
-      },
-      {
-        "name": "GITERR_SSL",
-        "value": 16,
-        "JsName": "GITERR_SSL"
-      },
-      {
-        "name": "GITERR_SUBMODULE",
-        "value": 17,
-        "JsName": "GITERR_SUBMODULE"
-      },
-      {
-        "name": "GITERR_THREAD",
-        "value": 18,
-        "JsName": "GITERR_THREAD"
-      },
-      {
-        "name": "GITERR_STASH",
-        "value": 19,
-        "JsName": "GITERR_STASH"
-      },
-      {
-        "name": "GITERR_CHECKOUT",
-        "value": 20,
-        "JsName": "GITERR_CHECKOUT"
-      },
-      {
-        "name": "GITERR_FETCHHEAD",
-        "value": 21,
-        "JsName": "GITERR_FETCHHEAD"
-      },
-      {
-        "name": "GITERR_MERGE",
-        "value": 22,
-        "JsName": "GITERR_MERGE"
-      },
-      {
-        "name": "GITERR_SSH",
-        "value": 23,
-        "JsName": "GITERR_SSH"
-      },
-      {
-        "name": "GITERR_FILTER",
-        "value": 24,
-        "JsName": "GITERR_FILTER"
-      },
-      {
-        "name": "GITERR_REVERT",
-        "value": 25,
-        "JsName": "GITERR_REVERT"
-      },
-      {
-        "name": "GITERR_CALLBACK",
-        "value": 26,
-        "JsName": "GITERR_CALLBACK"
-      },
-      {
-        "name": "GITERR_CHERRYPICK",
-        "value": 27,
-        "JsName": "GITERR_CHERRYPICK"
-      }
-    ],
-    "owner": "Error",
-    "JsName": "ERROR"
-  },
-  {
-    "typeName": "error_code",
-    "type": "enum",
-    "cType": "git_error_code",
-    "isMask": false,
-    "values": [
-      {
-        "name": "GIT_OK",
-        "value": 0,
-        "JsName": "OK"
-      },
-      {
-        "name": "GIT_ERROR",
-        "value": -1,
-        "JsName": "ERROR"
-      },
-      {
-        "name": "GIT_ENOTFOUND",
-        "value": -3,
-        "JsName": "ENOTFOUND"
-      },
-      {
-        "name": "GIT_EEXISTS",
-        "value": -4,
-        "JsName": "EEXISTS"
-      },
-      {
-        "name": "GIT_EAMBIGUOUS",
-        "value": -5,
-        "JsName": "EAMBIGUOUS"
-      },
-      {
-        "name": "GIT_EBUFS",
-        "value": -6,
-        "JsName": "EBUFS"
-      },
-      {
-        "name": "GIT_EUSER",
-        "value": -7,
-        "JsName": "EUSER"
-      },
-      {
-        "name": "GIT_EBAREREPO",
-        "value": -8,
-        "JsName": "EBAREREPO"
-      },
-      {
-        "name": "GIT_EUNBORNBRANCH",
-        "value": -9,
-        "JsName": "EUNBORNBRANCH"
-      },
-      {
-        "name": "GIT_EUNMERGED",
-        "value": -10,
-        "JsName": "EUNMERGED"
-      },
-      {
-        "name": "GIT_ENONFASTFORWARD",
-        "value": -11,
-        "JsName": "ENONFASTFORWARD"
-      },
-      {
-        "name": "GIT_EINVALIDSPEC",
-        "value": -12,
-        "JsName": "EINVALIDSPEC"
-      },
-      {
-        "name": "GIT_EMERGECONFLICT",
-        "value": -13,
-        "JsName": "EMERGECONFLICT"
-      },
-      {
-        "name": "GIT_ELOCKED",
-        "value": -14,
-        "JsName": "ELOCKED"
-      },
-      {
-        "name": "GIT_EMODIFIED",
-        "value": -15,
-        "JsName": "EMODIFIED"
-      },
-      {
-        "name": "GIT_PASSTHROUGH",
-        "value": -30,
-        "JsName": "PASSTHROUGH"
-      },
-      {
-        "name": "GIT_ITEROVER",
-        "value": -31,
-        "JsName": "ITEROVER"
-      }
-    ],
-    "owner": "Error",
-    "JsName": "CODE"
-  },
-  {
-    "typeName": "feature",
-    "type": "enum",
-    "cType": "git_feature_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_FEATURE_THREADS",
-        "value": 1,
-        "JsName": "THREADS"
-      },
-      {
-        "name": "GIT_FEATURE_HTTPS",
-        "value": 2,
-        "JsName": "HTTPS"
-      },
-      {
-        "name": "GIT_FEATURE_SSH",
-        "value": 4,
-        "JsName": "SSH"
-      }
-    ],
-    "owner": "Enums",
-    "JsName": "FEATURE"
-  },
-  {
-    "typeName": "filemode",
-    "type": "enum",
-    "cType": "git_filemode_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_FILEMODE_NEW",
-        "value": 0,
-        "JsName": "NEW"
-      },
-      {
-        "name": "GIT_FILEMODE_TREE",
-        "value": 16384,
-        "JsName": "TREE"
-      },
-      {
-        "name": "GIT_FILEMODE_BLOB",
-        "value": 33188,
-        "JsName": "BLOB"
-      },
-      {
-        "name": "GIT_FILEMODE_BLOB_EXECUTABLE",
-        "value": 33261,
-        "JsName": "BLOB_EXECUTABLE"
-      },
-      {
-        "name": "GIT_FILEMODE_LINK",
-        "value": 40960,
-        "JsName": "LINK"
-      },
-      {
-        "name": "GIT_FILEMODE_COMMIT",
-        "value": 57344,
-        "JsName": "COMMIT"
-      }
-    ],
-    "owner": "Enums",
-    "JsName": "FILEMODE"
-  },
-  {
-    "type": "class",
-    "value": "git_filter",
-    "file": "sys/filter.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "attributes",
-        "cType": "const char *",
-        "cppFunctionName": "Attributes",
-        "jsFunctionName": "attributes",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [
-        "git_filter_lookup"
-      ],
-      "needs": [
-        "git_filter_list_push",
-        "git_filter_register"
-      ]
-    },
-    "typeName": "filter",
-    "cType": "git_filter",
-    "functions": [
-      {
-        "type": "function",
-        "file": "sys/filter.h",
-        "args": [
-          {
-            "name": "fl",
-            "type": "const git_filter_list *",
-            "comment": "A filter list",
-            "cType": "const git_filter_list *",
-            "cppClassName": "GitFilterList",
-            "jsClassName": "FilterList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " The number of filters in the list",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "filter",
-        "cFunctionName": "git_filter_list_length",
-        "cppFunctionName": "ListLength",
-        "jsFunctionName": "listLength",
-        "cppClassName": "GitFilter"
-      },
-      {
-        "type": "function",
-        "file": "sys/filter.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_filter_list **",
-            "comment": null,
-            "cType": "git_filter_list **",
-            "cppClassName": "GitFilterList",
-            "jsClassName": "FilterList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": null,
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "mode",
-            "type": "git_filter_mode_t",
-            "comment": null,
-            "cType": "git_filter_mode_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": true,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "options",
-            "type": "uint32_t",
-            "comment": null,
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "filter",
-        "cFunctionName": "git_filter_list_new",
-        "cppFunctionName": "ListNew",
-        "jsFunctionName": "listNew",
-        "isAsync": true,
-        "cppClassName": "GitFilter"
-      },
-      {
-        "type": "function",
-        "file": "sys/filter.h",
-        "args": [
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The name of the filter",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "git_filter *",
-          "comment": " Pointer to the filter object or NULL if not found",
-          "cType": "git_filter *",
-          "cppClassName": "GitFilter",
-          "jsClassName": "Filter",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_filter_list_apply_to_blob": {
-              "ignore": true
-            },
-            "git_filter_list_apply_to_data": {
-              "ignore": true
-            },
-            "git_filter_list_apply_to_file": {
-              "ignore": true
-            },
-            "git_filter_list_free": {
-              "ignore": true
-            },
-            "git_filter_list_load": {
-              "ignore": true
-            },
-            "git_filter_list_push": {
-              "ignore": true
-            },
-            "git_filter_source_filemode": {
-              "ignore": true
-            },
-            "git_filter_source_id": {
-              "ignore": true
-            },
-            "git_filter_source_mode": {
-              "ignore": true
-            },
-            "git_filter_source_options": {
-              "ignore": true
-            },
-            "git_filter_source_path": {
-              "ignore": true
-            },
-            "git_filter_source_repo": {
-              "ignore": true
-            }
-          },
-          "fields": {
-            "initialize": {
-              "ignore": true
-            },
-            "shutdown": {
-              "ignore": true
-            },
-            "check": {
-              "ignore": true
-            },
-            "apply": {
-              "ignore": true
-            },
-            "cleanup": {
-              "ignore": true
-            }
-          },
-          "cDependencies": [
-            "git2/sys/filter.h"
-          ],
-          "isReturn": false,
-          "isSelf": true
-        },
-        "group": "filter",
-        "cFunctionName": "git_filter_lookup",
-        "cppFunctionName": "Lookup",
-        "jsFunctionName": "lookup",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitFilter"
-      },
-      {
-        "type": "function",
-        "file": "sys/filter.h",
-        "args": [
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "A name by which the filter can be referenced.  Attempting\n \t\t\tto register with an in-use name will return GIT_EEXISTS.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "filter",
-            "type": "git_filter *",
-            "comment": "The filter definition.  This pointer will be stored as is\n \t\t\tby libgit2 so it must be a durable allocation (either static\n \t\t\tor on the heap).",
-            "cType": "git_filter *",
-            "cppClassName": "GitFilter",
-            "jsClassName": "Filter",
-            "isLibgitType": true,
-            "isEnum": false,
-            "fields": {
-              "initialize": {
-                "ignore": true
-              },
-              "shutdown": {
-                "ignore": true
-              },
-              "check": {
-                "ignore": true
-              },
-              "apply": {
-                "ignore": true
-              },
-              "cleanup": {
-                "ignore": true
-              }
-            },
-            "cDependencies": [
-              "git2/sys/filter.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "priority",
-            "type": "int",
-            "comment": "The priority for filter application",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on successful registry, error code \n<\n0 on failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "filter",
-        "cFunctionName": "git_filter_register",
-        "cppFunctionName": "Register",
-        "jsFunctionName": "register",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitFilter"
-      },
-      {
-        "type": "function",
-        "file": "sys/filter.h",
-        "args": [
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The name under which the filter was registered",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, error code \n<\n0 on failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "filter",
-        "cFunctionName": "git_filter_unregister",
-        "cppFunctionName": "Unregister",
-        "jsFunctionName": "unregister",
-        "cppClassName": "GitFilter"
-      }
-    ],
-    "cppClassName": "GitFilter",
-    "jsClassName": "Filter",
-    "filename": "filter",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/filter_list.h",
-      "../include/repository.h",
-      "../include/filter.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "cDependencies": [
-      "git2/sys/filter.h"
-    ],
-    "name": "filter"
-  },
-  {
-    "type": "class",
-    "value": "git_filter_list",
-    "file": "filter.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_filter_list_apply_to_blob",
-        "git_filter_list_apply_to_data",
-        "git_filter_list_apply_to_file",
-        "git_filter_list_free",
-        "git_filter_list_length",
-        "git_filter_list_load",
-        "git_filter_list_new",
-        "git_filter_list_push"
-      ]
-    },
-    "typeName": "filter_list",
-    "cType": "git_filter_list",
-    "functions": [],
-    "cppClassName": "GitFilterList",
-    "jsClassName": "FilterList",
-    "filename": "filter_list",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "filter_list"
-  },
-  {
-    "typeName": "filter_mode",
-    "type": "enum",
-    "cType": "git_filter_mode_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_FILTER_TO_WORKTREE",
-        "value": 0,
-        "JsName": "TO_WORKTREE"
-      },
-      {
-        "name": "GIT_FILTER_SMUDGE",
-        "value": 0,
-        "JsName": "SMUDGE"
-      },
-      {
-        "name": "GIT_FILTER_TO_ODB",
-        "value": 1,
-        "JsName": "TO_ODB"
-      },
-      {
-        "name": "GIT_FILTER_CLEAN",
-        "value": 1,
-        "JsName": "CLEAN"
-      }
-    ],
-    "owner": "Filter",
-    "JsName": "MODE"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "errors.h",
-        "args": [],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "giterr",
-        "cFunctionName": "giterr_clear",
-        "cppFunctionName": "GiterrClear",
-        "jsFunctionName": "errClear",
-        "cppClassName": "GitGiterr"
-      },
-      {
-        "type": "function",
-        "file": "errors.h",
-        "args": [
-          {
-            "name": "cpy",
-            "type": "git_error *",
-            "comment": null,
-            "cType": "git_error *",
-            "cppClassName": "GitError",
-            "jsClassName": "Error",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "giterr",
-        "cFunctionName": "giterr_detach",
-        "cppFunctionName": "GiterrDetach",
-        "jsFunctionName": "errDetach",
-        "cppClassName": "GitGiterr"
-      },
-      {
-        "type": "function",
-        "file": "errors.h",
-        "args": [],
-        "return": {
-          "type": "const git_error *",
-          "comment": " A git_error object.",
-          "cType": "const git_error *",
-          "cppClassName": "GitError",
-          "jsClassName": "Error",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "giterr",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#giterr_last-27"
-          ],
-          "network/clone.c": [
-            "ex/v0.21.2/network/clone.html#giterr_last-2"
-          ],
-          "network/git2.c": [
-            "ex/v0.21.2/network/git2.html#giterr_last-1",
-            "ex/v0.21.2/network/git2.html#giterr_last-2"
-          ]
-        },
-        "cFunctionName": "giterr_last",
-        "cppFunctionName": "GiterrLast",
-        "jsFunctionName": "errLast",
-        "cppClassName": "GitGiterr"
-      },
-      {
-        "type": "function",
-        "file": "errors.h",
-        "args": [],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "giterr",
-        "cFunctionName": "giterr_set_oom",
-        "cppFunctionName": "GiterrSetOom",
-        "jsFunctionName": "errSetOom",
-        "cppClassName": "GitGiterr"
-      },
-      {
-        "type": "function",
-        "file": "errors.h",
-        "args": [
-          {
-            "name": "error_class",
-            "type": "int",
-            "comment": "One of the `git_error_t` enum above describing the\n                    general subsystem that is responsible for the error.",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "string",
-            "type": "const char *",
-            "comment": "The formatted error message to keep",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "giterr",
-        "cFunctionName": "giterr_set_str",
-        "cppFunctionName": "GiterrSetStr",
-        "jsFunctionName": "errSetStr",
-        "cppClassName": "GitGiterr"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "giterr",
-    "cppClassName": "GitGiterr",
-    "jsClassName": "Giterr",
-    "filename": "giterr",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/error.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "giterr"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "graph.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": null,
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "commit",
-            "type": "const git_oid *",
-            "comment": "a previously loaded commit.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "ancestor",
-            "type": "const git_oid *",
-            "comment": "a potential ancestor commit.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the given commit is a descendant of the potential ancestor,\n 0 if not, error code otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "graph",
-        "cFunctionName": "git_graph_descendant_of",
-        "cppFunctionName": "DescendantOf",
-        "jsFunctionName": "descendantOf",
-        "cppClassName": "GitGraph"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "graph",
-    "cppClassName": "GitGraph",
-    "jsClassName": "Graph",
-    "filename": "graph",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/repository.h",
-      "../include/oid.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "graph"
-  },
-  {
-    "typeName": "idxentry_extended_flag",
-    "type": "enum",
-    "cType": "git_idxentry_extended_flag_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_IDXENTRY_INTENT_TO_ADD",
-        "value": 8192,
-        "JsName": "IDXENTRY_INTENT_TO_ADD"
-      },
-      {
-        "name": "GIT_IDXENTRY_SKIP_WORKTREE",
-        "value": 16384,
-        "JsName": "IDXENTRY_SKIP_WORKTREE"
-      },
-      {
-        "name": "GIT_IDXENTRY_EXTENDED2",
-        "value": 32768,
-        "JsName": "IDXENTRY_EXTENDED2"
-      },
-      {
-        "name": "GIT_IDXENTRY_EXTENDED_FLAGS",
-        "value": 24576,
-        "JsName": "S"
-      },
-      {
-        "name": "GIT_IDXENTRY_UPDATE",
-        "value": 1,
-        "JsName": "IDXENTRY_UPDATE"
-      },
-      {
-        "name": "GIT_IDXENTRY_REMOVE",
-        "value": 2,
-        "JsName": "IDXENTRY_REMOVE"
-      },
-      {
-        "name": "GIT_IDXENTRY_UPTODATE",
-        "value": 4,
-        "JsName": "IDXENTRY_UPTODATE"
-      },
-      {
-        "name": "GIT_IDXENTRY_ADDED",
-        "value": 8,
-        "JsName": "IDXENTRY_ADDED"
-      },
-      {
-        "name": "GIT_IDXENTRY_HASHED",
-        "value": 16,
-        "JsName": "IDXENTRY_HASHED"
-      },
-      {
-        "name": "GIT_IDXENTRY_UNHASHED",
-        "value": 32,
-        "JsName": "IDXENTRY_UNHASHED"
-      },
-      {
-        "name": "GIT_IDXENTRY_WT_REMOVE",
-        "value": 64,
-        "JsName": "IDXENTRY_WT_REMOVE"
-      },
-      {
-        "name": "GIT_IDXENTRY_CONFLICTED",
-        "value": 128,
-        "JsName": "IDXENTRY_CONFLICTED"
-      },
-      {
-        "name": "GIT_IDXENTRY_UNPACKED",
-        "value": 256,
-        "JsName": "IDXENTRY_UNPACKED"
-      },
-      {
-        "name": "GIT_IDXENTRY_NEW_SKIP_WORKTREE",
-        "value": 512,
-        "JsName": "IDXENTRY_NEW_SKIP_WORKTREE"
-      }
-    ],
-    "owner": "Enums",
-    "JsName": "IDXENTRY_EXTENDED_FLAG"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "ignore.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository to add ignore rules to.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "rules",
-            "type": "const char *",
-            "comment": "Text of rules, a la the contents of a .gitignore file.\n              It is okay to have multiple rules in the text; if so,\n              each rule should be terminated with a newline.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "ignore",
-        "cFunctionName": "git_ignore_add_rule",
-        "cppFunctionName": "AddRule",
-        "jsFunctionName": "addRule",
-        "cppClassName": "GitIgnore"
-      },
-      {
-        "type": "function",
-        "file": "ignore.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository to remove ignore rules from.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "ignore",
-        "cFunctionName": "git_ignore_clear_internal_rules",
-        "cppFunctionName": "ClearInternalRules",
-        "jsFunctionName": "clearInternalRules",
-        "cppClassName": "GitIgnore"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "ignore",
-    "cppClassName": "GitIgnore",
-    "jsClassName": "Ignore",
-    "filename": "ignore",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "ignore"
-  },
-  {
-    "type": "class",
-    "value": "git_index",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_checkout_index",
-        "git_cherry_pick_commit",
-        "git_diff_index_to_workdir",
-        "git_diff_tree_to_index",
-        "git_index_add",
-        "git_index_add_all",
-        "git_index_add_bypath",
-        "git_index_caps",
-        "git_index_clear",
-        "git_index_conflict_add",
-        "git_index_conflict_cleanup",
-        "git_index_conflict_get",
-        "git_index_conflict_iterator_new",
-        "git_index_conflict_remove",
-        "git_index_entrycount",
-        "git_index_find",
-        "git_index_free",
-        "git_index_get_byindex",
-        "git_index_get_bypath",
-        "git_index_has_conflicts",
-        "git_index_new",
-        "git_index_open",
-        "git_index_owner",
-        "git_index_path",
-        "git_index_read",
-        "git_index_read_tree",
-        "git_index_remove",
-        "git_index_remove_all",
-        "git_index_remove_bypath",
-        "git_index_remove_directory",
-        "git_index_set_caps",
-        "git_index_update_all",
-        "git_index_write",
-        "git_index_write_tree",
-        "git_index_write_tree_to",
-        "git_merge_commits",
-        "git_merge_trees",
-        "git_pathspec_match_index",
-        "git_repository_index",
-        "git_revert_commit"
-      ]
-    },
-    "typeName": "index",
-    "cType": "git_index",
-    "functions": [
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "source_entry",
-            "type": "const git_index_entry *",
-            "comment": "new entry object",
-            "cType": "const git_index_entry *",
-            "cppClassName": "GitIndexEntry",
-            "jsClassName": "IndexEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "ignore": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_add",
-        "cppFunctionName": "Add",
-        "jsFunctionName": "add",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "filename to add",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_add_bypath",
-        "cppFunctionName": "AddBypath",
-        "jsFunctionName": "addByPath",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "const git_index *",
-            "comment": "An existing index object",
-            "cType": "const git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " A combination of GIT_INDEXCAP values",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_caps",
-        "cppFunctionName": "Caps",
-        "jsFunctionName": "caps",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, error code \n<\n 0 on failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_clear",
-        "cppFunctionName": "Clear",
-        "jsFunctionName": "clear",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "ancestor_entry",
-            "type": "const git_index_entry *",
-            "comment": "the entry data for the ancestor of the conflict",
-            "cType": "const git_index_entry *",
-            "cppClassName": "GitIndexEntry",
-            "jsClassName": "IndexEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "ignore": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "our_entry",
-            "type": "const git_index_entry *",
-            "comment": "the entry data for our side of the merge conflict",
-            "cType": "const git_index_entry *",
-            "cppClassName": "GitIndexEntry",
-            "jsClassName": "IndexEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "ignore": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "their_entry",
-            "type": "const git_index_entry *",
-            "comment": "the entry data for their side of the merge conflict",
-            "cType": "const git_index_entry *",
-            "cppClassName": "GitIndexEntry",
-            "jsClassName": "IndexEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "ignore": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_conflict_add",
-        "cppFunctionName": "ConflictAdd",
-        "jsFunctionName": "conflictAdd",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_conflict_cleanup",
-        "cppFunctionName": "ConflictCleanup",
-        "jsFunctionName": "conflictCleanup",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "path to remove conflicts for",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_conflict_remove",
-        "cppFunctionName": "ConflictRemove",
-        "jsFunctionName": "conflictRemove",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_index_entry *",
-            "comment": "The entry",
-            "cType": "const git_index_entry *",
-            "cppClassName": "GitIndexEntry",
-            "jsClassName": "IndexEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "ignore": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " the stage number",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_entry_stage",
-        "cppFunctionName": "EntryStage",
-        "jsFunctionName": "entryStage",
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "const git_index *",
-            "comment": "an existing index object",
-            "cType": "const git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " integer of count of current entries",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_index_entrycount-29"
-          ]
-        },
-        "cFunctionName": "git_index_entrycount",
-        "cppFunctionName": "Entrycount",
-        "jsFunctionName": "size",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "n",
-            "type": "size_t",
-            "comment": "the position of the entry",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_index_entry *",
-          "comment": " a pointer to the entry; NULL if out of bounds",
-          "cType": "const git_index_entry *",
-          "cppClassName": "GitIndexEntry",
-          "jsClassName": "IndexEntry",
-          "isLibgitType": true,
-          "isEnum": false,
-          "ignore": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_index_get_byindex-30"
-          ]
-        },
-        "cFunctionName": "git_index_get_byindex",
-        "cppFunctionName": "GetByindex",
-        "jsFunctionName": "entry",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "path to search",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "stage",
-            "type": "int",
-            "comment": "stage to search",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_index_entry *",
-          "comment": " a pointer to the entry; NULL if it was not found",
-          "cType": "const git_index_entry *",
-          "cppClassName": "GitIndexEntry",
-          "jsClassName": "IndexEntry",
-          "isLibgitType": true,
-          "isEnum": false,
-          "ignore": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_get_bypath",
-        "cppFunctionName": "GetBypath",
-        "jsFunctionName": "getBypath",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "const git_index *",
-            "comment": null,
-            "cType": "const git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if at least one conflict is found, 0 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_has_conflicts",
-        "cppFunctionName": "HasConflicts",
-        "jsFunctionName": "hasConflicts",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_index **",
-            "comment": "the pointer for the new index",
-            "cType": "git_index **",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "index_path",
-            "type": "const char *",
-            "comment": "the path to the index file in disk",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_open",
-        "cppFunctionName": "Open",
-        "jsFunctionName": "open",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "const git_index *",
-            "comment": "The index",
-            "cType": "const git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " A pointer to the repository",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_owner",
-        "cppFunctionName": "Owner",
-        "jsFunctionName": "owner",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "const git_index *",
-            "comment": "an existing index object",
-            "cType": "const git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " path to index file or NULL for in-memory index",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_path",
-        "cppFunctionName": "Path",
-        "jsFunctionName": "path",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "if true, always reload, vs. only read if file has changed",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false,
-            "isOptional": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_read",
-        "cppFunctionName": "Read",
-        "jsFunctionName": "read",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": "tree to read",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_read_tree",
-        "cppFunctionName": "ReadTree",
-        "jsFunctionName": "readTree",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "path to search",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "stage",
-            "type": "int",
-            "comment": "stage to search",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_remove",
-        "cppFunctionName": "Remove",
-        "jsFunctionName": "remove",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "filename to remove",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_remove_bypath",
-        "cppFunctionName": "RemoveBypath",
-        "jsFunctionName": "removeByPath",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "dir",
-            "type": "const char *",
-            "comment": "container directory path",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "stage",
-            "type": "int",
-            "comment": "stage to search",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_remove_directory",
-        "cppFunctionName": "RemoveDirectory",
-        "jsFunctionName": "removeDirectory",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "An existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "caps",
-            "type": "int",
-            "comment": "A combination of GIT_INDEXCAP values",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, -1 on failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_set_caps",
-        "cppFunctionName": "SetCaps",
-        "jsFunctionName": "setCaps",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "an existing index object",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "cFunctionName": "git_index_write",
-        "cppFunctionName": "Write",
-        "jsFunctionName": "write",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      },
-      {
-        "type": "function",
-        "file": "index.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_oid *",
-            "comment": "Pointer where to store the OID of the written tree",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "Index to write",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EUNMERGED when the index is not clean\n or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "index",
-        "examples": {
-          "init.c": [
-            "ex/v0.21.2/init.html#git_index_write_tree-3"
-          ]
-        },
-        "cFunctionName": "git_index_write_tree",
-        "cppFunctionName": "WriteTree",
-        "jsFunctionName": "writeTree",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndex"
-      }
-    ],
-    "cppClassName": "GitIndex",
-    "jsClassName": "Index",
-    "filename": "index",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/index.h",
-      "../include/index_entry.h",
-      "../include/repository.h",
-      "../include/tree.h",
-      "../include/oid.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_index_free",
-    "name": "index"
-  },
-  {
-    "typeName": "index_add_option",
-    "type": "enum",
-    "cType": "git_index_add_option_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_INDEX_ADD_DEFAULT",
-        "value": 0,
-        "JsName": "ADD_DEFAULT"
-      },
-      {
-        "name": "GIT_INDEX_ADD_FORCE",
-        "value": 1,
-        "JsName": "ADD_FORCE"
-      },
-      {
-        "name": "GIT_INDEX_ADD_DISABLE_PATHSPEC_MATCH",
-        "value": 2,
-        "JsName": "ADD_DISABLE_PATHSPEC_MATCH"
-      },
-      {
-        "name": "GIT_INDEX_ADD_CHECK_PATHSPEC",
-        "value": 4,
-        "JsName": "ADD_CHECK_PATHSPEC"
-      }
-    ],
-    "owner": "Index",
-    "JsName": "ADD_OPTION"
-  },
-  {
-    "type": "class",
-    "value": "git_index_conflict_iterator",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_index_conflict_iterator_free",
-        "git_index_conflict_iterator_new",
-        "git_index_conflict_next"
-      ]
-    },
-    "typeName": "index_conflict_iterator",
-    "cType": "git_index_conflict_iterator",
-    "functions": [],
-    "cppClassName": "GitIndexConflictIterator",
-    "jsClassName": "IndexConflictIterator",
-    "filename": "index_conflict_iterator",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "index_conflict_iterator"
-  },
-  {
-    "type": "class",
-    "value": "git_index_entry",
-    "file": "index.h",
-    "fields": [
-      {
-        "type": "git_index_time",
-        "name": "ctime",
-        "cType": "git_index_time",
-        "cppFunctionName": "Ctime",
-        "jsFunctionName": "ctime",
-        "cppClassName": "GitIndexTime",
-        "jsClassName": "IndexTime",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      },
-      {
-        "type": "git_index_time",
-        "name": "mtime",
-        "cType": "git_index_time",
-        "cppFunctionName": "Mtime",
-        "jsFunctionName": "mtime",
-        "cppClassName": "GitIndexTime",
-        "jsClassName": "IndexTime",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "dev",
-        "cType": "unsigned int",
-        "cppFunctionName": "Dev",
-        "jsFunctionName": "dev",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "ino",
-        "cType": "unsigned int",
-        "cppFunctionName": "Ino",
-        "jsFunctionName": "ino",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "mode",
-        "cType": "unsigned int",
-        "cppFunctionName": "Mode",
-        "jsFunctionName": "mode",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "uid",
-        "cType": "unsigned int",
-        "cppFunctionName": "Uid",
-        "jsFunctionName": "uid",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "gid",
-        "cType": "unsigned int",
-        "cppFunctionName": "Gid",
-        "jsFunctionName": "gid",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_off_t",
-        "name": "file_size",
-        "cType": "git_off_t",
-        "cppFunctionName": "FileSize",
-        "jsFunctionName": "fileSize",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true
-      },
-      {
-        "type": "git_oid",
-        "name": "id",
-        "cType": "git_oid",
-        "cppFunctionName": "Id",
-        "jsFunctionName": "id",
-        "cppClassName": "GitOid",
-        "jsClassName": "Oid",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "shouldAlloc": true,
-        "functions": {
-          "git_oid_cpy": {
-            "ignore": true
-          },
-          "git_oid_fmt": {
-            "ignore": true
-          },
-          "git_oid_fromraw": {
-            "ignore": true
-          },
-          "git_oid_fromstr": {
-            "jsFunctionName": "fromString",
-            "isAsync": false
-          },
-          "git_oid_fromstrn": {
-            "ignore": true
-          },
-          "git_oid_fromstrp": {
-            "ignore": true
-          },
-          "git_oid_nfmt": {
-            "ignore": true
-          },
-          "git_oid_pathfmt": {
-            "ignore": true
-          },
-          "git_oid_shorten_add": {
-            "ignore": true
-          },
-          "git_oid_shorten_free": {
-            "ignore": true
-          },
-          "git_oid_shorten_new": {
-            "ignore": true
-          },
-          "git_oid_tostr": {
-            "ignore": true,
-            "jsFunctionName": "toString"
-          }
-        },
-        "fields": {
-          "id": {
-            "ignore": true
-          }
-        }
-      },
-      {
-        "type": "unsigned short",
-        "name": "flags",
-        "cType": "unsigned short",
-        "cppFunctionName": "Flags",
-        "jsFunctionName": "flags",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned short",
-        "name": "flags_extended",
-        "cType": "unsigned short",
-        "cppFunctionName": "FlagsExtended",
-        "jsFunctionName": "flagsExtended",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "path",
-        "cType": "const char *",
-        "cppFunctionName": "Path",
-        "jsFunctionName": "path",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [
-        "git_index_get_byindex",
-        "git_index_get_bypath"
-      ],
-      "needs": [
-        "git_index_add",
-        "git_index_conflict_add",
-        "git_index_conflict_get",
-        "git_index_conflict_next",
-        "git_index_entry_stage",
-        "git_merge_file_from_index"
-      ]
-    },
-    "typeName": "index_entry",
-    "cType": "git_index_entry",
-    "functions": [],
-    "cppClassName": "GitIndexEntry",
-    "jsClassName": "IndexEntry",
-    "filename": "index_entry",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/index_time.h",
-      "../include/oid.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "ignore": false,
-    "name": "index_entry"
-  },
-  {
-    "type": "class",
-    "value": "git_index_time",
-    "file": "index.h",
-    "fields": [
-      {
-        "type": "git_time_t",
-        "name": "seconds",
-        "cType": "git_time_t",
-        "cppFunctionName": "Seconds",
-        "jsFunctionName": "seconds",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true
-      },
-      {
-        "type": "unsigned int",
-        "name": "nanoseconds",
-        "cType": "unsigned int",
-        "cppFunctionName": "Nanoseconds",
-        "jsFunctionName": "nanoseconds",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": []
-    },
-    "typeName": "index_time",
-    "cType": "git_index_time",
-    "functions": [],
-    "cppClassName": "GitIndexTime",
-    "jsClassName": "IndexTime",
-    "filename": "index_time",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "index_time"
-  },
-  {
-    "typeName": "indexcap",
-    "type": "enum",
-    "cType": "git_indexcap_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_INDEXCAP_IGNORE_CASE",
-        "value": 1,
-        "JsName": "IGNORE_CASE"
-      },
-      {
-        "name": "GIT_INDEXCAP_NO_FILEMODE",
-        "value": 2,
-        "JsName": "NO_FILEMODE"
-      },
-      {
-        "name": "GIT_INDEXCAP_NO_SYMLINKS",
-        "value": 4,
-        "JsName": "NO_SYMLINKS"
-      },
-      {
-        "name": "GIT_INDEXCAP_FROM_OWNER",
-        "value": -1,
-        "JsName": "FROM_OWNER"
-      }
-    ],
-    "owner": "Index",
-    "JsName": "CAP"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "indexer.h",
-        "args": [
-          {
-            "name": "idx",
-            "type": "git_indexer *",
-            "comment": "the indexer",
-            "cType": "git_indexer *",
-            "cppClassName": "GitIndexer",
-            "jsClassName": "Indexer",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "stats",
-            "type": "git_transfer_progress *",
-            "comment": null,
-            "cType": "git_transfer_progress *",
-            "cppClassName": "GitTransferProgress",
-            "jsClassName": "TransferProgress",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "indexer",
-        "examples": {
-          "network/index-pack.c": [
-            "ex/v0.21.2/network/index-pack.html#git_indexer_commit-3"
-          ]
-        },
-        "cFunctionName": "git_indexer_commit",
-        "cppFunctionName": "Commit",
-        "jsFunctionName": "commit",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndexer"
-      },
-      {
-        "type": "function",
-        "file": "indexer.h",
-        "args": [
-          {
-            "name": "idx",
-            "type": "const git_indexer *",
-            "comment": "the indexer instance",
-            "cType": "const git_indexer *",
-            "cppClassName": "GitIndexer",
-            "jsClassName": "Indexer",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": null,
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "indexer",
-        "examples": {
-          "network/index-pack.c": [
-            "ex/v0.21.2/network/index-pack.html#git_indexer_hash-4"
-          ]
-        },
-        "cFunctionName": "git_indexer_hash",
-        "cppFunctionName": "Hash",
-        "jsFunctionName": "hash",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitIndexer"
-      }
-    ],
-    "type": "class",
-    "cType": "git_indexer",
-    "typeName": "indexer",
-    "cppClassName": "GitIndexer",
-    "jsClassName": "Indexer",
-    "filename": "indexer",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/indexer.h",
-      "../include/transfer_progress.h",
-      "../include/oid.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "freeFunctionName": "git_indexer_free",
-    "name": "indexer"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "common.h",
-        "args": [],
-        "return": {
-          "type": "int",
-          "comment": " A combination of GIT_FEATURE_* values.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "libgit2",
-        "cFunctionName": "git_libgit2_features",
-        "cppFunctionName": "Features",
-        "jsFunctionName": "features",
-        "cppClassName": "GitLibgit2"
-      },
-      {
-        "type": "function",
-        "file": "common.h",
-        "args": [
-          {
-            "name": "option",
-            "type": "int",
-            "comment": "Option key",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 on failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "libgit2",
-        "cFunctionName": "git_libgit2_opts",
-        "cppFunctionName": "Opts",
-        "jsFunctionName": "opts",
-        "cppClassName": "GitLibgit2"
-      },
-      {
-        "type": "function",
-        "file": "common.h",
-        "args": [
-          {
-            "name": "major",
-            "type": "int *",
-            "comment": "Store the major version number",
-            "cType": "int *",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "minor",
-            "type": "int *",
-            "comment": "Store the minor version number",
-            "cType": "int *",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "rev",
-            "type": "int *",
-            "comment": "Store the revision (patch) number",
-            "cType": "int *",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "libgit2",
-        "cFunctionName": "git_libgit2_version",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "GitLibgit2"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "libgit2",
-    "cppClassName": "GitLibgit2",
-    "jsClassName": "Libgit2",
-    "filename": "libgit2",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "libgit2"
-  },
-  {
-    "functions": [],
-    "type": "class",
-    "cType": null,
-    "typeName": "mempack",
-    "cppClassName": "GitMempack",
-    "jsClassName": "Mempack",
-    "filename": "mempack",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "mempack"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "merge.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_index **",
-            "comment": "pointer to store the index result in",
-            "cType": "git_index **",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository that contains the given trees",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "our_commit",
-            "type": "const git_commit *",
-            "comment": "the commit that reflects the destination tree",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "their_commit",
-            "type": "const git_commit *",
-            "comment": "the commit to merge in to `our_commit`",
-            "cType": "const git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "opts",
-            "type": "const git_merge_options *",
-            "comment": "the merge tree options (or null for defaults)",
-            "cType": "const git_merge_options *",
-            "cppClassName": "GitMergeOptions",
-            "jsClassName": "MergeOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success or error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "merge",
-        "cFunctionName": "git_merge_commits",
-        "cppFunctionName": "Commits",
-        "jsFunctionName": "commits",
-        "isAsync": true,
-        "cppClassName": "GitMerge"
-      },
-      {
-        "type": "function",
-        "file": "merge.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_merge_file_input *",
-            "comment": "the `git_merge_file_input` instance to initialize.",
-            "cType": "git_merge_file_input *",
-            "cppClassName": "GitMergeFileInput",
-            "jsClassName": "MergeFileInput",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "the version of the struct; you should pass\n        `GIT_MERGE_FILE_INPUT_VERSION` here.",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "merge",
-        "cFunctionName": "git_merge_file_init_input",
-        "cppFunctionName": "FileInitInput",
-        "jsFunctionName": "fileInitInput",
-        "cppClassName": "GitMerge"
-      },
-      {
-        "type": "function",
-        "file": "merge.h",
-        "args": [
-          {
-            "name": "head",
-            "type": "git_merge_head *",
-            "comment": "merge head to free",
-            "cType": "git_merge_head *",
-            "cppClassName": "GitMergeHead",
-            "jsClassName": "MergeHead",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "merge",
-        "cFunctionName": "git_merge_head_free",
-        "cppFunctionName": "HeadFree",
-        "jsFunctionName": "headFree",
-        "cppClassName": "GitMerge"
-      },
-      {
-        "type": "function",
-        "file": "merge.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_merge_head **",
-            "comment": "pointer to store the git_merge_head result in",
-            "cType": "git_merge_head **",
-            "cppClassName": "GitMergeHead",
-            "jsClassName": "MergeHead",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository that contains the given commit",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "branch_name",
-            "type": "const char *",
-            "comment": "name of the (remote) branch",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "remote_url",
-            "type": "const char *",
-            "comment": "url of the remote",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "oid",
-            "type": "const git_oid *",
-            "comment": "the commit object id to use as a merge input",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success or error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "merge",
-        "cFunctionName": "git_merge_head_from_fetchhead",
-        "cppFunctionName": "HeadFromFetchhead",
-        "jsFunctionName": "headFromFetchhead",
-        "isAsync": true,
-        "cppClassName": "GitMerge"
-      },
-      {
-        "type": "function",
-        "file": "merge.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_merge_head **",
-            "comment": "pointer to store the git_merge_head result in",
-            "cType": "git_merge_head **",
-            "cppClassName": "GitMergeHead",
-            "jsClassName": "MergeHead",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository that contains the given commit",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "the commit object id to use as a merge input",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success or error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "merge",
-        "cFunctionName": "git_merge_head_from_id",
-        "cppFunctionName": "HeadFromId",
-        "jsFunctionName": "headFromId",
-        "isAsync": true,
-        "cppClassName": "GitMerge"
-      },
-      {
-        "type": "function",
-        "file": "merge.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_merge_head **",
-            "comment": "pointer to store the git_merge_head result in",
-            "cType": "git_merge_head **",
-            "cppClassName": "GitMergeHead",
-            "jsClassName": "MergeHead",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository that contains the given reference",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "reference to use as a merge input",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success or error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "merge",
-        "cFunctionName": "git_merge_head_from_ref",
-        "cppFunctionName": "HeadFromRef",
-        "jsFunctionName": "headFromRef",
-        "isAsync": true,
-        "cppClassName": "GitMerge"
-      },
-      {
-        "type": "function",
-        "file": "merge.h",
-        "args": [
-          {
-            "name": "head",
-            "type": "const git_merge_head *",
-            "comment": "the given merge head",
-            "cType": "const git_merge_head *",
-            "cppClassName": "GitMergeHead",
-            "jsClassName": "MergeHead",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " commit id",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "merge",
-        "cFunctionName": "git_merge_head_id",
-        "cppFunctionName": "HeadId",
-        "jsFunctionName": "headId",
-        "cppClassName": "GitMerge"
-      },
-      {
-        "type": "function",
-        "file": "merge.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_merge_options *",
-            "comment": "the `git_merge_options` instance to initialize.",
-            "cType": "git_merge_options *",
-            "cppClassName": "GitMergeOptions",
-            "jsClassName": "MergeOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "the version of the struct; you should pass\n        `GIT_MERGE_OPTIONS_VERSION` here.",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "merge",
-        "cFunctionName": "git_merge_init_options",
-        "cppFunctionName": "InitOptions",
-        "jsFunctionName": "initOptions",
-        "cppClassName": "GitMerge"
-      },
-      {
-        "type": "function",
-        "file": "merge.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_index **",
-            "comment": "pointer to store the index result in",
-            "cType": "git_index **",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository that contains the given trees",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "ancestor_tree",
-            "type": "const git_tree *",
-            "comment": "the common ancestor between the trees (or null if none)",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "our_tree",
-            "type": "const git_tree *",
-            "comment": "the tree that reflects the destination tree",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "their_tree",
-            "type": "const git_tree *",
-            "comment": "the tree to merge in to `our_tree`",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "opts",
-            "type": "const git_merge_options *",
-            "comment": "the merge tree options (or null for defaults)",
-            "cType": "const git_merge_options *",
-            "cppClassName": "GitMergeOptions",
-            "jsClassName": "MergeOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success or error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "merge",
-        "cFunctionName": "git_merge_trees",
-        "cppFunctionName": "Trees",
-        "jsFunctionName": "trees",
-        "isAsync": true,
-        "cppClassName": "GitMerge"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "merge",
-    "cppClassName": "GitMerge",
-    "jsClassName": "Merge",
-    "filename": "merge",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/index.h",
-      "../include/repository.h",
-      "../include/commit.h",
-      "../include/merge_options.h",
-      "../include/merge_file_input.h",
-      "../include/merge_head.h",
-      "../include/oid.h",
-      "../include/reference.h",
-      "../include/tree.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "merge"
-  },
-  {
-    "typeName": "merge_analysis",
-    "type": "enum",
-    "cType": "git_merge_analysis_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_MERGE_ANALYSIS_NONE",
-        "value": 0,
-        "JsName": "NONE"
-      },
-      {
-        "name": "GIT_MERGE_ANALYSIS_NORMAL",
-        "value": 1,
-        "JsName": "NORMAL"
-      },
-      {
-        "name": "GIT_MERGE_ANALYSIS_UP_TO_DATE",
-        "value": 2,
-        "JsName": "UP_TO_DATE"
-      },
-      {
-        "name": "GIT_MERGE_ANALYSIS_FASTFORWARD",
-        "value": 4,
-        "JsName": "FASTFORWARD"
-      },
-      {
-        "name": "GIT_MERGE_ANALYSIS_UNBORN",
-        "value": 8,
-        "JsName": "UNBORN"
-      }
-    ],
-    "owner": "Merge",
-    "JsName": "ANALYSIS"
-  },
-  {
-    "typeName": "merge_file_favor",
-    "type": "enum",
-    "cType": "git_merge_file_favor_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_MERGE_FILE_FAVOR_NORMAL",
-        "value": 0,
-        "JsName": "NORMAL"
-      },
-      {
-        "name": "GIT_MERGE_FILE_FAVOR_OURS",
-        "value": 1,
-        "JsName": "OURS"
-      },
-      {
-        "name": "GIT_MERGE_FILE_FAVOR_THEIRS",
-        "value": 2,
-        "JsName": "THEIRS"
-      },
-      {
-        "name": "GIT_MERGE_FILE_FAVOR_UNION",
-        "value": 3,
-        "JsName": "UNION"
-      }
-    ],
-    "owner": "Merge",
-    "JsName": "FILE_FAVOR"
-  },
-  {
-    "type": "struct",
-    "value": "git_merge_file_input",
-    "file": "merge.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "ptr",
-        "cType": "const char *",
-        "cppFunctionName": "Ptr",
-        "jsFunctionName": "ptr",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "size_t",
-        "name": "size",
-        "cType": "size_t",
-        "cppFunctionName": "Size",
-        "jsFunctionName": "size",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "path",
-        "cType": "const char *",
-        "cppFunctionName": "Path",
-        "jsFunctionName": "path",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "mode",
-        "cType": "unsigned int",
-        "cppFunctionName": "Mode",
-        "jsFunctionName": "mode",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_merge_file",
-        "git_merge_file_init_input"
-      ]
-    },
-    "typeName": "merge_file_input",
-    "cType": "git_merge_file_input",
-    "functions": [],
-    "cppClassName": "GitMergeFileInput",
-    "jsClassName": "MergeFileInput",
-    "filename": "merge_file_input",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "merge_file_input"
-  },
-  {
-    "type": "class",
-    "value": "git_merge_head",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_merge",
-        "git_merge_analysis",
-        "git_merge_head_free",
-        "git_merge_head_from_fetchhead",
-        "git_merge_head_from_id",
-        "git_merge_head_from_ref",
-        "git_merge_head_id"
-      ]
-    },
-    "typeName": "merge_head",
-    "cType": "git_merge_head",
-    "functions": [],
-    "cppClassName": "GitMergeHead",
-    "jsClassName": "MergeHead",
-    "filename": "merge_head",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "merge_head"
-  },
-  {
-    "type": "struct",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_merge_tree_flag_t",
-        "name": "flags",
-        "cType": "git_merge_tree_flag_t",
-        "cppFunctionName": "Flags",
-        "jsFunctionName": "flags",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true,
-        "isMask": true
-      },
-      {
-        "type": "unsigned int",
-        "name": "rename_threshold",
-        "cType": "unsigned int",
-        "cppFunctionName": "RenameThreshold",
-        "jsFunctionName": "renameThreshold",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "target_limit",
-        "cType": "unsigned int",
-        "cppFunctionName": "TargetLimit",
-        "jsFunctionName": "targetLimit",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_merge_file_favor_t",
-        "name": "file_favor",
-        "cType": "git_merge_file_favor_t",
-        "cppFunctionName": "FileFavor",
-        "jsFunctionName": "fileFavor",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true,
-        "isMask": true
-      }
-    ],
-    "used": {
-      "needs": [
-        "git_merge_init_options"
-      ]
-    },
-    "typeName": "merge_options",
-    "cType": "git_merge_options",
-    "functions": [],
-    "cppClassName": "GitMergeOptions",
-    "jsClassName": "MergeOptions",
-    "filename": "merge_options",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "merge_options"
-  },
-  {
-    "type": "class",
-    "value": "git_merge_result",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": []
-    },
-    "typeName": "merge_result",
-    "cType": "git_merge_result",
-    "functions": [],
-    "cppClassName": "GitMergeResult",
-    "jsClassName": "MergeResult",
-    "filename": "merge_result",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "merge_result"
-  },
-  {
-    "typeName": "merge_tree_flag",
-    "type": "enum",
-    "cType": "git_merge_tree_flag_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_MERGE_TREE_FIND_RENAMES",
-        "value": 1,
-        "JsName": "TREE_FIND_RENAMES"
-      }
-    ],
-    "owner": "Merge",
-    "JsName": "TREE_FLAG"
-  },
-  {
-    "functions": [],
-    "type": "class",
-    "cType": null,
-    "typeName": "message",
-    "cppClassName": "GitMessage",
-    "jsClassName": "Message",
-    "filename": "message",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "message"
-  },
-  {
-    "type": "class",
-    "value": "git_note",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_note_free",
-        "git_note_id",
-        "git_note_message",
-        "git_note_read"
-      ]
-    },
-    "typeName": "note",
-    "cType": "git_note",
-    "functions": [
-      {
-        "type": "function",
-        "file": "notes.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_oid *",
-            "comment": "pointer to store the OID (optional); NULL in case of error",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository where to store the note",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "author",
-            "type": "const git_signature *",
-            "comment": "signature of the notes commit author",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "committer",
-            "type": "const git_signature *",
-            "comment": "signature of the notes commit committer",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "notes_ref",
-            "type": "const char *",
-            "comment": "canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\"",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "oid",
-            "type": "const git_oid *",
-            "comment": "OID of the git object to decorate",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "note",
-            "type": "const char *",
-            "comment": "Content of the note to add for object oid",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing note",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "note",
-        "cFunctionName": "git_note_create",
-        "cppFunctionName": "Create",
-        "jsFunctionName": "create",
-        "isAsync": true,
-        "cppClassName": "GitNote"
-      },
-      {
-        "type": "function",
-        "file": "notes.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "const char **",
-            "comment": "Pointer to the default notes reference",
-            "cType": "const char **",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The Git repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "note",
-        "cFunctionName": "git_note_default_ref",
-        "cppFunctionName": "DefaultRef",
-        "jsFunctionName": "defaultRef",
-        "isAsync": true,
-        "cppClassName": "GitNote"
-      },
-      {
-        "type": "function",
-        "file": "notes.h",
-        "args": [
-          {
-            "name": "note",
-            "type": "const git_note *",
-            "comment": "the note",
-            "cType": "const git_note *",
-            "cppClassName": "GitNote",
-            "jsClassName": "Note",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " the note object's id",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "note",
-        "cFunctionName": "git_note_id",
-        "cppFunctionName": "Id",
-        "jsFunctionName": "id",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitNote"
-      },
-      {
-        "type": "function",
-        "file": "notes.h",
-        "args": [
-          {
-            "name": "it",
-            "type": "git_note_iterator *",
-            "comment": "pointer to the iterator",
-            "cType": "git_note_iterator *",
-            "cppClassName": "GitNoteIterator",
-            "jsClassName": "NoteIterator",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "note",
-        "cFunctionName": "git_note_iterator_free",
-        "cppFunctionName": "IteratorFree",
-        "jsFunctionName": "iteratorFree",
-        "cppClassName": "GitNote"
-      },
-      {
-        "type": "function",
-        "file": "notes.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_note_iterator **",
-            "comment": "pointer to the iterator",
-            "cType": "git_note_iterator **",
-            "cppClassName": "GitNoteIterator",
-            "jsClassName": "NoteIterator",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository where to look up the note",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "notes_ref",
-            "type": "const char *",
-            "comment": "canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\"",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "note",
-        "cFunctionName": "git_note_iterator_new",
-        "cppFunctionName": "IteratorNew",
-        "jsFunctionName": "iteratorNew",
-        "isAsync": true,
-        "cppClassName": "GitNote"
-      },
-      {
-        "type": "function",
-        "file": "notes.h",
-        "args": [
-          {
-            "name": "note",
-            "type": "const git_note *",
-            "comment": "the note",
-            "cType": "const git_note *",
-            "cppClassName": "GitNote",
-            "jsClassName": "Note",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the note message",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "note",
-        "cFunctionName": "git_note_message",
-        "cppFunctionName": "Message",
-        "jsFunctionName": "message",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitNote"
-      },
-      {
-        "type": "function",
-        "file": "notes.h",
-        "args": [
-          {
-            "name": "note_id",
-            "type": "git_oid *",
-            "comment": "id of blob containing the message",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "annotated_id",
-            "type": "git_oid *",
-            "comment": "id of the git object being annotated",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "it",
-            "type": "git_note_iterator *",
-            "comment": "pointer to the iterator",
-            "cType": "git_note_iterator *",
-            "cppClassName": "GitNoteIterator",
-            "jsClassName": "NoteIterator",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 (no error), GIT_ITEROVER (iteration is done) or an error code\n         (negative value)",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "note",
-        "cFunctionName": "git_note_next",
-        "cppFunctionName": "Next",
-        "jsFunctionName": "next",
-        "cppClassName": "GitNote"
-      },
-      {
-        "type": "function",
-        "file": "notes.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_note **",
-            "comment": "pointer to the read note; NULL in case of error",
-            "cType": "git_note **",
-            "cppClassName": "GitNote",
-            "jsClassName": "Note",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository where to look up the note",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "notes_ref",
-            "type": "const char *",
-            "comment": "canonical name of the reference to use (optional); defaults to\n                  \"refs/notes/commits\"",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "oid",
-            "type": "const git_oid *",
-            "comment": "OID of the git object to read the note from",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "note",
-        "cFunctionName": "git_note_read",
-        "cppFunctionName": "Read",
-        "jsFunctionName": "read",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitNote"
-      },
-      {
-        "type": "function",
-        "file": "notes.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository where the note lives",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "notes_ref",
-            "type": "const char *",
-            "comment": "canonical name of the reference to use (optional);\n\t\t\t\t\tdefaults to \"refs/notes/commits\"",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "author",
-            "type": "const git_signature *",
-            "comment": "signature of the notes commit author",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "committer",
-            "type": "const git_signature *",
-            "comment": "signature of the notes commit committer",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "oid",
-            "type": "const git_oid *",
-            "comment": "OID of the git object to remove the note from",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "note",
-        "cFunctionName": "git_note_remove",
-        "cppFunctionName": "Remove",
-        "jsFunctionName": "remove",
-        "cppClassName": "GitNote"
-      }
-    ],
-    "cppClassName": "GitNote",
-    "jsClassName": "Note",
-    "filename": "note",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/oid.h",
-      "../include/repository.h",
-      "../include/signature.h",
-      "../include/note.h",
-      "../include/note_iterator.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_note_free",
-    "name": "note"
-  },
-  {
-    "type": "class",
-    "value": "git_note_iterator",
-    "file": "notes.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_note_iterator_free",
-        "git_note_iterator_new",
-        "git_note_next"
-      ]
-    },
-    "typeName": "note_iterator",
-    "cType": "git_note_iterator",
-    "functions": [],
-    "cppClassName": "GitNoteIterator",
-    "jsClassName": "NoteIterator",
-    "filename": "note_iterator",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "note_iterator"
-  },
-  {
-    "type": "class",
-    "value": "git_object",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_checkout_tree",
-        "git_object_dup",
-        "git_object_free",
-        "git_object_id",
-        "git_object_lookup",
-        "git_object_lookup_bypath",
-        "git_object_lookup_prefix",
-        "git_object_owner",
-        "git_object_peel",
-        "git_object_short_id",
-        "git_object_type",
-        "git_reference_peel",
-        "git_revparse_ext",
-        "git_revparse_single",
-        "git_tag_annotation_create",
-        "git_tag_create",
-        "git_tag_create_lightweight",
-        "git_tag_peel",
-        "git_tag_target",
-        "git_tree_entry_to_object"
-      ]
-    },
-    "typeName": "object",
-    "cType": "git_object",
-    "functions": [
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "type",
-            "type": "git_otype",
-            "comment": "object type to get its size",
-            "cType": "git_otype",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " size in bytes of the object",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "cFunctionName": "git_object__size",
-        "cppFunctionName": "Size",
-        "jsFunctionName": "size",
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "dest",
-            "type": "git_object **",
-            "comment": "Pointer to store the copy of the object",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "source",
-            "type": "git_object *",
-            "comment": "Original object to copy",
-            "cType": "git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "cFunctionName": "git_object_dup",
-        "cppFunctionName": "Dup",
-        "jsFunctionName": "dup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "obj",
-            "type": "const git_object *",
-            "comment": "the repository object",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " the SHA1 id",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_object_id-8",
-            "ex/v0.21.2/blame.html#git_object_id-9",
-            "ex/v0.21.2/blame.html#git_object_id-10",
-            "ex/v0.21.2/blame.html#git_object_id-11"
-          ],
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_object_id-10",
-            "ex/v0.21.2/cat-file.html#git_object_id-11"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_object_id-32",
-            "ex/v0.21.2/log.html#git_object_id-33",
-            "ex/v0.21.2/log.html#git_object_id-34",
-            "ex/v0.21.2/log.html#git_object_id-35"
-          ],
-          "rev-parse.c": [
-            "ex/v0.21.2/rev-parse.html#git_object_id-2",
-            "ex/v0.21.2/rev-parse.html#git_object_id-3",
-            "ex/v0.21.2/rev-parse.html#git_object_id-4",
-            "ex/v0.21.2/rev-parse.html#git_object_id-5",
-            "ex/v0.21.2/rev-parse.html#git_object_id-6"
-          ]
-        },
-        "cFunctionName": "git_object_id",
-        "cppFunctionName": "Id",
-        "jsFunctionName": "id",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "object",
-            "type": "git_object **",
-            "comment": "pointer to the looked-up object",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to look up the object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "the unique identifier for the object",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "type",
-            "type": "git_otype",
-            "comment": "the type of the object",
-            "cType": "git_otype",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "examples": {
-          "log.c": [
-            "ex/v0.21.2/log.html#git_object_lookup-31"
-          ]
-        },
-        "cFunctionName": "git_object_lookup",
-        "cppFunctionName": "Lookup",
-        "jsFunctionName": "lookup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_object **",
-            "comment": "buffer that receives a pointer to the object (which must be freed\n            by the caller)",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "treeish",
-            "type": "const git_object *",
-            "comment": "root object that can be peeled to a tree",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "relative path from the root object to the desired object",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "type",
-            "type": "git_otype",
-            "comment": "type of object desired",
-            "cType": "git_otype",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "cFunctionName": "git_object_lookup_bypath",
-        "cppFunctionName": "LookupBypath",
-        "jsFunctionName": "lookupBypath",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "object_out",
-            "type": "git_object **",
-            "comment": "pointer where to store the looked-up object",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to look up the object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "a short identifier for the object",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "len",
-            "type": "size_t",
-            "comment": "the length of the short identifier",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "type",
-            "type": "git_otype",
-            "comment": "the type of the object",
-            "cType": "git_otype",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "cFunctionName": "git_object_lookup_prefix",
-        "cppFunctionName": "LookupPrefix",
-        "jsFunctionName": "lookupPrefix",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "obj",
-            "type": "const git_object *",
-            "comment": "the object",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " the repository who owns this object",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "cFunctionName": "git_object_owner",
-        "cppFunctionName": "Owner",
-        "jsFunctionName": "owner",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "peeled",
-            "type": "git_object **",
-            "comment": "Pointer to the peeled git_object",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "object",
-            "type": "const git_object *",
-            "comment": "The object to be processed",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "target_type",
-            "type": "git_otype",
-            "comment": "The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY).",
-            "cType": "git_otype",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "cFunctionName": "git_object_peel",
-        "cppFunctionName": "Peel",
-        "jsFunctionName": "peel",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_buf *",
-            "comment": "Buffer to write string into",
-            "cType": "git_buf *",
-            "cppClassName": "GitBuf",
-            "jsClassName": "Buf",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false,
-            "shouldAlloc": true
-          },
-          {
-            "name": "obj",
-            "type": "const git_object *",
-            "comment": "The object to get an ID for",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 for error",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "examples": {
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_object_short_id-3"
-          ]
-        },
-        "cFunctionName": "git_object_short_id",
-        "cppFunctionName": "ShortId",
-        "jsFunctionName": "shortId",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "str",
-            "type": "const char *",
-            "comment": "the string to convert.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "git_otype",
-          "comment": " the corresponding git_otype.",
-          "cType": "git_otype",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "cFunctionName": "git_object_string2type",
-        "cppFunctionName": "String2type",
-        "jsFunctionName": "string2type",
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "obj",
-            "type": "const git_object *",
-            "comment": "the repository object",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_otype",
-          "comment": " the object's type",
-          "cType": "git_otype",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_object_type-12",
-            "ex/v0.21.2/cat-file.html#git_object_type-13",
-            "ex/v0.21.2/cat-file.html#git_object_type-14"
-          ],
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_object_type-4"
-          ]
-        },
-        "cFunctionName": "git_object_type",
-        "cppFunctionName": "Type",
-        "jsFunctionName": "type",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "type",
-            "type": "git_otype",
-            "comment": "object type to convert.",
-            "cType": "git_otype",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the corresponding string representation.",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_object_type2string-16",
-            "ex/v0.21.2/cat-file.html#git_object_type2string-17",
-            "ex/v0.21.2/cat-file.html#git_object_type2string-18",
-            "ex/v0.21.2/cat-file.html#git_object_type2string-19"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_object_type2string-32"
-          ]
-        },
-        "cFunctionName": "git_object_type2string",
-        "cppFunctionName": "Type2string",
-        "jsFunctionName": "type2string",
-        "cppClassName": "GitObject"
-      },
-      {
-        "type": "function",
-        "file": "object.h",
-        "args": [
-          {
-            "name": "type",
-            "type": "git_otype",
-            "comment": "object type to test.",
-            "cType": "git_otype",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " true if the type represents a valid loose object type,\n false otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "object",
-        "cFunctionName": "git_object_typeisloose",
-        "cppFunctionName": "Typeisloose",
-        "jsFunctionName": "typeisloose",
-        "cppClassName": "GitObject"
-      }
-    ],
-    "cppClassName": "GitObject",
-    "jsClassName": "Object",
-    "filename": "object",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/object.h",
-      "../include/oid.h",
-      "../include/repository.h",
-      "../include/buf.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_object_free",
-    "name": "object"
-  },
-  {
-    "type": "class",
-    "value": "git_odb",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_indexer_new",
-        "git_odb_add_alternate",
-        "git_odb_add_backend",
-        "git_odb_add_disk_alternate",
-        "git_odb_exists",
-        "git_odb_exists_prefix",
-        "git_odb_foreach",
-        "git_odb_free",
-        "git_odb_get_backend",
-        "git_odb_new",
-        "git_odb_num_backends",
-        "git_odb_open",
-        "git_odb_open_rstream",
-        "git_odb_open_wstream",
-        "git_odb_read",
-        "git_odb_read_header",
-        "git_odb_read_prefix",
-        "git_odb_refresh",
-        "git_odb_write",
-        "git_odb_write_pack",
-        "git_repository_odb",
-        "git_repository_wrap_odb"
-      ]
-    },
-    "typeName": "odb",
-    "cType": "git_odb",
-    "functions": [
-      {
-        "type": "function",
-        "file": "odb.h",
-        "args": [
-          {
-            "name": "odb",
-            "type": "git_odb *",
-            "comment": "database to add the backend to",
-            "cType": "git_odb *",
-            "cppClassName": "GitOdb",
-            "jsClassName": "Odb",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "path to the objects folder for the alternate",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success; error code otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "odb",
-        "cFunctionName": "git_odb_add_disk_alternate",
-        "cppFunctionName": "AddDiskAlternate",
-        "jsFunctionName": "addDiskAlternate",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOdb"
-      },
-      {
-        "type": "function",
-        "file": "odb.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_odb **",
-            "comment": "location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed.",
-            "cType": "git_odb **",
-            "cppClassName": "GitOdb",
-            "jsClassName": "Odb",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "objects_dir",
-            "type": "const char *",
-            "comment": "path of the backends' \"objects\" directory.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "odb",
-        "cFunctionName": "git_odb_open",
-        "cppFunctionName": "Open",
-        "jsFunctionName": "open",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitOdb"
-      },
-      {
-        "type": "function",
-        "file": "odb.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_odb_object **",
-            "comment": "pointer where to store the read object",
-            "cType": "git_odb_object **",
-            "cppClassName": "GitOdbObject",
-            "jsClassName": "OdbObject",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "db",
-            "type": "git_odb *",
-            "comment": "database to search for the object in.",
-            "cType": "git_odb *",
-            "cppClassName": "GitOdb",
-            "jsClassName": "Odb",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "identity of the object to read.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " - 0 if the object was read;\n - GIT_ENOTFOUND if the object is not in the database.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "odb",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_odb_read-21"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_odb_read-33"
-          ]
-        },
-        "cFunctionName": "git_odb_read",
-        "cppFunctionName": "Read",
-        "jsFunctionName": "read",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOdb"
-      },
-      {
-        "type": "function",
-        "file": "odb.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_oid *",
-            "comment": "pointer to store the OID result of the write",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "odb",
-            "type": "git_odb *",
-            "comment": "object database where to store the object",
-            "cType": "git_odb *",
-            "cppClassName": "GitOdb",
-            "jsClassName": "Odb",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "data",
-            "type": "const void *",
-            "comment": "buffer with the data to store",
-            "cType": "const void *",
-            "cppClassName": "Wrapper",
-            "jsClassName": "Buffer",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "len",
-            "type": "size_t",
-            "comment": "size of the buffer",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "type",
-            "type": "git_otype",
-            "comment": "type of the data to store",
-            "cType": "git_otype",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "odb",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_odb_write-34"
-          ]
-        },
-        "cFunctionName": "git_odb_write",
-        "cppFunctionName": "Write",
-        "jsFunctionName": "write",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOdb"
-      }
-    ],
-    "cppClassName": "GitOdb",
-    "jsClassName": "Odb",
-    "filename": "odb",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/odb.h",
-      "../include/odb_object.h",
-      "../include/oid.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_odb_free",
-    "name": "odb"
-  },
-  {
-    "type": "class",
-    "value": "git_odb_object",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_odb_object_data",
-        "git_odb_object_dup",
-        "git_odb_object_free",
-        "git_odb_object_id",
-        "git_odb_object_size",
-        "git_odb_object_type",
-        "git_odb_read",
-        "git_odb_read_prefix"
-      ]
-    },
-    "typeName": "odb_object",
-    "cType": "git_odb_object",
-    "functions": [
-      {
-        "type": "function",
-        "file": "odb.h",
-        "args": [
-          {
-            "name": "object",
-            "type": "git_odb_object *",
-            "comment": "the object",
-            "cType": "git_odb_object *",
-            "cppClassName": "GitOdbObject",
-            "jsClassName": "OdbObject",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const void *",
-          "comment": " a pointer to the data",
-          "cType": "const void *",
-          "cppClassName": "Wrapper",
-          "jsClassName": "Buffer",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "odb",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_odb_object_data-36"
-          ]
-        },
-        "cFunctionName": "git_odb_object_data",
-        "cppFunctionName": "Data",
-        "jsFunctionName": "data",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOdbObject"
-      },
-      {
-        "type": "function",
-        "file": "odb.h",
-        "args": [
-          {
-            "name": "dest",
-            "type": "git_odb_object **",
-            "comment": "pointer where to store the copy",
-            "cType": "git_odb_object **",
-            "cppClassName": "GitOdbObject",
-            "jsClassName": "OdbObject",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "source",
-            "type": "git_odb_object *",
-            "comment": "object to copy",
-            "cType": "git_odb_object *",
-            "cppClassName": "GitOdbObject",
-            "jsClassName": "OdbObject",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "odb",
-        "cFunctionName": "git_odb_object_dup",
-        "cppFunctionName": "Dup",
-        "jsFunctionName": "dup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOdbObject"
-      },
-      {
-        "type": "function",
-        "file": "odb.h",
-        "args": [
-          {
-            "name": "object",
-            "type": "git_odb_object *",
-            "comment": "the object",
-            "cType": "git_odb_object *",
-            "cppClassName": "GitOdbObject",
-            "jsClassName": "OdbObject",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " a pointer to the OID",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "odb",
-        "cFunctionName": "git_odb_object_id",
-        "cppFunctionName": "Id",
-        "jsFunctionName": "id",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOdbObject"
-      },
-      {
-        "type": "function",
-        "file": "odb.h",
-        "args": [
-          {
-            "name": "object",
-            "type": "git_odb_object *",
-            "comment": "the object",
-            "cType": "git_odb_object *",
-            "cppClassName": "GitOdbObject",
-            "jsClassName": "OdbObject",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " the size",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "odb",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_odb_object_size-23"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_odb_object_size-37"
-          ]
-        },
-        "cFunctionName": "git_odb_object_size",
-        "cppFunctionName": "Size",
-        "jsFunctionName": "size",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOdbObject"
-      },
-      {
-        "type": "function",
-        "file": "odb.h",
-        "args": [
-          {
-            "name": "object",
-            "type": "git_odb_object *",
-            "comment": "the object",
-            "cType": "git_odb_object *",
-            "cppClassName": "GitOdbObject",
-            "jsClassName": "OdbObject",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_otype",
-          "comment": " the type",
-          "cType": "git_otype",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "odb",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_odb_object_type-38"
-          ]
-        },
-        "cFunctionName": "git_odb_object_type",
-        "cppFunctionName": "Type",
-        "jsFunctionName": "type",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOdbObject"
-      }
-    ],
-    "cppClassName": "GitOdbObject",
-    "jsClassName": "OdbObject",
-    "filename": "odb_object",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/wrapper.h",
-      "node_buffer.h",
-      "../include/odb_object.h",
-      "../include/oid.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_odb_object_free",
-    "name": "odb_object"
-  },
-  {
-    "typeName": "odb_stream",
-    "type": "enum",
-    "cType": "git_odb_stream_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_STREAM_RDONLY",
-        "value": 2,
-        "JsName": "RDONLY"
-      },
-      {
-        "name": "GIT_STREAM_WRONLY",
-        "value": 4,
-        "JsName": "WRONLY"
-      },
-      {
-        "name": "GIT_STREAM_RW",
-        "value": 6,
-        "JsName": "RW"
-      }
-    ],
-    "owner": "Odb",
-    "JsName": "STREAM"
-  },
-  {
-    "type": "class",
-    "value": "git_oid",
-    "file": "oid.h",
-    "fields": [],
-    "used": {
-      "returns": [
-        "git_blob_id",
-        "git_commit_id",
-        "git_commit_parent_id",
-        "git_commit_tree_id",
-        "git_filter_source_id",
-        "git_indexer_hash",
-        "git_merge_head_id",
-        "git_note_id",
-        "git_object_id",
-        "git_odb_object_id",
-        "git_packbuilder_hash",
-        "git_reference_target",
-        "git_reference_target_peel",
-        "git_reflog_entry_id_new",
-        "git_reflog_entry_id_old",
-        "git_submodule_head_id",
-        "git_submodule_index_id",
-        "git_submodule_wd_id",
-        "git_tag_id",
-        "git_tag_target_id",
-        "git_tree_entry_id",
-        "git_tree_id"
-      ],
-      "needs": [
-        "git_blob_create_frombuffer",
-        "git_blob_create_fromchunks",
-        "git_blob_create_fromdisk",
-        "git_blob_create_fromworkdir",
-        "git_blob_lookup",
-        "git_blob_lookup_prefix",
-        "git_commit_amend",
-        "git_commit_create",
-        "git_commit_create_from_callback",
-        "git_commit_create_from_ids",
-        "git_commit_create_v",
-        "git_commit_lookup",
-        "git_commit_lookup_prefix",
-        "git_graph_ahead_behind",
-        "git_graph_descendant_of",
-        "git_index_write_tree",
-        "git_index_write_tree_to",
-        "git_merge_base",
-        "git_merge_base_many",
-        "git_merge_base_octopus",
-        "git_merge_head_from_fetchhead",
-        "git_merge_head_from_id",
-        "git_note_create",
-        "git_note_next",
-        "git_note_read",
-        "git_note_remove",
-        "git_object_lookup",
-        "git_object_lookup_prefix",
-        "git_odb_exists",
-        "git_odb_exists_prefix",
-        "git_odb_hash",
-        "git_odb_hashfile",
-        "git_odb_open_rstream",
-        "git_odb_read",
-        "git_odb_read_header",
-        "git_odb_read_prefix",
-        "git_odb_stream_finalize_write",
-        "git_odb_write",
-        "git_oid_allocfmt",
-        "git_oid_cmp",
-        "git_oid_cpy",
-        "git_oid_equal",
-        "git_oid_fmt",
-        "git_oid_fromraw",
-        "git_oid_fromstr",
-        "git_oid_fromstrn",
-        "git_oid_fromstrp",
-        "git_oid_iszero",
-        "git_oid_ncmp",
-        "git_oid_nfmt",
-        "git_oid_pathfmt",
-        "git_oid_strcmp",
-        "git_oid_streq",
-        "git_oid_tostr",
-        "git_packbuilder_insert",
-        "git_packbuilder_insert_commit",
-        "git_packbuilder_insert_tree",
-        "git_reference__alloc",
-        "git_reference_create",
-        "git_reference_create_matching",
-        "git_reference_name_to_id",
-        "git_reference_set_target",
-        "git_reflog_append",
-        "git_repository_hashfile",
-        "git_repository_set_head_detached",
-        "git_revwalk_hide",
-        "git_revwalk_next",
-        "git_revwalk_push",
-        "git_tag_annotation_create",
-        "git_tag_create",
-        "git_tag_create_frombuffer",
-        "git_tag_create_lightweight",
-        "git_tag_lookup",
-        "git_tag_lookup_prefix",
-        "git_tree_entry_byid",
-        "git_tree_lookup",
-        "git_tree_lookup_prefix",
-        "git_treebuilder_insert",
-        "git_treebuilder_write"
-      ]
-    },
-    "typeName": "oid",
-    "cType": "git_oid",
-    "functions": [
-      {
-        "type": "function",
-        "file": "oid.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "the oid structure to format",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "char *",
-          "comment": " the c-string; NULL if memory is exhausted. Caller must\n\t\t\tdeallocate the string with git__free().",
-          "cType": "char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "oid",
-        "cFunctionName": "git_oid_allocfmt",
-        "cppFunctionName": "Allocfmt",
-        "jsFunctionName": "allocfmt",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOid"
-      },
-      {
-        "type": "function",
-        "file": "oid.h",
-        "args": [
-          {
-            "name": "a",
-            "type": "const git_oid *",
-            "comment": "first oid structure.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "b",
-            "type": "const git_oid *",
-            "comment": "second oid structure.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " \n<\n0, 0, >0 if a \n<\n b, a == b, a > b.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "oid",
-        "cFunctionName": "git_oid_cmp",
-        "cppFunctionName": "Cmp",
-        "jsFunctionName": "cmp",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOid"
-      },
-      {
-        "type": "function",
-        "file": "oid.h",
-        "args": [
-          {
-            "name": "a",
-            "type": "const git_oid *",
-            "comment": "first oid structure.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "b",
-            "type": "const git_oid *",
-            "comment": "second oid structure.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " true if equal, false otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "oid",
-        "cFunctionName": "git_oid_equal",
-        "cppFunctionName": "Equal",
-        "jsFunctionName": "equal",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOid"
-      },
-      {
-        "type": "function",
-        "file": "oid.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_oid *",
-            "comment": "oid structure the result is written into.",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "str",
-            "type": "const char *",
-            "comment": "input hex string; must be pointing at the start of\n\t\tthe hex sequence and have at least the number of bytes\n\t\tneeded for an oid encoded in hex (40 bytes).",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "oid",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_oid_fromstr-39",
-            "ex/v0.21.2/general.html#git_oid_fromstr-40",
-            "ex/v0.21.2/general.html#git_oid_fromstr-41",
-            "ex/v0.21.2/general.html#git_oid_fromstr-42",
-            "ex/v0.21.2/general.html#git_oid_fromstr-43",
-            "ex/v0.21.2/general.html#git_oid_fromstr-44",
-            "ex/v0.21.2/general.html#git_oid_fromstr-45",
-            "ex/v0.21.2/general.html#git_oid_fromstr-46"
-          ]
-        },
-        "cFunctionName": "git_oid_fromstr",
-        "cppFunctionName": "Fromstr",
-        "jsFunctionName": "fromString",
-        "isAsync": false,
-        "isConstructorMethod": true,
-        "cppClassName": "GitOid"
-      },
-      {
-        "type": "function",
-        "file": "oid.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": null,
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if all zeros, 0 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "oid",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_oid_iszero-21"
-          ],
-          "network/fetch.c": [
-            "ex/v0.21.2/network/fetch.html#git_oid_iszero-3"
-          ]
-        },
-        "cFunctionName": "git_oid_iszero",
-        "cppFunctionName": "Iszero",
-        "jsFunctionName": "iszero",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOid"
-      },
-      {
-        "type": "function",
-        "file": "oid.h",
-        "args": [
-          {
-            "name": "a",
-            "type": "const git_oid *",
-            "comment": "first oid structure.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "b",
-            "type": "const git_oid *",
-            "comment": "second oid structure.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "len",
-            "type": "size_t",
-            "comment": "the number of hex chars to compare",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 in case of a match",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "oid",
-        "cFunctionName": "git_oid_ncmp",
-        "cppFunctionName": "Ncmp",
-        "jsFunctionName": "ncmp",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOid"
-      },
-      {
-        "type": "function",
-        "file": "oid.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "oid structure.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "str",
-            "type": "const char *",
-            "comment": "input hex string of an object id.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " -1 if str is not valid, \n<\n0 if id sorts before str,\n         0 if id matches str, >0 if id sorts after str.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "oid",
-        "cFunctionName": "git_oid_strcmp",
-        "cppFunctionName": "Strcmp",
-        "jsFunctionName": "strcmp",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOid"
-      },
-      {
-        "type": "function",
-        "file": "oid.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "oid structure.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "str",
-            "type": "const char *",
-            "comment": "input hex string of an object id.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 in case of a match, -1 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "oid",
-        "cFunctionName": "git_oid_streq",
-        "cppFunctionName": "Streq",
-        "jsFunctionName": "streq",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitOid"
-      }
-    ],
-    "cppClassName": "GitOid",
-    "jsClassName": "Oid",
-    "filename": "oid",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/oid.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "shouldAlloc": true,
-    "name": "oid"
-  },
-  {
-    "type": "class",
-    "value": "git_oid_shorten",
-    "file": "oid.h",
-    "used": {
-      "returns": [
-        "git_oid_shorten_new"
-      ],
-      "needs": [
-        "git_oid_shorten_add",
-        "git_oid_shorten_free"
-      ]
-    },
-    "typeName": "oid_shorten",
-    "cType": "git_oid_shorten",
-    "functions": [],
-    "cppClassName": "GitOidShorten",
-    "jsClassName": "OidShorten",
-    "filename": "oid_shorten",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "oid_shorten"
-  },
-  {
-    "typeName": "otype",
-    "type": "enum",
-    "cType": "git_otype",
-    "isMask": false,
-    "values": [
-      {
-        "name": "GIT_OBJ_ANY",
-        "value": -2,
-        "JsName": "OBJ_ANY"
-      },
-      {
-        "name": "GIT_OBJ_BAD",
-        "value": -1,
-        "JsName": "OBJ_BAD"
-      },
-      {
-        "name": "GIT_OBJ__EXT1",
-        "value": 0,
-        "JsName": "OBJ__EXT1"
-      },
-      {
-        "name": "GIT_OBJ_COMMIT",
-        "value": 1,
-        "JsName": "OBJ_COMMIT"
-      },
-      {
-        "name": "GIT_OBJ_TREE",
-        "value": 2,
-        "JsName": "OBJ_TREE"
-      },
-      {
-        "name": "GIT_OBJ_BLOB",
-        "value": 3,
-        "JsName": "OBJ_BLOB"
-      },
-      {
-        "name": "GIT_OBJ_TAG",
-        "value": 4,
-        "JsName": "OBJ_TAG"
-      },
-      {
-        "name": "GIT_OBJ__EXT2",
-        "value": 5,
-        "JsName": "OBJ__EXT2"
-      },
-      {
-        "name": "GIT_OBJ_OFS_DELTA",
-        "value": 6,
-        "JsName": "OBJ_OFS_DELTA"
-      },
-      {
-        "name": "GIT_OBJ_REF_DELTA",
-        "value": 7,
-        "JsName": "OBJ_REF_DELTA"
-      }
-    ],
-    "owner": "Enums",
-    "JsName": "OTYPE"
-  },
-  {
-    "type": "class",
-    "value": "git_packbuilder",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_packbuilder_foreach",
-        "git_packbuilder_free",
-        "git_packbuilder_hash",
-        "git_packbuilder_insert",
-        "git_packbuilder_insert_commit",
-        "git_packbuilder_insert_tree",
-        "git_packbuilder_new",
-        "git_packbuilder_object_count",
-        "git_packbuilder_set_callbacks",
-        "git_packbuilder_set_threads",
-        "git_packbuilder_write",
-        "git_packbuilder_written"
-      ]
-    },
-    "typeName": "packbuilder",
-    "cType": "git_packbuilder",
-    "functions": [
-      {
-        "type": "function",
-        "file": "pack.h",
-        "args": [
-          {
-            "name": "pb",
-            "type": "git_packbuilder *",
-            "comment": "The packbuilder object",
-            "cType": "git_packbuilder *",
-            "cppClassName": "GitPackbuilder",
-            "jsClassName": "Packbuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": null,
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "packbuilder",
-        "cFunctionName": "git_packbuilder_hash",
-        "cppFunctionName": "Hash",
-        "jsFunctionName": "hash",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPackbuilder"
-      },
-      {
-        "type": "function",
-        "file": "pack.h",
-        "args": [
-          {
-            "name": "pb",
-            "type": "git_packbuilder *",
-            "comment": "The packbuilder",
-            "cType": "git_packbuilder *",
-            "cppClassName": "GitPackbuilder",
-            "jsClassName": "Packbuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "The oid of the commit",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The name; might be NULL",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "packbuilder",
-        "cFunctionName": "git_packbuilder_insert",
-        "cppFunctionName": "Insert",
-        "jsFunctionName": "insert",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPackbuilder"
-      },
-      {
-        "type": "function",
-        "file": "pack.h",
-        "args": [
-          {
-            "name": "pb",
-            "type": "git_packbuilder *",
-            "comment": "The packbuilder",
-            "cType": "git_packbuilder *",
-            "cppClassName": "GitPackbuilder",
-            "jsClassName": "Packbuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "The oid of the commit",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "packbuilder",
-        "cFunctionName": "git_packbuilder_insert_commit",
-        "cppFunctionName": "InsertCommit",
-        "jsFunctionName": "insertCommit",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPackbuilder"
-      },
-      {
-        "type": "function",
-        "file": "pack.h",
-        "args": [
-          {
-            "name": "pb",
-            "type": "git_packbuilder *",
-            "comment": "The packbuilder",
-            "cType": "git_packbuilder *",
-            "cppClassName": "GitPackbuilder",
-            "jsClassName": "Packbuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "The oid of the root tree",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "packbuilder",
-        "cFunctionName": "git_packbuilder_insert_tree",
-        "cppFunctionName": "InsertTree",
-        "jsFunctionName": "insertTree",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPackbuilder"
-      },
-      {
-        "type": "function",
-        "file": "pack.h",
-        "args": [
-          {
-            "name": "pb",
-            "type": "git_packbuilder *",
-            "comment": "the packbuilder",
-            "cType": "git_packbuilder *",
-            "cppClassName": "GitPackbuilder",
-            "jsClassName": "Packbuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "uint32_t",
-          "comment": " the number of objects in the packfile",
-          "cType": "uint32_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "packbuilder",
-        "cFunctionName": "git_packbuilder_object_count",
-        "cppFunctionName": "ObjectCount",
-        "jsFunctionName": "objectCount",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPackbuilder"
-      },
-      {
-        "type": "function",
-        "file": "pack.h",
-        "args": [
-          {
-            "name": "pb",
-            "type": "git_packbuilder *",
-            "comment": "The packbuilder",
-            "cType": "git_packbuilder *",
-            "cppClassName": "GitPackbuilder",
-            "jsClassName": "Packbuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "n",
-            "type": "unsigned int",
-            "comment": "Number of threads to spawn",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "unsigned int",
-          "comment": " number of actual threads to be used",
-          "cType": "unsigned int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "packbuilder",
-        "cFunctionName": "git_packbuilder_set_threads",
-        "cppFunctionName": "SetThreads",
-        "jsFunctionName": "setThreads",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPackbuilder"
-      },
-      {
-        "type": "function",
-        "file": "pack.h",
-        "args": [
-          {
-            "name": "pb",
-            "type": "git_packbuilder *",
-            "comment": "the packbuilder",
-            "cType": "git_packbuilder *",
-            "cppClassName": "GitPackbuilder",
-            "jsClassName": "Packbuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "uint32_t",
-          "comment": " the number of objects which have already been written",
-          "cType": "uint32_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "packbuilder",
-        "cFunctionName": "git_packbuilder_written",
-        "cppFunctionName": "Written",
-        "jsFunctionName": "written",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPackbuilder"
-      }
-    ],
-    "cppClassName": "GitPackbuilder",
-    "jsClassName": "Packbuilder",
-    "filename": "packbuilder",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/packbuilder.h",
-      "../include/oid.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_packbuilder_free",
-    "name": "packbuilder"
-  },
-  {
-    "typeName": "packbuilder_stage",
-    "type": "enum",
-    "cType": "git_packbuilder_stage_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_PACKBUILDER_ADDING_OBJECTS",
-        "value": 0,
-        "JsName": "ADDING_OBJECTS"
-      },
-      {
-        "name": "GIT_PACKBUILDER_DELTAFICATION",
-        "value": 1,
-        "JsName": "DELTAFICATION"
-      }
-    ],
-    "owner": "Packbuilder",
-    "JsName": "STAGE"
-  },
-  {
-    "type": "class",
-    "value": "git_patch",
-    "file": "patch.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_patch_free",
-        "git_patch_from_blob_and_buffer",
-        "git_patch_from_blobs",
-        "git_patch_from_buffers",
-        "git_patch_from_diff",
-        "git_patch_get_delta",
-        "git_patch_get_hunk",
-        "git_patch_get_line_in_hunk",
-        "git_patch_line_stats",
-        "git_patch_num_hunks",
-        "git_patch_num_lines_in_hunk",
-        "git_patch_print",
-        "git_patch_size",
-        "git_patch_to_buf"
-      ]
-    },
-    "typeName": "patch",
-    "cType": "git_patch",
-    "functions": [
-      {
-        "type": "function",
-        "file": "patch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_patch **",
-            "comment": "The generated patch; NULL on error",
-            "cType": "git_patch **",
-            "cppClassName": "GitPatch",
-            "jsClassName": "Patch",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "old_blob",
-            "type": "const git_blob *",
-            "comment": "Blob for old side of diff, or NULL for empty blob",
-            "cType": "const git_blob *",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "old_as_path",
-            "type": "const char *",
-            "comment": "Treat old blob as if it had this filename; can be NULL",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "buffer",
-            "type": "const char *",
-            "comment": "Raw data for new side of diff, or NULL for empty",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "buffer_len",
-            "type": "size_t",
-            "comment": "Length of raw data for new side of diff",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "buffer_as_path",
-            "type": "const char *",
-            "comment": "Treat buffer as if it had this filename; can be NULL",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "opts",
-            "type": "const git_diff_options *",
-            "comment": "Options for diff, or NULL for default options",
-            "cType": "const git_diff_options *",
-            "cppClassName": "GitDiffOptions",
-            "jsClassName": "DiffOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success or error code \n<\n 0",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "patch",
-        "cFunctionName": "git_patch_from_blob_and_buffer",
-        "cppFunctionName": "FromBlobAndBuffer",
-        "jsFunctionName": "fromBlobAndBuffer",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitPatch"
-      },
-      {
-        "type": "function",
-        "file": "patch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_patch **",
-            "comment": "The generated patch; NULL on error",
-            "cType": "git_patch **",
-            "cppClassName": "GitPatch",
-            "jsClassName": "Patch",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "old_blob",
-            "type": "const git_blob *",
-            "comment": "Blob for old side of diff, or NULL for empty blob",
-            "cType": "const git_blob *",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "old_as_path",
-            "type": "const char *",
-            "comment": "Treat old blob as if it had this filename; can be NULL",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "new_blob",
-            "type": "const git_blob *",
-            "comment": "Blob for new side of diff, or NULL for empty blob",
-            "cType": "const git_blob *",
-            "cppClassName": "GitBlob",
-            "jsClassName": "Blob",
-            "isLibgitType": true,
-            "isEnum": false,
-            "dependencies": [
-              "../include/wrapper.h",
-              "node_buffer.h"
-            ],
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "new_as_path",
-            "type": "const char *",
-            "comment": "Treat new blob as if it had this filename; can be NULL",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "opts",
-            "type": "const git_diff_options *",
-            "comment": "Options for diff, or NULL for default options",
-            "cType": "const git_diff_options *",
-            "cppClassName": "GitDiffOptions",
-            "jsClassName": "DiffOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success or error code \n<\n 0",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "patch",
-        "cFunctionName": "git_patch_from_blobs",
-        "cppFunctionName": "FromBlobs",
-        "jsFunctionName": "fromBlobs",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitPatch"
-      },
-      {
-        "type": "function",
-        "file": "patch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_patch **",
-            "comment": "Output parameter for the delta patch object",
-            "cType": "git_patch **",
-            "cppClassName": "GitPatch",
-            "jsClassName": "Patch",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "diff",
-            "type": "git_diff *",
-            "comment": "Diff list object",
-            "cType": "git_diff *",
-            "cppClassName": "GitDiff",
-            "jsClassName": "Diff",
-            "isLibgitType": true,
-            "isEnum": false,
-            "cDependencies": [
-              "git2/sys/diff.h"
-            ],
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "idx",
-            "type": "size_t",
-            "comment": "Index into diff list",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, other value \n<\n 0 on error",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "patch",
-        "cFunctionName": "git_patch_from_diff",
-        "cppFunctionName": "FromDiff",
-        "jsFunctionName": "fromDiff",
-        "isAsync": false,
-        "isConstructorMethod": true,
-        "cppClassName": "GitPatch"
-      },
-      {
-        "type": "function",
-        "file": "patch.h",
-        "args": [
-          {
-            "name": "patch",
-            "type": "const git_patch *",
-            "comment": null,
-            "cType": "const git_patch *",
-            "cppClassName": "GitPatch",
-            "jsClassName": "Patch",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_diff_delta *",
-          "comment": null,
-          "cType": "const git_diff_delta *",
-          "cppClassName": "GitDiffDelta",
-          "jsClassName": "DiffDelta",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "patch",
-        "cFunctionName": "git_patch_get_delta",
-        "cppFunctionName": "GetDelta",
-        "jsFunctionName": "getDelta",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPatch"
-      },
-      {
-        "type": "function",
-        "file": "patch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "const git_diff_hunk **",
-            "comment": "Output pointer to git_diff_hunk of hunk",
-            "cType": "const git_diff_hunk **",
-            "cppClassName": "GitDiffHunk",
-            "jsClassName": "DiffHunk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false,
-            "returnName": "hunk"
-          },
-          {
-            "name": "lines_in_hunk",
-            "type": "size_t *",
-            "comment": "Output count of total lines in this hunk",
-            "cType": "size_t *",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "patch",
-            "type": "git_patch *",
-            "comment": "Input pointer to patch object",
-            "cType": "git_patch *",
-            "cppClassName": "GitPatch",
-            "jsClassName": "Patch",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "hunk_idx",
-            "type": "size_t",
-            "comment": "Input index of hunk to get information about",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND if hunk_idx out of range, \n<\n0 on error",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "patch",
-        "cFunctionName": "git_patch_get_hunk",
-        "cppFunctionName": "GetHunk",
-        "jsFunctionName": "getHunk",
-        "isAsync": false,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPatch"
-      },
-      {
-        "type": "function",
-        "file": "patch.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "const git_diff_line **",
-            "comment": "The git_diff_line data for this line",
-            "cType": "const git_diff_line **",
-            "cppClassName": "GitDiffLine",
-            "jsClassName": "DiffLine",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "patch",
-            "type": "git_patch *",
-            "comment": "The patch to look in",
-            "cType": "git_patch *",
-            "cppClassName": "GitPatch",
-            "jsClassName": "Patch",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "hunk_idx",
-            "type": "size_t",
-            "comment": "The index of the hunk",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "line_of_hunk",
-            "type": "size_t",
-            "comment": "The index of the line in the hunk",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 on failure",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "patch",
-        "cFunctionName": "git_patch_get_line_in_hunk",
-        "cppFunctionName": "GetLineInHunk",
-        "jsFunctionName": "getLineInHunk",
-        "isAsync": false,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPatch"
-      },
-      {
-        "type": "function",
-        "file": "patch.h",
-        "args": [
-          {
-            "name": "patch",
-            "type": "const git_patch *",
-            "comment": null,
-            "cType": "const git_patch *",
-            "cppClassName": "GitPatch",
-            "jsClassName": "Patch",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": null,
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "patch",
-        "cFunctionName": "git_patch_num_hunks",
-        "cppFunctionName": "NumHunks",
-        "jsFunctionName": "numHunks",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPatch"
-      },
-      {
-        "type": "function",
-        "file": "patch.h",
-        "args": [
-          {
-            "name": "patch",
-            "type": "const git_patch *",
-            "comment": "The git_patch object",
-            "cType": "const git_patch *",
-            "cppClassName": "GitPatch",
-            "jsClassName": "Patch",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "hunk_idx",
-            "type": "size_t",
-            "comment": "Index of the hunk",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Number of lines in hunk or -1 if invalid hunk index",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "patch",
-        "cFunctionName": "git_patch_num_lines_in_hunk",
-        "cppFunctionName": "NumLinesInHunk",
-        "jsFunctionName": "numLinesInHunk",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPatch"
-      },
-      {
-        "type": "function",
-        "file": "patch.h",
-        "args": [
-          {
-            "name": "patch",
-            "type": "git_patch *",
-            "comment": "A git_patch representing changes to one file",
-            "cType": "git_patch *",
-            "cppClassName": "GitPatch",
-            "jsClassName": "Patch",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "include_context",
-            "type": "int",
-            "comment": "Include context lines in size if non-zero",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "include_hunk_headers",
-            "type": "int",
-            "comment": "Include hunk header lines if non-zero",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "include_file_headers",
-            "type": "int",
-            "comment": "Include file header lines if non-zero",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " The number of bytes of data",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "patch",
-        "cFunctionName": "git_patch_size",
-        "cppFunctionName": "Size",
-        "jsFunctionName": "size",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPatch"
-      }
-    ],
-    "cppClassName": "GitPatch",
-    "jsClassName": "Patch",
-    "filename": "patch",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/patch.h",
-      "../include/blob.h",
-      "../include/diff_options.h",
-      "../include/diff.h",
-      "../include/diff_delta.h",
-      "../include/diff_hunk.h",
-      "../include/diff_line.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_patch_free",
-    "name": "patch"
-  },
-  {
-    "type": "class",
-    "value": "git_pathspec",
-    "file": "pathspec.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_pathspec_free",
-        "git_pathspec_match_diff",
-        "git_pathspec_match_index",
-        "git_pathspec_match_tree",
-        "git_pathspec_match_workdir",
-        "git_pathspec_matches_path",
-        "git_pathspec_new"
-      ]
-    },
-    "typeName": "pathspec",
-    "cType": "git_pathspec",
-    "functions": [
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_pathspec_match_list **",
-            "comment": "Output list of matches; pass NULL to just get return value",
-            "cType": "git_pathspec_match_list **",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "diff",
-            "type": "git_diff *",
-            "comment": "A generated diff list",
-            "cType": "git_diff *",
-            "cppClassName": "GitDiff",
-            "jsClassName": "Diff",
-            "isLibgitType": true,
-            "isEnum": false,
-            "cDependencies": [
-              "git2/sys/diff.h"
-            ],
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "flags",
-            "type": "uint32_t",
-            "comment": "Combination of git_pathspec_flag_t options to control match",
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "ps",
-            "type": "git_pathspec *",
-            "comment": "Pathspec to be matched",
-            "cType": "git_pathspec *",
-            "cppClassName": "GitPathspec",
-            "jsClassName": "Pathspec",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_match_diff",
-        "cppFunctionName": "MatchDiff",
-        "jsFunctionName": "matchDiff",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_pathspec_match_list **",
-            "comment": "Output list of matches; pass NULL to just get return value",
-            "cType": "git_pathspec_match_list **",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "index",
-            "type": "git_index *",
-            "comment": "The index to match against",
-            "cType": "git_index *",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "flags",
-            "type": "uint32_t",
-            "comment": "Combination of git_pathspec_flag_t options to control match",
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "ps",
-            "type": "git_pathspec *",
-            "comment": "Pathspec to be matched",
-            "cType": "git_pathspec *",
-            "cppClassName": "GitPathspec",
-            "jsClassName": "Pathspec",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_match_index",
-        "cppFunctionName": "MatchIndex",
-        "jsFunctionName": "matchIndex",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "m",
-            "type": "const git_pathspec_match_list *",
-            "comment": "The git_pathspec_match_list object",
-            "cType": "const git_pathspec_match_list *",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "pos",
-            "type": "size_t",
-            "comment": "The index into the list",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_diff_delta *",
-          "comment": " The filename of the match",
-          "cType": "const git_diff_delta *",
-          "cppClassName": "GitDiffDelta",
-          "jsClassName": "DiffDelta",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_match_list_diff_entry",
-        "cppFunctionName": "MatchListDiffEntry",
-        "jsFunctionName": "matchListDiffEntry",
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "m",
-            "type": "const git_pathspec_match_list *",
-            "comment": "The git_pathspec_match_list object",
-            "cType": "const git_pathspec_match_list *",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "pos",
-            "type": "size_t",
-            "comment": "The index into the list",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " The filename of the match",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_match_list_entry",
-        "cppFunctionName": "MatchListEntry",
-        "jsFunctionName": "matchListEntry",
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "m",
-            "type": "const git_pathspec_match_list *",
-            "comment": "The git_pathspec_match_list object",
-            "cType": "const git_pathspec_match_list *",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " Number of items in match list",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_match_list_entrycount",
-        "cppFunctionName": "MatchListEntrycount",
-        "jsFunctionName": "matchListEntrycount",
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "m",
-            "type": "const git_pathspec_match_list *",
-            "comment": "The git_pathspec_match_list object",
-            "cType": "const git_pathspec_match_list *",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "pos",
-            "type": "size_t",
-            "comment": "The index into the failed items",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " The pathspec pattern that didn't match anything",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_match_list_failed_entry",
-        "cppFunctionName": "MatchListFailedEntry",
-        "jsFunctionName": "matchListFailedEntry",
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "m",
-            "type": "const git_pathspec_match_list *",
-            "comment": "The git_pathspec_match_list object",
-            "cType": "const git_pathspec_match_list *",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " Number of items in original pathspec that had no matches",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_match_list_failed_entrycount",
-        "cppFunctionName": "MatchListFailedEntrycount",
-        "jsFunctionName": "matchListFailedEntrycount",
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "m",
-            "type": "git_pathspec_match_list *",
-            "comment": "The git_pathspec_match_list to be freed",
-            "cType": "git_pathspec_match_list *",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_match_list_free",
-        "cppFunctionName": "MatchListFree",
-        "jsFunctionName": "matchListFree",
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_pathspec_match_list **",
-            "comment": "Output list of matches; pass NULL to just get return value",
-            "cType": "git_pathspec_match_list **",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "tree",
-            "type": "git_tree *",
-            "comment": "The root-level tree to match against",
-            "cType": "git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "flags",
-            "type": "uint32_t",
-            "comment": "Combination of git_pathspec_flag_t options to control match",
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "ps",
-            "type": "git_pathspec *",
-            "comment": "Pathspec to be matched",
-            "cType": "git_pathspec *",
-            "cppClassName": "GitPathspec",
-            "jsClassName": "Pathspec",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag is used",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "examples": {
-          "log.c": [
-            "ex/v0.21.2/log.html#git_pathspec_match_tree-41"
-          ]
-        },
-        "cFunctionName": "git_pathspec_match_tree",
-        "cppFunctionName": "MatchTree",
-        "jsFunctionName": "matchTree",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_pathspec_match_list **",
-            "comment": "Output list of matches; pass NULL to just get return value",
-            "cType": "git_pathspec_match_list **",
-            "cppClassName": "GitPathspecMatchList",
-            "jsClassName": "PathspecMatchList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository in which to match; bare repo is an error",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "flags",
-            "type": "uint32_t",
-            "comment": "Combination of git_pathspec_flag_t options to control match",
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "ps",
-            "type": "git_pathspec *",
-            "comment": "Pathspec to be matched",
-            "cType": "git_pathspec *",
-            "cppClassName": "GitPathspec",
-            "jsClassName": "Pathspec",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, -1 on error, GIT_ENOTFOUND if no matches and\n         the GIT_PATHSPEC_NO_MATCH_ERROR flag was given",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_match_workdir",
-        "cppFunctionName": "MatchWorkdir",
-        "jsFunctionName": "matchWorkdir",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPathspec"
-      },
-      {
-        "type": "function",
-        "file": "pathspec.h",
-        "args": [
-          {
-            "name": "ps",
-            "type": "const git_pathspec *",
-            "comment": "The compiled pathspec",
-            "cType": "const git_pathspec *",
-            "cppClassName": "GitPathspec",
-            "jsClassName": "Pathspec",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "flags",
-            "type": "uint32_t",
-            "comment": "Combination of git_pathspec_flag_t options to control match",
-            "cType": "uint32_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "The pathname to attempt to match",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 is path matches spec, 0 if it does not",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "pathspec",
-        "cFunctionName": "git_pathspec_matches_path",
-        "cppFunctionName": "MatchesPath",
-        "jsFunctionName": "matchesPath",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPathspec"
-      }
-    ],
-    "cppClassName": "GitPathspec",
-    "jsClassName": "Pathspec",
-    "filename": "pathspec",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/pathspec_match_list.h",
-      "../include/diff.h",
-      "../include/pathspec.h",
-      "../include/index.h",
-      "../include/diff_delta.h",
-      "../include/tree.h",
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_pathspec_free",
-    "name": "pathspec"
-  },
-  {
-    "typeName": "pathspec_flag",
-    "type": "enum",
-    "cType": "git_pathspec_flag_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_PATHSPEC_DEFAULT",
-        "value": 0,
-        "JsName": "DEFAULT"
-      },
-      {
-        "name": "GIT_PATHSPEC_IGNORE_CASE",
-        "value": 1,
-        "JsName": "IGNORE_CASE"
-      },
-      {
-        "name": "GIT_PATHSPEC_USE_CASE",
-        "value": 2,
-        "JsName": "USE_CASE"
-      },
-      {
-        "name": "GIT_PATHSPEC_NO_GLOB",
-        "value": 4,
-        "JsName": "NO_GLOB"
-      },
-      {
-        "name": "GIT_PATHSPEC_NO_MATCH_ERROR",
-        "value": 8,
-        "JsName": "NO_MATCH_ERROR"
-      },
-      {
-        "name": "GIT_PATHSPEC_FIND_FAILURES",
-        "value": 16,
-        "JsName": "FIND_FAILURES"
-      },
-      {
-        "name": "GIT_PATHSPEC_FAILURES_ONLY",
-        "value": 32,
-        "JsName": "FAILURES_ONLY"
-      }
-    ],
-    "owner": "Pathspec",
-    "JsName": "FLAG"
-  },
-  {
-    "type": "class",
-    "value": "git_pathspec_match_list",
-    "file": "pathspec.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_pathspec_match_diff",
-        "git_pathspec_match_index",
-        "git_pathspec_match_list_diff_entry",
-        "git_pathspec_match_list_entry",
-        "git_pathspec_match_list_entrycount",
-        "git_pathspec_match_list_failed_entry",
-        "git_pathspec_match_list_failed_entrycount",
-        "git_pathspec_match_list_free",
-        "git_pathspec_match_tree",
-        "git_pathspec_match_workdir"
-      ]
-    },
-    "typeName": "pathspec_match_list",
-    "cType": "git_pathspec_match_list",
-    "functions": [],
-    "cppClassName": "GitPathspecMatchList",
-    "jsClassName": "PathspecMatchList",
-    "filename": "pathspec_match_list",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "pathspec_match_list"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "push.h",
-        "args": [
-          {
-            "name": "push",
-            "type": "git_push *",
-            "comment": "The push object",
-            "cType": "git_push *",
-            "cppClassName": "GitPush",
-            "jsClassName": "Push",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "refspec",
-            "type": "const char *",
-            "comment": "Refspec string",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "push",
-        "cFunctionName": "git_push_add_refspec",
-        "cppFunctionName": "AddRefspec",
-        "jsFunctionName": "addRefspec",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPush"
-      },
-      {
-        "type": "function",
-        "file": "push.h",
-        "args": [
-          {
-            "name": "push",
-            "type": "git_push *",
-            "comment": "The push object",
-            "cType": "git_push *",
-            "cppClassName": "GitPush",
-            "jsClassName": "Push",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "push",
-        "cFunctionName": "git_push_finish",
-        "cppFunctionName": "Finish",
-        "jsFunctionName": "finish",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPush"
-      },
-      {
-        "type": "function",
-        "file": "push.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_push_options *",
-            "comment": "the `git_push_options` instance to initialize.",
-            "cType": "git_push_options *",
-            "cppClassName": "GitPushOptions",
-            "jsClassName": "PushOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "the version of the struct; you should pass\n        `GIT_PUSH_OPTIONS_VERSION` here.",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "push",
-        "cFunctionName": "git_push_init_options",
-        "cppFunctionName": "InitOptions",
-        "jsFunctionName": "initOptions",
-        "cppClassName": "GitPush"
-      },
-      {
-        "type": "function",
-        "file": "push.h",
-        "args": [
-          {
-            "name": "push",
-            "type": "git_push *",
-            "comment": "The push object",
-            "cType": "git_push *",
-            "cppClassName": "GitPush",
-            "jsClassName": "Push",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "opts",
-            "type": "const git_push_options *",
-            "comment": "The options to set on the push object",
-            "cType": "const git_push_options *",
-            "cppClassName": "GitPushOptions",
-            "jsClassName": "PushOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "push",
-        "cFunctionName": "git_push_set_options",
-        "cppFunctionName": "SetOptions",
-        "jsFunctionName": "setOptions",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPush"
-      },
-      {
-        "type": "function",
-        "file": "push.h",
-        "args": [
-          {
-            "name": "push",
-            "type": "const git_push *",
-            "comment": "The push object",
-            "cType": "const git_push *",
-            "cppClassName": "GitPush",
-            "jsClassName": "Push",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " true if remote side successfully unpacked, false otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "push",
-        "cFunctionName": "git_push_unpack_ok",
-        "cppFunctionName": "UnpackOk",
-        "jsFunctionName": "unpackOk",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPush"
-      },
-      {
-        "type": "function",
-        "file": "push.h",
-        "args": [
-          {
-            "name": "push",
-            "type": "git_push *",
-            "comment": "The push object",
-            "cType": "git_push *",
-            "cppClassName": "GitPush",
-            "jsClassName": "Push",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity to use when updating reflogs",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "reflog_message",
-            "type": "const char *",
-            "comment": "The message to insert into the reflogs. If NULL, the\n                       default is \"update by push\".",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "push",
-        "cFunctionName": "git_push_update_tips",
-        "cppFunctionName": "UpdateTips",
-        "jsFunctionName": "updateTips",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitPush"
-      }
-    ],
-    "type": "class",
-    "cType": "git_push",
-    "typeName": "push",
-    "cppClassName": "GitPush",
-    "jsClassName": "Push",
-    "filename": "push",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/push.h",
-      "../include/push_options.h",
-      "../include/signature.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "freeFunctionName": "git_push_free",
-    "name": "push"
-  },
-  {
-    "type": "struct",
-    "value": "git_push_options",
-    "file": "push.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "pb_parallelism",
-        "cType": "unsigned int",
-        "cppFunctionName": "PbParallelism",
-        "jsFunctionName": "pbParallelism",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_push_init_options",
-        "git_push_set_options"
-      ]
-    },
-    "typeName": "push_options",
-    "cType": "git_push_options",
-    "functions": [],
-    "cppClassName": "GitPushOptions",
-    "jsClassName": "PushOptions",
-    "filename": "push_options",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "push_options"
-  },
-  {
-    "typeName": "ref",
-    "type": "enum",
-    "cType": "git_ref_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_REF_INVALID",
-        "value": 0,
-        "JsName": "INVALID"
-      },
-      {
-        "name": "GIT_REF_OID",
-        "value": 1,
-        "JsName": "OID"
-      },
-      {
-        "name": "GIT_REF_SYMBOLIC",
-        "value": 2,
-        "JsName": "SYMBOLIC"
-      },
-      {
-        "name": "GIT_REF_LISTALL",
-        "value": 3,
-        "JsName": "LISTALL"
-      }
-    ],
-    "owner": "Enums",
-    "JsName": "REF"
-  },
-  {
-    "type": "class",
-    "value": "git_refdb",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_refdb_compress",
-        "git_refdb_free",
-        "git_refdb_new",
-        "git_refdb_open",
-        "git_refdb_set_backend",
-        "git_repository_refdb"
-      ]
-    },
-    "typeName": "refdb",
-    "cType": "git_refdb",
-    "functions": [
-      {
-        "type": "function",
-        "file": "refdb.h",
-        "args": [
-          {
-            "name": "refdb",
-            "type": "git_refdb *",
-            "comment": null,
-            "cType": "git_refdb *",
-            "cppClassName": "GitRefdb",
-            "jsClassName": "Refdb",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "refdb",
-        "cFunctionName": "git_refdb_compress",
-        "cppFunctionName": "Compress",
-        "jsFunctionName": "compress",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefdb"
-      },
-      {
-        "type": "function",
-        "file": "refdb.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_refdb **",
-            "comment": "location to store the database pointer, if opened.\n\t\t\tSet to NULL if the open failed.",
-            "cType": "git_refdb **",
-            "cppClassName": "GitRefdb",
-            "jsClassName": "Refdb",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "refdb",
-        "cFunctionName": "git_refdb_open",
-        "cppFunctionName": "Open",
-        "jsFunctionName": "open",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRefdb"
-      }
-    ],
-    "cppClassName": "GitRefdb",
-    "jsClassName": "Refdb",
-    "filename": "refdb",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/refdb.h",
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_refdb_free",
-    "name": "refdb"
-  },
-  {
-    "type": "class",
-    "value": "git_reference",
-    "file": "types.h",
-    "used": {
-      "returns": [
-        "git_reference__alloc",
-        "git_reference__alloc_symbolic"
-      ],
-      "needs": [
-        "git_branch_create",
-        "git_branch_delete",
-        "git_branch_is_head",
-        "git_branch_lookup",
-        "git_branch_move",
-        "git_branch_name",
-        "git_branch_next",
-        "git_branch_set_upstream",
-        "git_branch_upstream",
-        "git_merge_head_from_ref",
-        "git_reference_cmp",
-        "git_reference_create",
-        "git_reference_create_matching",
-        "git_reference_delete",
-        "git_reference_dwim",
-        "git_reference_free",
-        "git_reference_is_branch",
-        "git_reference_is_note",
-        "git_reference_is_remote",
-        "git_reference_is_tag",
-        "git_reference_lookup",
-        "git_reference_name",
-        "git_reference_next",
-        "git_reference_owner",
-        "git_reference_peel",
-        "git_reference_rename",
-        "git_reference_resolve",
-        "git_reference_set_target",
-        "git_reference_shorthand",
-        "git_reference_symbolic_create",
-        "git_reference_symbolic_create_matching",
-        "git_reference_symbolic_set_target",
-        "git_reference_symbolic_target",
-        "git_reference_target",
-        "git_reference_target_peel",
-        "git_reference_type",
-        "git_repository_head",
-        "git_revparse_ext"
-      ]
-    },
-    "typeName": "reference",
-    "cType": "git_reference",
-    "functions": [
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref1",
-            "type": "const git_reference *",
-            "comment": "The first git_reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "ref2",
-            "type": "const git_reference *",
-            "comment": "The second git_reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 if the same, else a stable but meaningless ordering.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_cmp",
-        "cppFunctionName": "Cmp",
-        "jsFunctionName": "cmp",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "Pointer to the newly created reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where that reference will live",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The name of the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "The object id pointed to by the reference.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing references",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_create",
-        "cppFunctionName": "Create",
-        "jsFunctionName": "create",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "Pointer to the newly created reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where that reference will live",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The name of the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "The object id pointed to by the reference.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing references",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "current_id",
-            "type": "const git_oid *",
-            "comment": "The expected value of the reference at the time of update",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EMODIFIED if the value of the reference\n has changed, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_create_matching",
-        "cppFunctionName": "CreateMatching",
-        "jsFunctionName": "createMatching",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "git_reference *",
-            "comment": "The reference to remove",
-            "cType": "git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, GIT_EMODIFIED or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_delete",
-        "cppFunctionName": "Delete",
-        "jsFunctionName": "delete",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "pointer in which to store the reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository in which to look",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "shorthand",
-            "type": "const char *",
-            "comment": "the short name for the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_dwim",
-        "cppFunctionName": "Dwim",
-        "jsFunctionName": "dwim",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "refname",
-            "type": "const char *",
-            "comment": "the reference's name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_ensure_log",
-        "cppFunctionName": "EnsureLog",
-        "jsFunctionName": "ensureLog",
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "refname",
-            "type": "const char *",
-            "comment": "the reference's name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 when no reflog can be found, 1 when it exists;\n otherwise an error code.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_has_log",
-        "cppFunctionName": "HasLog",
-        "jsFunctionName": "hasLog",
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "A git reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 when the reference lives in the refs/heads\n namespace; 0 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_is_branch",
-        "cppFunctionName": "IsBranch",
-        "jsFunctionName": "isBranch",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "A git reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 when the reference lives in the refs/notes\n namespace; 0 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_is_note",
-        "cppFunctionName": "IsNote",
-        "jsFunctionName": "isNote",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "A git reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 when the reference lives in the refs/remotes\n namespace; 0 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_is_remote",
-        "cppFunctionName": "IsRemote",
-        "jsFunctionName": "isRemote",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "A git reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 when the reference lives in the refs/tags\n namespace; 0 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_is_tag",
-        "cppFunctionName": "IsTag",
-        "jsFunctionName": "isTag",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "refname",
-            "type": "const char *",
-            "comment": "name to be checked.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the reference name is acceptable; 0 if it isn't",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_is_valid_name",
-        "cppFunctionName": "IsValidName",
-        "jsFunctionName": "isValidName",
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "array",
-            "type": "git_strarray *",
-            "comment": "Pointer to a git_strarray structure where\n\t\tthe reference names will be stored",
-            "cType": "git_strarray *",
-            "cppClassName": "Array",
-            "jsClassName": "Array",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false,
-            "shouldAlloc": true,
-            "size": "count",
-            "key": "strings"
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where to find the refs",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_reference_list-56"
-          ]
-        },
-        "cFunctionName": "git_reference_list",
-        "cppFunctionName": "List",
-        "jsFunctionName": "list",
-        "isAsync": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "pointer to the looked-up reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to look up the reference",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "the long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_reference_lookup-52"
-          ]
-        },
-        "cFunctionName": "git_reference_lookup",
-        "cppFunctionName": "Lookup",
-        "jsFunctionName": "lookup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "The reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the full name for the ref",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_name",
-        "cppFunctionName": "Name",
-        "jsFunctionName": "name",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_oid *",
-            "comment": "Pointer to oid to be filled in",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository in which to look up the reference",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...)",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_name_to_id",
-        "cppFunctionName": "NameToId",
-        "jsFunctionName": "nameToId",
-        "isAsync": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "buffer_out",
-            "type": "char *",
-            "comment": "User allocated buffer to store normalized name",
-            "cType": "char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "buffer_size",
-            "type": "size_t",
-            "comment": "Size of buffer_out",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "Reference name to be checked.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "flags",
-            "type": "unsigned int",
-            "comment": "Flags to constrain name validation rules - see the\n              GIT_REF_FORMAT constants above.",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC\n or an error code.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_normalize_name",
-        "cppFunctionName": "NormalizeName",
-        "jsFunctionName": "normalizeName",
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "The reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " a pointer to the repo",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_owner",
-        "cppFunctionName": "Owner",
-        "jsFunctionName": "owner",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_object **",
-            "comment": "Pointer to the peeled git_object",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "ref",
-            "type": "git_reference *",
-            "comment": "The reference to be processed",
-            "cType": "git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "type",
-            "type": "git_otype",
-            "comment": "The type of the requested object (GIT_OBJ_COMMIT,\n GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY).",
-            "cType": "git_otype",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EAMBIGUOUS, GIT_ENOTFOUND or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_peel",
-        "cppFunctionName": "Peel",
-        "jsFunctionName": "peel",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": null,
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The reference to remove",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_remove",
-        "cppFunctionName": "Remove",
-        "jsFunctionName": "remove",
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "new_ref",
-            "type": "git_reference **",
-            "comment": null,
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "ref",
-            "type": "git_reference *",
-            "comment": "The reference to rename",
-            "cType": "git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "new_name",
-            "type": "const char *",
-            "comment": "The new name for the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite an existing reference",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_rename",
-        "cppFunctionName": "Rename",
-        "jsFunctionName": "rename",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "Pointer to the peeled reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "The reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_resolve",
-        "cppFunctionName": "Resolve",
-        "jsFunctionName": "resolve",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "Pointer to the newly created reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "ref",
-            "type": "git_reference *",
-            "comment": "The reference",
-            "cType": "git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "The new target OID for the reference",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EMODIFIED if the value of the reference\n has changed since it was read, or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_set_target",
-        "cppFunctionName": "SetTarget",
-        "jsFunctionName": "setTarget",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "a reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the human-readable version of the name",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "examples": {
-          "status.c": [
-            "ex/v0.21.2/status.html#git_reference_shorthand-2"
-          ]
-        },
-        "cFunctionName": "git_reference_shorthand",
-        "cppFunctionName": "Shorthand",
-        "jsFunctionName": "shorthand",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "Pointer to the newly created reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where that reference will live",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The name of the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "target",
-            "type": "const char *",
-            "comment": "The target of the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing references",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_symbolic_create",
-        "cppFunctionName": "SymbolicCreate",
-        "jsFunctionName": "symbolicCreate",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "Pointer to the newly created reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where that reference will live",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The name of the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "target",
-            "type": "const char *",
-            "comment": "The target of the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing references",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "current_value",
-            "type": "const char *",
-            "comment": "The expected value of the reference when updating",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EEXISTS, GIT_EINVALIDSPEC, GIT_EMODIFIED or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_symbolic_create_matching",
-        "cppFunctionName": "SymbolicCreateMatching",
-        "jsFunctionName": "symbolicCreateMatching",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "Pointer to the newly created reference",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "ref",
-            "type": "git_reference *",
-            "comment": "The reference",
-            "cType": "git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "target",
-            "type": "const char *",
-            "comment": "The new target for the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EINVALIDSPEC or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_symbolic_set_target",
-        "cppFunctionName": "SymbolicSetTarget",
-        "jsFunctionName": "symbolicSetTarget",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "The reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " a pointer to the name if available, NULL otherwise",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_reference_symbolic_target-54"
-          ]
-        },
-        "cFunctionName": "git_reference_symbolic_target",
-        "cppFunctionName": "SymbolicTarget",
-        "jsFunctionName": "symbolicTarget",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "The reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " a pointer to the oid if available, NULL otherwise",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_reference_target-53"
-          ]
-        },
-        "cFunctionName": "git_reference_target",
-        "cppFunctionName": "Target",
-        "jsFunctionName": "target",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "The reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " a pointer to the oid if available, NULL otherwise",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "cFunctionName": "git_reference_target_peel",
-        "cppFunctionName": "TargetPeel",
-        "jsFunctionName": "targetPeel",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      },
-      {
-        "type": "function",
-        "file": "refs.h",
-        "args": [
-          {
-            "name": "ref",
-            "type": "const git_reference *",
-            "comment": "The reference",
-            "cType": "const git_reference *",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_ref_t",
-          "comment": " the type",
-          "cType": "git_ref_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reference",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_reference_type-55"
-          ]
-        },
-        "cFunctionName": "git_reference_type",
-        "cppFunctionName": "Type",
-        "jsFunctionName": "type",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefs"
-      }
-    ],
-    "cppClassName": "GitRefs",
-    "jsClassName": "Refs",
-    "filename": "reference",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/reference.h",
-      "../include/repository.h",
-      "../include/oid.h",
-      "../include/signature.h",
-      "../include/strarray.h",
-      "../include/object.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_reference_free",
-    "name": "reference"
-  },
-  {
-    "type": "class",
-    "value": "git_reflog",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_reflog_append",
-        "git_reflog_drop",
-        "git_reflog_entry_byindex",
-        "git_reflog_entrycount",
-        "git_reflog_free",
-        "git_reflog_read",
-        "git_reflog_write"
-      ]
-    },
-    "typeName": "reflog",
-    "cType": "git_reflog",
-    "functions": [
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "reflog",
-            "type": "git_reflog *",
-            "comment": "an existing reflog object",
-            "cType": "git_reflog *",
-            "cppClassName": "GitReflog",
-            "jsClassName": "Reflog",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "the OID the reference is now pointing to",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "committer",
-            "type": "const git_signature *",
-            "comment": "the signature of the committer",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "msg",
-            "type": "const char *",
-            "comment": "the reflog message",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_append",
-        "cppFunctionName": "Append",
-        "jsFunctionName": "append",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "the reflog to delete",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_delete",
-        "cppFunctionName": "Delete",
-        "jsFunctionName": "delete",
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "reflog",
-            "type": "git_reflog *",
-            "comment": "a previously loaded reflog.",
-            "cType": "git_reflog *",
-            "cppClassName": "GitReflog",
-            "jsClassName": "Reflog",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "idx",
-            "type": "size_t",
-            "comment": "the position of the entry to remove. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`.",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "rewrite_previous_entry",
-            "type": "int",
-            "comment": "1 to rewrite the history; 0 otherwise.",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND if the entry doesn't exist\n or an error code.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_drop",
-        "cppFunctionName": "Drop",
-        "jsFunctionName": "drop",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "reflog",
-            "type": "git_reflog *",
-            "comment": "a previously loaded reflog",
-            "cType": "git_reflog *",
-            "cppClassName": "GitReflog",
-            "jsClassName": "Reflog",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "idx",
-            "type": "size_t",
-            "comment": "the position of the entry to lookup. Should be greater than or\n equal to 0 (zero) and less than `git_reflog_entrycount()`.",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_reflog_entry *",
-          "comment": " the entry; NULL if not found",
-          "cType": "const git_reflog_entry *",
-          "cppClassName": "GitReflogEntry",
-          "jsClassName": "ReflogEntry",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_entry_byindex",
-        "cppFunctionName": "EntryByindex",
-        "jsFunctionName": "entryByindex",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_reflog_entry *",
-            "comment": "a reflog entry",
-            "cType": "const git_reflog_entry *",
-            "cppClassName": "GitReflogEntry",
-            "jsClassName": "ReflogEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_signature *",
-          "comment": " the committer",
-          "cType": "const git_signature *",
-          "cppClassName": "GitSignature",
-          "jsClassName": "Signature",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_signature_new": {
-              "isAsync": false
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_entry_committer",
-        "cppFunctionName": "EntryCommitter",
-        "jsFunctionName": "entryCommitter",
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_reflog_entry *",
-            "comment": "a reflog entry",
-            "cType": "const git_reflog_entry *",
-            "cppClassName": "GitReflogEntry",
-            "jsClassName": "ReflogEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " the new oid at this time",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_entry_id_new",
-        "cppFunctionName": "EntryIdNew",
-        "jsFunctionName": "entryIdNew",
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_reflog_entry *",
-            "comment": "a reflog entry",
-            "cType": "const git_reflog_entry *",
-            "cppClassName": "GitReflogEntry",
-            "jsClassName": "ReflogEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " the old oid",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_entry_id_old",
-        "cppFunctionName": "EntryIdOld",
-        "jsFunctionName": "entryIdOld",
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_reflog_entry *",
-            "comment": "a reflog entry",
-            "cType": "const git_reflog_entry *",
-            "cppClassName": "GitReflogEntry",
-            "jsClassName": "ReflogEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the log msg",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_entry_message",
-        "cppFunctionName": "EntryMessage",
-        "jsFunctionName": "entryMessage",
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "reflog",
-            "type": "git_reflog *",
-            "comment": "the previously loaded reflog",
-            "cType": "git_reflog *",
-            "cppClassName": "GitReflog",
-            "jsClassName": "Reflog",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " the number of log entries",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_entrycount",
-        "cppFunctionName": "Entrycount",
-        "jsFunctionName": "entrycount",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reflog **",
-            "comment": "pointer to reflog",
-            "cType": "git_reflog **",
-            "cppClassName": "GitReflog",
-            "jsClassName": "Reflog",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repostiory",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "reference to look up",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_read",
-        "cppFunctionName": "Read",
-        "jsFunctionName": "read",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "old_name",
-            "type": "const char *",
-            "comment": "the old name of the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "the new name of the reference",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EINVALIDSPEC or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_rename",
-        "cppFunctionName": "Rename",
-        "jsFunctionName": "rename",
-        "cppClassName": "GitReflog"
-      },
-      {
-        "type": "function",
-        "file": "reflog.h",
-        "args": [
-          {
-            "name": "reflog",
-            "type": "git_reflog *",
-            "comment": "an existing reflog object",
-            "cType": "git_reflog *",
-            "cppClassName": "GitReflog",
-            "jsClassName": "Reflog",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "reflog",
-        "cFunctionName": "git_reflog_write",
-        "cppFunctionName": "Write",
-        "jsFunctionName": "write",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitReflog"
-      }
-    ],
-    "cppClassName": "GitReflog",
-    "jsClassName": "Reflog",
-    "filename": "reflog",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/reflog.h",
-      "../include/oid.h",
-      "../include/signature.h",
-      "../include/repository.h",
-      "../include/reflog_entry.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_reflog_free",
-    "name": "reflog"
-  },
-  {
-    "type": "class",
-    "value": "git_reflog_entry",
-    "file": "types.h",
-    "used": {
-      "returns": [
-        "git_reflog_entry_byindex"
-      ],
-      "needs": [
-        "git_reflog_entry_committer",
-        "git_reflog_entry_id_new",
-        "git_reflog_entry_id_old",
-        "git_reflog_entry_message"
-      ]
-    },
-    "typeName": "reflog_entry",
-    "cType": "git_reflog_entry",
-    "functions": [],
-    "cppClassName": "GitReflogEntry",
-    "jsClassName": "ReflogEntry",
-    "filename": "reflog_entry",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "reflog_entry"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "refspec.h",
-        "args": [
-          {
-            "name": "spec",
-            "type": "const git_refspec *",
-            "comment": "refspec",
-            "cType": "const git_refspec *",
-            "cppClassName": "GitRefspec",
-            "jsClassName": "Refspec",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_direction",
-          "comment": " GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH",
-          "cType": "git_direction",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "refspec",
-        "cFunctionName": "git_refspec_direction",
-        "cppFunctionName": "Direction",
-        "jsFunctionName": "direction",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefspec"
-      },
-      {
-        "type": "function",
-        "file": "refspec.h",
-        "args": [
-          {
-            "name": "refspec",
-            "type": "const git_refspec *",
-            "comment": "the refspec",
-            "cType": "const git_refspec *",
-            "cppClassName": "GitRefspec",
-            "jsClassName": "Refspec",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the refspec's destination specifier",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "refspec",
-        "cFunctionName": "git_refspec_dst",
-        "cppFunctionName": "Dst",
-        "jsFunctionName": "dst",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefspec"
-      },
-      {
-        "type": "function",
-        "file": "refspec.h",
-        "args": [
-          {
-            "name": "refspec",
-            "type": "const git_refspec *",
-            "comment": "the refspec",
-            "cType": "const git_refspec *",
-            "cppClassName": "GitRefspec",
-            "jsClassName": "Refspec",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "refname",
-            "type": "const char *",
-            "comment": "the name of the reference to check",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the refspec matches, 0 otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "refspec",
-        "cFunctionName": "git_refspec_dst_matches",
-        "cppFunctionName": "DstMatches",
-        "jsFunctionName": "dstMatches",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefspec"
-      },
-      {
-        "type": "function",
-        "file": "refspec.h",
-        "args": [
-          {
-            "name": "refspec",
-            "type": "const git_refspec *",
-            "comment": "the refspec",
-            "cType": "const git_refspec *",
-            "cppClassName": "GitRefspec",
-            "jsClassName": "Refspec",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if force update has been set, 0 otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "refspec",
-        "cFunctionName": "git_refspec_force",
-        "cppFunctionName": "Force",
-        "jsFunctionName": "force",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefspec"
-      },
-      {
-        "type": "function",
-        "file": "refspec.h",
-        "args": [
-          {
-            "name": "refspec",
-            "type": "const git_refspec *",
-            "comment": "the refspec",
-            "cType": "const git_refspec *",
-            "cppClassName": "GitRefspec",
-            "jsClassName": "Refspec",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the refspec's source specifier",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "refspec",
-        "cFunctionName": "git_refspec_src",
-        "cppFunctionName": "Src",
-        "jsFunctionName": "src",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefspec"
-      },
-      {
-        "type": "function",
-        "file": "refspec.h",
-        "args": [
-          {
-            "name": "refspec",
-            "type": "const git_refspec *",
-            "comment": "the refspec",
-            "cType": "const git_refspec *",
-            "cppClassName": "GitRefspec",
-            "jsClassName": "Refspec",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "refname",
-            "type": "const char *",
-            "comment": "the name of the reference to check",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the refspec matches, 0 otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "refspec",
-        "cFunctionName": "git_refspec_src_matches",
-        "cppFunctionName": "SrcMatches",
-        "jsFunctionName": "srcMatches",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRefspec"
-      }
-    ],
-    "type": "class",
-    "cType": "git_refspec",
-    "typeName": "refspec",
-    "cppClassName": "GitRefspec",
-    "jsClassName": "Refspec",
-    "filename": "refspec",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/refspec.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "refspec"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "refspec",
-            "type": "const char *",
-            "comment": "the new fetch refspec",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error value",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_add_fetch",
-        "cppFunctionName": "AddFetch",
-        "jsFunctionName": "addFetch",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "refspec",
-            "type": "const char *",
-            "comment": "the new push refspec",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error value",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_add_push",
-        "cppFunctionName": "AddPush",
-        "jsFunctionName": "addPush",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "const git_remote *",
-            "comment": "the remote to query",
-            "cType": "const git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_remote_autotag_option_t",
-          "comment": " the auto-follow setting",
-          "cType": "git_remote_autotag_option_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_autotag",
-        "cppFunctionName": "Autotag",
-        "jsFunctionName": "autotag",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to configure",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "check",
-            "type": "int",
-            "comment": "whether to check the server's certificate (defaults to yes)",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_check_cert",
-        "cppFunctionName": "CheckCert",
-        "jsFunctionName": "checkCert",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_clear_refspecs",
-        "cppFunctionName": "ClearRefspecs",
-        "jsFunctionName": "clearRefspecs",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to connect to",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "direction",
-            "type": "git_direction",
-            "comment": "GIT_DIRECTION_FETCH if you want to fetch or\n GIT_DIRECTION_PUSH if you want to push",
-            "cType": "git_direction",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "examples": {
-          "network/fetch.c": [
-            "ex/v0.21.2/network/fetch.html#git_remote_connect-6"
-          ],
-          "network/ls-remote.c": [
-            "ex/v0.21.2/network/ls-remote.html#git_remote_connect-4"
-          ]
-        },
-        "cFunctionName": "git_remote_connect",
-        "cppFunctionName": "Connect",
-        "jsFunctionName": "connect",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "const git_remote *",
-            "comment": "the remote",
-            "cType": "const git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if it's connected, 0 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_connected",
-        "cppFunctionName": "Connected",
-        "jsFunctionName": "connected",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_remote **",
-            "comment": "the resulting remote",
-            "cType": "git_remote **",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository in which to create the remote",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "the remote's name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "the remote's url",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_create",
-        "cppFunctionName": "Create",
-        "jsFunctionName": "create",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_remote **",
-            "comment": "pointer to the new remote object",
-            "cType": "git_remote **",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the associated repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "the remote repository's URL",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "fetch",
-            "type": "const char *",
-            "comment": "the fetch refspec to use for this remote.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "examples": {
-          "network/fetch.c": [
-            "ex/v0.21.2/network/fetch.html#git_remote_create_anonymous-4"
-          ],
-          "network/ls-remote.c": [
-            "ex/v0.21.2/network/ls-remote.html#git_remote_create_anonymous-2"
-          ]
-        },
-        "cFunctionName": "git_remote_create_anonymous",
-        "cppFunctionName": "CreateAnonymous",
-        "jsFunctionName": "createAnonymous",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_remote **",
-            "comment": "the resulting remote",
-            "cType": "git_remote **",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository in which to create the remote",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "the remote's name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "the remote's url",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "fetch",
-            "type": "const char *",
-            "comment": "the remote fetch value",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, GIT_EINVALIDSPEC, GIT_EEXISTS or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_create_with_fetchspec",
-        "cppFunctionName": "CreateWithFetchspec",
-        "jsFunctionName": "createWithFetchspec",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "A valid remote",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or an error code.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_delete",
-        "cppFunctionName": "Delete",
-        "jsFunctionName": "delete",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to disconnect from",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "examples": {
-          "network/fetch.c": [
-            "ex/v0.21.2/network/fetch.html#git_remote_disconnect-8"
-          ]
-        },
-        "cFunctionName": "git_remote_disconnect",
-        "cppFunctionName": "Disconnect",
-        "jsFunctionName": "disconnect",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": null,
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "examples": {
-          "network/fetch.c": [
-            "ex/v0.21.2/network/fetch.html#git_remote_download-7"
-          ]
-        },
-        "cFunctionName": "git_remote_download",
-        "cppFunctionName": "Download",
-        "jsFunctionName": "download",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "dest",
-            "type": "git_remote **",
-            "comment": "pointer where to store the copy",
-            "cType": "git_remote **",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "source",
-            "type": "git_remote *",
-            "comment": "object to copy",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_dup",
-        "cppFunctionName": "Dup",
-        "jsFunctionName": "dup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to fetch from",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity to use when updating reflogs",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "reflog_message",
-            "type": "const char *",
-            "comment": "The message to insert into the reflogs. If NULL, the\n\t\t\t\t\t\t\t\t default is \"fetch\"",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_fetch",
-        "cppFunctionName": "Fetch",
-        "jsFunctionName": "fetch",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "const git_remote *",
-            "comment": "the remote to query",
-            "cType": "const git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "n",
-            "type": "size_t",
-            "comment": "the refspec to get",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_refspec *",
-          "comment": " the nth refspec",
-          "cType": "const git_refspec *",
-          "cppClassName": "GitRefspec",
-          "jsClassName": "Refspec",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_get_refspec",
-        "cppFunctionName": "GetRefspec",
-        "jsFunctionName": "getRefspec",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_remote_callbacks *",
-            "comment": "the `git_remote_callbacks` struct to initialize",
-            "cType": "git_remote_callbacks *",
-            "cppClassName": "GitRemoteCallbacks",
-            "jsClassName": "RemoteCallbacks",
-            "isLibgitType": true,
-            "isEnum": false,
-            "fields": {
-              "completion": {
-                "ignore": true
-              },
-              "sideband_progress": {
-                "ignore": true
-              },
-              "transfer_progress": {
-                "ignore": true
-              },
-              "update_tips": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION`",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_init_callbacks",
-        "cppFunctionName": "InitCallbacks",
-        "jsFunctionName": "initCallbacks",
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote_name",
-            "type": "const char *",
-            "comment": "name to be checked.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the reference name is acceptable; 0 if it isn't",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_is_valid_name",
-        "cppFunctionName": "IsValidName",
-        "jsFunctionName": "isValidName",
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_strarray *",
-            "comment": "a string array which receives the names of the remotes",
-            "cType": "git_strarray *",
-            "cppClassName": "GitStrarray",
-            "jsClassName": "Strarray",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false,
-            "shouldAlloc": true
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to query",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_list",
-        "cppFunctionName": "List",
-        "jsFunctionName": "list",
-        "isAsync": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_remote **",
-            "comment": "pointer to the new remote object",
-            "cType": "git_remote **",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the associated repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "the remote's name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, GIT_ENOTFOUND, GIT_EINVALIDSPEC or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "examples": {
-          "network/fetch.c": [
-            "ex/v0.21.2/network/fetch.html#git_remote_load-5"
-          ],
-          "network/ls-remote.c": [
-            "ex/v0.21.2/network/ls-remote.html#git_remote_load-3"
-          ]
-        },
-        "cFunctionName": "git_remote_load",
-        "cppFunctionName": "Load",
-        "jsFunctionName": "load",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "const git_remote *",
-            "comment": "the remote",
-            "cType": "const git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " a pointer to the name or NULL for in-memory remotes",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_name",
-        "cppFunctionName": "Name",
-        "jsFunctionName": "name",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "const git_remote *",
-            "comment": "the remote",
-            "cType": "const git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " a pointer to the repository",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_owner",
-        "cppFunctionName": "Owner",
-        "jsFunctionName": "owner",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "const git_remote *",
-            "comment": "the remote",
-            "cType": "const git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " a pointer to the url or NULL if no special url for pushing is set",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_pushurl",
-        "cppFunctionName": "Pushurl",
-        "jsFunctionName": "pushurl",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "const git_remote *",
-            "comment": "the remote",
-            "cType": "const git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " the amount of refspecs configured in this remote",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_refspec_count",
-        "cppFunctionName": "RefspecCount",
-        "jsFunctionName": "refspecCount",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "const git_remote *",
-            "comment": "the remote to save to config",
-            "cType": "const git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, GIT_EINVALIDSPEC or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_save",
-        "cppFunctionName": "Save",
-        "jsFunctionName": "save",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to configure",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "value",
-            "type": "git_remote_autotag_option_t",
-            "comment": "a GIT_REMOTE_DOWNLOAD_TAGS value",
-            "cType": "git_remote_autotag_option_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_set_autotag",
-        "cppFunctionName": "SetAutotag",
-        "jsFunctionName": "setAutotag",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to configure",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "callbacks",
-            "type": "const git_remote_callbacks *",
-            "comment": "a pointer to the user's callback settings",
-            "cType": "const git_remote_callbacks *",
-            "cppClassName": "GitRemoteCallbacks",
-            "jsClassName": "RemoteCallbacks",
-            "isLibgitType": true,
-            "isEnum": false,
-            "fields": {
-              "completion": {
-                "ignore": true
-              },
-              "sideband_progress": {
-                "ignore": true
-              },
-              "transfer_progress": {
-                "ignore": true
-              },
-              "update_tips": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "examples": {
-          "network/fetch.c": [
-            "ex/v0.21.2/network/fetch.html#git_remote_set_callbacks-12"
-          ],
-          "network/ls-remote.c": [
-            "ex/v0.21.2/network/ls-remote.html#git_remote_set_callbacks-7"
-          ]
-        },
-        "cFunctionName": "git_remote_set_callbacks",
-        "cppFunctionName": "SetCallbacks",
-        "jsFunctionName": "setCallbacks",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to modify",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "array",
-            "type": "git_strarray *",
-            "comment": "the new list of fetch resfpecs",
-            "cType": "git_strarray *",
-            "cppClassName": "GitStrarray",
-            "jsClassName": "Strarray",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_set_fetch_refspecs",
-        "cppFunctionName": "SetFetchRefspecs",
-        "jsFunctionName": "setFetchRefspecs",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to modify",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "array",
-            "type": "git_strarray *",
-            "comment": "the new list of push resfpecs",
-            "cType": "git_strarray *",
-            "cppClassName": "GitStrarray",
-            "jsClassName": "Strarray",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_set_push_refspecs",
-        "cppFunctionName": "SetPushRefspecs",
-        "jsFunctionName": "setPushRefspecs",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "the url to set or NULL to clear the pushurl",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error value",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_set_pushurl",
-        "cppFunctionName": "SetPushurl",
-        "jsFunctionName": "setPushurl",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to configure",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "transport",
-            "type": "git_transport *",
-            "comment": "the transport object for the remote to use",
-            "cType": "git_transport *",
-            "cppClassName": "GitTransport",
-            "jsClassName": "Transport",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_set_transport",
-        "cppFunctionName": "SetTransport",
-        "jsFunctionName": "setTransport",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to configure",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "value",
-            "type": "int",
-            "comment": "0 to disable updating FETCH_HEAD",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_set_update_fetchhead",
-        "cppFunctionName": "SetUpdateFetchhead",
-        "jsFunctionName": "setUpdateFetchhead",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "the url to set",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error value",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_set_url",
-        "cppFunctionName": "SetUrl",
-        "jsFunctionName": "setUrl",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": null,
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_transfer_progress *",
-          "comment": null,
-          "cType": "const git_transfer_progress *",
-          "cppClassName": "GitTransferProgress",
-          "jsClassName": "TransferProgress",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "examples": {
-          "network/fetch.c": [
-            "ex/v0.21.2/network/fetch.html#git_remote_stats-13"
-          ]
-        },
-        "cFunctionName": "git_remote_stats",
-        "cppFunctionName": "Stats",
-        "jsFunctionName": "stats",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_stop",
-        "cppFunctionName": "Stop",
-        "jsFunctionName": "stop",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "the url to check",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the url is supported, 0 otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_supported_url",
-        "cppFunctionName": "SupportedUrl",
-        "jsFunctionName": "supportedUrl",
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to query",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " the update FETCH_HEAD setting",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_update_fetchhead",
-        "cppFunctionName": "UpdateFetchhead",
-        "jsFunctionName": "updateFetchhead",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "git_remote *",
-            "comment": "the remote to update",
-            "cType": "git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity to use when updating reflogs",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "reflog_message",
-            "type": "const char *",
-            "comment": "The message to insert into the reflogs. If NULL, the\n                       default is \"fetch \n\", where \n is the name of\n                       the remote (or its url, for in-memory remotes).",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "examples": {
-          "network/fetch.c": [
-            "ex/v0.21.2/network/fetch.html#git_remote_update_tips-11"
-          ]
-        },
-        "cFunctionName": "git_remote_update_tips",
-        "cppFunctionName": "UpdateTips",
-        "jsFunctionName": "updateTips",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "remote",
-            "type": "const git_remote *",
-            "comment": "the remote",
-            "cType": "const git_remote *",
-            "cppClassName": "GitRemote",
-            "jsClassName": "Remote",
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " a pointer to the url",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_url",
-        "cppFunctionName": "Url",
-        "jsFunctionName": "url",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRemote"
-      },
-      {
-        "type": "function",
-        "file": "remote.h",
-        "args": [
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "the url to check",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the url is valid, 0 otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "remote",
-        "cFunctionName": "git_remote_valid_url",
-        "cppFunctionName": "ValidUrl",
-        "jsFunctionName": "validUrl",
-        "cppClassName": "GitRemote"
-      }
-    ],
-    "type": "class",
-    "cType": "git_remote",
-    "typeName": "remote",
-    "cppClassName": "GitRemote",
-    "jsClassName": "Remote",
-    "filename": "remote",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/remote.h",
-      "../include/repository.h",
-      "../include/signature.h",
-      "../include/refspec.h",
-      "../include/remote_callbacks.h",
-      "../include/strarray.h",
-      "../include/transport.h",
-      "../include/transfer_progress.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "freeFunctionName": "git_remote_free",
-    "name": "remote"
-  },
-  {
-    "type": "struct",
-    "value": "git_remote_callbacks",
-    "file": "remote.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_cred_acquire_cb",
-        "name": "credentials",
-        "cType": "git_cred_acquire_cb",
-        "cppFunctionName": "Credentials",
-        "jsFunctionName": "credentials",
-        "cppClassName": "GitCredAcquireCb",
-        "jsClassName": "CredAcquireCb",
-        "isCallbackFunction": true,
-        "args": [
-          {
-            "name": "cred",
-            "cType": "git_cred **",
-            "isReturn": true,
-            "cppClassName": "GitCred",
-            "jsClassName": "Cred"
-          },
-          {
-            "name": "url",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String"
-          },
-          {
-            "name": "username_from_url",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String"
-          },
-          {
-            "name": "allowed_types",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number"
-          },
-          {
-            "name": "payload",
-            "cType": "void *",
-            "cppClassName": "Void",
-            "jsClassName": "Void"
-          }
-        ],
-        "returnType": "int",
-        "returnNoResults": 1,
-        "returnSuccess": 0,
-        "returnError": -1
-      },
-      {
-        "type": "void *",
-        "name": "payload",
-        "cType": "void *",
-        "cppFunctionName": "Payload",
-        "jsFunctionName": "payload",
-        "cppClassName": "Void",
-        "jsClassName": "Void",
-        "isCallbackFunction": false,
-        "payloadFor": "*"
-      }
-    ],
-    "used": {
-      "returns": [
-        "git_remote_get_callbacks"
-      ],
-      "needs": [
-        "git_remote_init_callbacks",
-        "git_remote_set_callbacks"
-      ]
-    },
-    "typeName": "remote_callbacks",
-    "cType": "git_remote_callbacks",
-    "functions": [],
-    "cppClassName": "GitRemoteCallbacks",
-    "jsClassName": "RemoteCallbacks",
-    "filename": "remote_callbacks",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/cred.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "remote_callbacks"
-  },
-  {
-    "typeName": "remote_completion_type",
-    "type": "enum",
-    "cType": "git_remote_completion_type",
-    "isMask": false,
-    "values": [
-      {
-        "name": "GIT_REMOTE_COMPLETION_DOWNLOAD",
-        "value": 0,
-        "JsName": "COMPLETION_DOWNLOAD"
-      },
-      {
-        "name": "GIT_REMOTE_COMPLETION_INDEXING",
-        "value": 1,
-        "JsName": "COMPLETION_INDEXING"
-      },
-      {
-        "name": "GIT_REMOTE_COMPLETION_ERROR",
-        "value": 2,
-        "JsName": "COMPLETION_ERROR"
-      }
-    ],
-    "owner": "Remote",
-    "JsName": "COMPLETION_TYPE"
-  },
-  {
-    "type": "class",
-    "value": "git_repository",
-    "file": "types.h",
-    "used": {
-      "returns": [
-        "git_blob_owner",
-        "git_commit_owner",
-        "git_filter_source_repo",
-        "git_index_owner",
-        "git_object_owner",
-        "git_reference_owner",
-        "git_remote_owner",
-        "git_revwalk_repository",
-        "git_submodule_owner",
-        "git_tag_owner",
-        "git_tree_owner"
-      ],
-      "needs": [
-        "git_attr_add_macro",
-        "git_attr_cache_flush",
-        "git_attr_foreach",
-        "git_attr_get",
-        "git_attr_get_many",
-        "git_blame_file",
-        "git_blob_create_frombuffer",
-        "git_blob_create_fromchunks",
-        "git_blob_create_fromdisk",
-        "git_blob_create_fromworkdir",
-        "git_blob_lookup",
-        "git_blob_lookup_prefix",
-        "git_branch_create",
-        "git_branch_iterator_new",
-        "git_branch_lookup",
-        "git_checkout_head",
-        "git_checkout_index",
-        "git_checkout_tree",
-        "git_cherry_pick",
-        "git_cherry_pick_commit",
-        "git_clone",
-        "git_clone_into",
-        "git_clone_local_into",
-        "git_commit_create",
-        "git_commit_create_from_callback",
-        "git_commit_create_from_ids",
-        "git_commit_create_v",
-        "git_commit_lookup",
-        "git_commit_lookup_prefix",
-        "git_diff_commit_as_email",
-        "git_diff_index_to_workdir",
-        "git_diff_tree_to_index",
-        "git_diff_tree_to_tree",
-        "git_diff_tree_to_workdir",
-        "git_diff_tree_to_workdir_with_index",
-        "git_filter_list_apply_to_file",
-        "git_filter_list_load",
-        "git_filter_list_new",
-        "git_graph_ahead_behind",
-        "git_graph_descendant_of",
-        "git_ignore_add_rule",
-        "git_ignore_clear_internal_rules",
-        "git_ignore_path_is_ignored",
-        "git_index_write_tree_to",
-        "git_merge",
-        "git_merge_analysis",
-        "git_merge_base",
-        "git_merge_base_many",
-        "git_merge_base_octopus",
-        "git_merge_commits",
-        "git_merge_file_from_index",
-        "git_merge_head_from_fetchhead",
-        "git_merge_head_from_id",
-        "git_merge_head_from_ref",
-        "git_merge_trees",
-        "git_note_create",
-        "git_note_default_ref",
-        "git_note_foreach",
-        "git_note_iterator_new",
-        "git_note_read",
-        "git_note_remove",
-        "git_object_lookup",
-        "git_object_lookup_prefix",
-        "git_packbuilder_new",
-        "git_pathspec_match_workdir",
-        "git_refdb_backend_fs",
-        "git_refdb_new",
-        "git_refdb_open",
-        "git_reference_create",
-        "git_reference_create_matching",
-        "git_reference_dwim",
-        "git_reference_ensure_log",
-        "git_reference_foreach",
-        "git_reference_foreach_glob",
-        "git_reference_foreach_name",
-        "git_reference_has_log",
-        "git_reference_iterator_glob_new",
-        "git_reference_iterator_new",
-        "git_reference_list",
-        "git_reference_lookup",
-        "git_reference_name_to_id",
-        "git_reference_remove",
-        "git_reference_symbolic_create",
-        "git_reference_symbolic_create_matching",
-        "git_reflog_delete",
-        "git_reflog_read",
-        "git_reflog_rename",
-        "git_remote_create",
-        "git_remote_create_anonymous",
-        "git_remote_create_with_fetchspec",
-        "git_remote_list",
-        "git_remote_load",
-        "git_repository_config",
-        "git_repository_config_snapshot",
-        "git_repository_detach_head",
-        "git_repository_fetchhead_foreach",
-        "git_repository_free",
-        "git_repository_get_namespace",
-        "git_repository_hashfile",
-        "git_repository_head",
-        "git_repository_head_detached",
-        "git_repository_head_unborn",
-        "git_repository_index",
-        "git_repository_init",
-        "git_repository_init_ext",
-        "git_repository_is_bare",
-        "git_repository_is_empty",
-        "git_repository_is_shallow",
-        "git_repository_mergehead_foreach",
-        "git_repository_message",
-        "git_repository_message_remove",
-        "git_repository_odb",
-        "git_repository_open",
-        "git_repository_open_bare",
-        "git_repository_open_ext",
-        "git_repository_path",
-        "git_repository_refdb",
-        "git_repository_set_head",
-        "git_repository_set_head_detached",
-        "git_repository_set_namespace",
-        "git_repository_set_workdir",
-        "git_repository_state",
-        "git_repository_state_cleanup",
-        "git_repository_workdir",
-        "git_repository_wrap_odb",
-        "git_revert",
-        "git_revert_commit",
-        "git_revparse",
-        "git_revparse_ext",
-        "git_revparse_single",
-        "git_revwalk_new",
-        "git_signature_default",
-        "git_stash_drop",
-        "git_stash_foreach",
-        "git_status_file",
-        "git_status_foreach",
-        "git_status_foreach_ext",
-        "git_status_list_new",
-        "git_status_should_ignore",
-        "git_submodule_add_setup",
-        "git_submodule_foreach",
-        "git_submodule_lookup",
-        "git_submodule_open",
-        "git_submodule_reload_all",
-        "git_tag_annotation_create",
-        "git_tag_create",
-        "git_tag_create_frombuffer",
-        "git_tag_create_lightweight",
-        "git_tag_delete",
-        "git_tag_foreach",
-        "git_tag_list",
-        "git_tag_list_match",
-        "git_tag_lookup",
-        "git_tag_lookup_prefix",
-        "git_tree_entry_to_object",
-        "git_tree_lookup",
-        "git_tree_lookup_prefix",
-        "git_treebuilder_write"
-      ]
-    },
-    "typeName": "repository",
-    "cType": "git_repository",
-    "functions": [
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_config **",
-            "comment": "Pointer to store the loaded configuration",
-            "cType": "git_config **",
-            "cppClassName": "GitConfig",
-            "jsClassName": "Config",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_config",
-        "cppFunctionName": "Config",
-        "jsFunctionName": "config",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_config **",
-            "comment": "Pointer to store the loaded configuration",
-            "cType": "git_config **",
-            "cppClassName": "GitConfig",
-            "jsClassName": "Config",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_config_snapshot",
-        "cppFunctionName": "ConfigSnapshot",
-        "jsFunctionName": "configSnapshot",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository pointer",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "reflog_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_detach_head",
-        "cppFunctionName": "DetachHead",
-        "jsFunctionName": "detachHead",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repo",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the active namespace, or NULL if there isn't one",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_get_namespace",
-        "cppFunctionName": "GetNamespace",
-        "jsFunctionName": "getNamespace",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_reference **",
-            "comment": "pointer to the reference which will be retrieved",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "a repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing\n branch, GIT_ENOTFOUND when HEAD is missing; an error code otherwise",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "status.c": [
-            "ex/v0.21.2/status.html#git_repository_head-5"
-          ]
-        },
-        "cFunctionName": "git_repository_head",
-        "cppFunctionName": "Head",
-        "jsFunctionName": "head",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repo to test",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if HEAD is detached, 0 if it's not; error code if there\n was an error.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_head_detached",
-        "cppFunctionName": "HeadDetached",
-        "jsFunctionName": "headDetached",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repo to test",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the current branch is unborn, 0 if it's not; error\n code if there was an error",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_head_unborn",
-        "cppFunctionName": "HeadUnborn",
-        "jsFunctionName": "headUnborn",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_index **",
-            "comment": "Pointer to store the loaded index",
-            "cType": "git_index **",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_repository_index-60"
-          ],
-          "init.c": [
-            "ex/v0.21.2/init.html#git_repository_index-9"
-          ]
-        },
-        "cFunctionName": "git_repository_index",
-        "cppFunctionName": "Index",
-        "jsFunctionName": "index",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_repository **",
-            "comment": "pointer to the repo which will be created or reinitialized",
-            "cType": "git_repository **",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "the path to the repository",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "is_bare",
-            "type": "unsigned int",
-            "comment": "if true, a Git repository without a working directory is\n\t\tcreated at the pointed path. If false, provided path will be\n\t\tconsidered as the working directory into which the .git directory\n\t\twill be created.",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "init.c": [
-            "ex/v0.21.2/init.html#git_repository_init-5"
-          ]
-        },
-        "cFunctionName": "git_repository_init",
-        "cppFunctionName": "Init",
-        "jsFunctionName": "init",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_repository **",
-            "comment": "Pointer to the repo which will be created or reinitialized.",
-            "cType": "git_repository **",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo_path",
-            "type": "const char *",
-            "comment": "The path to the repository.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "opts",
-            "type": "git_repository_init_options *",
-            "comment": "Pointer to git_repository_init_options struct.",
-            "cType": "git_repository_init_options *",
-            "cppClassName": "GitRepositoryInitOptions",
-            "jsClassName": "RepositoryInitOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code on failure.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "init.c": [
-            "ex/v0.21.2/init.html#git_repository_init_ext-6"
-          ]
-        },
-        "cFunctionName": "git_repository_init_ext",
-        "cppFunctionName": "InitExt",
-        "jsFunctionName": "initExt",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_repository_init_options *",
-            "comment": "the `git_repository_init_options` struct to initialize",
-            "cType": "git_repository_init_options *",
-            "cppClassName": "GitRepositoryInitOptions",
-            "jsClassName": "RepositoryInitOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "Version of struct; pass `GIT_REPOSITORY_INIT_OPTIONS_VERSION`",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_init_init_options",
-        "cppFunctionName": "InitInitOptions",
-        "jsFunctionName": "initInitOptions",
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repo to test",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the repository is bare, 0 otherwise.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "status.c": [
-            "ex/v0.21.2/status.html#git_repository_is_bare-7"
-          ]
-        },
-        "cFunctionName": "git_repository_is_bare",
-        "cppFunctionName": "IsBare",
-        "jsFunctionName": "isBare",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repo to test",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if the repository is empty, 0 if it isn't, error code\n if the repository is corrupted",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_is_empty",
-        "cppFunctionName": "IsEmpty",
-        "jsFunctionName": "isEmpty",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 1 if shallow, zero if not",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_is_shallow",
-        "cppFunctionName": "IsShallow",
-        "jsFunctionName": "isShallow",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": null,
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_message_remove",
-        "cppFunctionName": "MessageRemove",
-        "jsFunctionName": "messageRemove",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_odb **",
-            "comment": "Pointer to store the loaded ODB",
-            "cType": "git_odb **",
-            "cppClassName": "GitOdb",
-            "jsClassName": "Odb",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_repository_odb-31"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_repository_odb-59"
-          ]
-        },
-        "cFunctionName": "git_repository_odb",
-        "cppFunctionName": "Odb",
-        "jsFunctionName": "odb",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_repository **",
-            "comment": "pointer to the repo which will be opened",
-            "cType": "git_repository **",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "the path to the repository",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_repository_open-57"
-          ],
-          "network/git2.c": [
-            "ex/v0.21.2/network/git2.html#git_repository_open-3"
-          ]
-        },
-        "cFunctionName": "git_repository_open",
-        "cppFunctionName": "Open",
-        "jsFunctionName": "open",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_repository **",
-            "comment": "Pointer to the repo which will be opened.",
-            "cType": "git_repository **",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "bare_path",
-            "type": "const char *",
-            "comment": "Direct path to the bare repository",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_open_bare",
-        "cppFunctionName": "OpenBare",
-        "jsFunctionName": "openBare",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_repository **",
-            "comment": "Pointer to the repo which will be opened.  This can\n        actually be NULL if you only want to use the error code to\n        see if a repo at this path could be opened.",
-            "cType": "git_repository **",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "Path to open as git repository.  If the flags\n        permit \"searching\", then this can be a path to a subdirectory\n        inside the working directory of the repository.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "flags",
-            "type": "unsigned int",
-            "comment": "A combination of the GIT_REPOSITORY_OPEN flags above.",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "ceiling_dirs",
-            "type": "const char *",
-            "comment": "A GIT_PATH_LIST_SEPARATOR delimited list of path\n        prefixes at which the search for a containing repository should\n        terminate.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND if no repository could be found,\n        or -1 if there was a repository but open failed for some reason\n        (such as repo corruption or system errors).",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_repository_open_ext-22"
-          ],
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_repository_open_ext-29"
-          ],
-          "diff.c": [
-            "ex/v0.21.2/diff.html#git_repository_open_ext-13"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_repository_open_ext-42",
-            "ex/v0.21.2/log.html#git_repository_open_ext-43"
-          ],
-          "rev-parse.c": [
-            "ex/v0.21.2/rev-parse.html#git_repository_open_ext-14"
-          ],
-          "status.c": [
-            "ex/v0.21.2/status.html#git_repository_open_ext-3"
-          ],
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_repository_open_ext-9"
-          ]
-        },
-        "cFunctionName": "git_repository_open_ext",
-        "cppFunctionName": "OpenExt",
-        "jsFunctionName": "openExt",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the path to the repository",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "init.c": [
-            "ex/v0.21.2/init.html#git_repository_path-7"
-          ],
-          "status.c": [
-            "ex/v0.21.2/status.html#git_repository_path-6"
-          ]
-        },
-        "cFunctionName": "git_repository_path",
-        "cppFunctionName": "Path",
-        "jsFunctionName": "path",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_refdb **",
-            "comment": "Pointer to store the loaded refdb",
-            "cType": "git_refdb **",
-            "cppClassName": "GitRefdb",
-            "jsClassName": "Refdb",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_refdb",
-        "cppFunctionName": "Refdb",
-        "jsFunctionName": "refdb",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository pointer",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "refname",
-            "type": "const char *",
-            "comment": "Canonical name of the reference the HEAD should point at",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_set_head",
-        "cppFunctionName": "SetHead",
-        "jsFunctionName": "setHead",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository pointer",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "commitish",
-            "type": "const git_oid *",
-            "comment": "Object id of the Commit the HEAD should point to",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "signature",
-            "type": "const git_signature *",
-            "comment": "The identity that will used to populate the reflog entry",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "log_message",
-            "type": "const char *",
-            "comment": "The one line long message to be appended to the reflog",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_set_head_detached",
-        "cppFunctionName": "SetHeadDetached",
-        "jsFunctionName": "setHeadDetached",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repo",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "nmspace",
-            "type": "const char *",
-            "comment": "The namespace. This should not include the refs\n\tfolder, e.g. to namespace all references under `refs/namespaces/foo/`,\n\tuse `foo` as the namespace.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, -1 on error",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_set_namespace",
-        "cppFunctionName": "SetNamespace",
-        "jsFunctionName": "setNamespace",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "workdir",
-            "type": "const char *",
-            "comment": "The path to a working directory",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "update_gitlink",
-            "type": "int",
-            "comment": "Create/update gitlink in workdir and set config\n        \"core.worktree\" (if workdir is not the parent of the .git directory)",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0, or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_set_workdir",
-        "cppFunctionName": "SetWorkdir",
-        "jsFunctionName": "setWorkdir",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository pointer",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " The state of the repository",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_state",
-        "cppFunctionName": "State",
-        "jsFunctionName": "state",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or error",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_state_cleanup",
-        "cppFunctionName": "StateCleanup",
-        "jsFunctionName": "stateCleanup",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the path to the working dir, if it exists",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "examples": {
-          "init.c": [
-            "ex/v0.21.2/init.html#git_repository_workdir-8"
-          ]
-        },
-        "cFunctionName": "git_repository_workdir",
-        "cppFunctionName": "Workdir",
-        "jsFunctionName": "workdir",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRepository"
-      },
-      {
-        "type": "function",
-        "file": "repository.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_repository **",
-            "comment": "pointer to the repo",
-            "cType": "git_repository **",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "odb",
-            "type": "git_odb *",
-            "comment": "the object database to wrap",
-            "cType": "git_odb *",
-            "cppClassName": "GitOdb",
-            "jsClassName": "Odb",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "repository",
-        "cFunctionName": "git_repository_wrap_odb",
-        "cppFunctionName": "WrapOdb",
-        "jsFunctionName": "wrapOdb",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRepository"
-      }
-    ],
-    "cppClassName": "GitRepository",
-    "jsClassName": "Repository",
-    "filename": "repository",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/config.h",
-      "../include/repository.h",
-      "../include/signature.h",
-      "../include/reference.h",
-      "../include/index.h",
-      "../include/repository_init_options.h",
-      "../include/odb.h",
-      "../include/refdb.h",
-      "../include/oid.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_repository_free",
-    "name": "repository"
-  },
-  {
-    "typeName": "repository_init_flag",
-    "type": "enum",
-    "cType": "git_repository_init_flag_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_REPOSITORY_INIT_BARE",
-        "value": 1,
-        "JsName": "INIT_BARE"
-      },
-      {
-        "name": "GIT_REPOSITORY_INIT_NO_REINIT",
-        "value": 2,
-        "JsName": "INIT_NO_REINIT"
-      },
-      {
-        "name": "GIT_REPOSITORY_INIT_NO_DOTGIT_DIR",
-        "value": 4,
-        "JsName": "INIT_NO_DOTGIT_DIR"
-      },
-      {
-        "name": "GIT_REPOSITORY_INIT_MKDIR",
-        "value": 8,
-        "JsName": "INIT_MKDIR"
-      },
-      {
-        "name": "GIT_REPOSITORY_INIT_MKPATH",
-        "value": 16,
-        "JsName": "INIT_MKPATH"
-      },
-      {
-        "name": "GIT_REPOSITORY_INIT_EXTERNAL_TEMPLATE",
-        "value": 32,
-        "JsName": "INIT_EXTERNAL_TEMPLATE"
-      }
-    ],
-    "owner": "Repository",
-    "JsName": "INIT_FLAG"
-  },
-  {
-    "typeName": "repository_init_mode",
-    "type": "enum",
-    "cType": "git_repository_init_mode_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_REPOSITORY_INIT_SHARED_UMASK",
-        "value": 0,
-        "JsName": "INIT_SHARED_UMASK"
-      },
-      {
-        "name": "GIT_REPOSITORY_INIT_SHARED_GROUP",
-        "value": 1533,
-        "JsName": "INIT_SHARED_GROUP"
-      },
-      {
-        "name": "GIT_REPOSITORY_INIT_SHARED_ALL",
-        "value": 1535,
-        "JsName": "INIT_SHARED_ALL"
-      }
-    ],
-    "owner": "Repository",
-    "JsName": "INIT_MODE"
-  },
-  {
-    "type": "struct",
-    "value": "git_repository_init_options",
-    "file": "repository.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint32_t",
-        "name": "flags",
-        "cType": "uint32_t",
-        "cppFunctionName": "Flags",
-        "jsFunctionName": "flags",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "uint32_t",
-        "name": "mode",
-        "cType": "uint32_t",
-        "cppFunctionName": "Mode",
-        "jsFunctionName": "mode",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "workdir_path",
-        "cType": "const char *",
-        "cppFunctionName": "WorkdirPath",
-        "jsFunctionName": "workdirPath",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "description",
-        "cType": "const char *",
-        "cppFunctionName": "Description",
-        "jsFunctionName": "description",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "template_path",
-        "cType": "const char *",
-        "cppFunctionName": "TemplatePath",
-        "jsFunctionName": "templatePath",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "initial_head",
-        "cType": "const char *",
-        "cppFunctionName": "InitialHead",
-        "jsFunctionName": "initialHead",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "const char *",
-        "name": "origin_url",
-        "cType": "const char *",
-        "cppFunctionName": "OriginUrl",
-        "jsFunctionName": "originUrl",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_repository_init_ext",
-        "git_repository_init_init_options"
-      ]
-    },
-    "typeName": "repository_init_options",
-    "cType": "git_repository_init_options",
-    "functions": [],
-    "cppClassName": "GitRepositoryInitOptions",
-    "jsClassName": "RepositoryInitOptions",
-    "filename": "repository_init_options",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "repository_init_options"
-  },
-  {
-    "typeName": "repository_open_flag",
-    "type": "enum",
-    "cType": "git_repository_open_flag_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_REPOSITORY_OPEN_NO_SEARCH",
-        "value": 1,
-        "JsName": "OPEN_NO_SEARCH"
-      },
-      {
-        "name": "GIT_REPOSITORY_OPEN_CROSS_FS",
-        "value": 2,
-        "JsName": "OPEN_CROSS_FS"
-      },
-      {
-        "name": "GIT_REPOSITORY_OPEN_BARE",
-        "value": 4,
-        "JsName": "OPEN_BARE"
-      }
-    ],
-    "owner": "Repository",
-    "JsName": "OPEN_FLAG"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "revert.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to revert",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "commit",
-            "type": "git_commit *",
-            "comment": "the commit to revert",
-            "cType": "git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "given_opts",
-            "type": "const git_revert_options *",
-            "comment": "merge flags",
-            "cType": "const git_revert_options *",
-            "cppClassName": "GitRevertOptions",
-            "jsClassName": "RevertOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " zero on success, -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revert",
-        "cFunctionName": "git_revert",
-        "cppFunctionName": "Revert",
-        "jsFunctionName": "revert",
-        "cppClassName": "GitRevert"
-      },
-      {
-        "type": "function",
-        "file": "revert.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_index **",
-            "comment": "pointer to store the index result in",
-            "cType": "git_index **",
-            "cppClassName": "GitIndex",
-            "jsClassName": "Index",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository that contains the given commits",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "revert_commit",
-            "type": "git_commit *",
-            "comment": "the commit to revert",
-            "cType": "git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "our_commit",
-            "type": "git_commit *",
-            "comment": "the commit to revert against (eg, HEAD)",
-            "cType": "git_commit *",
-            "cppClassName": "GitCommit",
-            "jsClassName": "Commit",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "mainline",
-            "type": "unsigned int",
-            "comment": "the parent of the revert commit, if it is a merge",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "merge_options",
-            "type": "const git_merge_options *",
-            "comment": "the merge options (or null for defaults)",
-            "cType": "const git_merge_options *",
-            "cppClassName": "GitMergeOptions",
-            "jsClassName": "MergeOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " zero on success, -1 on failure.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revert",
-        "cFunctionName": "git_revert_commit",
-        "cppFunctionName": "Commit",
-        "jsFunctionName": "commit",
-        "isAsync": true,
-        "cppClassName": "GitRevert"
-      },
-      {
-        "type": "function",
-        "file": "revert.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_revert_options *",
-            "comment": "the `git_revert_options` struct to initialize",
-            "cType": "git_revert_options *",
-            "cppClassName": "GitRevertOptions",
-            "jsClassName": "RevertOptions",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "Version of struct; pass `GIT_REVERT_OPTIONS_VERSION`",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revert",
-        "cFunctionName": "git_revert_init_options",
-        "cppFunctionName": "InitOptions",
-        "jsFunctionName": "initOptions",
-        "cppClassName": "GitRevert"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "revert",
-    "cppClassName": "GitRevert",
-    "jsClassName": "Revert",
-    "filename": "revert",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/repository.h",
-      "../include/commit.h",
-      "../include/revert_options.h",
-      "../include/index.h",
-      "../include/merge_options.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "revert"
-  },
-  {
-    "type": "struct",
-    "value": "git_revert_options",
-    "file": "revert.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "version",
-        "cType": "unsigned int",
-        "cppFunctionName": "Version",
-        "jsFunctionName": "version",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "mainline",
-        "cType": "unsigned int",
-        "cppFunctionName": "Mainline",
-        "jsFunctionName": "mainline",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_merge_options",
-        "name": "merge_opts",
-        "cType": "git_merge_options",
-        "cppFunctionName": "MergeOpts",
-        "jsFunctionName": "mergeOpts",
-        "cppClassName": "GitMergeOptions",
-        "jsClassName": "MergeOptions",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      },
-      {
-        "type": "git_checkout_options",
-        "name": "checkout_opts",
-        "cType": "git_checkout_options",
-        "cppFunctionName": "CheckoutOpts",
-        "jsFunctionName": "checkoutOpts",
-        "cppClassName": "GitCheckoutOptions",
-        "jsClassName": "CheckoutOptions",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_revert",
-        "git_revert_init_options"
-      ]
-    },
-    "typeName": "revert_options",
-    "cType": "git_revert_options",
-    "functions": [],
-    "cppClassName": "GitRevertOptions",
-    "jsClassName": "RevertOptions",
-    "filename": "revert_options",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/merge_options.h",
-      "../include/checkout_options.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": true,
-    "name": "revert_options"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "revparse.h",
-        "args": [
-          {
-            "name": "object_out",
-            "type": "git_object **",
-            "comment": "pointer to output object",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "reference_out",
-            "type": "git_reference **",
-            "comment": "pointer to output reference or NULL",
-            "cType": "git_reference **",
-            "cppClassName": "GitRefs",
-            "jsClassName": "Refs",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to search in",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "spec",
-            "type": "const char *",
-            "comment": "the textual specification for an object",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC\n or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revparse",
-        "cFunctionName": "git_revparse_ext",
-        "cppFunctionName": "Ext",
-        "jsFunctionName": "ext",
-        "cppClassName": "GitRevparse"
-      },
-      {
-        "type": "function",
-        "file": "revparse.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_object **",
-            "comment": "pointer to output object",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repository to search in",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "spec",
-            "type": "const char *",
-            "comment": "the textual specification for an object",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revparse",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_revparse_single-24"
-          ],
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_revparse_single-32"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_revparse_single-45"
-          ],
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_revparse_single-11",
-            "ex/v0.21.2/tag.html#git_revparse_single-12",
-            "ex/v0.21.2/tag.html#git_revparse_single-13",
-            "ex/v0.21.2/tag.html#git_revparse_single-14"
-          ]
-        },
-        "cFunctionName": "git_revparse_single",
-        "cppFunctionName": "Single",
-        "jsFunctionName": "single",
-        "isAsync": true,
-        "cppClassName": "GitRevparse"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "revparse",
-    "cppClassName": "GitRevparse",
-    "jsClassName": "Revparse",
-    "filename": "revparse",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/object.h",
-      "../include/reference.h",
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "revparse"
-  },
-  {
-    "typeName": "revparse_mode",
-    "type": "enum",
-    "cType": "git_revparse_mode_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_REVPARSE_SINGLE",
-        "value": 1,
-        "JsName": "SINGLE"
-      },
-      {
-        "name": "GIT_REVPARSE_RANGE",
-        "value": 2,
-        "JsName": "RANGE"
-      },
-      {
-        "name": "GIT_REVPARSE_MERGE_BASE",
-        "value": 4,
-        "JsName": "MERGE_BASE"
-      }
-    ],
-    "owner": "Revparse",
-    "JsName": "MODE"
-  },
-  {
-    "type": "class",
-    "value": "git_revwalk",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_revwalk_add_hide_cb",
-        "git_revwalk_free",
-        "git_revwalk_hide",
-        "git_revwalk_hide_glob",
-        "git_revwalk_hide_head",
-        "git_revwalk_hide_ref",
-        "git_revwalk_new",
-        "git_revwalk_next",
-        "git_revwalk_push",
-        "git_revwalk_push_glob",
-        "git_revwalk_push_head",
-        "git_revwalk_push_range",
-        "git_revwalk_push_ref",
-        "git_revwalk_repository",
-        "git_revwalk_reset",
-        "git_revwalk_simplify_first_parent",
-        "git_revwalk_sorting"
-      ]
-    },
-    "typeName": "revwalk",
-    "cType": "git_revwalk",
-    "functions": [
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal.",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "commit_id",
-            "type": "const git_oid *",
-            "comment": "the oid of commit that will be ignored during the traversal",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "examples": {
-          "log.c": [
-            "ex/v0.21.2/log.html#git_revwalk_hide-51"
-          ]
-        },
-        "cFunctionName": "git_revwalk_hide",
-        "cppFunctionName": "Hide",
-        "jsFunctionName": "hide",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "glob",
-            "type": "const char *",
-            "comment": "the glob pattern references should match",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "cFunctionName": "git_revwalk_hide_glob",
-        "cppFunctionName": "HideGlob",
-        "jsFunctionName": "hideGlob",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "cFunctionName": "git_revwalk_hide_head",
-        "cppFunctionName": "HideHead",
-        "jsFunctionName": "hideHead",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "refname",
-            "type": "const char *",
-            "comment": "the reference to hide",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "cFunctionName": "git_revwalk_hide_ref",
-        "cppFunctionName": "HideRef",
-        "jsFunctionName": "hideRef",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_revwalk **",
-            "comment": "pointer to the new revision walker",
-            "cType": "git_revwalk **",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repo to walk through",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_revwalk_new-61"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_revwalk_new-47",
-            "ex/v0.21.2/log.html#git_revwalk_new-48"
-          ]
-        },
-        "cFunctionName": "git_revwalk_new",
-        "cppFunctionName": "Create",
-        "jsFunctionName": "create",
-        "isAsync": false,
-        "isConstructorMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_oid *",
-            "comment": "Pointer where to store the oid of the next commit",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker to pop the commit from.",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 if the next commit was found;\n\tGIT_ITEROVER if there are no commits left to iterate",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_revwalk_next-63"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_revwalk_next-52"
-          ]
-        },
-        "cFunctionName": "git_revwalk_next",
-        "cppFunctionName": "Next",
-        "jsFunctionName": "next",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal.",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "the oid of the commit to start from.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_revwalk_push-62"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_revwalk_push-49"
-          ]
-        },
-        "cFunctionName": "git_revwalk_push",
-        "cppFunctionName": "Push",
-        "jsFunctionName": "push",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "glob",
-            "type": "const char *",
-            "comment": "the glob pattern references should match",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "cFunctionName": "git_revwalk_push_glob",
-        "cppFunctionName": "PushGlob",
-        "jsFunctionName": "pushGlob",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "examples": {
-          "log.c": [
-            "ex/v0.21.2/log.html#git_revwalk_push_head-50"
-          ]
-        },
-        "cFunctionName": "git_revwalk_push_head",
-        "cppFunctionName": "PushHead",
-        "jsFunctionName": "pushHead",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "range",
-            "type": "const char *",
-            "comment": "the range",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "cFunctionName": "git_revwalk_push_range",
-        "cppFunctionName": "PushRange",
-        "jsFunctionName": "pushRange",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "refname",
-            "type": "const char *",
-            "comment": "the reference to push",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "cFunctionName": "git_revwalk_push_ref",
-        "cppFunctionName": "PushRef",
-        "jsFunctionName": "pushRef",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the revision walker",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " the repository being walked",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "cFunctionName": "git_revwalk_repository",
-        "cppFunctionName": "Repository",
-        "jsFunctionName": "repository",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walker",
-            "type": "git_revwalk *",
-            "comment": "handle to reset.",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "cFunctionName": "git_revwalk_reset",
-        "cppFunctionName": "Reset",
-        "jsFunctionName": "reset",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": null,
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "cFunctionName": "git_revwalk_simplify_first_parent",
-        "cppFunctionName": "SimplifyFirstParent",
-        "jsFunctionName": "simplifyFirstParent",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      },
-      {
-        "type": "function",
-        "file": "revwalk.h",
-        "args": [
-          {
-            "name": "walk",
-            "type": "git_revwalk *",
-            "comment": "the walker being used for the traversal.",
-            "cType": "git_revwalk *",
-            "cppClassName": "GitRevwalk",
-            "jsClassName": "Revwalk",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "sort_mode",
-            "type": "unsigned int",
-            "comment": "combination of GIT_SORT_XXX flags",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "revwalk",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_revwalk_sorting-64"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_revwalk_sorting-53",
-            "ex/v0.21.2/log.html#git_revwalk_sorting-54"
-          ]
-        },
-        "cFunctionName": "git_revwalk_sorting",
-        "cppFunctionName": "Sorting",
-        "jsFunctionName": "sorting",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitRevwalk"
-      }
-    ],
-    "cppClassName": "GitRevwalk",
-    "jsClassName": "Revwalk",
-    "filename": "revwalk",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/revwalk.h",
-      "../include/oid.h",
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_revwalk_free",
-    "name": "revwalk"
-  },
-  {
-    "type": "class",
-    "value": "git_signature",
-    "file": "types.h",
-    "fields": [
-      {
-        "type": "char *",
-        "name": "name",
-        "cType": "char *",
-        "cppFunctionName": "Name",
-        "jsFunctionName": "name",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "char *",
-        "name": "email",
-        "cType": "char *",
-        "cppFunctionName": "Email",
-        "jsFunctionName": "email",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "git_time",
-        "name": "when",
-        "cType": "git_time",
-        "cppFunctionName": "When",
-        "jsFunctionName": "when",
-        "cppClassName": "GitTime",
-        "jsClassName": "Time",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false
-      }
-    ],
-    "used": {
-      "returns": [
-        "git_commit_author",
-        "git_commit_committer",
-        "git_reflog_entry_committer",
-        "git_tag_tagger"
-      ],
-      "needs": [
-        "git_branch_create",
-        "git_branch_move",
-        "git_clone_into",
-        "git_clone_local_into",
-        "git_commit_amend",
-        "git_commit_create",
-        "git_commit_create_from_callback",
-        "git_commit_create_from_ids",
-        "git_commit_create_v",
-        "git_note_create",
-        "git_note_remove",
-        "git_push_update_tips",
-        "git_reference_create",
-        "git_reference_create_matching",
-        "git_reference_rename",
-        "git_reference_set_target",
-        "git_reference_symbolic_create",
-        "git_reference_symbolic_create_matching",
-        "git_reference_symbolic_set_target",
-        "git_reflog_append",
-        "git_remote_fetch",
-        "git_remote_update_tips",
-        "git_repository_detach_head",
-        "git_repository_set_head",
-        "git_repository_set_head_detached",
-        "git_signature_default",
-        "git_signature_dup",
-        "git_signature_free",
-        "git_signature_new",
-        "git_signature_now",
-        "git_tag_annotation_create",
-        "git_tag_create"
-      ]
-    },
-    "typeName": "signature",
-    "cType": "git_signature",
-    "functions": [
-      {
-        "type": "function",
-        "file": "signature.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_signature **",
-            "comment": "new signature",
-            "cType": "git_signature **",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository pointer",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND if config is missing, or error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "signature",
-        "examples": {
-          "init.c": [
-            "ex/v0.21.2/init.html#git_signature_default-10"
-          ],
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_signature_default-15"
-          ]
-        },
-        "cFunctionName": "git_signature_default",
-        "cppFunctionName": "Default",
-        "jsFunctionName": "default",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitSignature"
-      },
-      {
-        "type": "function",
-        "file": "signature.h",
-        "args": [
-          {
-            "name": "dest",
-            "type": "git_signature **",
-            "comment": "pointer where to store the copy",
-            "cType": "git_signature **",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "sig",
-            "type": "const git_signature *",
-            "comment": "signature to duplicate",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "signature",
-        "cFunctionName": "git_signature_dup",
-        "cppFunctionName": "Dup",
-        "jsFunctionName": "dup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSignature"
-      },
-      {
-        "type": "function",
-        "file": "signature.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_signature **",
-            "comment": "new signature, in case of error NULL",
-            "cType": "git_signature **",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "name of the person",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "email",
-            "type": "const char *",
-            "comment": "email of the person",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "time",
-            "type": "git_time_t",
-            "comment": "time when the action happened",
-            "cType": "git_time_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "offset",
-            "type": "int",
-            "comment": "timezone offset in minutes for the time",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "signature",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_signature_new-66",
-            "ex/v0.21.2/general.html#git_signature_new-67"
-          ]
-        },
-        "cFunctionName": "git_signature_new",
-        "cppFunctionName": "Create",
-        "jsFunctionName": "create",
-        "isAsync": false,
-        "isConstructorMethod": true,
-        "cppClassName": "GitSignature"
-      },
-      {
-        "type": "function",
-        "file": "signature.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_signature **",
-            "comment": "new signature, in case of error NULL",
-            "cType": "git_signature **",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "name of the person",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "email",
-            "type": "const char *",
-            "comment": "email of the person",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "signature",
-        "cFunctionName": "git_signature_now",
-        "cppFunctionName": "Now",
-        "jsFunctionName": "now",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitSignature"
-      }
-    ],
-    "cppClassName": "GitSignature",
-    "jsClassName": "Signature",
-    "filename": "signature",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/time.h",
-      "../include/signature.h",
-      "../include/repository.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "freeFunctionName": "git_signature_free",
-    "name": "signature"
-  },
-  {
-    "functions": [],
-    "type": "class",
-    "cType": null,
-    "typeName": "smart",
-    "cppClassName": "GitSmart",
-    "jsClassName": "Smart",
-    "filename": "smart",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "smart"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "stash.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The owning repository.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "index",
-            "type": "size_t",
-            "comment": "The position within the stash list. 0 points to the\n most recent stashed state.",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, or error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "stash",
-        "cFunctionName": "git_stash_drop",
-        "cppFunctionName": "Drop",
-        "jsFunctionName": "drop",
-        "cppClassName": "GitStash"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "stash",
-    "cppClassName": "GitStash",
-    "jsClassName": "Stash",
-    "filename": "stash",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "stash"
-  },
-  {
-    "typeName": "stash_flags",
-    "type": "enum",
-    "cType": "git_stash_flags",
-    "isMask": false,
-    "values": [
-      {
-        "name": "GIT_STASH_DEFAULT",
-        "value": 0,
-        "JsName": "DEFAULT"
-      },
-      {
-        "name": "GIT_STASH_KEEP_INDEX",
-        "value": 1,
-        "JsName": "KEEP_INDEX"
-      },
-      {
-        "name": "GIT_STASH_INCLUDE_UNTRACKED",
-        "value": 2,
-        "JsName": "INCLUDE_UNTRACKED"
-      },
-      {
-        "name": "GIT_STASH_INCLUDE_IGNORED",
-        "value": 4,
-        "JsName": "INCLUDE_IGNORED"
-      }
-    ],
-    "owner": "Stash",
-    "JsName": "FLAGS"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "status.h",
-        "args": [
-          {
-            "name": "status_flags",
-            "type": "unsigned int *",
-            "comment": "Output combination of git_status_t values for file",
-            "cType": "unsigned int *",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "The file to retrieve status for relative to the repo workdir",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,\n      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files\n      or if it refers to a folder, and -1 on other errors.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "status",
-        "cFunctionName": "git_status_file",
-        "cppFunctionName": "File",
-        "jsFunctionName": "file",
-        "cppClassName": "GitStatus"
-      },
-      {
-        "type": "function",
-        "file": "status.h",
-        "args": [
-          {
-            "name": "statuslist",
-            "type": "git_status_list *",
-            "comment": "Existing status list object",
-            "cType": "git_status_list *",
-            "cppClassName": "GitStatusList",
-            "jsClassName": "StatusList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " the number of status entries",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "status",
-        "examples": {
-          "status.c": [
-            "ex/v0.21.2/status.html#git_status_list_entrycount-12",
-            "ex/v0.21.2/status.html#git_status_list_entrycount-13"
-          ]
-        },
-        "cFunctionName": "git_status_list_entrycount",
-        "cppFunctionName": "ListEntrycount",
-        "jsFunctionName": "listEntrycount",
-        "cppClassName": "GitStatus"
-      },
-      {
-        "type": "function",
-        "file": "status.h",
-        "args": [
-          {
-            "name": "statuslist",
-            "type": "git_status_list *",
-            "comment": "Existing status list object",
-            "cType": "git_status_list *",
-            "cppClassName": "GitStatusList",
-            "jsClassName": "StatusList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "status",
-        "examples": {
-          "status.c": [
-            "ex/v0.21.2/status.html#git_status_list_free-20"
-          ]
-        },
-        "cFunctionName": "git_status_list_free",
-        "cppFunctionName": "ListFree",
-        "jsFunctionName": "listFree",
-        "cppClassName": "GitStatus"
-      },
-      {
-        "type": "function",
-        "file": "sys/diff.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_diff_perfdata *",
-            "comment": null,
-            "cType": "git_diff_perfdata *",
-            "cppClassName": "GitDiffPerfdata",
-            "jsClassName": "DiffPerfdata",
-            "isLibgitType": true,
-            "isEnum": false,
-            "cDependencies": [
-              "git2/sys/diff.h"
-            ],
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "status",
-            "type": "const git_status_list *",
-            "comment": null,
-            "cType": "const git_status_list *",
-            "cppClassName": "GitStatusList",
-            "jsClassName": "StatusList",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "status",
-        "cFunctionName": "git_status_list_get_perfdata",
-        "cppFunctionName": "ListGetPerfdata",
-        "jsFunctionName": "listGetPerfdata",
-        "isAsync": true,
-        "cppClassName": "GitStatus"
-      },
-      {
-        "type": "function",
-        "file": "status.h",
-        "args": [
-          {
-            "name": "ignored",
-            "type": "int *",
-            "comment": "Boolean returning 0 if the file is not ignored, 1 if it is",
-            "cType": "int *",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "A repository object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "The file to check ignores for, rooted at the repo's workdir.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 if ignore rules could be processed for the file (regardless\n         of whether it exists or not), or an error \n<\n 0 if they could not.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "status",
-        "cFunctionName": "git_status_should_ignore",
-        "cppFunctionName": "ShouldIgnore",
-        "jsFunctionName": "shouldIgnore",
-        "cppClassName": "GitStatus"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "status",
-    "cppClassName": "GitStatus",
-    "jsClassName": "Status",
-    "filename": "status",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/repository.h",
-      "../include/status_list.h",
-      "../include/diff_perfdata.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "cDependencies": [
-      "git2/sys/diff.h"
-    ],
-    "name": "status"
-  },
-  {
-    "typeName": "status",
-    "type": "enum",
-    "cType": "git_status_t",
-    "isMask": false,
-    "values": [
-      {
-        "name": "GIT_STATUS_CURRENT",
-        "value": 0,
-        "JsName": "CURRENT"
-      },
-      {
-        "name": "GIT_STATUS_INDEX_NEW",
-        "value": 1,
-        "JsName": "INDEX_NEW"
-      },
-      {
-        "name": "GIT_STATUS_INDEX_MODIFIED",
-        "value": 2,
-        "JsName": "INDEX_MODIFIED"
-      },
-      {
-        "name": "GIT_STATUS_INDEX_DELETED",
-        "value": 4,
-        "JsName": "INDEX_DELETED"
-      },
-      {
-        "name": "GIT_STATUS_INDEX_RENAMED",
-        "value": 8,
-        "JsName": "INDEX_RENAMED"
-      },
-      {
-        "name": "GIT_STATUS_INDEX_TYPECHANGE",
-        "value": 16,
-        "JsName": "INDEX_TYPECHANGE"
-      },
-      {
-        "name": "GIT_STATUS_WT_NEW",
-        "value": 128,
-        "JsName": "WT_NEW"
-      },
-      {
-        "name": "GIT_STATUS_WT_MODIFIED",
-        "value": 256,
-        "JsName": "WT_MODIFIED"
-      },
-      {
-        "name": "GIT_STATUS_WT_DELETED",
-        "value": 512,
-        "JsName": "WT_DELETED"
-      },
-      {
-        "name": "GIT_STATUS_WT_TYPECHANGE",
-        "value": 1024,
-        "JsName": "WT_TYPECHANGE"
-      },
-      {
-        "name": "GIT_STATUS_WT_RENAMED",
-        "value": 2048,
-        "JsName": "WT_RENAMED"
-      },
-      {
-        "name": "GIT_STATUS_IGNORED",
-        "value": 16384,
-        "JsName": "IGNORED"
-      }
-    ],
-    "owner": "Status",
-    "JsName": "STATUS"
-  },
-  {
-    "type": "class",
-    "value": "git_status_list",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_status_byindex",
-        "git_status_list_entrycount",
-        "git_status_list_free",
-        "git_status_list_get_perfdata",
-        "git_status_list_new"
-      ]
-    },
-    "typeName": "status_list",
-    "cType": "git_status_list",
-    "functions": [],
-    "cppClassName": "GitStatusList",
-    "jsClassName": "StatusList",
-    "filename": "status_list",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "status_list"
-  },
-  {
-    "typeName": "status_opt",
-    "type": "enum",
-    "cType": "git_status_opt_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_STATUS_OPT_INCLUDE_UNTRACKED",
-        "value": 1,
-        "JsName": "INCLUDE_UNTRACKED"
-      },
-      {
-        "name": "GIT_STATUS_OPT_INCLUDE_IGNORED",
-        "value": 2,
-        "JsName": "INCLUDE_IGNORED"
-      },
-      {
-        "name": "GIT_STATUS_OPT_INCLUDE_UNMODIFIED",
-        "value": 4,
-        "JsName": "INCLUDE_UNMODIFIED"
-      },
-      {
-        "name": "GIT_STATUS_OPT_EXCLUDE_SUBMODULES",
-        "value": 8,
-        "JsName": "EXCLUDE_SUBMODULES"
-      },
-      {
-        "name": "GIT_STATUS_OPT_RECURSE_UNTRACKED_DIRS",
-        "value": 16,
-        "JsName": "RECURSE_UNTRACKED_DIRS"
-      },
-      {
-        "name": "GIT_STATUS_OPT_DISABLE_PATHSPEC_MATCH",
-        "value": 32,
-        "JsName": "DISABLE_PATHSPEC_MATCH"
-      },
-      {
-        "name": "GIT_STATUS_OPT_RECURSE_IGNORED_DIRS",
-        "value": 64,
-        "JsName": "RECURSE_IGNORED_DIRS"
-      },
-      {
-        "name": "GIT_STATUS_OPT_RENAMES_HEAD_TO_INDEX",
-        "value": 128,
-        "JsName": "RENAMES_HEAD_TO_INDEX"
-      },
-      {
-        "name": "GIT_STATUS_OPT_RENAMES_INDEX_TO_WORKDIR",
-        "value": 256,
-        "JsName": "RENAMES_INDEX_TO_WORKDIR"
-      },
-      {
-        "name": "GIT_STATUS_OPT_SORT_CASE_SENSITIVELY",
-        "value": 512,
-        "JsName": "SORT_CASE_SENSITIVELY"
-      },
-      {
-        "name": "GIT_STATUS_OPT_SORT_CASE_INSENSITIVELY",
-        "value": 1024,
-        "JsName": "SORT_CASE_INSENSITIVELY"
-      },
-      {
-        "name": "GIT_STATUS_OPT_RENAMES_FROM_REWRITES",
-        "value": 2048,
-        "JsName": "RENAMES_FROM_REWRITES"
-      },
-      {
-        "name": "GIT_STATUS_OPT_NO_REFRESH",
-        "value": 4096,
-        "JsName": "NO_REFRESH"
-      },
-      {
-        "name": "GIT_STATUS_OPT_UPDATE_INDEX",
-        "value": 8192,
-        "JsName": "UPDATE_INDEX"
-      }
-    ],
-    "owner": "Status",
-    "JsName": "OPT"
-  },
-  {
-    "typeName": "status_show",
-    "type": "enum",
-    "cType": "git_status_show_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_STATUS_SHOW_INDEX_AND_WORKDIR",
-        "value": 0,
-        "JsName": "INDEX_AND_WORKDIR"
-      },
-      {
-        "name": "GIT_STATUS_SHOW_INDEX_ONLY",
-        "value": 1,
-        "JsName": "INDEX_ONLY"
-      },
-      {
-        "name": "GIT_STATUS_SHOW_WORKDIR_ONLY",
-        "value": 2,
-        "JsName": "WORKDIR_ONLY"
-      }
-    ],
-    "owner": "Status",
-    "JsName": "SHOW"
-  },
-  {
-    "type": "class",
-    "value": "git_strarray",
-    "file": "strarray.h",
-    "fields": [
-      {
-        "type": "char **",
-        "name": "strings",
-        "cType": "char **",
-        "cppFunctionName": "Strings",
-        "jsFunctionName": "strings",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "size_t",
-        "name": "count",
-        "cType": "size_t",
-        "cppFunctionName": "Count",
-        "jsFunctionName": "count",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_index_add_all",
-        "git_index_remove_all",
-        "git_index_update_all",
-        "git_pathspec_new",
-        "git_reference_list",
-        "git_remote_get_fetch_refspecs",
-        "git_remote_get_push_refspecs",
-        "git_remote_list",
-        "git_remote_rename",
-        "git_remote_set_fetch_refspecs",
-        "git_remote_set_push_refspecs",
-        "git_strarray_copy",
-        "git_strarray_free",
-        "git_tag_list",
-        "git_tag_list_match"
-      ]
-    },
-    "typeName": "strarray",
-    "cType": "git_strarray",
-    "functions": [
-      {
-        "type": "function",
-        "file": "strarray.h",
-        "args": [
-          {
-            "name": "tgt",
-            "type": "git_strarray *",
-            "comment": "target",
-            "cType": "git_strarray *",
-            "cppClassName": "GitStrarray",
-            "jsClassName": "Strarray",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "src",
-            "type": "const git_strarray *",
-            "comment": "source",
-            "cType": "const git_strarray *",
-            "cppClassName": "GitStrarray",
-            "jsClassName": "Strarray",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n 0 on allocation failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "strarray",
-        "cFunctionName": "git_strarray_copy",
-        "cppFunctionName": "Copy",
-        "jsFunctionName": "copy",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitStrarray"
-      }
-    ],
-    "cppClassName": "GitStrarray",
-    "jsClassName": "Strarray",
-    "filename": "strarray",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/strarray.h"
-    ],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "freeFunctionName": "git_strarray_free",
-    "name": "strarray"
-  },
-  {
-    "type": "class",
-    "value": "git_submodule",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_submodule_add_finalize",
-        "git_submodule_add_setup",
-        "git_submodule_add_to_index",
-        "git_submodule_branch",
-        "git_submodule_fetch_recurse_submodules",
-        "git_submodule_foreach",
-        "git_submodule_free",
-        "git_submodule_head_id",
-        "git_submodule_ignore",
-        "git_submodule_index_id",
-        "git_submodule_init",
-        "git_submodule_location",
-        "git_submodule_lookup",
-        "git_submodule_name",
-        "git_submodule_open",
-        "git_submodule_owner",
-        "git_submodule_path",
-        "git_submodule_reload",
-        "git_submodule_save",
-        "git_submodule_set_fetch_recurse_submodules",
-        "git_submodule_set_ignore",
-        "git_submodule_set_update",
-        "git_submodule_set_url",
-        "git_submodule_status",
-        "git_submodule_sync",
-        "git_submodule_update",
-        "git_submodule_url",
-        "git_submodule_wd_id"
-      ]
-    },
-    "typeName": "submodule",
-    "cType": "git_submodule",
-    "functions": [
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to finish adding.",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_add_finalize",
-        "cppFunctionName": "AddFinalize",
-        "jsFunctionName": "addFinalize",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_submodule **",
-            "comment": "The newly created submodule ready to open for clone",
-            "cType": "git_submodule **",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository in which you want to create the submodule",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "URL for the submodule's remote",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "Path at which the submodule should be created",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "use_gitlink",
-            "type": "int",
-            "comment": "Should workdir contain a gitlink to the repo in\n        .git/modules vs. repo directly in workdir.",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EEXISTS if submodule already exists,\n         -1 on other errors.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_add_setup",
-        "cppFunctionName": "AddSetup",
-        "jsFunctionName": "addSetup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to add to the index",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "write_index",
-            "type": "int",
-            "comment": "Boolean if this should immediately write the index\n            file.  If you pass this as false, you will have to get the\n            git_index and explicitly call `git_index_write()` on it to\n            save the change.",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 on failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_add_to_index",
-        "cppFunctionName": "AddToIndex",
-        "jsFunctionName": "addToIndex",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Pointer to submodule object",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " Pointer to the submodule branch",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_branch",
-        "cppFunctionName": "Branch",
-        "jsFunctionName": "branch",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": null,
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_submodule_recurse_t",
-          "comment": " 0 if fetchRecurseSubmodules is false, 1 if true",
-          "cType": "git_submodule_recurse_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_fetch_recurse_submodules",
-        "cppFunctionName": "FetchRecurseSubmodules",
-        "jsFunctionName": "fetchRecurseSubmodules",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Pointer to submodule object",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " Pointer to git_oid or NULL if submodule is not in the HEAD.",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_head_id",
-        "cppFunctionName": "HeadId",
-        "jsFunctionName": "headId",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to check",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_submodule_ignore_t",
-          "comment": " The current git_submodule_ignore_t valyue what will be used for\n         this submodule.",
-          "cType": "git_submodule_ignore_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_ignore",
-        "cppFunctionName": "Ignore",
-        "jsFunctionName": "ignore",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Pointer to submodule object",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " Pointer to git_oid or NULL if submodule is not in index.",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_index_id",
-        "cppFunctionName": "IndexId",
-        "jsFunctionName": "indexId",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to write into the superproject config",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "overwrite",
-            "type": "int",
-            "comment": "By default, existing entries will not be overwritten,\n                  but setting this to true forces them to be updated.",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_init",
-        "cppFunctionName": "Init",
-        "jsFunctionName": "init",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_submodule **",
-            "comment": "Output ptr to submodule; pass NULL to just get return code",
-            "cType": "git_submodule **",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The parent repository",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "name",
-            "type": "const char *",
-            "comment": "The name of or path to the submodule; trailing slashes okay",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_ENOTFOUND if submodule does not exist,\n         GIT_EEXISTS if a repository is found in working directory only,\n         -1 on other errors.",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "examples": {
-          "status.c": [
-            "ex/v0.21.2/status.html#git_submodule_lookup-21"
-          ]
-        },
-        "cFunctionName": "git_submodule_lookup",
-        "cppFunctionName": "Lookup",
-        "jsFunctionName": "lookup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Pointer to submodule object",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " Pointer to the submodule name",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "examples": {
-          "status.c": [
-            "ex/v0.21.2/status.html#git_submodule_name-24"
-          ]
-        },
-        "cFunctionName": "git_submodule_name",
-        "cppFunctionName": "Name",
-        "jsFunctionName": "name",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository **",
-            "comment": "Pointer to the submodule repo which was opened",
-            "cType": "git_repository **",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Submodule to be opened",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 if submodule repo could not be opened.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_open",
-        "cppFunctionName": "Open",
-        "jsFunctionName": "open",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Pointer to submodule object",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " Pointer to `git_repository`",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_owner",
-        "cppFunctionName": "Owner",
-        "jsFunctionName": "owner",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Pointer to submodule object",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " Pointer to the submodule path",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "examples": {
-          "status.c": [
-            "ex/v0.21.2/status.html#git_submodule_path-25"
-          ]
-        },
-        "cFunctionName": "git_submodule_path",
-        "cppFunctionName": "Path",
-        "jsFunctionName": "path",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to reload",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Force reload even if the data doesn't seem out of date",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 on error",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_reload",
-        "cppFunctionName": "Reload",
-        "jsFunctionName": "reload",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repository to reload submodule data for",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Force full reload even if the data doesn't seem out of date",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 on error",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_reload_all",
-        "cppFunctionName": "ReloadAll",
-        "jsFunctionName": "reloadAll",
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to write.",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_save",
-        "cppFunctionName": "Save",
-        "jsFunctionName": "save",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to modify",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "fetch_recurse_submodules",
-            "type": "git_submodule_recurse_t",
-            "comment": "Boolean value",
-            "cType": "git_submodule_recurse_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": true,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "git_submodule_recurse_t",
-          "comment": " old value for fetchRecurseSubmodules",
-          "cType": "git_submodule_recurse_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_set_fetch_recurse_submodules",
-        "cppFunctionName": "SetFetchRecurseSubmodules",
-        "jsFunctionName": "setFetchRecurseSubmodules",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to update",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "ignore",
-            "type": "git_submodule_ignore_t",
-            "comment": "The new value for the ignore rule",
-            "cType": "git_submodule_ignore_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": true,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "git_submodule_ignore_t",
-          "comment": " old value for ignore",
-          "cType": "git_submodule_ignore_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_set_ignore",
-        "cppFunctionName": "SetIgnore",
-        "jsFunctionName": "setIgnore",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to update",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "update",
-            "type": "git_submodule_update_t",
-            "comment": "The new value to use",
-            "cType": "git_submodule_update_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": true,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "git_submodule_update_t",
-          "comment": " old value for update",
-          "cType": "git_submodule_update_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_set_update",
-        "cppFunctionName": "SetUpdate",
-        "jsFunctionName": "setUpdate",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Pointer to the submodule object",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "url",
-            "type": "const char *",
-            "comment": "URL that should be used for the submodule",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, \n<\n0 on failure",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_set_url",
-        "cppFunctionName": "SetUrl",
-        "jsFunctionName": "setUrl",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": null,
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_sync",
-        "cppFunctionName": "Sync",
-        "jsFunctionName": "sync",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "The submodule to check",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_submodule_update_t",
-          "comment": " The current git_submodule_update_t value that will be used\n         for this submodule.",
-          "cType": "git_submodule_update_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_update",
-        "cppFunctionName": "Update",
-        "jsFunctionName": "update",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Pointer to submodule object",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " Pointer to the submodule url",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_url",
-        "cppFunctionName": "Url",
-        "jsFunctionName": "url",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      },
-      {
-        "type": "function",
-        "file": "submodule.h",
-        "args": [
-          {
-            "name": "submodule",
-            "type": "git_submodule *",
-            "comment": "Pointer to submodule object",
-            "cType": "git_submodule *",
-            "cppClassName": "GitSubmodule",
-            "jsClassName": "Submodule",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " Pointer to git_oid or NULL if submodule is not checked out.",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "submodule",
-        "cFunctionName": "git_submodule_wd_id",
-        "cppFunctionName": "WdId",
-        "jsFunctionName": "wdId",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitSubmodule"
-      }
-    ],
-    "cppClassName": "GitSubmodule",
-    "jsClassName": "Submodule",
-    "filename": "submodule",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/submodule.h",
-      "../include/repository.h",
-      "../include/oid.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_submodule_free",
-    "name": "submodule"
-  },
-  {
-    "typeName": "submodule_ignore",
-    "type": "enum",
-    "cType": "git_submodule_ignore_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_SUBMODULE_IGNORE_RESET",
-        "value": -1,
-        "JsName": "RESET"
-      },
-      {
-        "name": "GIT_SUBMODULE_IGNORE_NONE",
-        "value": 1,
-        "JsName": "NONE"
-      },
-      {
-        "name": "GIT_SUBMODULE_IGNORE_UNTRACKED",
-        "value": 2,
-        "JsName": "UNTRACKED"
-      },
-      {
-        "name": "GIT_SUBMODULE_IGNORE_DIRTY",
-        "value": 3,
-        "JsName": "DIRTY"
-      },
-      {
-        "name": "GIT_SUBMODULE_IGNORE_ALL",
-        "value": 4,
-        "JsName": "ALL"
-      },
-      {
-        "name": "GIT_SUBMODULE_IGNORE_DEFAULT",
-        "value": 0,
-        "JsName": "DEFAULT"
-      }
-    ],
-    "owner": "Submodule",
-    "JsName": "IGNORE"
-  },
-  {
-    "typeName": "submodule_recurse",
-    "type": "enum",
-    "cType": "git_submodule_recurse_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_SUBMODULE_RECURSE_RESET",
-        "value": -1,
-        "JsName": "RESET"
-      },
-      {
-        "name": "GIT_SUBMODULE_RECURSE_NO",
-        "value": 0,
-        "JsName": "NO"
-      },
-      {
-        "name": "GIT_SUBMODULE_RECURSE_YES",
-        "value": 1,
-        "JsName": "YES"
-      },
-      {
-        "name": "GIT_SUBMODULE_RECURSE_ONDEMAND",
-        "value": 2,
-        "JsName": "ONDEMAND"
-      }
-    ],
-    "owner": "Submodule",
-    "JsName": "RECURSE"
-  },
-  {
-    "typeName": "submodule_status",
-    "type": "enum",
-    "cType": "git_submodule_status_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_SUBMODULE_STATUS_IN_HEAD",
-        "value": 1,
-        "JsName": "IN_HEAD"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_IN_INDEX",
-        "value": 2,
-        "JsName": "IN_INDEX"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_IN_CONFIG",
-        "value": 4,
-        "JsName": "IN_CONFIG"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_IN_WD",
-        "value": 8,
-        "JsName": "IN_WD"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_INDEX_ADDED",
-        "value": 16,
-        "JsName": "INDEX_ADDED"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_INDEX_DELETED",
-        "value": 32,
-        "JsName": "INDEX_DELETED"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_INDEX_MODIFIED",
-        "value": 64,
-        "JsName": "INDEX_MODIFIED"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_WD_UNINITIALIZED",
-        "value": 128,
-        "JsName": "WD_UNINITIALIZED"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_WD_ADDED",
-        "value": 256,
-        "JsName": "WD_ADDED"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_WD_DELETED",
-        "value": 512,
-        "JsName": "WD_DELETED"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_WD_MODIFIED",
-        "value": 1024,
-        "JsName": "WD_MODIFIED"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_WD_INDEX_MODIFIED",
-        "value": 2048,
-        "JsName": "WD_INDEX_MODIFIED"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_WD_WD_MODIFIED",
-        "value": 4096,
-        "JsName": "WD_WD_MODIFIED"
-      },
-      {
-        "name": "GIT_SUBMODULE_STATUS_WD_UNTRACKED",
-        "value": 8192,
-        "JsName": "WD_UNTRACKED"
-      }
-    ],
-    "owner": "Submodule",
-    "JsName": "STATUS"
-  },
-  {
-    "typeName": "submodule_update",
-    "type": "enum",
-    "cType": "git_submodule_update_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_SUBMODULE_UPDATE_RESET",
-        "value": -1,
-        "JsName": "RESET"
-      },
-      {
-        "name": "GIT_SUBMODULE_UPDATE_CHECKOUT",
-        "value": 1,
-        "JsName": "CHECKOUT"
-      },
-      {
-        "name": "GIT_SUBMODULE_UPDATE_REBASE",
-        "value": 2,
-        "JsName": "REBASE"
-      },
-      {
-        "name": "GIT_SUBMODULE_UPDATE_MERGE",
-        "value": 3,
-        "JsName": "MERGE"
-      },
-      {
-        "name": "GIT_SUBMODULE_UPDATE_NONE",
-        "value": 4,
-        "JsName": "NONE"
-      },
-      {
-        "name": "GIT_SUBMODULE_UPDATE_DEFAULT",
-        "value": 0,
-        "JsName": "DEFAULT"
-      }
-    ],
-    "owner": "Submodule",
-    "JsName": "UPDATE"
-  },
-  {
-    "type": "class",
-    "value": "git_tag",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_tag_free",
-        "git_tag_id",
-        "git_tag_lookup",
-        "git_tag_lookup_prefix",
-        "git_tag_message",
-        "git_tag_name",
-        "git_tag_owner",
-        "git_tag_peel",
-        "git_tag_tagger",
-        "git_tag_target",
-        "git_tag_target_id",
-        "git_tag_target_type"
-      ]
-    },
-    "typeName": "tag",
-    "cType": "git_tag",
-    "functions": [
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "oid",
-            "type": "git_oid *",
-            "comment": "Pointer where to store the OID of the\n newly created tag",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where to store the tag",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tag_name",
-            "type": "const char *",
-            "comment": "Name for the tag",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "target",
-            "type": "const git_object *",
-            "comment": "Object to which this tag points. This object\n must belong to the given `repo`.",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tagger",
-            "type": "const git_signature *",
-            "comment": "Signature of the tagger for this tag, and\n of the tagging time",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "message",
-            "type": "const char *",
-            "comment": "Full message for this tag",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "cFunctionName": "git_tag_annotation_create",
-        "cppFunctionName": "AnnotationCreate",
-        "jsFunctionName": "annotationCreate",
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "oid",
-            "type": "git_oid *",
-            "comment": "Pointer where to store the OID of the\n newly created tag. If the tag already exists, this parameter\n will be the oid of the existing tag, and the function will\n return a GIT_EEXISTS error code.",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where to store the tag",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tag_name",
-            "type": "const char *",
-            "comment": "Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "target",
-            "type": "const git_object *",
-            "comment": "Object to which this tag points. This object\n must belong to the given `repo`.",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tagger",
-            "type": "const git_signature *",
-            "comment": "Signature of the tagger for this tag, and\n of the tagging time",
-            "cType": "const git_signature *",
-            "cppClassName": "GitSignature",
-            "jsClassName": "Signature",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "message",
-            "type": "const char *",
-            "comment": "Full message for this tag",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing references",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EINVALIDSPEC or an error code\n\tA tag object is written to the ODB, and a proper reference\n\tis written in the /refs/tags folder, pointing to it",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_tag_create-20"
-          ]
-        },
-        "cFunctionName": "git_tag_create",
-        "cppFunctionName": "Create",
-        "jsFunctionName": "create",
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "oid",
-            "type": "git_oid *",
-            "comment": "Pointer where to store the OID of the newly created tag",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where to store the tag",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "buffer",
-            "type": "const char *",
-            "comment": "Raw tag data",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing tags",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success; error code otherwise",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "cFunctionName": "git_tag_create_frombuffer",
-        "cppFunctionName": "CreateFrombuffer",
-        "jsFunctionName": "createFrombuffer",
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "oid",
-            "type": "git_oid *",
-            "comment": "Pointer where to store the OID of the provided\n target object. If the tag already exists, this parameter\n will be filled with the oid of the existing pointed object\n and the function will return a GIT_EEXISTS error code.",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where to store the lightweight tag",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tag_name",
-            "type": "const char *",
-            "comment": "Name for the tag; this name is validated\n for consistency. It should also not conflict with an\n already existing tag name",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "target",
-            "type": "const git_object *",
-            "comment": "Object to which this tag points. This object\n must belong to the given `repo`.",
-            "cType": "const git_object *",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "force",
-            "type": "int",
-            "comment": "Overwrite existing references",
-            "cType": "int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EINVALIDSPEC or an error code\n\tA proper reference is written in the /refs/tags folder,\n pointing to the provided target object",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_tag_create_lightweight-21"
-          ]
-        },
-        "cFunctionName": "git_tag_create_lightweight",
-        "cppFunctionName": "CreateLightweight",
-        "jsFunctionName": "createLightweight",
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where lives the tag",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tag_name",
-            "type": "const char *",
-            "comment": "Name of the tag to be deleted;\n this name is validated for consistency.",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success, GIT_EINVALIDSPEC or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_tag_delete-22"
-          ]
-        },
-        "cFunctionName": "git_tag_delete",
-        "cppFunctionName": "Delete",
-        "jsFunctionName": "delete",
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag",
-            "type": "const git_tag *",
-            "comment": "a previously loaded tag.",
-            "cType": "const git_tag *",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " object identity for the tag.",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "cFunctionName": "git_tag_id",
-        "cppFunctionName": "Id",
-        "jsFunctionName": "id",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag_names",
-            "type": "git_strarray *",
-            "comment": "Pointer to a git_strarray structure where\n\t\tthe tag names will be stored",
-            "cType": "git_strarray *",
-            "cppClassName": "GitStrarray",
-            "jsClassName": "Strarray",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where to find the tags",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "cFunctionName": "git_tag_list",
-        "cppFunctionName": "List",
-        "jsFunctionName": "list",
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag_names",
-            "type": "git_strarray *",
-            "comment": "Pointer to a git_strarray structure where\n\t\tthe tag names will be stored",
-            "cType": "git_strarray *",
-            "cppClassName": "GitStrarray",
-            "jsClassName": "Strarray",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "pattern",
-            "type": "const char *",
-            "comment": "Standard fnmatch pattern",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository where to find the tags",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_tag_list_match-23"
-          ]
-        },
-        "cFunctionName": "git_tag_list_match",
-        "cppFunctionName": "ListMatch",
-        "jsFunctionName": "listMatch",
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_tag **",
-            "comment": "pointer to the looked up tag",
-            "cType": "git_tag **",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repo to use when locating the tag.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "identity of the tag to locate.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tag_lookup-69"
-          ]
-        },
-        "cFunctionName": "git_tag_lookup",
-        "cppFunctionName": "Lookup",
-        "jsFunctionName": "lookup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_tag **",
-            "comment": "pointer to the looked up tag",
-            "cType": "git_tag **",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repo to use when locating the tag.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "identity of the tag to locate.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "len",
-            "type": "size_t",
-            "comment": "the length of the short identifier",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "cFunctionName": "git_tag_lookup_prefix",
-        "cppFunctionName": "LookupPrefix",
-        "jsFunctionName": "lookupPrefix",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag",
-            "type": "const git_tag *",
-            "comment": "a previously loaded tag.",
-            "cType": "const git_tag *",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " message of the tag or NULL when unspecified",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tag_message-37",
-            "ex/v0.21.2/cat-file.html#git_tag_message-38"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tag_message-73"
-          ],
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_tag_message-19"
-          ]
-        },
-        "cFunctionName": "git_tag_message",
-        "cppFunctionName": "Message",
-        "jsFunctionName": "message",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag",
-            "type": "const git_tag *",
-            "comment": "a previously loaded tag.",
-            "cType": "const git_tag *",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " name of the tag",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tag_name-35"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tag_name-72"
-          ],
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_tag_name-18"
-          ]
-        },
-        "cFunctionName": "git_tag_name",
-        "cppFunctionName": "Name",
-        "jsFunctionName": "name",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag",
-            "type": "const git_tag *",
-            "comment": "A previously loaded tag.",
-            "cType": "const git_tag *",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " Repository that contains this tag.",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "cFunctionName": "git_tag_owner",
-        "cppFunctionName": "Owner",
-        "jsFunctionName": "owner",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag_target_out",
-            "type": "git_object **",
-            "comment": "Pointer to the peeled git_object",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "tag",
-            "type": "const git_tag *",
-            "comment": "The tag to be processed",
-            "cType": "const git_tag *",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "cFunctionName": "git_tag_peel",
-        "cppFunctionName": "Peel",
-        "jsFunctionName": "peel",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag",
-            "type": "const git_tag *",
-            "comment": "a previously loaded tag.",
-            "cType": "const git_tag *",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_signature *",
-          "comment": " reference to the tag's author or NULL when unspecified",
-          "cType": "const git_signature *",
-          "cppClassName": "GitSignature",
-          "jsClassName": "Signature",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_signature_new": {
-              "isAsync": false
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tag_tagger-36"
-          ]
-        },
-        "cFunctionName": "git_tag_tagger",
-        "cppFunctionName": "Tagger",
-        "jsFunctionName": "tagger",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "target_out",
-            "type": "git_object **",
-            "comment": "pointer where to store the target",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "tag",
-            "type": "const git_tag *",
-            "comment": "a previously loaded tag.",
-            "cType": "const git_tag *",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tag_target-70"
-          ]
-        },
-        "cFunctionName": "git_tag_target",
-        "cppFunctionName": "Target",
-        "jsFunctionName": "target",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag",
-            "type": "const git_tag *",
-            "comment": "a previously loaded tag.",
-            "cType": "const git_tag *",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " pointer to the OID",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tag_target_id-33"
-          ]
-        },
-        "cFunctionName": "git_tag_target_id",
-        "cppFunctionName": "TargetId",
-        "jsFunctionName": "targetId",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTag"
-      },
-      {
-        "type": "function",
-        "file": "tag.h",
-        "args": [
-          {
-            "name": "tag",
-            "type": "const git_tag *",
-            "comment": "a previously loaded tag.",
-            "cType": "const git_tag *",
-            "cppClassName": "GitTag",
-            "jsClassName": "Tag",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_otype",
-          "comment": " type of the tagged object",
-          "cType": "git_otype",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tag",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tag_target_type-34"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tag_target_type-71"
-          ]
-        },
-        "cFunctionName": "git_tag_target_type",
-        "cppFunctionName": "TargetType",
-        "jsFunctionName": "targetType",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTag"
-      }
-    ],
-    "cppClassName": "GitTag",
-    "jsClassName": "Tag",
-    "filename": "tag",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/oid.h",
-      "../include/repository.h",
-      "../include/object.h",
-      "../include/signature.h",
-      "../include/tag.h",
-      "../include/strarray.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_tag_free",
-    "name": "tag"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "threads.h",
-        "args": [],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "threads",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_threads_init-26"
-          ],
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_threads_init-39"
-          ],
-          "diff.c": [
-            "ex/v0.21.2/diff.html#git_threads_init-15"
-          ],
-          "init.c": [
-            "ex/v0.21.2/init.html#git_threads_init-12"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_threads_init-56"
-          ],
-          "network/git2.c": [
-            "ex/v0.21.2/network/git2.html#git_threads_init-5"
-          ],
-          "rev-parse.c": [
-            "ex/v0.21.2/rev-parse.html#git_threads_init-18"
-          ],
-          "status.c": [
-            "ex/v0.21.2/status.html#git_threads_init-27"
-          ],
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_threads_init-24"
-          ]
-        },
-        "cFunctionName": "git_threads_init",
-        "cppFunctionName": "Init",
-        "jsFunctionName": "init",
-        "cppClassName": "GitThreads"
-      },
-      {
-        "type": "function",
-        "file": "threads.h",
-        "args": [],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "threads",
-        "examples": {
-          "blame.c": [
-            "ex/v0.21.2/blame.html#git_threads_shutdown-27"
-          ],
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_threads_shutdown-40"
-          ],
-          "diff.c": [
-            "ex/v0.21.2/diff.html#git_threads_shutdown-16"
-          ],
-          "init.c": [
-            "ex/v0.21.2/init.html#git_threads_shutdown-13"
-          ],
-          "log.c": [
-            "ex/v0.21.2/log.html#git_threads_shutdown-57"
-          ],
-          "rev-parse.c": [
-            "ex/v0.21.2/rev-parse.html#git_threads_shutdown-19"
-          ],
-          "status.c": [
-            "ex/v0.21.2/status.html#git_threads_shutdown-28"
-          ],
-          "tag.c": [
-            "ex/v0.21.2/tag.html#git_threads_shutdown-25"
-          ]
-        },
-        "cFunctionName": "git_threads_shutdown",
-        "cppFunctionName": "Shutdown",
-        "jsFunctionName": "shutdown",
-        "cppClassName": "GitThreads"
-      }
-    ],
-    "type": "class",
-    "cType": null,
-    "typeName": "threads",
-    "cppClassName": "GitThreads",
-    "jsClassName": "Threads",
-    "filename": "threads",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "threads"
-  },
-  {
-    "type": "class",
-    "value": "git_time",
-    "file": "types.h",
-    "fields": [
-      {
-        "type": "git_time_t",
-        "name": "time",
-        "cType": "git_time_t",
-        "cppFunctionName": "Time",
-        "jsFunctionName": "time",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": true
-      },
-      {
-        "type": "int",
-        "name": "offset",
-        "cType": "int",
-        "cppFunctionName": "Offset",
-        "jsFunctionName": "offset",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [],
-      "needs": []
-    },
-    "typeName": "time",
-    "cType": "git_time",
-    "functions": [],
-    "cppClassName": "GitTime",
-    "jsClassName": "Time",
-    "filename": "time",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "time"
-  },
-  {
-    "functions": [],
-    "type": "class",
-    "cType": null,
-    "typeName": "trace",
-    "cppClassName": "GitTrace",
-    "jsClassName": "Trace",
-    "filename": "trace",
-    "isLibgitType": true,
-    "dependencies": [],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "trace"
-  },
-  {
-    "typeName": "trace_level",
-    "type": "enum",
-    "cType": "git_trace_level_t",
-    "isMask": true,
-    "values": [
-      {
-        "name": "GIT_TRACE_NONE",
-        "value": 0,
-        "JsName": "NONE"
-      },
-      {
-        "name": "GIT_TRACE_FATAL",
-        "value": 1,
-        "JsName": "FATAL"
-      },
-      {
-        "name": "GIT_TRACE_ERROR",
-        "value": 2,
-        "JsName": "ERROR"
-      },
-      {
-        "name": "GIT_TRACE_WARN",
-        "value": 3,
-        "JsName": "WARN"
-      },
-      {
-        "name": "GIT_TRACE_INFO",
-        "value": 4,
-        "JsName": "INFO"
-      },
-      {
-        "name": "GIT_TRACE_DEBUG",
-        "value": 5,
-        "JsName": "DEBUG"
-      },
-      {
-        "name": "GIT_TRACE_TRACE",
-        "value": 6,
-        "JsName": "TRACE"
-      }
-    ],
-    "owner": "Trace",
-    "JsName": "LEVEL"
-  },
-  {
-    "type": "class",
-    "value": "git_transfer_progress",
-    "file": "types.h",
-    "fields": [
-      {
-        "type": "unsigned int",
-        "name": "total_objects",
-        "cType": "unsigned int",
-        "cppFunctionName": "TotalObjects",
-        "jsFunctionName": "totalObjects",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "indexed_objects",
-        "cType": "unsigned int",
-        "cppFunctionName": "IndexedObjects",
-        "jsFunctionName": "indexedObjects",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "received_objects",
-        "cType": "unsigned int",
-        "cppFunctionName": "ReceivedObjects",
-        "jsFunctionName": "receivedObjects",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "local_objects",
-        "cType": "unsigned int",
-        "cppFunctionName": "LocalObjects",
-        "jsFunctionName": "localObjects",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "total_deltas",
-        "cType": "unsigned int",
-        "cppFunctionName": "TotalDeltas",
-        "jsFunctionName": "totalDeltas",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "unsigned int",
-        "name": "indexed_deltas",
-        "cType": "unsigned int",
-        "cppFunctionName": "IndexedDeltas",
-        "jsFunctionName": "indexedDeltas",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "type": "size_t",
-        "name": "received_bytes",
-        "cType": "size_t",
-        "cppFunctionName": "ReceivedBytes",
-        "jsFunctionName": "receivedBytes",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      }
-    ],
-    "used": {
-      "returns": [
-        "git_remote_stats"
-      ],
-      "needs": [
-        "git_indexer_append",
-        "git_indexer_commit"
-      ]
-    },
-    "typeName": "transfer_progress",
-    "cType": "git_transfer_progress",
-    "functions": [],
-    "cppClassName": "GitTransferProgress",
-    "jsClassName": "TransferProgress",
-    "filename": "transfer_progress",
-    "isLibgitType": true,
-    "dependencies": [],
-    "needsForwardDeclaration": false,
-    "hasConstructor": false,
-    "name": "transfer_progress"
-  },
-  {
-    "functions": [
-      {
-        "type": "function",
-        "file": "transport.h",
-        "args": [
-          {
-            "name": "opts",
-            "type": "git_transport *",
-            "comment": "the `git_transport` struct to initialize",
-            "cType": "git_transport *",
-            "cppClassName": "GitTransport",
-            "jsClassName": "Transport",
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "version",
-            "type": "unsigned int",
-            "comment": "Version of struct; pass `GIT_TRANSPORT_VERSION`",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " Zero on success; -1 on failure.",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "transport",
-        "cFunctionName": "git_transport_init",
-        "cppFunctionName": "Init",
-        "jsFunctionName": "init",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTransport"
-      },
-      {
-        "type": "function",
-        "file": "transport.h",
-        "args": [
-          {
-            "name": "prefix",
-            "type": "const char *",
-            "comment": "From the previous call to git_transport_register",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "priority",
-            "type": "unsigned int",
-            "comment": "From the previous call to git_transport_register",
-            "cType": "unsigned int",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "transport",
-        "cFunctionName": "git_transport_unregister",
-        "cppFunctionName": "Unregister",
-        "jsFunctionName": "unregister",
-        "cppClassName": "GitTransport"
-      }
-    ],
-    "type": "class",
-    "cType": "git_transport",
-    "typeName": "transport",
-    "cppClassName": "GitTransport",
-    "jsClassName": "Transport",
-    "filename": "transport",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/transport.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": false,
-    "name": "transport"
-  },
-  {
-    "type": "class",
-    "value": "git_tree",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_commit_amend",
-        "git_commit_create",
-        "git_commit_create_v",
-        "git_commit_tree",
-        "git_diff_tree_to_index",
-        "git_diff_tree_to_tree",
-        "git_diff_tree_to_workdir",
-        "git_diff_tree_to_workdir_with_index",
-        "git_index_read_tree",
-        "git_merge_trees",
-        "git_pathspec_match_tree",
-        "git_tree_entry_byid",
-        "git_tree_entry_byindex",
-        "git_tree_entry_byname",
-        "git_tree_entry_bypath",
-        "git_tree_entrycount",
-        "git_tree_free",
-        "git_tree_id",
-        "git_tree_lookup",
-        "git_tree_lookup_prefix",
-        "git_tree_owner",
-        "git_tree_walk",
-        "git_treebuilder_create"
-      ]
-    },
-    "typeName": "tree",
-    "cType": "git_tree",
-    "functions": [
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": "a previously loaded tree.",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "the sha being looked for",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_tree_entry *",
-          "comment": " the tree entry; NULL if not found",
-          "cType": "const git_tree_entry *",
-          "cppClassName": "GitTreeEntry",
-          "jsClassName": "TreeEntry",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "cFunctionName": "git_tree_entry_byid",
-        "cppFunctionName": "EntryByid",
-        "jsFunctionName": "entryByid",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": "a previously loaded tree.",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "idx",
-            "type": "size_t",
-            "comment": "the position in the entry list",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_tree_entry *",
-          "comment": " the tree entry; NULL if not found",
-          "cType": "const git_tree_entry *",
-          "cppClassName": "GitTreeEntry",
-          "jsClassName": "TreeEntry",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tree_entry_byindex-42"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tree_entry_byindex-78"
-          ]
-        },
-        "cFunctionName": "git_tree_entry_byindex",
-        "cppFunctionName": "EntryByindex",
-        "jsFunctionName": "entryByindex",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": "a previously loaded tree.",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "filename",
-            "type": "const char *",
-            "comment": "the filename of the desired entry",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_tree_entry *",
-          "comment": " the tree entry; NULL if not found",
-          "cType": "const git_tree_entry *",
-          "cppClassName": "GitTreeEntry",
-          "jsClassName": "TreeEntry",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tree_entry_byname-77"
-          ]
-        },
-        "cFunctionName": "git_tree_entry_byname",
-        "cppFunctionName": "EntryByname",
-        "jsFunctionName": "entryByname",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_tree_entry **",
-            "comment": "Pointer where to store the tree entry",
-            "cType": "git_tree_entry **",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "root",
-            "type": "const git_tree *",
-            "comment": "Previously loaded tree which is the root of the relative path",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "path",
-            "type": "const char *",
-            "comment": "Path to the contained entry",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success; GIT_ENOTFOUND if the path does not exist",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "cFunctionName": "git_tree_entry_bypath",
-        "cppFunctionName": "EntryBypath",
-        "jsFunctionName": "entryBypath",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "e1",
-            "type": "const git_tree_entry *",
-            "comment": "first tree entry",
-            "cType": "const git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "e2",
-            "type": "const git_tree_entry *",
-            "comment": "second tree entry",
-            "cType": "const git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " \n<\n0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "cFunctionName": "git_tree_entry_cmp",
-        "cppFunctionName": "EntryCmp",
-        "jsFunctionName": "entryCmp",
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "dest",
-            "type": "git_tree_entry **",
-            "comment": "pointer where to store the copy",
-            "cType": "git_tree_entry **",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "source",
-            "type": "const git_tree_entry *",
-            "comment": "tree entry to duplicate",
-            "cType": "const git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "cFunctionName": "git_tree_entry_dup",
-        "cppFunctionName": "EntryDup",
-        "jsFunctionName": "entryDup",
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_tree_entry *",
-            "comment": "a tree entry",
-            "cType": "const git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "git_filemode_t",
-          "comment": " filemode as an integer",
-          "cType": "git_filemode_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tree_entry_filemode-46"
-          ]
-        },
-        "cFunctionName": "git_tree_entry_filemode",
-        "cppFunctionName": "EntryFilemode",
-        "jsFunctionName": "entryFilemode",
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_tree_entry *",
-            "comment": "a tree entry",
-            "cType": "const git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "git_filemode_t",
-          "comment": " filemode as an integer",
-          "cType": "git_filemode_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": true,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "cFunctionName": "git_tree_entry_filemode_raw",
-        "cppFunctionName": "EntryFilemodeRaw",
-        "jsFunctionName": "entryFilemodeRaw",
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "git_tree_entry *",
-            "comment": "The entry to free",
-            "cType": "git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "cFunctionName": "git_tree_entry_free",
-        "cppFunctionName": "EntryFree",
-        "jsFunctionName": "entryFree",
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_tree_entry *",
-            "comment": "a tree entry",
-            "cType": "const git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " the oid of the object",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tree_entry_id-44"
-          ]
-        },
-        "cFunctionName": "git_tree_entry_id",
-        "cppFunctionName": "EntryId",
-        "jsFunctionName": "entryId",
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_tree_entry *",
-            "comment": "a tree entry",
-            "cType": "const git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const char *",
-          "comment": " the name of the file",
-          "cType": "const char *",
-          "cppClassName": "String",
-          "jsClassName": "String",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tree_entry_name-43"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tree_entry_name-79",
-            "ex/v0.21.2/general.html#git_tree_entry_name-80"
-          ]
-        },
-        "cFunctionName": "git_tree_entry_name",
-        "cppFunctionName": "EntryName",
-        "jsFunctionName": "entryName",
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "object_out",
-            "type": "git_object **",
-            "comment": "pointer to the converted object",
-            "cType": "git_object **",
-            "cppClassName": "GitObject",
-            "jsClassName": "Object",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "repository where to lookup the pointed object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "entry",
-            "type": "const git_tree_entry *",
-            "comment": "a tree entry",
-            "cType": "const git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tree_entry_to_object-81"
-          ]
-        },
-        "cFunctionName": "git_tree_entry_to_object",
-        "cppFunctionName": "EntryToObject",
-        "jsFunctionName": "entryToObject",
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "entry",
-            "type": "const git_tree_entry *",
-            "comment": "a tree entry",
-            "cType": "const git_tree_entry *",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "git_otype",
-          "comment": " the type of the pointed object",
-          "cType": "git_otype",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isLibgitType": true,
-          "isEnum": true,
-          "isMask": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tree_entry_type-45"
-          ]
-        },
-        "cFunctionName": "git_tree_entry_type",
-        "cppFunctionName": "EntryType",
-        "jsFunctionName": "entryType",
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": "a previously loaded tree.",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "size_t",
-          "comment": " the number of entries in the tree",
-          "cType": "size_t",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "examples": {
-          "cat-file.c": [
-            "ex/v0.21.2/cat-file.html#git_tree_entrycount-41"
-          ],
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tree_entrycount-76"
-          ]
-        },
-        "cFunctionName": "git_tree_entrycount",
-        "cppFunctionName": "Entrycount",
-        "jsFunctionName": "entrycount",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": "a previously loaded tree.",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "const git_oid *",
-          "comment": " object identity for the tree.",
-          "cType": "const git_oid *",
-          "cppClassName": "GitOid",
-          "jsClassName": "Oid",
-          "isLibgitType": true,
-          "isEnum": false,
-          "shouldAlloc": true,
-          "functions": {
-            "git_oid_cpy": {
-              "ignore": true
-            },
-            "git_oid_fmt": {
-              "ignore": true
-            },
-            "git_oid_fromraw": {
-              "ignore": true
-            },
-            "git_oid_fromstr": {
-              "jsFunctionName": "fromString",
-              "isAsync": false
-            },
-            "git_oid_fromstrn": {
-              "ignore": true
-            },
-            "git_oid_fromstrp": {
-              "ignore": true
-            },
-            "git_oid_nfmt": {
-              "ignore": true
-            },
-            "git_oid_pathfmt": {
-              "ignore": true
-            },
-            "git_oid_shorten_add": {
-              "ignore": true
-            },
-            "git_oid_shorten_free": {
-              "ignore": true
-            },
-            "git_oid_shorten_new": {
-              "ignore": true
-            },
-            "git_oid_tostr": {
-              "ignore": true,
-              "jsFunctionName": "toString"
-            }
-          },
-          "fields": {
-            "id": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "cFunctionName": "git_tree_id",
-        "cppFunctionName": "Id",
-        "jsFunctionName": "id",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_tree **",
-            "comment": "Pointer to the looked up tree",
-            "cType": "git_tree **",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "The repo to use when locating the tree.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "Identity of the tree to locate.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "examples": {
-          "general.c": [
-            "ex/v0.21.2/general.html#git_tree_lookup-74",
-            "ex/v0.21.2/general.html#git_tree_lookup-75"
-          ],
-          "init.c": [
-            "ex/v0.21.2/init.html#git_tree_lookup-14"
-          ]
-        },
-        "cFunctionName": "git_tree_lookup",
-        "cppFunctionName": "Lookup",
-        "jsFunctionName": "lookup",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_tree **",
-            "comment": "pointer to the looked up tree",
-            "cType": "git_tree **",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "the repo to use when locating the tree.",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "identity of the tree to locate.",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "len",
-            "type": "size_t",
-            "comment": "the length of the short identifier",
-            "cType": "size_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "cFunctionName": "git_tree_lookup_prefix",
-        "cppFunctionName": "LookupPrefix",
-        "jsFunctionName": "lookupPrefix",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitTree"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "tree",
-            "type": "const git_tree *",
-            "comment": "A previously loaded tree.",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "git_repository *",
-          "comment": " Repository that contains this tree.",
-          "cType": "git_repository *",
-          "cppClassName": "GitRepository",
-          "jsClassName": "Repository",
-          "isLibgitType": true,
-          "isEnum": false,
-          "functions": {
-            "git_repository_discover": {
-              "ignore": true
-            },
-            "git_repository_fetchhead_foreach": {
-              "ignore": true
-            },
-            "git_repository_free": {
-              "ignore": true
-            },
-            "git_repository_hashfile": {
-              "ignore": true
-            },
-            "git_repository_mergehead_foreach": {
-              "ignore": true
-            },
-            "git_repository_message": {
-              "ignore": true
-            }
-          },
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "tree",
-        "cFunctionName": "git_tree_owner",
-        "cppFunctionName": "Owner",
-        "jsFunctionName": "owner",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTree"
-      }
-    ],
-    "cppClassName": "GitTree",
-    "jsClassName": "Tree",
-    "filename": "tree",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/tree.h",
-      "../include/oid.h",
-      "../include/tree_entry.h",
-      "../include/object.h",
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_tree_free",
-    "name": "tree"
-  },
-  {
-    "type": "class",
-    "value": "git_tree_entry",
-    "file": "types.h",
-    "used": {
-      "returns": [
-        "git_tree_entry_byid",
-        "git_tree_entry_byindex",
-        "git_tree_entry_byname",
-        "git_treebuilder_get"
-      ],
-      "needs": [
-        "git_tree_entry_bypath",
-        "git_tree_entry_cmp",
-        "git_tree_entry_dup",
-        "git_tree_entry_filemode",
-        "git_tree_entry_filemode_raw",
-        "git_tree_entry_free",
-        "git_tree_entry_id",
-        "git_tree_entry_name",
-        "git_tree_entry_to_object",
-        "git_tree_entry_type",
-        "git_treebuilder_insert"
-      ]
-    },
-    "fields": [
-      {
-        "name": "removed",
-        "type": "uint16_t",
-        "cType": "uint16_t",
-        "cppFunctionName": "Removed",
-        "jsFunctionName": "removed",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "attr",
-        "type": "uint16_t",
-        "cType": "uint16_t",
-        "cppFunctionName": "Attr",
-        "jsFunctionName": "attr",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "oid",
-        "type": "git_oid",
-        "cType": "git_oid",
-        "cppFunctionName": "Oid",
-        "jsFunctionName": "oid",
-        "cppClassName": "GitOid",
-        "jsClassName": "Oid",
-        "isCallbackFunction": false,
-        "isLibgitType": true,
-        "isEnum": false,
-        "shouldAlloc": true,
-        "functions": {
-          "git_oid_cpy": {
-            "ignore": true
-          },
-          "git_oid_fmt": {
-            "ignore": true
-          },
-          "git_oid_fromraw": {
-            "ignore": true
-          },
-          "git_oid_fromstr": {
-            "jsFunctionName": "fromString",
-            "isAsync": false
-          },
-          "git_oid_fromstrn": {
-            "ignore": true
-          },
-          "git_oid_fromstrp": {
-            "ignore": true
-          },
-          "git_oid_nfmt": {
-            "ignore": true
-          },
-          "git_oid_pathfmt": {
-            "ignore": true
-          },
-          "git_oid_shorten_add": {
-            "ignore": true
-          },
-          "git_oid_shorten_free": {
-            "ignore": true
-          },
-          "git_oid_shorten_new": {
-            "ignore": true
-          },
-          "git_oid_tostr": {
-            "ignore": true,
-            "jsFunctionName": "toString"
-          }
-        },
-        "fields": {
-          "id": {
-            "ignore": true
-          }
-        }
-      },
-      {
-        "name": "filename_len",
-        "type": "size_t",
-        "cType": "size_t",
-        "cppFunctionName": "FilenameLen",
-        "jsFunctionName": "filenameLen",
-        "cppClassName": "Number",
-        "jsClassName": "Number",
-        "isCallbackFunction": false
-      },
-      {
-        "name": "filename",
-        "structType": "char",
-        "structName": "filename[1]",
-        "type": "char *",
-        "cType": "char *",
-        "cppFunctionName": "Filename",
-        "jsFunctionName": "filename",
-        "cppClassName": "String",
-        "jsClassName": "String",
-        "isCallbackFunction": false
-      }
-    ],
-    "typeName": "tree_entry",
-    "cType": "git_tree_entry",
-    "functions": [],
-    "cppClassName": "GitTreeEntry",
-    "jsClassName": "TreeEntry",
-    "filename": "tree_entry",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/oid.h"
-    ],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "name": "tree_entry"
-  },
-  {
-    "type": "class",
-    "value": "git_treebuilder",
-    "file": "types.h",
-    "used": {
-      "returns": [],
-      "needs": [
-        "git_treebuilder_clear",
-        "git_treebuilder_create",
-        "git_treebuilder_entrycount",
-        "git_treebuilder_filter",
-        "git_treebuilder_free",
-        "git_treebuilder_get",
-        "git_treebuilder_insert",
-        "git_treebuilder_remove",
-        "git_treebuilder_write"
-      ]
-    },
-    "typeName": "treebuilder",
-    "cType": "git_treebuilder",
-    "functions": [
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "bld",
-            "type": "git_treebuilder *",
-            "comment": "Builder to clear",
-            "cType": "git_treebuilder *",
-            "cppClassName": "GitTreebuilder",
-            "jsClassName": "Treebuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "void",
-          "comment": null,
-          "cType": "void",
-          "cppClassName": "Void",
-          "jsClassName": "Void",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "treebuilder",
-        "cFunctionName": "git_treebuilder_clear",
-        "cppFunctionName": "Clear",
-        "jsFunctionName": "clear",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTreebuilder"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "git_treebuilder **",
-            "comment": "Pointer where to store the tree builder",
-            "cType": "git_treebuilder **",
-            "cppClassName": "GitTreebuilder",
-            "jsClassName": "Treebuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "source",
-            "type": "const git_tree *",
-            "comment": "Source tree to initialize the builder (optional)",
-            "cType": "const git_tree *",
-            "cppClassName": "GitTree",
-            "jsClassName": "Tree",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 on success; error code otherwise",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "treebuilder",
-        "cFunctionName": "git_treebuilder_create",
-        "cppFunctionName": "Create",
-        "jsFunctionName": "create",
-        "isAsync": true,
-        "isConstructorMethod": true,
-        "cppClassName": "GitTreebuilder"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "bld",
-            "type": "git_treebuilder *",
-            "comment": "a previously loaded treebuilder.",
-            "cType": "git_treebuilder *",
-            "cppClassName": "GitTreebuilder",
-            "jsClassName": "Treebuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "unsigned int",
-          "comment": " the number of entries in the treebuilder",
-          "cType": "unsigned int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "treebuilder",
-        "cFunctionName": "git_treebuilder_entrycount",
-        "cppFunctionName": "Entrycount",
-        "jsFunctionName": "entrycount",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTreebuilder"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "bld",
-            "type": "git_treebuilder *",
-            "comment": "Tree builder",
-            "cType": "git_treebuilder *",
-            "cppClassName": "GitTreebuilder",
-            "jsClassName": "Treebuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "filename",
-            "type": "const char *",
-            "comment": "Name of the entry",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "const git_tree_entry *",
-          "comment": " pointer to the entry; NULL if not found",
-          "cType": "const git_tree_entry *",
-          "cppClassName": "GitTreeEntry",
-          "jsClassName": "TreeEntry",
-          "isLibgitType": true,
-          "isEnum": false,
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "treebuilder",
-        "cFunctionName": "git_treebuilder_get",
-        "cppFunctionName": "Get",
-        "jsFunctionName": "get",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTreebuilder"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "out",
-            "type": "const git_tree_entry **",
-            "comment": "Pointer to store the entry (optional)",
-            "cType": "const git_tree_entry **",
-            "cppClassName": "GitTreeEntry",
-            "jsClassName": "TreeEntry",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": true,
-            "isSelf": false
-          },
-          {
-            "name": "bld",
-            "type": "git_treebuilder *",
-            "comment": "Tree builder",
-            "cType": "git_treebuilder *",
-            "cppClassName": "GitTreebuilder",
-            "jsClassName": "Treebuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "filename",
-            "type": "const char *",
-            "comment": "Filename of the entry",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "id",
-            "type": "const git_oid *",
-            "comment": "SHA1 oid of the entry",
-            "cType": "const git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "filemode",
-            "type": "git_filemode_t",
-            "comment": "Folder attributes of the entry. This parameter must\n\t\t\tbe valued with one of the following entries: 0040000, 0100644,\n\t\t\t0100755, 0120000 or 0160000.",
-            "cType": "git_filemode_t",
-            "cppClassName": "Number",
-            "jsClassName": "Number",
-            "isLibgitType": true,
-            "isEnum": true,
-            "isMask": true,
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "isErrorCode": true,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "treebuilder",
-        "cFunctionName": "git_treebuilder_insert",
-        "cppFunctionName": "Insert",
-        "jsFunctionName": "insert",
-        "isAsync": true,
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTreebuilder"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "bld",
-            "type": "git_treebuilder *",
-            "comment": "Tree builder",
-            "cType": "git_treebuilder *",
-            "cppClassName": "GitTreebuilder",
-            "jsClassName": "Treebuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          },
-          {
-            "name": "filename",
-            "type": "const char *",
-            "comment": "Filename of the entry to remove",
-            "cType": "const char *",
-            "cppClassName": "String",
-            "jsClassName": "String",
-            "isReturn": false,
-            "isSelf": false
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": null,
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "treebuilder",
-        "cFunctionName": "git_treebuilder_remove",
-        "cppFunctionName": "Remove",
-        "jsFunctionName": "remove",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTreebuilder"
-      },
-      {
-        "type": "function",
-        "file": "tree.h",
-        "args": [
-          {
-            "name": "id",
-            "type": "git_oid *",
-            "comment": "Pointer to store the OID of the newly written tree",
-            "cType": "git_oid *",
-            "cppClassName": "GitOid",
-            "jsClassName": "Oid",
-            "isLibgitType": true,
-            "isEnum": false,
-            "shouldAlloc": true,
-            "fields": {
-              "id": {
-                "ignore": true
-              }
-            },
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "repo",
-            "type": "git_repository *",
-            "comment": "Repository in which to store the object",
-            "cType": "git_repository *",
-            "cppClassName": "GitRepository",
-            "jsClassName": "Repository",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": false
-          },
-          {
-            "name": "bld",
-            "type": "git_treebuilder *",
-            "comment": "Tree builder to write",
-            "cType": "git_treebuilder *",
-            "cppClassName": "GitTreebuilder",
-            "jsClassName": "Treebuilder",
-            "isLibgitType": true,
-            "isEnum": false,
-            "isReturn": false,
-            "isSelf": true
-          }
-        ],
-        "return": {
-          "type": "int",
-          "comment": " 0 or an error code",
-          "cType": "int",
-          "cppClassName": "Number",
-          "jsClassName": "Number",
-          "isReturn": false,
-          "isSelf": false
-        },
-        "group": "treebuilder",
-        "cFunctionName": "git_treebuilder_write",
-        "cppFunctionName": "Write",
-        "jsFunctionName": "write",
-        "isPrototypeMethod": true,
-        "cppClassName": "GitTreebuilder"
-      }
-    ],
-    "cppClassName": "GitTreebuilder",
-    "jsClassName": "Treebuilder",
-    "filename": "treebuilder",
-    "isLibgitType": true,
-    "dependencies": [
-      "../include/treebuilder.h",
-      "../include/tree.h",
-      "../include/tree_entry.h",
-      "../include/oid.h",
-      "../include/repository.h"
-    ],
-    "fields": [],
-    "needsForwardDeclaration": true,
-    "hasConstructor": false,
-    "freeFunctionName": "git_treebuilder_free",
-    "name": "treebuilder"
-  },
-  {
-    "typeName": "treewalk_mode",
-    "type": "enum",
-    "cType": "git_treewalk_mode",
-    "isMask": false,
-    "values": [
-      {
-        "name": "GIT_TREEWALK_PRE",
-        "value": 0,
-        "JsName": "WALK_PRE"
-      },
-      {
-        "name": "GIT_TREEWALK_POST",
-        "value": 1,
-        "JsName": "WALK_POST"
-      }
-    ],
-    "owner": "Tree",
-    "JsName": "WALK_MODE"
-  }
-]
\ No newline at end of file
diff --git a/api/annotated/index.md b/api/annotated/index.md
new file mode 100644
index 0000000..e74141c
--- /dev/null
+++ b/api/annotated/index.md
@@ -0,0 +1,82 @@
+---
+layout: default
+menu_item: api
+title: Annotated
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "commitFromFetchhead": "#commitFromFetchhead"
+  "commitFromRef": "#commitFromRef"
+  "commitId": "#commitId"
+  "commitLookup": "#commitLookup"
+---
+
+## Annotated. commitFromFetchhead Async Experimental  
+
+```js
+Annotated.commitFromFetchhead(repo, branch_name, remote_url, id).then(function(annotatedCommit) {
+  // Use annotatedCommit
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository that contains the given commit |
+| branch_name | String | name of the (remote) branch |
+| remote_url | String | url of the remote |
+| id | [Oid](/api/oid/) |  |
+
+| Returns |  |
+| --- | --- |
+| [AnnotatedCommit](/api/annotated_commit/) |  |
+
+## Annotated. commitFromRef Async Experimental  
+
+```js
+Annotated.commitFromRef(repo, ref).then(function(annotatedCommit) {
+  // Use annotatedCommit
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository that contains the given reference |
+| ref | [Reference](/api/reference/) | reference to use to lookup the git_annotated_commit |
+
+| Returns |  |
+| --- | --- |
+| [AnnotatedCommit](/api/annotated_commit/) |  |
+
+## Annotated. commitId Sync Experimental  
+
+```js
+var oid = Annotated.commitId(commit);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| commit | [AnnotatedCommit](/api/annotated_commit/) |  |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  commit id |
+
+## Annotated. commitLookup Async Experimental  
+
+```js
+Annotated.commitLookup(repo, id).then(function(annotatedCommit) {
+  // Use annotatedCommit
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository that contains the given commit |
+| id | [Oid](/api/oid/) | the commit object id to lookup |
+
+| Returns |  |
+| --- | --- |
+| [AnnotatedCommit](/api/annotated_commit/) |  |
+
diff --git a/api/attr/index.md b/api/attr/index.md
new file mode 100644
index 0000000..d1d0e9b
--- /dev/null
+++ b/api/attr/index.md
@@ -0,0 +1,106 @@
+---
+layout: default
+menu_item: api
+title: Attr
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "addMacro": "#addMacro"
+  "cacheFlush": "#cacheFlush"
+  "get": "#get"
+  "getMany": "#getMany"
+  "value": "#value"
+  "STATES": "#STATES"
+---
+
+## Attr. addMacro Sync  
+
+```js
+var result = Attr.addMacro(repo, name, values);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) |  |
+| name | String |  |
+| values | String |  |
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Attr. cacheFlush Sync  
+
+```js
+Attr.cacheFlush(repo);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) |  |
+
+## Attr. get Async  
+
+```js
+Attr.get(repo, flags, path, name).then(function(string) {
+  // Use string
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository containing the path. |
+| flags | Number | A combination of GIT_ATTR_CHECK... flags. |
+| path | String | The path to check for attributes. Relative paths are interpreted relative to the repo root. The file does not have to exist, but if it does not, then it will be treated as a plain file (not a directory). |
+| name | String | The name of the attribute to look up. |
+
+| Returns |  |
+| --- | --- |
+| String | Output of the value of the attribute.  Use the GIT_ATTR_...
+             macros to test for TRUE, FALSE, UNSPECIFIED, etc. or just
+             use the string value for attributes set to a value.  You
+             should NOT modify or free this value. |
+
+## Attr. getMany Sync  
+
+```js
+var array = Attr.getMany(repo, flags, path, num_attr, names);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository containing the path. |
+| flags | Number | A combination of GIT_ATTR_CHECK... flags. |
+| path | String | The path inside the repo to check attributes. This does not have to exist, but if it does not, then it will be treated as a plain file (i.e. not a directory). |
+| num_attr | Number | The number of attributes being looked up |
+| names | String | An array of num_attr strings containing attribute names. |
+
+| Returns |  |
+| --- | --- |
+| Array |  |
+
+## Attr. value Sync  
+
+```js
+var result = Attr.value(attr);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| attr | String | The attribute |
+
+| Returns |  |
+| --- | --- |
+| Number |  the value type for the attribute |
+
+## Attr. STATES ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Attr.STATES. UNSPECIFIED_T | 0 |
+| Attr.STATES. TRUE_T | 1 |
+| Attr.STATES. FALSE_T | 2 |
+| Attr.STATES. VALUE_T | 3 |
+
diff --git a/api/blame/index.md b/api/blame/index.md
new file mode 100644
index 0000000..52defa5
--- /dev/null
+++ b/api/blame/index.md
@@ -0,0 +1,124 @@
+---
+layout: default
+menu_item: api
+title: Blame
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "file": "#file"
+  "initOptions": "#initOptions"
+  "#buffer": "#buffer"
+  "#free": "#free"
+  "#getHunkByIndex": "#getHunkByIndex"
+  "#getHunkByLine": "#getHunkByLine"
+  "#getHunkCount": "#getHunkCount"
+  "FLAG": "#FLAG"
+---
+
+## Blame. file Async Experimental  
+
+```js
+Blame.file(repo, path, options).then(function(blame) {
+  // Use blame
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository whose history is to be walked |
+| path | String | path to file to consider |
+| options | [BlameOptions](/api/blame_options/) | options for the blame operation. If NULL, this is treated as though GIT_BLAME_OPTIONS_INIT were passed. |
+
+| Returns |  |
+| --- | --- |
+| [Blame](/api/blame/) |  |
+
+## Blame. initOptions Sync Experimental  
+
+```js
+var result = Blame.initOptions(opts, version);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| opts | [BlameOptions](/api/blame_options/) | The `git_blame_options` struct to initialize |
+| version | Number | Version of struct; pass `GIT_BLAME_OPTIONS_VERSION` |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
+## Blame# buffer Async Experimental  
+
+```js
+blame.buffer(buffer, buffer_len).then(function(blame) {
+  // Use blame
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| buffer | String | the (possibly) modified contents of the file |
+| buffer_len | Number | number of valid bytes in the buffer |
+
+| Returns |  |
+| --- | --- |
+| [Blame](/api/blame/) |  |
+
+## Blame# free Sync Experimental  
+
+```js
+blame.free();
+```
+
+## Blame# getHunkByIndex Sync Experimental  
+
+```js
+var blameHunk = blame.getHunkByIndex(index);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| index | Number | index of the hunk to retrieve |
+
+| Returns |  |
+| --- | --- |
+| [BlameHunk](/api/blame_hunk/) |  the hunk at the given index, or NULL on error |
+
+## Blame# getHunkByLine Sync Experimental  
+
+```js
+var blameHunk = blame.getHunkByLine(lineno);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| lineno | Number | the (1-based) line number to find a hunk for |
+
+| Returns |  |
+| --- | --- |
+| [BlameHunk](/api/blame_hunk/) |  the hunk that contains the given line, or NULL on error |
+
+## Blame# getHunkCount Sync Experimental  
+
+```js
+var result = blame.getHunkCount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Blame. FLAG ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Blame.FLAG. NORMAL | 0 |
+| Blame.FLAG. TRACK_COPIES_SAME_FILE | 1 |
+| Blame.FLAG. TRACK_COPIES_SAME_COMMIT_MOVES | 2 |
+| Blame.FLAG. TRACK_COPIES_SAME_COMMIT_COPIES | 4 |
+| Blame.FLAG. TRACK_COPIES_ANY_COMMIT_COPIES | 8 |
+| Blame.FLAG. FIRST_PARENT | 16 |
+
diff --git a/api/blame_hunk/index.md b/api/blame_hunk/index.md
new file mode 100644
index 0000000..9e63dd8
--- /dev/null
+++ b/api/blame_hunk/index.md
@@ -0,0 +1,25 @@
+---
+layout: default
+menu_item: api
+title: BlameHunk
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  finalCommitId | Oid |
+|  finalSignature | Signature |
+|  finalStartLineNumber | Number |
+|  linesInHunk | Number |
+|  origCommitId | Oid |
+|  origPath | String |
+|  origSignature | Signature |
+|  origStartLineNumber | Number |
+
diff --git a/api/blame_options/index.md b/api/blame_options/index.md
new file mode 100644
index 0000000..207fb68
--- /dev/null
+++ b/api/blame_options/index.md
@@ -0,0 +1,28 @@
+---
+layout: default
+menu_item: api
+title: BlameOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var blameOptions = new BlameOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  flags | Number |
+|  maxLine | Number |
+|  minLine | Number |
+|  minMatchCharacters | Number |
+|  newestCommit | Oid |
+|  oldestCommit | Oid |
+|  version | Number |
+
diff --git a/api/blob/index.md b/api/blob/index.md
new file mode 100644
index 0000000..4d3c01f
--- /dev/null
+++ b/api/blob/index.md
@@ -0,0 +1,206 @@
+---
+layout: default
+menu_item: api
+title: Blob
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "createFromBuffer": "#createFromBuffer"
+  "createFromDisk": "#createFromDisk"
+  "createFromWorkdir": "#createFromWorkdir"
+  "lookup": "#lookup"
+  "lookupPrefix": "#lookupPrefix"
+  "#content": "#content"
+  "#filemode": "#filemode"
+  "#free": "#free"
+  "#id": "#id"
+  "#isBinary": "#isBinary"
+  "#owner": "#owner"
+  "#rawcontent": "#rawcontent"
+  "#rawsize": "#rawsize"
+  "#toString": "#toString"
+---
+
+## Blob. createFromBuffer Sync  
+
+```js
+var oid = Blob.createFromBuffer(repo, buffer, len);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository where to blob will be written |
+| buffer | Buffer | data to be written into the blob |
+| len | Number | length of the data |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) | return the id of the written blob |
+
+## Blob. createFromDisk Sync  
+
+```js
+var result = Blob.createFromDisk(id, repo, path);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | return the id of the written blob |
+| repo | [Repository](/api/repository/) | repository where the blob will be written. this repository can be bare or not |
+| path | String | file from which the blob will be created |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Blob. createFromWorkdir Sync  
+
+```js
+var result = Blob.createFromWorkdir(id, repo, relative_path);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | return the id of the written blob |
+| repo | [Repository](/api/repository/) | repository where the blob will be written. this repository cannot be bare |
+| relative_path | String | file from which the blob will be created, relative to the repository's working dir |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Blob. lookup Async  
+
+```js
+Blob.lookup(repo, id).then(function(blob) {
+  // Use blob
+});
+```
+
+Retrieves the blob pointed to by the oid
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repo that the blob lives in |
+| id | String, [Oid](/api/oid/), [Blob](/api/blob/) | The blob to lookup |
+
+| Returns |  |
+| --- | --- |
+| [Blob](/api/blob/) |  |
+
+## Blob. lookupPrefix Async  
+
+```js
+Blob.lookupPrefix(repo, id, len).then(function(blob) {
+  // Use blob
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repo to use when locating the blob. |
+| id | [Oid](/api/oid/) | identity of the blob to locate. |
+| len | Number | the length of the short identifier |
+
+| Returns |  |
+| --- | --- |
+| [Blob](/api/blob/) |  |
+
+## Blob# content Sync  
+
+```js
+var buffer = blob.content();
+```
+
+Retrieve the content of the Blob.
+
+
+| Returns |  |
+| --- | --- |
+| Buffer | Contents as a buffer. |
+
+## Blob# filemode Sync  
+
+```js
+var number = blob.filemode();
+```
+
+Retrieve the Blob's type.
+
+
+| Returns |  |
+| --- | --- |
+| Number | The filemode of the blob. |
+
+## Blob# free Sync  
+
+```js
+blob.free();
+```
+
+## Blob# id Sync  
+
+```js
+var oid = blob.id();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  SHA1 hash for this blob. |
+
+## Blob# isBinary Sync  
+
+```js
+var result = blob.isBinary();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the content of the blob is detected
+ as binary; 0 otherwise. |
+
+## Blob# owner Sync  
+
+```js
+var repository = blob.owner();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  Repository that contains this blob. |
+
+## Blob# rawcontent Sync  
+
+```js
+var buffer = blob.rawcontent();
+```
+
+| Returns |  |
+| --- | --- |
+| Buffer |  |
+
+## Blob# rawsize Sync  
+
+```js
+var result = blob.rawsize();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  size on bytes |
+
+## Blob# toString Sync  
+
+```js
+var string = blob.toString();
+```
+
+Retrieve the Blob's content as String.
+
+
+| Returns |  |
+| --- | --- |
+| String | Contents as a string. |
+
diff --git a/api/branch/index.md b/api/branch/index.md
new file mode 100644
index 0000000..94269f6
--- /dev/null
+++ b/api/branch/index.md
@@ -0,0 +1,180 @@
+---
+layout: default
+menu_item: api
+title: Branch
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "delete": "#delete"
+  "isHead": "#isHead"
+  "iteratorNew": "#iteratorNew"
+  "lookup": "#lookup"
+  "move": "#move"
+  "name": "#name"
+  "setUpstream": "#setUpstream"
+  "upstream": "#upstream"
+  "BRANCH": "#BRANCH"
+---
+
+## Branch. create Async  
+
+```js
+Branch.create(repo, branch_name, target, force, signature, log_message).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) |  |
+| branch_name | String | Name for the branch; this name is validated for consistency. It should also not conflict with an already existing branch name. |
+| target | [Commit](/api/commit/) | Commit to which this branch should point. This object must belong to the given `repo`. |
+| force | Number | Overwrite existing branch. |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog. If NULL, the default is "Branch: created"; if you want something more useful, provide a message. |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) | the underlying reference. |
+
+## Branch. delete Sync  
+
+```js
+var result = Branch.delete(branch);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| branch | [Reference](/api/reference/) | A valid reference representing a branch |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, or an error code. |
+
+## Branch. isHead Sync  
+
+```js
+var result = Branch.isHead(branch);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| branch | [Reference](/api/reference/) | Current underlying reference of the branch. |
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if HEAD points at the branch, 0 if it isn't,
+ error code otherwise. |
+
+## Branch. iteratorNew Async  
+
+```js
+Branch.iteratorNew(repo, list_flags).then(function(branchIterator) {
+  // Use branchIterator
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where to find the branches. |
+| list_flags | Number | Filtering flags for the branch listing. Valid values are GIT_BRANCH_LOCAL, GIT_BRANCH_REMOTE or GIT_BRANCH_ALL. |
+
+| Returns |  |
+| --- | --- |
+| [BranchIterator](/api/branch_iterator/) | the iterator |
+
+## Branch. lookup Async  
+
+```js
+Branch.lookup(repo, branch_name, branch_type).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository to look up the branch |
+| branch_name | String | Name of the branch to be looked-up; this name is validated for consistency. |
+| branch_type | Number | Type of the considered branch. This should be valued with either GIT_BRANCH_LOCAL or GIT_BRANCH_REMOTE. |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Branch. move Async  
+
+```js
+Branch.move(branch, new_branch_name, force, signature, log_message).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| branch | [Reference](/api/reference/) | Current underlying reference of the branch. |
+| new_branch_name | String | Target name of the branch once the move is performed; this name is validated for consistency. |
+| force | Number | Overwrite existing branch. |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Branch. name Async  
+
+```js
+Branch.name(ref).then(function(string) {
+  // Use string
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| ref | [Reference](/api/reference/) | the reference ideally pointing to a branch |
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## Branch. setUpstream Sync  
+
+```js
+var result = Branch.setUpstream(branch, upstream_name);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| branch | [Reference](/api/reference/) | the branch to configure |
+| upstream_name | String | remote-tracking or local branch to set as upstream. Pass NULL to unset. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Branch. upstream Sync  
+
+```js
+var reference = Branch.upstream(branch);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| branch | [Reference](/api/reference/) | Current underlying reference of the branch. |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) | the retrieved
+ reference. |
+
+## Branch. BRANCH ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Branch.BRANCH. LOCAL | 1 |
+| Branch.BRANCH. REMOTE | 2 |
+| Branch.BRANCH. ALL | 3 |
+
diff --git a/api/buf/index.md b/api/buf/index.md
new file mode 100644
index 0000000..df7817d
--- /dev/null
+++ b/api/buf/index.md
@@ -0,0 +1,84 @@
+---
+layout: default
+menu_item: api
+title: Buf
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#containsNul": "#containsNul"
+  "#free": "#free"
+  "#grow": "#grow"
+  "#isBinary": "#isBinary"
+  "#set": "#set"
+  "Instance Variables": "#ivars"
+---
+
+## Buf# containsNul Sync Experimental  
+
+```js
+var result = buf.containsNul();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if buffer contains a NUL byte |
+
+## Buf# free Sync Experimental  
+
+```js
+buf.free();
+```
+
+## Buf# grow Async Experimental  
+
+```js
+buf.grow(target_size).then(function(buf) {
+  // Use buf
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| target_size | Number | The desired available size |
+
+| Returns |  |
+| --- | --- |
+| [Buf](/api/buf/) | The buffer to be resized; may or may not be allocated yet |
+
+## Buf# isBinary Sync Experimental  
+
+```js
+var result = buf.isBinary();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if buffer looks like non-text data |
+
+## Buf# set Async Experimental  
+
+```js
+buf.set(data, datalen).then(function(buf) {
+  // Use buf
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| data | Buffer | The data to copy into the buffer |
+| datalen | Number | The length of the data to copy into the buffer |
+
+| Returns |  |
+| --- | --- |
+| [Buf](/api/buf/) | The buffer to set |
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  asize | Number |
+|  ptr | String |
+|  size | Number |
+
diff --git a/api/cert/index.md b/api/cert/index.md
new file mode 100644
index 0000000..c30e0e0
--- /dev/null
+++ b/api/cert/index.md
@@ -0,0 +1,34 @@
+---
+layout: default
+menu_item: api
+title: Cert
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "SSH": "#SSH"
+  "TYPE": "#TYPE"
+  "Instance Variables": "#ivars"
+---
+
+## Cert. SSH ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Cert.SSH. MD5 | 1 |
+| Cert.SSH. SHA1 | 2 |
+
+## Cert. TYPE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Cert.TYPE. X509 | 0 |
+| Cert.TYPE. HOSTKEY_LIBSSH2 | 1 |
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  certType | Number |
+
diff --git a/api/cert_hostkey/index.md b/api/cert_hostkey/index.md
new file mode 100644
index 0000000..bc94676
--- /dev/null
+++ b/api/cert_hostkey/index.md
@@ -0,0 +1,21 @@
+---
+layout: default
+menu_item: api
+title: CertHostkey
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  certType | Number |
+|  hashMd5 | Char [16] |
+|  hashSha1 | Char [20] |
+|  type | Number |
+
diff --git a/api/cert_x509/index.md b/api/cert_x509/index.md
new file mode 100644
index 0000000..1c7974a
--- /dev/null
+++ b/api/cert_x509/index.md
@@ -0,0 +1,20 @@
+---
+layout: default
+menu_item: api
+title: CertX509
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  certType | Number |
+|  data | Buffer |
+|  len | Number |
+
diff --git a/api/checkout/index.md b/api/checkout/index.md
new file mode 100644
index 0000000..b62bb88
--- /dev/null
+++ b/api/checkout/index.md
@@ -0,0 +1,101 @@
+---
+layout: default
+menu_item: api
+title: Checkout
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "head": "#head"
+  "initOptions": "#initOptions"
+  "tree": "#tree"
+  "NOTIFY": "#NOTIFY"
+  "STRATEGY": "#STRATEGY"
+---
+
+## Checkout. head Async  
+
+```js
+Checkout.head(repo, [options]).then(function() {
+  // checkout complete
+});
+```
+
+Patch head checkout to automatically coerce objects.
+
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repo to checkout head |
+| [options] | [CheckoutOptions](/api/checkout_options/) | Options for the checkout |
+
+## Checkout. initOptions Sync  
+
+```js
+var result = Checkout.initOptions(opts, version);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| opts | [CheckoutOptions](/api/checkout_options/) | the `git_checkout_options` struct to initialize. |
+| version | Number | Version of struct; pass `GIT_CHECKOUT_OPTIONS_VERSION` |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
+## Checkout. tree Async  
+
+```js
+Checkout.tree(repo, treeish, [options]).then(function() {
+  // checkout complete
+});
+```
+
+Patch tree checkout to automatically coerce objects.
+
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) |  |
+| treeish | [Oid](/api/oid/), [Tree](/api/tree/), [Commit](/api/commit/), [Reference](/api/reference/) |  |
+| [options] | [CheckoutOptions](/api/checkout_options/) |  |
+
+## Checkout. NOTIFY ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Checkout.NOTIFY. NONE | 0 |
+| Checkout.NOTIFY. CONFLICT | 1 |
+| Checkout.NOTIFY. DIRTY | 2 |
+| Checkout.NOTIFY. UPDATED | 4 |
+| Checkout.NOTIFY. UNTRACKED | 8 |
+| Checkout.NOTIFY. IGNORED | 16 |
+| Checkout.NOTIFY. ALL | 65535 |
+
+## Checkout. STRATEGY ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Checkout.STRATEGY. NONE | 0 |
+| Checkout.STRATEGY. SAFE | 1 |
+| Checkout.STRATEGY. SAFE_CREATE | 2 |
+| Checkout.STRATEGY. FORCE | 4 |
+| Checkout.STRATEGY. ALLOW_CONFLICTS | 16 |
+| Checkout.STRATEGY. REMOVE_UNTRACKED | 32 |
+| Checkout.STRATEGY. REMOVE_IGNORED | 64 |
+| Checkout.STRATEGY. UPDATE_ONLY | 128 |
+| Checkout.STRATEGY. DONT_UPDATE_INDEX | 256 |
+| Checkout.STRATEGY. NO_REFRESH | 512 |
+| Checkout.STRATEGY. SKIP_UNMERGED | 1024 |
+| Checkout.STRATEGY. USE_OURS | 2048 |
+| Checkout.STRATEGY. USE_THEIRS | 4096 |
+| Checkout.STRATEGY. DISABLE_PATHSPEC_MATCH | 8192 |
+| Checkout.STRATEGY. SKIP_LOCKED_DIRECTORIES | 262144 |
+| Checkout.STRATEGY. DONT_OVERWRITE_IGNORED | 524288 |
+| Checkout.STRATEGY. CONFLICT_STYLE_MERGE | 1048576 |
+| Checkout.STRATEGY. CONFLICT_STYLE_DIFF3 | 2097152 |
+| Checkout.STRATEGY. UPDATE_SUBMODULES | 65536 |
+| Checkout.STRATEGY. UPDATE_SUBMODULES_IF_CHANGED | 131072 |
+
diff --git a/api/checkout_options/index.md b/api/checkout_options/index.md
new file mode 100644
index 0000000..c9c8b6b
--- /dev/null
+++ b/api/checkout_options/index.md
@@ -0,0 +1,38 @@
+---
+layout: default
+menu_item: api
+title: CheckoutOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var checkoutOptions = new CheckoutOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  ancestorLabel | String |
+|  baseline | Tree |
+|  checkoutStrategy | Number |
+|  dirMode | Number |
+|  disableFilters | Number |
+|  fileMode | Number |
+|  fileOpenFlags | Number |
+|  notifyCb | CheckoutNotifyCb |
+|  notifyFlags | Number |
+|  notifyPayload | Void |
+|  ourLabel | String |
+|  paths | Strarray |
+|  progressCb | CheckoutProgressCb |
+|  progressPayload | Void |
+|  targetDirectory | String |
+|  theirLabel | String |
+|  version | Number |
+
diff --git a/api/cherrypick/index.md b/api/cherrypick/index.md
new file mode 100644
index 0000000..d19e678
--- /dev/null
+++ b/api/cherrypick/index.md
@@ -0,0 +1,65 @@
+---
+layout: default
+menu_item: api
+title: Cherrypick
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "cherrypick": "#cherrypick"
+  "commit": "#commit"
+  "initOptions": "#initOptions"
+---
+
+## Cherrypick. cherrypick Sync Experimental  
+
+```js
+var result = Cherrypick.cherrypick(repo, commit, cherrypick_options);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository to cherry-pick |
+| commit | [Commit](/api/commit/) | the commit to cherry-pick |
+| cherrypick_options | [CherrypickOptions](/api/cherrypick_options/) | the cherry-pick options (or null for defaults) |
+
+| Returns |  |
+| --- | --- |
+| Number |  zero on success, -1 on failure. |
+
+## Cherrypick. commit Async Experimental  
+
+```js
+Cherrypick.commit(repo, cherrypick_commit, our_commit, mainline, merge_options).then(function(index) {
+  // Use index
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository that contains the given commits |
+| cherrypick_commit | [Commit](/api/commit/) | the commit to cherry-pick |
+| our_commit | [Commit](/api/commit/) | the commit to revert against (eg, HEAD) |
+| mainline | Number | the parent of the revert commit, if it is a merge |
+| merge_options | [MergeOptions](/api/merge_options/) | the merge options (or null for defaults) |
+
+| Returns |  |
+| --- | --- |
+| [Index](/api/index/) |  |
+
+## Cherrypick. initOptions Sync Experimental  
+
+```js
+var result = Cherrypick.initOptions(opts, version);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| opts | [CherrypickOptions](/api/cherrypick_options/) | the `git_cherrypick_options` struct to initialize |
+| version | Number | Version of struct; pass `GIT_CHERRYPICK_OPTIONS_VERSION` |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
diff --git a/api/cherrypick_options/index.md b/api/cherrypick_options/index.md
new file mode 100644
index 0000000..0cf6e7f
--- /dev/null
+++ b/api/cherrypick_options/index.md
@@ -0,0 +1,25 @@
+---
+layout: default
+menu_item: api
+title: CherrypickOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var cherrypickOptions = new CherrypickOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  checkoutOpts | CheckoutOptions |
+|  mainline | Number |
+|  mergeOpts | MergeOptions |
+|  version | Number |
+
diff --git a/api/clone/index.md b/api/clone/index.md
new file mode 100644
index 0000000..ff31307
--- /dev/null
+++ b/api/clone/index.md
@@ -0,0 +1,59 @@
+---
+layout: default
+menu_item: api
+title: Clone
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "clone": "#clone"
+  "initOptions": "#initOptions"
+  "LOCAL": "#LOCAL"
+---
+
+## Clone. clone Async  
+
+```js
+Clone.clone(url, local_path, [options]).then(function(repository) {
+  // Use repository
+});
+```
+
+Patch repository cloning to automatically coerce objects.
+
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| url | String | url of the repository |
+| local_path | String | local path to store repository |
+| [options] | [CloneOptions](/api/clone_options/) |  |
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) | repo |
+
+## Clone. initOptions Sync  
+
+```js
+var result = Clone.initOptions(opts, version);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| opts | [CloneOptions](/api/clone_options/) | The `git_clone_options` struct to initialize |
+| version | Number | Version of struct; pass `GIT_CLONE_OPTIONS_VERSION` |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
+## Clone. LOCAL ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Clone.LOCAL. AUTO | 0 |
+| Clone.LOCAL. LOCAL | 1 |
+| Clone.LOCAL. NO_LOCAL | 2 |
+| Clone.LOCAL. NO_LINKS | 3 |
+
diff --git a/api/clone_options/index.md b/api/clone_options/index.md
new file mode 100644
index 0000000..165da6d
--- /dev/null
+++ b/api/clone_options/index.md
@@ -0,0 +1,30 @@
+---
+layout: default
+menu_item: api
+title: CloneOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var cloneOptions = new CloneOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  bare | Number |
+|  checkoutBranch | String |
+|  checkoutOpts | CheckoutOptions |
+|  local | Number |
+|  remoteCallbacks | RemoteCallbacks |
+|  remoteCbPayload | Void |
+|  repositoryCbPayload | Void |
+|  signature | Signature |
+|  version | Number |
+
diff --git a/api/commit/index.md b/api/commit/index.md
new file mode 100644
index 0000000..428e261
--- /dev/null
+++ b/api/commit/index.md
@@ -0,0 +1,484 @@
+---
+layout: default
+menu_item: api
+title: Commit
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "createV": "#createV"
+  "lookup": "#lookup"
+  "lookupPrefix": "#lookupPrefix"
+  "#amend": "#amend"
+  "#author": "#author"
+  "#committer": "#committer"
+  "#date": "#date"
+  "#free": "#free"
+  "#getEntry": "#getEntry"
+  "#getParents": "#getParents"
+  "#getTree": "#getTree"
+  "#history": "#history"
+  "#id": "#id"
+  "#message": "#message"
+  "#messageEncoding": "#messageEncoding"
+  "#messageRaw": "#messageRaw"
+  "#nthGenAncestor": "#nthGenAncestor"
+  "#owner": "#owner"
+  "#parent": "#parent"
+  "#parentId": "#parentId"
+  "#parentcount": "#parentcount"
+  "#parents": "#parents"
+  "#rawHeader": "#rawHeader"
+  "#sha": "#sha"
+  "#summary": "#summary"
+  "#time": "#time"
+  "#timeMs": "#timeMs"
+  "#timeOffset": "#timeOffset"
+  "#tree": "#tree"
+  "#treeId": "#treeId"
+---
+
+## Commit. create Sync  
+
+```js
+var oid = Commit.create(repo, update_ref, author, committer, message_encoding, message, tree, parent_count, parents);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where to store the commit |
+| update_ref | String | If not NULL, name of the reference that will be updated to point to this commit. If the reference is not direct, it will be resolved to a direct reference. Use "HEAD" to update the HEAD of the current branch and make it point to this commit. If the reference doesn't exist yet, it will be created. If it does exist, the first parent must be the tip of this branch. |
+| author | [Signature](/api/signature/) | Signature with author and author time of commit |
+| committer | [Signature](/api/signature/) | Signature with committer and * commit time of commit |
+| message_encoding | String | The encoding for the message in the commit, represented with a standard encoding name. E.g. "UTF-8". If NULL, no encoding header is written and UTF-8 is assumed. |
+| message | String | Full message for this commit |
+| tree | [Tree](/api/tree/) | An instance of a `git_tree` object that will be used as the tree for the commit. This tree object must also be owned by the given `repo`. |
+| parent_count | Number | Number of parents for this commit |
+| parents | Array | Array of `parent_count` pointers to `git_commit` objects that will be used as the parents for this commit. This array may be NULL if `parent_count` is 0 (root commit). All the given commits must be owned by the `repo`. |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
+## Commit. createV Sync  
+
+```js
+var result = Commit.createV(id, repo, update_ref, author, committer, message_encoding, message, tree, parent_count);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) |  |
+| repo | [Repository](/api/repository/) |  |
+| update_ref | String |  |
+| author | [Signature](/api/signature/) |  |
+| committer | [Signature](/api/signature/) |  |
+| message_encoding | String |  |
+| message | String |  |
+| tree | [Tree](/api/tree/) |  |
+| parent_count | Number |  |
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Commit. lookup Async  
+
+```js
+Commit.lookup(repo, id).then(function(commit) {
+  // Use commit
+});
+```
+
+Retrieves the commit pointed to by the oid
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repo that the commit lives in |
+| id | String, [Oid](/api/oid/), [Commit](/api/commit/) | The commit to lookup |
+
+| Returns |  |
+| --- | --- |
+| [Commit](/api/commit/) |  |
+
+## Commit. lookupPrefix Async  
+
+```js
+Commit.lookupPrefix(repo, id, len).then(function(commit) {
+  // Use commit
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repo to use when locating the commit. |
+| id | [Oid](/api/oid/) | identity of the commit to locate. If the object is an annotated tag it will be peeled back to the commit. |
+| len | Number | the length of the short identifier |
+
+| Returns |  |
+| --- | --- |
+| [Commit](/api/commit/) |  |
+
+## Commit# amend Sync  
+
+```js
+var result = commit.amend(id, update_ref, author, committer, message_encoding, message, tree);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) |  |
+| update_ref | String |  |
+| author | [Signature](/api/signature/) |  |
+| committer | [Signature](/api/signature/) |  |
+| message_encoding | String |  |
+| message | String |  |
+| tree | [Tree](/api/tree/) |  |
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Commit# author Sync  
+
+```js
+var signature = commit.author();
+```
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) |  the author of a commit |
+
+## Commit# committer Sync  
+
+```js
+var signature = commit.committer();
+```
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) |  the committer of a commit |
+
+## Commit# date Sync  
+
+```js
+var date = commit.date();
+```
+
+Retrieve the commit time as a Date object.
+
+| Returns |  |
+| --- | --- |
+| Date |  |
+
+## Commit# free Sync  
+
+```js
+commit.free();
+```
+
+## Commit# getEntry Async  
+
+```js
+commit.getEntry(path).then(function(treeEntry) {
+  // Use treeEntry
+});
+```
+
+Retrieve the entry represented by path for this commit.
+Path must be relative to repository root.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String |  |
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) |  |
+
+## Commit# getParents Async  
+
+```js
+commit.getParents(limit, callback).then(function(arrayCommit) {
+  // Use arrayCommit
+});
+```
+
+Retrieve the commit's parents as commit objects.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| limit | number | Optional amount of parents to return. |
+| callback | Function |  |
+
+| Returns |  |
+| --- | --- |
+| Array<[Commit](/api/commit/)> | array of commits |
+
+## Commit# getTree Async  
+
+```js
+commit.getTree().then(function(tree) {
+  // Use tree
+});
+```
+
+Get the tree associated with this commit.
+
+
+| Returns |  |
+| --- | --- |
+| [Tree](/api/tree/) |  |
+
+## Commit# history Sync  
+
+```js
+var eventEmitter = commit.history();
+
+eventEmitter.on('commit', function(commit) {
+  // Use commit
+});
+
+eventEmitter.on('end', function(commits) {
+  // Use commits
+});
+
+eventEmitter.on('error', function(error) {
+  // Use error
+});
+
+eventEmitter.start()
+```
+
+Walk the history from this commit backwards.
+
+An EventEmitter is returned that will emit a "commit" event for each
+commit in the history, and one "end" event when the walk is completed.
+Don't forget to call `start()` on the returned event.
+
+
+| Fires | Sends |
+| --- | --- |
+| commit | [Commit](/api/commit/) |
+| end | Array<[Commit](/api/commit/)> |
+| error | Error  |
+
+| Returns |  |
+| --- | --- |
+| EventEmitter |  |
+
+## Commit# id Sync  
+
+```js
+var oid = commit.id();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  object identity for the commit. |
+
+## Commit# message Sync  
+
+```js
+var string = commit.message();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the message of a commit |
+
+## Commit# messageEncoding Sync  
+
+```js
+var string = commit.messageEncoding();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  NULL, or the encoding |
+
+## Commit# messageRaw Sync  
+
+```js
+var string = commit.messageRaw();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the raw message of a commit |
+
+## Commit# nthGenAncestor Async  
+
+```js
+commit.nthGenAncestor(n).then(function(commit) {
+  // Use commit
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| n | Number | the requested generation |
+
+| Returns |  |
+| --- | --- |
+| [Commit](/api/commit/) | the ancestor commit |
+
+## Commit# owner Sync  
+
+```js
+var repository = commit.owner();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  Repository that contains this commit. |
+
+## Commit# parent Async  
+
+```js
+commit.parent(n).then(function(commit) {
+  // Use commit
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| n | Number | the position of the parent (from 0 to `parentcount`) |
+
+| Returns |  |
+| --- | --- |
+| [Commit](/api/commit/) | the parent commit |
+
+## Commit# parentId Sync  
+
+```js
+var oid = commit.parentId(n);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| n | Number | the position of the parent (from 0 to `parentcount`) |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the id of the parent, NULL on error. |
+
+## Commit# parentcount Sync  
+
+```js
+var result = commit.parentcount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  integer of count of parents |
+
+## Commit# parents Sync  
+
+```js
+var arrayOids = commit.parents(callback);
+```
+
+Retrieve the commit"s parent shas.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| callback | Function |  |
+
+| Returns |  |
+| --- | --- |
+| Array<Oids> | array of oids |
+
+## Commit# rawHeader Sync  
+
+```js
+var string = commit.rawHeader();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the header text of the commit |
+
+## Commit# sha Sync  
+
+```js
+var string = commit.sha();
+```
+
+Retrieve the SHA.
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## Commit# summary Sync  
+
+```js
+var string = commit.summary();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the summary of a commit or NULL on error |
+
+## Commit# time Sync  
+
+```js
+var result = commit.time();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the time of a commit |
+
+## Commit# timeMs Sync  
+
+```js
+var number = commit.timeMs();
+```
+
+Retrieve the commit time as a unix timestamp.
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Commit# timeOffset Sync  
+
+```js
+var result = commit.timeOffset();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  positive or negative timezone offset, in minutes from UTC |
+
+## Commit# tree Sync  
+
+```js
+var result = commit.tree(tree_out);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| tree_out | [Tree](/api/tree/) | pointer where to store the tree object |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Commit# treeId Sync  
+
+```js
+var oid = commit.treeId();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the id of tree pointed to by commit. |
+
diff --git a/api/config/index.md b/api/config/index.md
new file mode 100644
index 0000000..f17a11d
--- /dev/null
+++ b/api/config/index.md
@@ -0,0 +1,85 @@
+---
+layout: default
+menu_item: api
+title: Config
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#setInt64": "#setInt64"
+  "#setMultivar": "#setMultivar"
+  "#setString": "#setString"
+  "#snapshot": "#snapshot"
+  "LEVEL": "#LEVEL"
+---
+
+## Config# setInt64 Sync Experimental  
+
+```js
+var result = config.setInt64(name, value);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String | the variable's name |
+| value | Number | Long integer value for the variable |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Config# setMultivar Sync Experimental  
+
+```js
+var result = config.setMultivar(name, regexp, value);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String | the variable's name |
+| regexp | String | a regular expression to indicate which values to replace |
+| value | String | the new value. |
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Config# setString Sync Experimental  
+
+```js
+var result = config.setString(name, value);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String | the variable's name |
+| value | String | the string to store. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Config# snapshot Async Experimental  
+
+```js
+config.snapshot().then(function(config) {
+  // Use config
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Config](/api/config/) |  |
+
+## Config. LEVEL ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Config.LEVEL. SYSTEM | 1 |
+| Config.LEVEL. XDG | 2 |
+| Config.LEVEL. GLOBAL | 3 |
+| Config.LEVEL. LOCAL | 4 |
+| Config.LEVEL. APP | 5 |
+| Config.LEVEL. HIGHEST_LEVEL | -1 |
+
diff --git a/api/config_entry/index.md b/api/config_entry/index.md
new file mode 100644
index 0000000..71e4c4b
--- /dev/null
+++ b/api/config_entry/index.md
@@ -0,0 +1,20 @@
+---
+layout: default
+menu_item: api
+title: ConfigEntry
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  level | Number |
+|  name | String |
+|  value | String |
+
diff --git a/api/convenient_hunk/index.md b/api/convenient_hunk/index.md
new file mode 100644
index 0000000..8bcd239
--- /dev/null
+++ b/api/convenient_hunk/index.md
@@ -0,0 +1,51 @@
+---
+layout: default
+menu_item: api
+title: ConvenientHunk
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#header": "#header"
+  "#lines": "#lines"
+  "#size": "#size"
+---
+
+## ConvenientHunk# header Sync  
+
+```js
+var string = convenientHunk.header();
+```
+
+Diff header string that represents the context of this hunk
+of the diff. Something like `@@ -169,14 +167,12 @@ ...`
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## ConvenientHunk# lines Sync  
+
+```js
+var string = convenientHunk.lines();
+```
+
+The lines in this hunk
+
+| Returns |  |
+| --- | --- |
+| String | array of strings |
+
+## ConvenientHunk# size Sync  
+
+```js
+var number = convenientHunk.size();
+```
+
+Number of lines in this hunk
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
diff --git a/api/convenient_patch/index.md b/api/convenient_patch/index.md
new file mode 100644
index 0000000..49b5ef4
--- /dev/null
+++ b/api/convenient_patch/index.md
@@ -0,0 +1,193 @@
+---
+layout: default
+menu_item: api
+title: ConvenientPatch
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#hunks": "#hunks"
+  "#isAdded": "#isAdded"
+  "#isCopied": "#isCopied"
+  "#isDeleted": "#isDeleted"
+  "#isIgnored": "#isIgnored"
+  "#isModified": "#isModified"
+  "#isRenamed": "#isRenamed"
+  "#isTypeChange": "#isTypeChange"
+  "#isUnmodified": "#isUnmodified"
+  "#isUntracked": "#isUntracked"
+  "#newFile": "#newFile"
+  "#oldFile": "#oldFile"
+  "#size": "#size"
+  "#status": "#status"
+---
+
+## ConvenientPatch# hunks Sync  
+
+```js
+var convenientHunk = convenientPatch.hunks();
+```
+
+The hunks in this patch
+
+| Returns |  |
+| --- | --- |
+| [ConvenientHunk](/api/convenient_hunk/) | an array of ConvenientHunks |
+
+## ConvenientPatch# isAdded Sync  
+
+```js
+var boolean = convenientPatch.isAdded();
+```
+
+Is this an added patch?
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## ConvenientPatch# isCopied Sync  
+
+```js
+var boolean = convenientPatch.isCopied();
+```
+
+Is this a copied patch?
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## ConvenientPatch# isDeleted Sync  
+
+```js
+var boolean = convenientPatch.isDeleted();
+```
+
+Is this a deleted patch?
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## ConvenientPatch# isIgnored Sync  
+
+```js
+var boolean = convenientPatch.isIgnored();
+```
+
+Is this an ignored patch?
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## ConvenientPatch# isModified Sync  
+
+```js
+var boolean = convenientPatch.isModified();
+```
+
+Is this an modified patch?
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## ConvenientPatch# isRenamed Sync  
+
+```js
+var boolean = convenientPatch.isRenamed();
+```
+
+Is this a renamed patch?
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## ConvenientPatch# isTypeChange Sync  
+
+```js
+var boolean = convenientPatch.isTypeChange();
+```
+
+Is this a type change?
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## ConvenientPatch# isUnmodified Sync  
+
+```js
+var boolean = convenientPatch.isUnmodified();
+```
+
+Is this an unmodified patch?
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## ConvenientPatch# isUntracked Sync  
+
+```js
+var boolean = convenientPatch.isUntracked();
+```
+
+Is this an untracked patch?
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## ConvenientPatch# newFile Sync  
+
+```js
+var string = convenientPatch.newFile();
+```
+
+New name of the file
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## ConvenientPatch# oldFile Sync  
+
+```js
+var string = convenientPatch.oldFile();
+```
+
+Old name of the file
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## ConvenientPatch# size Sync  
+
+```js
+var number = convenientPatch.size();
+```
+
+The number of hunks in this patch
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## ConvenientPatch# status Sync  
+
+```js
+var number = convenientPatch.status();
+```
+
+The status of this patch (unmodified, added, deleted)
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
diff --git a/api/cred/index.md b/api/cred/index.md
new file mode 100644
index 0000000..b6b42b2
--- /dev/null
+++ b/api/cred/index.md
@@ -0,0 +1,111 @@
+---
+layout: default
+menu_item: api
+title: Cred
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "defaultNew": "#defaultNew"
+  "sshKeyFromAgent": "#sshKeyFromAgent"
+  "sshKeyNew": "#sshKeyNew"
+  "usernameNew": "#usernameNew"
+  "userpassPlaintextNew": "#userpassPlaintextNew"
+  "#hasUsername": "#hasUsername"
+  "TYPE": "#TYPE"
+---
+
+## Cred. defaultNew Sync  
+
+```js
+var cred = Cred.defaultNew();
+```
+
+| Returns |  |
+| --- | --- |
+| [Cred](/api/cred/) |  |
+
+## Cred. sshKeyFromAgent Sync  
+
+```js
+var cred = Cred.sshKeyFromAgent(username);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| username | String | username to use to authenticate |
+
+| Returns |  |
+| --- | --- |
+| [Cred](/api/cred/) | The newly created credential object. |
+
+## Cred. sshKeyNew Sync  
+
+```js
+var cred = Cred.sshKeyNew(username, publickey, privatekey, passphrase);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| username | String | username to use to authenticate |
+| publickey | String | The path to the public key of the credential. |
+| privatekey | String | The path to the private key of the credential. |
+| passphrase | String | The passphrase of the credential. |
+
+| Returns |  |
+| --- | --- |
+| [Cred](/api/cred/) | The newly created credential object. |
+
+## Cred. usernameNew Async  
+
+```js
+Cred.usernameNew(username).then(function(cred) {
+  // Use cred
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| username | String |  |
+
+| Returns |  |
+| --- | --- |
+| [Cred](/api/cred/) |  |
+
+## Cred. userpassPlaintextNew Sync  
+
+```js
+var cred = Cred.userpassPlaintextNew(username, password);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| username | String | The username of the credential. |
+| password | String | The password of the credential. |
+
+| Returns |  |
+| --- | --- |
+| [Cred](/api/cred/) | The newly created credential object. |
+
+## Cred# hasUsername Sync  
+
+```js
+var result = cred.hasUsername();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the credential object has non-NULL username, 0 otherwise |
+
+## Cred. TYPE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Cred.TYPE. USERPASS_PLAINTEXT | 1 |
+| Cred.TYPE. SSH_KEY | 2 |
+| Cred.TYPE. SSH_CUSTOM | 4 |
+| Cred.TYPE. DEFAULT | 8 |
+| Cred.TYPE. SSH_INTERACTIVE | 16 |
+| Cred.TYPE. USERNAME | 32 |
+
diff --git a/api/cred_username/index.md b/api/cred_username/index.md
new file mode 100644
index 0000000..4332194
--- /dev/null
+++ b/api/cred_username/index.md
@@ -0,0 +1,19 @@
+---
+layout: default
+menu_item: api
+title: CredUsername
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  parent | Cred |
+|  username | Char [1] |
+
diff --git a/api/cred_userpass_payload/index.md b/api/cred_userpass_payload/index.md
new file mode 100644
index 0000000..3d94c7b
--- /dev/null
+++ b/api/cred_userpass_payload/index.md
@@ -0,0 +1,19 @@
+---
+layout: default
+menu_item: api
+title: CredUserpassPayload
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  password | String |
+|  username | String |
+
diff --git a/api/cvar_map/index.md b/api/cvar_map/index.md
new file mode 100644
index 0000000..017b356
--- /dev/null
+++ b/api/cvar_map/index.md
@@ -0,0 +1,20 @@
+---
+layout: default
+menu_item: api
+title: CvarMap
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  cvarType | Number |
+|  mapValue | Number |
+|  strMatch | String |
+
diff --git a/api/describe_format_options/index.md b/api/describe_format_options/index.md
new file mode 100644
index 0000000..0f57ba4
--- /dev/null
+++ b/api/describe_format_options/index.md
@@ -0,0 +1,21 @@
+---
+layout: default
+menu_item: api
+title: DescribeFormatOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  abbreviatedSize | Number |
+|  alwaysUseLongFormat | Number |
+|  dirtySuffix | String |
+|  version | Number |
+
diff --git a/api/describe_options/index.md b/api/describe_options/index.md
new file mode 100644
index 0000000..361a229
--- /dev/null
+++ b/api/describe_options/index.md
@@ -0,0 +1,23 @@
+---
+layout: default
+menu_item: api
+title: DescribeOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  describeStrategy | Number |
+|  maxCandidatesTags | Number |
+|  onlyFollowFirstParent | Number |
+|  pattern | String |
+|  showCommitOidAsFallback | Number |
+|  version | Number |
+
diff --git a/api/diff/index.md b/api/diff/index.md
new file mode 100644
index 0000000..15a6aad
--- /dev/null
+++ b/api/diff/index.md
@@ -0,0 +1,304 @@
+---
+layout: default
+menu_item: api
+title: Diff
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "indexToWorkdir": "#indexToWorkdir"
+  "treeToIndex": "#treeToIndex"
+  "treeToTree": "#treeToTree"
+  "treeToWorkdir": "#treeToWorkdir"
+  "treeToWorkdirWithIndex": "#treeToWorkdirWithIndex"
+  "#findSimilar": "#findSimilar"
+  "#getDelta": "#getDelta"
+  "#getPerfdata": "#getPerfdata"
+  "#numDeltas": "#numDeltas"
+  "#patches": "#patches"
+  "DELTA": "#DELTA"
+  "FIND": "#FIND"
+  "FLAG": "#FLAG"
+  "FORMAT": "#FORMAT"
+  "FORMAT_EMAIL_FLAGS": "#FORMAT_EMAIL_FLAGS"
+  "LINE": "#LINE"
+  "OPTION": "#OPTION"
+  "STATS_FORMAT": "#STATS_FORMAT"
+---
+
+## Diff. indexToWorkdir Async  
+
+```js
+Diff.indexToWorkdir(repo, index, opts).then(function(diff) {
+  // Use diff
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository. |
+| index | [Index](/api/index/) | The index to diff from; repo index used if NULL. |
+| opts | [DiffOptions](/api/diff_options/) | Structure with options to influence diff or NULL for defaults. |
+
+| Returns |  |
+| --- | --- |
+| [Diff](/api/diff/) |  |
+
+## Diff. treeToIndex Async  
+
+```js
+Diff.treeToIndex(repo, old_tree, index, opts).then(function(diff) {
+  // Use diff
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository containing the tree and index. |
+| old_tree | [Tree](/api/tree/) | A git_tree object to diff from, or NULL for empty tree. |
+| index | [Index](/api/index/) | The index to diff with; repo index used if NULL. |
+| opts | [DiffOptions](/api/diff_options/) | Structure with options to influence diff or NULL for defaults. |
+
+| Returns |  |
+| --- | --- |
+| [Diff](/api/diff/) |  |
+
+## Diff. treeToTree Async  
+
+```js
+Diff.treeToTree(repo, old_tree, new_tree, opts).then(function(diff) {
+  // Use diff
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository containing the trees. |
+| old_tree | [Tree](/api/tree/) | A git_tree object to diff from, or NULL for empty tree. |
+| new_tree | [Tree](/api/tree/) | A git_tree object to diff to, or NULL for empty tree. |
+| opts | [DiffOptions](/api/diff_options/) | Structure with options to influence diff or NULL for defaults. |
+
+| Returns |  |
+| --- | --- |
+| [Diff](/api/diff/) |  |
+
+## Diff. treeToWorkdir Async  
+
+```js
+Diff.treeToWorkdir(repo, old_tree, opts).then(function(diff) {
+  // Use diff
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository containing the tree. |
+| old_tree | [Tree](/api/tree/) | A git_tree object to diff from, or NULL for empty tree. |
+| opts | [DiffOptions](/api/diff_options/) | Structure with options to influence diff or NULL for defaults. |
+
+| Returns |  |
+| --- | --- |
+| [Diff](/api/diff/) |  |
+
+## Diff. treeToWorkdirWithIndex Async  
+
+```js
+Diff.treeToWorkdirWithIndex(repo, old_tree, opts).then(function(diff) {
+  // Use diff
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository containing the tree. |
+| old_tree | [Tree](/api/tree/) | A git_tree object to diff from, or NULL for empty tree. |
+| opts | [DiffOptions](/api/diff_options/) | Structure with options to influence diff or NULL for defaults. |
+
+| Returns |  |
+| --- | --- |
+| [Diff](/api/diff/) |  |
+
+## Diff# findSimilar Async  
+
+```js
+diff.findSimilar(options).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| options | [DiffFindOptions](/api/diff_find_options/) | Control how detection should be run, NULL for defaults |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, -1 on failure |
+
+## Diff# getDelta Sync  
+
+```js
+var diffDelta = diff.getDelta(idx);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| idx | Number | Index into diff list |
+
+| Returns |  |
+| --- | --- |
+| [DiffDelta](/api/diff_delta/) |  |
+
+## Diff# getPerfdata Async  
+
+```js
+diff.getPerfdata().then(function(diffPerfdata) {
+  // Use diffPerfdata
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [DiffPerfdata](/api/diff_perfdata/) | Structure to be filled with diff performance data |
+
+## Diff# numDeltas Sync  
+
+```js
+var result = diff.numDeltas();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  Count of number of deltas in the list |
+
+## Diff# patches Sync  
+
+```js
+var convenientPatch = diff.patches();
+```
+
+Retrieve patches in this difflist
+
+
+| Returns |  |
+| --- | --- |
+| [ConvenientPatch](/api/convenient_patch/) | an array of ConvenientPatches |
+
+## Diff. DELTA ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Diff.DELTA. UNMODIFIED | 0 |
+| Diff.DELTA. ADDED | 1 |
+| Diff.DELTA. DELETED | 2 |
+| Diff.DELTA. MODIFIED | 3 |
+| Diff.DELTA. RENAMED | 4 |
+| Diff.DELTA. COPIED | 5 |
+| Diff.DELTA. IGNORED | 6 |
+| Diff.DELTA. UNTRACKED | 7 |
+| Diff.DELTA. TYPECHANGE | 8 |
+| Diff.DELTA. UNREADABLE | 9 |
+
+## Diff. FIND ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Diff.FIND. BY_CONFIG | 0 |
+| Diff.FIND. RENAMES | 1 |
+| Diff.FIND. RENAMES_FROM_REWRITES | 2 |
+| Diff.FIND. COPIES | 4 |
+| Diff.FIND. COPIES_FROM_UNMODIFIED | 8 |
+| Diff.FIND. REWRITES | 16 |
+| Diff.FIND. BREAK_REWRITES | 32 |
+| Diff.FIND. AND_BREAK_REWRITES | 48 |
+| Diff.FIND. FOR_UNTRACKED | 64 |
+| Diff.FIND. ALL | 255 |
+| Diff.FIND. IGNORE_LEADING_WHITESPACE | 0 |
+| Diff.FIND. IGNORE_WHITESPACE | 4096 |
+| Diff.FIND. DONT_IGNORE_WHITESPACE | 8192 |
+| Diff.FIND. EXACT_MATCH_ONLY | 16384 |
+| Diff.FIND. BREAK_REWRITES_FOR_RENAMES_ONLY | 32768 |
+| Diff.FIND. REMOVE_UNMODIFIED | 65536 |
+
+## Diff. FLAG ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Diff.FLAG. BINARY | 1 |
+| Diff.FLAG. NOT_BINARY | 2 |
+| Diff.FLAG. VALID_ID | 4 |
+
+## Diff. FORMAT ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Diff.FORMAT. PATCH | 1 |
+| Diff.FORMAT. PATCH_HEADER | 2 |
+| Diff.FORMAT. RAW | 3 |
+| Diff.FORMAT. NAME_ONLY | 4 |
+| Diff.FORMAT. NAME_STATUS | 5 |
+
+## Diff. FORMAT_EMAIL_FLAGS ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Diff.FORMAT_EMAIL_FLAGS. FORMAT_EMAIL_NONE | 0 |
+| Diff.FORMAT_EMAIL_FLAGS. FORMAT_EMAIL_EXCLUDE_SUBJECT_PATCH_MARKER | 1 |
+
+## Diff. LINE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Diff.LINE. CONTEXT | 32 |
+| Diff.LINE. ADDITION | 43 |
+| Diff.LINE. DELETION | 45 |
+| Diff.LINE. CONTEXT_EOFNL | 61 |
+| Diff.LINE. ADD_EOFNL | 62 |
+| Diff.LINE. DEL_EOFNL | 60 |
+| Diff.LINE. FILE_HDR | 70 |
+| Diff.LINE. HUNK_HDR | 72 |
+| Diff.LINE. BINARY | 66 |
+
+## Diff. OPTION ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Diff.OPTION. NORMAL | 0 |
+| Diff.OPTION. REVERSE | 1 |
+| Diff.OPTION. INCLUDE_IGNORED | 2 |
+| Diff.OPTION. RECURSE_IGNORED_DIRS | 4 |
+| Diff.OPTION. INCLUDE_UNTRACKED | 8 |
+| Diff.OPTION. RECURSE_UNTRACKED_DIRS | 16 |
+| Diff.OPTION. INCLUDE_UNMODIFIED | 32 |
+| Diff.OPTION. INCLUDE_TYPECHANGE | 64 |
+| Diff.OPTION. INCLUDE_TYPECHANGE_TREES | 128 |
+| Diff.OPTION. IGNORE_FILEMODE | 256 |
+| Diff.OPTION. IGNORE_SUBMODULES | 512 |
+| Diff.OPTION. IGNORE_CASE | 1024 |
+| Diff.OPTION. DISABLE_PATHSPEC_MATCH | 4096 |
+| Diff.OPTION. SKIP_BINARY_CHECK | 8192 |
+| Diff.OPTION. ENABLE_FAST_UNTRACKED_DIRS | 16384 |
+| Diff.OPTION. UPDATE_INDEX | 32768 |
+| Diff.OPTION. INCLUDE_UNREADABLE | 65536 |
+| Diff.OPTION. INCLUDE_UNREADABLE_AS_UNTRACKED | 131072 |
+| Diff.OPTION. FORCE_TEXT | 1048576 |
+| Diff.OPTION. FORCE_BINARY | 2097152 |
+| Diff.OPTION. IGNORE_WHITESPACE | 4194304 |
+| Diff.OPTION. IGNORE_WHITESPACE_CHANGE | 8388608 |
+| Diff.OPTION. IGNORE_WHITESPACE_EOL | 16777216 |
+| Diff.OPTION. SHOW_UNTRACKED_CONTENT | 33554432 |
+| Diff.OPTION. SHOW_UNMODIFIED | 67108864 |
+| Diff.OPTION. PATIENCE | 268435456 |
+| Diff.OPTION. MINIMAL | 536870912 |
+| Diff.OPTION. SHOW_BINARY | 1073741824 |
+
+## Diff. STATS_FORMAT ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Diff.STATS_FORMAT. STATS_NONE | 0 |
+| Diff.STATS_FORMAT. STATS_FULL | 1 |
+| Diff.STATS_FORMAT. STATS_SHORT | 2 |
+| Diff.STATS_FORMAT. STATS_NUMBER | 4 |
+| Diff.STATS_FORMAT. STATS_INCLUDE_SUMMARY | 8 |
+
diff --git a/api/diff_delta/index.md b/api/diff_delta/index.md
new file mode 100644
index 0000000..3a4990a
--- /dev/null
+++ b/api/diff_delta/index.md
@@ -0,0 +1,23 @@
+---
+layout: default
+menu_item: api
+title: DiffDelta
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  flags | Number |
+|  newFile | DiffFile |
+|  nfiles | Number |
+|  oldFile | DiffFile |
+|  similarity | Number |
+|  status | Number |
+
diff --git a/api/diff_file/index.md b/api/diff_file/index.md
new file mode 100644
index 0000000..df956e3
--- /dev/null
+++ b/api/diff_file/index.md
@@ -0,0 +1,22 @@
+---
+layout: default
+menu_item: api
+title: DiffFile
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  flags | Number |
+|  id | Oid |
+|  mode | Number |
+|  path | String |
+|  size | Number |
+
diff --git a/api/diff_find_options/index.md b/api/diff_find_options/index.md
new file mode 100644
index 0000000..62ccae3
--- /dev/null
+++ b/api/diff_find_options/index.md
@@ -0,0 +1,28 @@
+---
+layout: default
+menu_item: api
+title: DiffFindOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var diffFindOptions = new DiffFindOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  breakRewriteThreshold | Number |
+|  copyThreshold | Number |
+|  flags | Number |
+|  renameFromRewriteThreshold | Number |
+|  renameLimit | Number |
+|  renameThreshold | Number |
+|  version | Number |
+
diff --git a/api/diff_hunk/index.md b/api/diff_hunk/index.md
new file mode 100644
index 0000000..5bc9c9b
--- /dev/null
+++ b/api/diff_hunk/index.md
@@ -0,0 +1,23 @@
+---
+layout: default
+menu_item: api
+title: DiffHunk
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  header | String |
+|  headerLen | Number |
+|  newLines | Number |
+|  newStart | Number |
+|  oldLines | Number |
+|  oldStart | Number |
+
diff --git a/api/diff_line/index.md b/api/diff_line/index.md
new file mode 100644
index 0000000..9b9ca7e
--- /dev/null
+++ b/api/diff_line/index.md
@@ -0,0 +1,24 @@
+---
+layout: default
+menu_item: api
+title: DiffLine
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  content | String |
+|  contentLen | Number |
+|  contentOffset | Number |
+|  newLineno | Number |
+|  numLines | Number |
+|  oldLineno | Number |
+|  origin | Number |
+
diff --git a/api/diff_options/index.md b/api/diff_options/index.md
new file mode 100644
index 0000000..23e4dd3
--- /dev/null
+++ b/api/diff_options/index.md
@@ -0,0 +1,33 @@
+---
+layout: default
+menu_item: api
+title: DiffOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var diffOptions = new DiffOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  contextLines | Number |
+|  flags | Number |
+|  idAbbrev | Number |
+|  ignoreSubmodules | Number |
+|  interhunkLines | Number |
+|  maxSize | Number |
+|  newPrefix | String |
+|  notifyCb | DiffNotifyCb |
+|  notifyPayload | Void |
+|  oldPrefix | String |
+|  pathspec | Strarray |
+|  version | Number |
+
diff --git a/api/diff_perfdata/index.md b/api/diff_perfdata/index.md
new file mode 100644
index 0000000..2a4decb
--- /dev/null
+++ b/api/diff_perfdata/index.md
@@ -0,0 +1,20 @@
+---
+layout: default
+menu_item: api
+title: DiffPerfdata
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  oidCalculations | Number |
+|  statCalls | Number |
+|  version | Number |
+
diff --git a/api/enums/index.md b/api/enums/index.md
new file mode 100644
index 0000000..a776907
--- /dev/null
+++ b/api/enums/index.md
@@ -0,0 +1,66 @@
+---
+layout: default
+menu_item: api
+title: Enums
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "CVAR": "#CVAR"
+  "DIRECTION": "#DIRECTION"
+  "FEATURE": "#FEATURE"
+  "IDXENTRY_EXTENDED_FLAG": "#IDXENTRY_EXTENDED_FLAG"
+  "INDXENTRY_FLAG": "#INDXENTRY_FLAG"
+---
+
+## Enums. CVAR ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Enums.CVAR. FALSE | 0 |
+| Enums.CVAR. TRUE | 1 |
+| Enums.CVAR. INT32 | 2 |
+| Enums.CVAR. STRING | 3 |
+
+## Enums. DIRECTION ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Enums.DIRECTION. FETCH | 0 |
+| Enums.DIRECTION. PUSH | 1 |
+
+## Enums. FEATURE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Enums.FEATURE. THREADS | 1 |
+| Enums.FEATURE. HTTPS | 2 |
+| Enums.FEATURE. SSH | 4 |
+
+## Enums. IDXENTRY_EXTENDED_FLAG ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_INTENT_TO_ADD | 8192 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_SKIP_WORKTREE | 16384 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_EXTENDED2 | 32768 |
+| Enums.IDXENTRY_EXTENDED_FLAG. S | 24576 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_UPDATE | 1 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_REMOVE | 2 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_UPTODATE | 4 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_ADDED | 8 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_HASHED | 16 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_UNHASHED | 32 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_WT_REMOVE | 64 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_CONFLICTED | 128 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_UNPACKED | 256 |
+| Enums.IDXENTRY_EXTENDED_FLAG. IDXENTRY_NEW_SKIP_WORKTREE | 512 |
+
+## Enums. INDXENTRY_FLAG ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Enums.INDXENTRY_FLAG. IDXENTRY_EXTENDED | 16384 |
+| Enums.INDXENTRY_FLAG. IDXENTRY_VALID | 32768 |
+
diff --git a/api/error/index.md b/api/error/index.md
new file mode 100644
index 0000000..9659d14
--- /dev/null
+++ b/api/error/index.md
@@ -0,0 +1,82 @@
+---
+layout: default
+menu_item: api
+title: Error
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "CODE": "#CODE"
+  "ERROR": "#ERROR"
+  "Instance Variables": "#ivars"
+---
+
+## Error. CODE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Error.CODE. OK | 0 |
+| Error.CODE. ERROR | -1 |
+| Error.CODE. ENOTFOUND | -3 |
+| Error.CODE. EEXISTS | -4 |
+| Error.CODE. EAMBIGUOUS | -5 |
+| Error.CODE. EBUFS | -6 |
+| Error.CODE. EUSER | -7 |
+| Error.CODE. EBAREREPO | -8 |
+| Error.CODE. EUNBORNBRANCH | -9 |
+| Error.CODE. EUNMERGED | -10 |
+| Error.CODE. ENONFASTFORWARD | -11 |
+| Error.CODE. EINVALIDSPEC | -12 |
+| Error.CODE. EMERGECONFLICT | -13 |
+| Error.CODE. ELOCKED | -14 |
+| Error.CODE. EMODIFIED | -15 |
+| Error.CODE. EAUTH | -16 |
+| Error.CODE. ECERTIFICATE | -17 |
+| Error.CODE. EAPPLIED | -18 |
+| Error.CODE. EPEEL | -19 |
+| Error.CODE. PASSTHROUGH | -30 |
+| Error.CODE. ITEROVER | -31 |
+
+## Error. ERROR ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Error.ERROR. GITERR_NONE | 0 |
+| Error.ERROR. GITERR_NOMEMORY | 1 |
+| Error.ERROR. GITERR_OS | 2 |
+| Error.ERROR. GITERR_INVALID | 3 |
+| Error.ERROR. GITERR_REFERENCE | 4 |
+| Error.ERROR. GITERR_ZLIB | 5 |
+| Error.ERROR. GITERR_REPOSITORY | 6 |
+| Error.ERROR. GITERR_CONFIG | 7 |
+| Error.ERROR. GITERR_REGEX | 8 |
+| Error.ERROR. GITERR_ODB | 9 |
+| Error.ERROR. GITERR_INDEX | 10 |
+| Error.ERROR. GITERR_OBJECT | 11 |
+| Error.ERROR. GITERR_NET | 12 |
+| Error.ERROR. GITERR_TAG | 13 |
+| Error.ERROR. GITERR_TREE | 14 |
+| Error.ERROR. GITERR_INDEXER | 15 |
+| Error.ERROR. GITERR_SSL | 16 |
+| Error.ERROR. GITERR_SUBMODULE | 17 |
+| Error.ERROR. GITERR_THREAD | 18 |
+| Error.ERROR. GITERR_STASH | 19 |
+| Error.ERROR. GITERR_CHECKOUT | 20 |
+| Error.ERROR. GITERR_FETCHHEAD | 21 |
+| Error.ERROR. GITERR_MERGE | 22 |
+| Error.ERROR. GITERR_SSH | 23 |
+| Error.ERROR. GITERR_FILTER | 24 |
+| Error.ERROR. GITERR_REVERT | 25 |
+| Error.ERROR. GITERR_CALLBACK | 26 |
+| Error.ERROR. GITERR_CHERRYPICK | 27 |
+| Error.ERROR. GITERR_DESCRIBE | 28 |
+| Error.ERROR. GITERR_REBASE | 29 |
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  klass | Number |
+|  message | String |
+
diff --git a/api/filter/index.md b/api/filter/index.md
new file mode 100644
index 0000000..118ed54
--- /dev/null
+++ b/api/filter/index.md
@@ -0,0 +1,121 @@
+---
+layout: default
+menu_item: api
+title: Filter
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "listLength": "#listLength"
+  "listNew": "#listNew"
+  "unregister": "#unregister"
+  "#lookup": "#lookup"
+  "#register": "#register"
+  "MODE": "#MODE"
+  "OPT": "#OPT"
+  "Instance Variables": "#ivars"
+---
+
+## Filter. listLength Sync Experimental  
+
+```js
+var result = Filter.listLength(fl);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| fl | [FilterList](/api/filter_list/) | A filter list |
+
+| Returns |  |
+| --- | --- |
+| Number |  The number of filters in the list |
+
+## Filter. listNew Async Experimental  
+
+```js
+Filter.listNew(repo, mode, options).then(function(filterList) {
+  // Use filterList
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) |  |
+| mode | Number |  |
+| options | Number |  |
+
+| Returns |  |
+| --- | --- |
+| [FilterList](/api/filter_list/) |  |
+
+## Filter. unregister Sync Experimental  
+
+```js
+var result = Filter.unregister(name);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| name | String | The name under which the filter was registered |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, error code 
+<
+0 on failure |
+
+## Filter# lookup Sync Experimental  
+
+```js
+var filter = filter.lookup(name);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String | The name of the filter |
+
+| Returns |  |
+| --- | --- |
+| [Filter](/api/filter/) |  |
+
+## Filter# register Sync Experimental  
+
+```js
+var result = filter.register(name, priority);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String | A name by which the filter can be referenced. Attempting to register with an in-use name will return GIT_EEXISTS. |
+| priority | Number | The priority for filter application |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on successful registry, error code 
+<
+0 on failure |
+
+## Filter. MODE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Filter.MODE. TO_WORKTREE | 0 |
+| Filter.MODE. SMUDGE | 0 |
+| Filter.MODE. TO_ODB | 1 |
+| Filter.MODE. CLEAN | 1 |
+
+## Filter. OPT ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Filter.OPT. DEFAULT | 0 |
+| Filter.OPT. ALLOW_UNSAFE | 1 |
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  attributes | String |
+|  version | Number |
+
diff --git a/api/giterr/index.md b/api/giterr/index.md
new file mode 100644
index 0000000..7856373
--- /dev/null
+++ b/api/giterr/index.md
@@ -0,0 +1,63 @@
+---
+layout: default
+menu_item: api
+title: Giterr
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "errClear": "#errClear"
+  "errDetach": "#errDetach"
+  "errLast": "#errLast"
+  "errSetOom": "#errSetOom"
+  "errSetString": "#errSetString"
+---
+
+## Giterr. errClear Sync Experimental  
+
+```js
+Giterr.errClear();
+```
+
+## Giterr. errDetach Sync Experimental  
+
+```js
+var result = Giterr.errDetach(cpy);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| cpy | [Error](/api/error/) |  |
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Giterr. errLast Sync Experimental  
+
+```js
+var error = Giterr.errLast();
+```
+
+| Returns |  |
+| --- | --- |
+| [Error](/api/error/) |  A git_error object. |
+
+## Giterr. errSetOom Sync Experimental  
+
+```js
+Giterr.errSetOom();
+```
+
+## Giterr. errSetString Sync Experimental  
+
+```js
+Giterr.errSetString(error_class, string);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| error_class | Number | One of the `git_error_t` enum above describing the general subsystem that is responsible for the error. |
+| string | String | The formatted error message to keep |
+
diff --git a/api/graph/index.md b/api/graph/index.md
new file mode 100644
index 0000000..8f96dda
--- /dev/null
+++ b/api/graph/index.md
@@ -0,0 +1,29 @@
+---
+layout: default
+menu_item: api
+title: Graph
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "descendantOf": "#descendantOf"
+---
+
+## Graph. descendantOf Sync Experimental  
+
+```js
+var result = Graph.descendantOf(repo, commit, ancestor);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) |  |
+| commit | [Oid](/api/oid/) | a previously loaded commit. |
+| ancestor | [Oid](/api/oid/) | a potential ancestor commit. |
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the given commit is a descendant of the potential ancestor,
+ 0 if not, error code otherwise. |
+
diff --git a/api/hashsig/index.md b/api/hashsig/index.md
new file mode 100644
index 0000000..b1a32d4
--- /dev/null
+++ b/api/hashsig/index.md
@@ -0,0 +1,77 @@
+---
+layout: default
+menu_item: api
+title: Hashsig
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "createFromFile": "#createFromFile"
+  "#compare": "#compare"
+  "#free": "#free"
+  "OPTION": "#OPTION"
+---
+
+## Hashsig. create Async Experimental  
+
+```js
+Hashsig.create(buf, buflen, opts).then(function(hashsig) {
+  // Use hashsig
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| buf | String | The contents of the file to hash |
+| buflen | Number | The length of the data at `buf` |
+| opts | Number |  |
+
+| Returns |  |
+| --- | --- |
+| [Hashsig](/api/hashsig/) | The array of hashed runs representing the file content |
+
+## Hashsig. createFromFile Async Experimental  
+
+```js
+Hashsig.createFromFile(path, opts).then(function(hashsig) {
+  // Use hashsig
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| path | String |  |
+| opts | Number |  |
+
+| Returns |  |
+| --- | --- |
+| [Hashsig](/api/hashsig/) |  |
+
+## Hashsig# compare Sync Experimental  
+
+```js
+var result = hashsig.compare();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  
+<
+0 for error, [0 to 100] as similarity score |
+
+## Hashsig# free Sync Experimental  
+
+```js
+hashsig.free();
+```
+
+## Hashsig. OPTION ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Hashsig.OPTION. NORMAL | 0 |
+| Hashsig.OPTION. IGNORE_WHITESPACE | 1 |
+| Hashsig.OPTION. SMART_WHITESPACE | 2 |
+
diff --git a/api/ignore/index.md b/api/ignore/index.md
new file mode 100644
index 0000000..a77e6c4
--- /dev/null
+++ b/api/ignore/index.md
@@ -0,0 +1,42 @@
+---
+layout: default
+menu_item: api
+title: Ignore
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "addRule": "#addRule"
+  "clearInternalRules": "#clearInternalRules"
+---
+
+## Ignore. addRule Sync Experimental  
+
+```js
+var result = Ignore.addRule(repo, rules);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository to add ignore rules to. |
+| rules | String | Text of rules, a la the contents of a .gitignore file. It is okay to have multiple rules in the text; if so, each rule should be terminated with a newline. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success |
+
+## Ignore. clearInternalRules Sync Experimental  
+
+```js
+var result = Ignore.clearInternalRules(repo);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository to remove ignore rules from. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success |
+
diff --git a/api/index.md b/api/index.md
new file mode 100644
index 0000000..0a2bb4a
--- /dev/null
+++ b/api/index.md
@@ -0,0 +1,1737 @@
+---
+layout: default
+menu_item: api
+title: API Docs
+description: Version 0.3.0
+menu_item: api
+sections:
+  "Annotated": "#Annotated"
+  "Attr": "#Attr"
+  "Blame": "#Blame"
+  "BlameHunk": "#BlameHunk"
+  "BlameOptions": "#BlameOptions"
+  "Blob": "#Blob"
+  "Branch": "#Branch"
+  "Buf": "#Buf"
+  "Cert": "#Cert"
+  "CertHostkey": "#CertHostkey"
+  "CertX509": "#CertX509"
+  "Checkout": "#Checkout"
+  "CheckoutOptions": "#CheckoutOptions"
+  "Cherrypick": "#Cherrypick"
+  "CherrypickOptions": "#CherrypickOptions"
+  "Clone": "#Clone"
+  "CloneOptions": "#CloneOptions"
+  "Commit": "#Commit"
+  "Config": "#Config"
+  "ConfigEntry": "#ConfigEntry"
+  "ConvenientHunk": "#ConvenientHunk"
+  "ConvenientPatch": "#ConvenientPatch"
+  "Cred": "#Cred"
+  "CredUsername": "#CredUsername"
+  "CredUserpassPayload": "#CredUserpassPayload"
+  "CvarMap": "#CvarMap"
+  "DescribeFormatOptions": "#DescribeFormatOptions"
+  "DescribeOptions": "#DescribeOptions"
+  "Diff": "#Diff"
+  "DiffDelta": "#DiffDelta"
+  "DiffFile": "#DiffFile"
+  "DiffFindOptions": "#DiffFindOptions"
+  "DiffHunk": "#DiffHunk"
+  "DiffLine": "#DiffLine"
+  "DiffOptions": "#DiffOptions"
+  "DiffPerfdata": "#DiffPerfdata"
+  "Enums": "#Enums"
+  "Error": "#Error"
+  "Filter": "#Filter"
+  "Giterr": "#Giterr"
+  "Graph": "#Graph"
+  "Hashsig": "#Hashsig"
+  "Ignore": "#Ignore"
+  "Index": "#Index"
+  "IndexEntry": "#IndexEntry"
+  "IndexTime": "#IndexTime"
+  "Indexer": "#Indexer"
+  "Libgit2": "#Libgit2"
+  "Merge": "#Merge"
+  "MergeFileInput": "#MergeFileInput"
+  "MergeFileOptions": "#MergeFileOptions"
+  "MergeFileResult": "#MergeFileResult"
+  "MergeOptions": "#MergeOptions"
+  "Note": "#Note"
+  "Object": "#Object"
+  "Odb": "#Odb"
+  "OdbObject": "#OdbObject"
+  "Oid": "#Oid"
+  "Oidarray": "#Oidarray"
+  "Openssl": "#Openssl"
+  "Packbuilder": "#Packbuilder"
+  "Patch": "#Patch"
+  "Pathspec": "#Pathspec"
+  "Push": "#Push"
+  "PushOptions": "#PushOptions"
+  "Rebase": "#Rebase"
+  "RebaseOperation": "#RebaseOperation"
+  "RebaseOptions": "#RebaseOptions"
+  "Refdb": "#Refdb"
+  "Reference": "#Reference"
+  "Reflog": "#Reflog"
+  "Refspec": "#Refspec"
+  "Remote": "#Remote"
+  "RemoteCallbacks": "#RemoteCallbacks"
+  "Repository": "#Repository"
+  "RepositoryInitOptions": "#RepositoryInitOptions"
+  "Reset": "#Reset"
+  "Revert": "#Revert"
+  "RevertOptions": "#RevertOptions"
+  "Revparse": "#Revparse"
+  "Revwalk": "#Revwalk"
+  "Signature": "#Signature"
+  "Stash": "#Stash"
+  "Status": "#Status"
+  "StatusEntry": "#StatusEntry"
+  "StatusList": "#StatusList"
+  "StatusOptions": "#StatusOptions"
+  "Strarray": "#Strarray"
+  "Submodule": "#Submodule"
+  "SubmoduleUpdateOptions": "#SubmoduleUpdateOptions"
+  "Tag": "#Tag"
+  "Time": "#Time"
+  "Trace": "#Trace"
+  "TransferProgress": "#TransferProgress"
+  "Transport": "#Transport"
+  "Tree": "#Tree"
+  "TreeEntry": "#TreeEntry"
+  "Treebuilder": "#Treebuilder"
+---
+
+##  [Annotated](/api/annotated/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Annotated. commitFromFetchhead (repo, branch_name, remote_url, id) ](/api/annotated/#commitFromFetchhead) |  Async Experimental   |
+| [Annotated. commitFromRef (repo, ref) ](/api/annotated/#commitFromRef) |  Async Experimental   |
+| [Annotated. commitId (commit) ](/api/annotated/#commitId) |  Sync Experimental   |
+| [Annotated. commitLookup (repo, id) ](/api/annotated/#commitLookup) |  Async Experimental   |
+
+
+
+##  [Attr](/api/attr/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Attr. addMacro (repo, name, values) ](/api/attr/#addMacro) |  Sync   |
+| [Attr. cacheFlush (repo) ](/api/attr/#cacheFlush) |  Sync   |
+| [Attr. get (repo, flags, path, name) ](/api/attr/#get) |  Async   |
+| [Attr. getMany (repo, flags, path, num_attr, names) ](/api/attr/#getMany) |  Sync   |
+| [Attr. value (attr) ](/api/attr/#value) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Attr. STATES](/api/attr/#STATES)|  |
+
+
+##  [Blame](/api/blame/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Blame. file (repo, path, options) ](/api/blame/#file) |  Async Experimental   |
+| [Blame. initOptions (opts, version) ](/api/blame/#initOptions) |  Sync Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Blame# buffer (buffer, buffer_len) ](/api/blame/#buffer) |  Async Experimental   |
+| [Blame# free () ](/api/blame/#free) |  Sync Experimental   |
+| [Blame# getHunkByIndex (index) ](/api/blame/#getHunkByIndex) |  Sync Experimental   |
+| [Blame# getHunkByLine (lineno) ](/api/blame/#getHunkByLine) |  Sync Experimental   |
+| [Blame# getHunkCount () ](/api/blame/#getHunkCount) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Blame. FLAG](/api/blame/#FLAG)|  |
+
+
+##  [BlameHunk](/api/blame_hunk/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [BlameHunk# finalCommitId](/api/blame_hunk/#finalCommitId) |  |
+| [BlameHunk# finalSignature](/api/blame_hunk/#finalSignature) |  |
+| [BlameHunk# finalStartLineNumber](/api/blame_hunk/#finalStartLineNumber) |  |
+| [BlameHunk# linesInHunk](/api/blame_hunk/#linesInHunk) |  |
+| [BlameHunk# origCommitId](/api/blame_hunk/#origCommitId) |  |
+| [BlameHunk# origPath](/api/blame_hunk/#origPath) |  |
+| [BlameHunk# origSignature](/api/blame_hunk/#origSignature) |  |
+| [BlameHunk# origStartLineNumber](/api/blame_hunk/#origStartLineNumber) |  |
+
+
+##  [BlameOptions](/api/blame_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [BlameOptions# flags](/api/blame_options/#flags) |  |
+| [BlameOptions# maxLine](/api/blame_options/#maxLine) |  |
+| [BlameOptions# minLine](/api/blame_options/#minLine) |  |
+| [BlameOptions# minMatchCharacters](/api/blame_options/#minMatchCharacters) |  |
+| [BlameOptions# newestCommit](/api/blame_options/#newestCommit) |  |
+| [BlameOptions# oldestCommit](/api/blame_options/#oldestCommit) |  |
+| [BlameOptions# version](/api/blame_options/#version) |  |
+
+
+##  [Blob](/api/blob/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Blob. createFromBuffer (repo, buffer, len) ](/api/blob/#createFromBuffer) |  Sync   |
+| [Blob. createFromDisk (id, repo, path) ](/api/blob/#createFromDisk) |  Sync   |
+| [Blob. createFromWorkdir (id, repo, relative_path) ](/api/blob/#createFromWorkdir) |  Sync   |
+| [Blob. lookup (repo, id) ](/api/blob/#lookup) |  Async   |
+| [Blob. lookupPrefix (repo, id, len) ](/api/blob/#lookupPrefix) |  Async   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Blob# content () ](/api/blob/#content) |  Sync   |
+| [Blob# filemode () ](/api/blob/#filemode) |  Sync   |
+| [Blob# free () ](/api/blob/#free) |  Sync   |
+| [Blob# id () ](/api/blob/#id) |  Sync   |
+| [Blob# isBinary () ](/api/blob/#isBinary) |  Sync   |
+| [Blob# owner () ](/api/blob/#owner) |  Sync   |
+| [Blob# rawcontent () ](/api/blob/#rawcontent) |  Sync   |
+| [Blob# rawsize () ](/api/blob/#rawsize) |  Sync   |
+| [Blob# toString () ](/api/blob/#toString) |  Sync   |
+
+
+##  [Branch](/api/branch/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Branch. create (repo, branch_name, target, force, signature, log_message) ](/api/branch/#create) |  Async   |
+| [Branch. delete (branch) ](/api/branch/#delete) |  Sync   |
+| [Branch. isHead (branch) ](/api/branch/#isHead) |  Sync   |
+| [Branch. iteratorNew (repo, list_flags) ](/api/branch/#iteratorNew) |  Async   |
+| [Branch. lookup (repo, branch_name, branch_type) ](/api/branch/#lookup) |  Async   |
+| [Branch. move (branch, new_branch_name, force, signature, log_message) ](/api/branch/#move) |  Async   |
+| [Branch. name (ref) ](/api/branch/#name) |  Async   |
+| [Branch. setUpstream (branch, upstream_name) ](/api/branch/#setUpstream) |  Sync   |
+| [Branch. upstream (branch) ](/api/branch/#upstream) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Branch. BRANCH](/api/branch/#BRANCH)|  |
+
+
+
+##  [Buf](/api/buf/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [Buf# containsNul () ](/api/buf/#containsNul) |  Sync Experimental   |
+| [Buf# free () ](/api/buf/#free) |  Sync Experimental   |
+| [Buf# grow (target_size) ](/api/buf/#grow) |  Async Experimental   |
+| [Buf# isBinary () ](/api/buf/#isBinary) |  Sync Experimental   |
+| [Buf# set (data, datalen) ](/api/buf/#set) |  Async Experimental   |
+
+| Instance Variables |  |
+| --- | ---: |
+| [Buf# asize](/api/buf/#asize) |  |
+| [Buf# ptr](/api/buf/#ptr) |  |
+| [Buf# size](/api/buf/#size) |  |
+
+
+##  [Cert](/api/cert/)
+
+| ENUMS |  |
+| --- | ---: |
+| [Cert. SSH](/api/cert/#SSH)|  |
+| [Cert. TYPE](/api/cert/#TYPE)|  |
+
+| Instance Variables |  |
+| --- | ---: |
+| [Cert# certType](/api/cert/#certType) |  |
+
+
+##  [CertHostkey](/api/cert_hostkey/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [CertHostkey# certType](/api/cert_hostkey/#certType) |  |
+| [CertHostkey# hashMd5](/api/cert_hostkey/#hashMd5) |  |
+| [CertHostkey# hashSha1](/api/cert_hostkey/#hashSha1) |  |
+| [CertHostkey# type](/api/cert_hostkey/#type) |  |
+
+
+##  [CertX509](/api/cert_x509/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [CertX509# certType](/api/cert_x509/#certType) |  |
+| [CertX509# data](/api/cert_x509/#data) |  |
+| [CertX509# len](/api/cert_x509/#len) |  |
+
+
+##  [Checkout](/api/checkout/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Checkout. head (repo, [options]) ](/api/checkout/#head) |  Async   |
+| [Checkout. initOptions (opts, version) ](/api/checkout/#initOptions) |  Sync   |
+| [Checkout. tree (repo, treeish, [options]) ](/api/checkout/#tree) |  Async   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Checkout. NOTIFY](/api/checkout/#NOTIFY)|  |
+| [Checkout. STRATEGY](/api/checkout/#STRATEGY)|  |
+
+
+##  [CheckoutOptions](/api/checkout_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [CheckoutOptions# ancestorLabel](/api/checkout_options/#ancestorLabel) |  |
+| [CheckoutOptions# baseline](/api/checkout_options/#baseline) |  |
+| [CheckoutOptions# checkoutStrategy](/api/checkout_options/#checkoutStrategy) |  |
+| [CheckoutOptions# dirMode](/api/checkout_options/#dirMode) |  |
+| [CheckoutOptions# disableFilters](/api/checkout_options/#disableFilters) |  |
+| [CheckoutOptions# fileMode](/api/checkout_options/#fileMode) |  |
+| [CheckoutOptions# fileOpenFlags](/api/checkout_options/#fileOpenFlags) |  |
+| [CheckoutOptions# notifyCb](/api/checkout_options/#notifyCb) |  |
+| [CheckoutOptions# notifyFlags](/api/checkout_options/#notifyFlags) |  |
+| [CheckoutOptions# notifyPayload](/api/checkout_options/#notifyPayload) |  |
+| [CheckoutOptions# ourLabel](/api/checkout_options/#ourLabel) |  |
+| [CheckoutOptions# paths](/api/checkout_options/#paths) |  |
+| [CheckoutOptions# progressCb](/api/checkout_options/#progressCb) |  |
+| [CheckoutOptions# progressPayload](/api/checkout_options/#progressPayload) |  |
+| [CheckoutOptions# targetDirectory](/api/checkout_options/#targetDirectory) |  |
+| [CheckoutOptions# theirLabel](/api/checkout_options/#theirLabel) |  |
+| [CheckoutOptions# version](/api/checkout_options/#version) |  |
+
+
+##  [Cherrypick](/api/cherrypick/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Cherrypick. cherrypick (repo, commit, cherrypick_options) ](/api/cherrypick/#cherrypick) |  Sync Experimental   |
+| [Cherrypick. commit (repo, cherrypick_commit, our_commit, mainline, merge_options) ](/api/cherrypick/#commit) |  Async Experimental   |
+| [Cherrypick. initOptions (opts, version) ](/api/cherrypick/#initOptions) |  Sync Experimental   |
+
+
+##  [CherrypickOptions](/api/cherrypick_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [CherrypickOptions# checkoutOpts](/api/cherrypick_options/#checkoutOpts) |  |
+| [CherrypickOptions# mainline](/api/cherrypick_options/#mainline) |  |
+| [CherrypickOptions# mergeOpts](/api/cherrypick_options/#mergeOpts) |  |
+| [CherrypickOptions# version](/api/cherrypick_options/#version) |  |
+
+
+##  [Clone](/api/clone/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Clone. clone (url, local_path, [options]) ](/api/clone/#clone) |  Async   |
+| [Clone. initOptions (opts, version) ](/api/clone/#initOptions) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Clone. LOCAL](/api/clone/#LOCAL)|  |
+
+
+##  [CloneOptions](/api/clone_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [CloneOptions# bare](/api/clone_options/#bare) |  |
+| [CloneOptions# checkoutBranch](/api/clone_options/#checkoutBranch) |  |
+| [CloneOptions# checkoutOpts](/api/clone_options/#checkoutOpts) |  |
+| [CloneOptions# local](/api/clone_options/#local) |  |
+| [CloneOptions# remoteCallbacks](/api/clone_options/#remoteCallbacks) |  |
+| [CloneOptions# remoteCbPayload](/api/clone_options/#remoteCbPayload) |  |
+| [CloneOptions# repositoryCbPayload](/api/clone_options/#repositoryCbPayload) |  |
+| [CloneOptions# signature](/api/clone_options/#signature) |  |
+| [CloneOptions# version](/api/clone_options/#version) |  |
+
+
+##  [Commit](/api/commit/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Commit. create (repo, update_ref, author, committer, message_encoding, message, tree, parent_count, parents) ](/api/commit/#create) |  Sync   |
+| [Commit. createV (id, repo, update_ref, author, committer, message_encoding, message, tree, parent_count) ](/api/commit/#createV) |  Sync   |
+| [Commit. lookup (repo, id) ](/api/commit/#lookup) |  Async   |
+| [Commit. lookupPrefix (repo, id, len) ](/api/commit/#lookupPrefix) |  Async   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Commit# amend (id, update_ref, author, committer, message_encoding, message, tree) ](/api/commit/#amend) |  Sync   |
+| [Commit# author () ](/api/commit/#author) |  Sync   |
+| [Commit# committer () ](/api/commit/#committer) |  Sync   |
+| [Commit# date () ](/api/commit/#date) |  Sync   |
+| [Commit# free () ](/api/commit/#free) |  Sync   |
+| [Commit# getEntry (path) ](/api/commit/#getEntry) |  Async   |
+| [Commit# getParents (limit, callback) ](/api/commit/#getParents) |  Async   |
+| [Commit# getTree () ](/api/commit/#getTree) |  Async   |
+| [Commit# history () ](/api/commit/#history) |  Sync   |
+| [Commit# id () ](/api/commit/#id) |  Sync   |
+| [Commit# message () ](/api/commit/#message) |  Sync   |
+| [Commit# messageEncoding () ](/api/commit/#messageEncoding) |  Sync   |
+| [Commit# messageRaw () ](/api/commit/#messageRaw) |  Sync   |
+| [Commit# nthGenAncestor (n) ](/api/commit/#nthGenAncestor) |  Async   |
+| [Commit# owner () ](/api/commit/#owner) |  Sync   |
+| [Commit# parent (n) ](/api/commit/#parent) |  Async   |
+| [Commit# parentId (n) ](/api/commit/#parentId) |  Sync   |
+| [Commit# parentcount () ](/api/commit/#parentcount) |  Sync   |
+| [Commit# parents (callback) ](/api/commit/#parents) |  Sync   |
+| [Commit# rawHeader () ](/api/commit/#rawHeader) |  Sync   |
+| [Commit# sha () ](/api/commit/#sha) |  Sync   |
+| [Commit# summary () ](/api/commit/#summary) |  Sync   |
+| [Commit# time () ](/api/commit/#time) |  Sync   |
+| [Commit# timeMs () ](/api/commit/#timeMs) |  Sync   |
+| [Commit# timeOffset () ](/api/commit/#timeOffset) |  Sync   |
+| [Commit# tree (tree_out) ](/api/commit/#tree) |  Sync   |
+| [Commit# treeId () ](/api/commit/#treeId) |  Sync   |
+
+
+##  [Config](/api/config/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [Config# setInt64 (name, value) ](/api/config/#setInt64) |  Sync Experimental   |
+| [Config# setMultivar (name, regexp, value) ](/api/config/#setMultivar) |  Sync Experimental   |
+| [Config# setString (name, value) ](/api/config/#setString) |  Sync Experimental   |
+| [Config# snapshot () ](/api/config/#snapshot) |  Async Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Config. LEVEL](/api/config/#LEVEL)|  |
+
+
+##  [ConfigEntry](/api/config_entry/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [ConfigEntry# level](/api/config_entry/#level) |  |
+| [ConfigEntry# name](/api/config_entry/#name) |  |
+| [ConfigEntry# value](/api/config_entry/#value) |  |
+
+
+##  [ConvenientHunk](/api/convenient_hunk/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [ConvenientHunk# header () ](/api/convenient_hunk/#header) |  Sync   |
+| [ConvenientHunk# lines () ](/api/convenient_hunk/#lines) |  Sync   |
+| [ConvenientHunk# size () ](/api/convenient_hunk/#size) |  Sync   |
+
+
+##  [ConvenientPatch](/api/convenient_patch/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [ConvenientPatch# hunks () ](/api/convenient_patch/#hunks) |  Sync   |
+| [ConvenientPatch# isAdded () ](/api/convenient_patch/#isAdded) |  Sync   |
+| [ConvenientPatch# isCopied () ](/api/convenient_patch/#isCopied) |  Sync   |
+| [ConvenientPatch# isDeleted () ](/api/convenient_patch/#isDeleted) |  Sync   |
+| [ConvenientPatch# isIgnored () ](/api/convenient_patch/#isIgnored) |  Sync   |
+| [ConvenientPatch# isModified () ](/api/convenient_patch/#isModified) |  Sync   |
+| [ConvenientPatch# isRenamed () ](/api/convenient_patch/#isRenamed) |  Sync   |
+| [ConvenientPatch# isTypeChange () ](/api/convenient_patch/#isTypeChange) |  Sync   |
+| [ConvenientPatch# isUnmodified () ](/api/convenient_patch/#isUnmodified) |  Sync   |
+| [ConvenientPatch# isUntracked () ](/api/convenient_patch/#isUntracked) |  Sync   |
+| [ConvenientPatch# newFile () ](/api/convenient_patch/#newFile) |  Sync   |
+| [ConvenientPatch# oldFile () ](/api/convenient_patch/#oldFile) |  Sync   |
+| [ConvenientPatch# size () ](/api/convenient_patch/#size) |  Sync   |
+| [ConvenientPatch# status () ](/api/convenient_patch/#status) |  Sync   |
+
+
+##  [Cred](/api/cred/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Cred. defaultNew () ](/api/cred/#defaultNew) |  Sync   |
+| [Cred. sshKeyFromAgent (username) ](/api/cred/#sshKeyFromAgent) |  Sync   |
+| [Cred. sshKeyNew (username, publickey, privatekey, passphrase) ](/api/cred/#sshKeyNew) |  Sync   |
+| [Cred. usernameNew (username) ](/api/cred/#usernameNew) |  Async   |
+| [Cred. userpassPlaintextNew (username, password) ](/api/cred/#userpassPlaintextNew) |  Sync   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Cred# hasUsername () ](/api/cred/#hasUsername) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Cred. TYPE](/api/cred/#TYPE)|  |
+
+
+
+##  [CredUsername](/api/cred_username/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [CredUsername# parent](/api/cred_username/#parent) |  |
+| [CredUsername# username](/api/cred_username/#username) |  |
+
+
+##  [CredUserpassPayload](/api/cred_userpass_payload/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [CredUserpassPayload# password](/api/cred_userpass_payload/#password) |  |
+| [CredUserpassPayload# username](/api/cred_userpass_payload/#username) |  |
+
+
+##  [CvarMap](/api/cvar_map/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [CvarMap# cvarType](/api/cvar_map/#cvarType) |  |
+| [CvarMap# mapValue](/api/cvar_map/#mapValue) |  |
+| [CvarMap# strMatch](/api/cvar_map/#strMatch) |  |
+
+
+##  [DescribeFormatOptions](/api/describe_format_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [DescribeFormatOptions# abbreviatedSize](/api/describe_format_options/#abbreviatedSize) |  |
+| [DescribeFormatOptions# alwaysUseLongFormat](/api/describe_format_options/#alwaysUseLongFormat) |  |
+| [DescribeFormatOptions# dirtySuffix](/api/describe_format_options/#dirtySuffix) |  |
+| [DescribeFormatOptions# version](/api/describe_format_options/#version) |  |
+
+
+##  [DescribeOptions](/api/describe_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [DescribeOptions# describeStrategy](/api/describe_options/#describeStrategy) |  |
+| [DescribeOptions# maxCandidatesTags](/api/describe_options/#maxCandidatesTags) |  |
+| [DescribeOptions# onlyFollowFirstParent](/api/describe_options/#onlyFollowFirstParent) |  |
+| [DescribeOptions# pattern](/api/describe_options/#pattern) |  |
+| [DescribeOptions# showCommitOidAsFallback](/api/describe_options/#showCommitOidAsFallback) |  |
+| [DescribeOptions# version](/api/describe_options/#version) |  |
+
+
+##  [Diff](/api/diff/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Diff. indexToWorkdir (repo, index, opts) ](/api/diff/#indexToWorkdir) |  Async   |
+| [Diff. treeToIndex (repo, old_tree, index, opts) ](/api/diff/#treeToIndex) |  Async   |
+| [Diff. treeToTree (repo, old_tree, new_tree, opts) ](/api/diff/#treeToTree) |  Async   |
+| [Diff. treeToWorkdir (repo, old_tree, opts) ](/api/diff/#treeToWorkdir) |  Async   |
+| [Diff. treeToWorkdirWithIndex (repo, old_tree, opts) ](/api/diff/#treeToWorkdirWithIndex) |  Async   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Diff# findSimilar (options) ](/api/diff/#findSimilar) |  Async   |
+| [Diff# getDelta (idx) ](/api/diff/#getDelta) |  Sync   |
+| [Diff# getPerfdata () ](/api/diff/#getPerfdata) |  Async   |
+| [Diff# numDeltas () ](/api/diff/#numDeltas) |  Sync   |
+| [Diff# patches () ](/api/diff/#patches) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Diff. DELTA](/api/diff/#DELTA)|  |
+| [Diff. FIND](/api/diff/#FIND)|  |
+| [Diff. FLAG](/api/diff/#FLAG)|  |
+| [Diff. FORMAT](/api/diff/#FORMAT)|  |
+| [Diff. FORMAT_EMAIL_FLAGS](/api/diff/#FORMAT_EMAIL_FLAGS)|  |
+| [Diff. LINE](/api/diff/#LINE)|  |
+| [Diff. OPTION](/api/diff/#OPTION)|  |
+| [Diff. STATS_FORMAT](/api/diff/#STATS_FORMAT)|  |
+
+
+##  [DiffDelta](/api/diff_delta/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [DiffDelta# flags](/api/diff_delta/#flags) |  |
+| [DiffDelta# newFile](/api/diff_delta/#newFile) |  |
+| [DiffDelta# nfiles](/api/diff_delta/#nfiles) |  |
+| [DiffDelta# oldFile](/api/diff_delta/#oldFile) |  |
+| [DiffDelta# similarity](/api/diff_delta/#similarity) |  |
+| [DiffDelta# status](/api/diff_delta/#status) |  |
+
+
+##  [DiffFile](/api/diff_file/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [DiffFile# flags](/api/diff_file/#flags) |  |
+| [DiffFile# id](/api/diff_file/#id) |  |
+| [DiffFile# mode](/api/diff_file/#mode) |  |
+| [DiffFile# path](/api/diff_file/#path) |  |
+| [DiffFile# size](/api/diff_file/#size) |  |
+
+
+##  [DiffFindOptions](/api/diff_find_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [DiffFindOptions# breakRewriteThreshold](/api/diff_find_options/#breakRewriteThreshold) |  |
+| [DiffFindOptions# copyThreshold](/api/diff_find_options/#copyThreshold) |  |
+| [DiffFindOptions# flags](/api/diff_find_options/#flags) |  |
+| [DiffFindOptions# renameFromRewriteThreshold](/api/diff_find_options/#renameFromRewriteThreshold) |  |
+| [DiffFindOptions# renameLimit](/api/diff_find_options/#renameLimit) |  |
+| [DiffFindOptions# renameThreshold](/api/diff_find_options/#renameThreshold) |  |
+| [DiffFindOptions# version](/api/diff_find_options/#version) |  |
+
+
+##  [DiffHunk](/api/diff_hunk/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [DiffHunk# header](/api/diff_hunk/#header) |  |
+| [DiffHunk# headerLen](/api/diff_hunk/#headerLen) |  |
+| [DiffHunk# newLines](/api/diff_hunk/#newLines) |  |
+| [DiffHunk# newStart](/api/diff_hunk/#newStart) |  |
+| [DiffHunk# oldLines](/api/diff_hunk/#oldLines) |  |
+| [DiffHunk# oldStart](/api/diff_hunk/#oldStart) |  |
+
+
+##  [DiffLine](/api/diff_line/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [DiffLine# content](/api/diff_line/#content) |  |
+| [DiffLine# contentLen](/api/diff_line/#contentLen) |  |
+| [DiffLine# contentOffset](/api/diff_line/#contentOffset) |  |
+| [DiffLine# newLineno](/api/diff_line/#newLineno) |  |
+| [DiffLine# numLines](/api/diff_line/#numLines) |  |
+| [DiffLine# oldLineno](/api/diff_line/#oldLineno) |  |
+| [DiffLine# origin](/api/diff_line/#origin) |  |
+
+
+##  [DiffOptions](/api/diff_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [DiffOptions# contextLines](/api/diff_options/#contextLines) |  |
+| [DiffOptions# flags](/api/diff_options/#flags) |  |
+| [DiffOptions# idAbbrev](/api/diff_options/#idAbbrev) |  |
+| [DiffOptions# ignoreSubmodules](/api/diff_options/#ignoreSubmodules) |  |
+| [DiffOptions# interhunkLines](/api/diff_options/#interhunkLines) |  |
+| [DiffOptions# maxSize](/api/diff_options/#maxSize) |  |
+| [DiffOptions# newPrefix](/api/diff_options/#newPrefix) |  |
+| [DiffOptions# notifyCb](/api/diff_options/#notifyCb) |  |
+| [DiffOptions# notifyPayload](/api/diff_options/#notifyPayload) |  |
+| [DiffOptions# oldPrefix](/api/diff_options/#oldPrefix) |  |
+| [DiffOptions# pathspec](/api/diff_options/#pathspec) |  |
+| [DiffOptions# version](/api/diff_options/#version) |  |
+
+
+##  [DiffPerfdata](/api/diff_perfdata/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [DiffPerfdata# oidCalculations](/api/diff_perfdata/#oidCalculations) |  |
+| [DiffPerfdata# statCalls](/api/diff_perfdata/#statCalls) |  |
+| [DiffPerfdata# version](/api/diff_perfdata/#version) |  |
+
+
+
+##  [Enums](/api/enums/)
+
+| ENUMS |  |
+| --- | ---: |
+| [Enums. CVAR](/api/enums/#CVAR)|  |
+| [Enums. DIRECTION](/api/enums/#DIRECTION)|  |
+| [Enums. FEATURE](/api/enums/#FEATURE)|  |
+| [Enums. IDXENTRY_EXTENDED_FLAG](/api/enums/#IDXENTRY_EXTENDED_FLAG)|  |
+| [Enums. INDXENTRY_FLAG](/api/enums/#INDXENTRY_FLAG)|  |
+
+
+##  [Error](/api/error/)
+
+| ENUMS |  |
+| --- | ---: |
+| [Error. CODE](/api/error/#CODE)|  |
+| [Error. ERROR](/api/error/#ERROR)|  |
+
+| Instance Variables |  |
+| --- | ---: |
+| [Error# klass](/api/error/#klass) |  |
+| [Error# message](/api/error/#message) |  |
+
+
+##  [Filter](/api/filter/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Filter. listLength (fl) ](/api/filter/#listLength) |  Sync Experimental   |
+| [Filter. listNew (repo, mode, options) ](/api/filter/#listNew) |  Async Experimental   |
+| [Filter. unregister (name) ](/api/filter/#unregister) |  Sync Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Filter# lookup (name) ](/api/filter/#lookup) |  Sync Experimental   |
+| [Filter# register (name, priority) ](/api/filter/#register) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Filter. MODE](/api/filter/#MODE)|  |
+| [Filter. OPT](/api/filter/#OPT)|  |
+
+| Instance Variables |  |
+| --- | ---: |
+| [Filter# attributes](/api/filter/#attributes) |  |
+| [Filter# version](/api/filter/#version) |  |
+
+
+
+##  [Giterr](/api/giterr/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Giterr. errClear () ](/api/giterr/#errClear) |  Sync Experimental   |
+| [Giterr. errDetach (cpy) ](/api/giterr/#errDetach) |  Sync Experimental   |
+| [Giterr. errLast () ](/api/giterr/#errLast) |  Sync Experimental   |
+| [Giterr. errSetOom () ](/api/giterr/#errSetOom) |  Sync Experimental   |
+| [Giterr. errSetString (error_class, string) ](/api/giterr/#errSetString) |  Sync Experimental   |
+
+
+##  [Graph](/api/graph/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Graph. descendantOf (repo, commit, ancestor) ](/api/graph/#descendantOf) |  Sync Experimental   |
+
+
+##  [Hashsig](/api/hashsig/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Hashsig. create (buf, buflen, opts) ](/api/hashsig/#create) |  Async Experimental   |
+| [Hashsig. createFromFile (path, opts) ](/api/hashsig/#createFromFile) |  Async Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Hashsig# compare () ](/api/hashsig/#compare) |  Sync Experimental   |
+| [Hashsig# free () ](/api/hashsig/#free) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Hashsig. OPTION](/api/hashsig/#OPTION)|  |
+
+
+##  [Ignore](/api/ignore/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Ignore. addRule (repo, rules) ](/api/ignore/#addRule) |  Sync Experimental   |
+| [Ignore. clearInternalRules (repo) ](/api/ignore/#clearInternalRules) |  Sync Experimental   |
+
+
+##  [Index](/api/index/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Index. entryStage (entry) ](/api/index/#entryStage) |  Sync   |
+| [Index. open (index_path) ](/api/index/#open) |  Async   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Index# add (source_entry) ](/api/index/#add) |  Sync   |
+| [Index# addAll (pathspec, flags, callback, payload) ](/api/index/#addAll) |  Async   |
+| [Index# addByPath (path) ](/api/index/#addByPath) |  Sync   |
+| [Index# caps () ](/api/index/#caps) |  Sync   |
+| [Index# clear () ](/api/index/#clear) |  Sync   |
+| [Index# conflictAdd (ancestor_entry, our_entry, their_entry) ](/api/index/#conflictAdd) |  Sync   |
+| [Index# conflictCleanup () ](/api/index/#conflictCleanup) |  Sync   |
+| [Index# conflictRemove (path) ](/api/index/#conflictRemove) |  Sync   |
+| [Index# entries () ](/api/index/#entries) |  Sync   |
+| [Index# entryCount () ](/api/index/#entryCount) |  Sync   |
+| [Index# getByIndex (n) ](/api/index/#getByIndex) |  Sync   |
+| [Index# getByPath (path, stage) ](/api/index/#getByPath) |  Sync   |
+| [Index# hasConflicts () ](/api/index/#hasConflicts) |  Sync   |
+| [Index# owner () ](/api/index/#owner) |  Sync   |
+| [Index# path () ](/api/index/#path) |  Sync   |
+| [Index# read (force) ](/api/index/#read) |  Sync   |
+| [Index# readTree (tree) ](/api/index/#readTree) |  Sync   |
+| [Index# remove (path, stage) ](/api/index/#remove) |  Sync   |
+| [Index# removeAll (pathspec, callback, payload) ](/api/index/#removeAll) |  Async   |
+| [Index# removeByPath (path) ](/api/index/#removeByPath) |  Sync   |
+| [Index# removeDirectory (dir, stage) ](/api/index/#removeDirectory) |  Sync   |
+| [Index# setCaps (caps) ](/api/index/#setCaps) |  Sync   |
+| [Index# updateAll (pathspec, callback, payload) ](/api/index/#updateAll) |  Async   |
+| [Index# write () ](/api/index/#write) |  Sync   |
+| [Index# writeTree () ](/api/index/#writeTree) |  Async   |
+| [Index# writeTreeTo (repo) ](/api/index/#writeTreeTo) |  Async   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Index. ADD_OPTION](/api/index/#ADD_OPTION)|  |
+| [Index. CAP](/api/index/#CAP)|  |
+
+
+
+##  [IndexEntry](/api/index_entry/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [IndexEntry# ctime](/api/index_entry/#ctime) |  |
+| [IndexEntry# dev](/api/index_entry/#dev) |  |
+| [IndexEntry# fileSize](/api/index_entry/#fileSize) |  |
+| [IndexEntry# flags](/api/index_entry/#flags) |  |
+| [IndexEntry# flagsExtended](/api/index_entry/#flagsExtended) |  |
+| [IndexEntry# gid](/api/index_entry/#gid) |  |
+| [IndexEntry# id](/api/index_entry/#id) |  |
+| [IndexEntry# ino](/api/index_entry/#ino) |  |
+| [IndexEntry# mode](/api/index_entry/#mode) |  |
+| [IndexEntry# mtime](/api/index_entry/#mtime) |  |
+| [IndexEntry# path](/api/index_entry/#path) |  |
+| [IndexEntry# uid](/api/index_entry/#uid) |  |
+
+
+##  [IndexTime](/api/index_time/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [IndexTime# nanoseconds](/api/index_time/#nanoseconds) |  |
+| [IndexTime# seconds](/api/index_time/#seconds) |  |
+
+
+##  [Indexer](/api/indexer/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [Indexer# commit (stats) ](/api/indexer/#commit) |  Sync Experimental   |
+| [Indexer# free () ](/api/indexer/#free) |  Sync Experimental   |
+| [Indexer# hash () ](/api/indexer/#hash) |  Sync Experimental   |
+
+
+##  [Libgit2](/api/libgit_2/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Libgit2. features () ](/api/libgit_2/#features) |  Sync Experimental   |
+| [Libgit2. init () ](/api/libgit_2/#init) |  Sync Experimental   |
+| [Libgit2. opts (option) ](/api/libgit_2/#opts) |  Sync Experimental   |
+| [Libgit2. shutdown () ](/api/libgit_2/#shutdown) |  Sync Experimental   |
+| [Libgit2. version (major, minor, rev) ](/api/libgit_2/#version) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Libgit2. OPT](/api/libgit_2/#OPT)|  |
+
+
+
+##  [Merge](/api/merge/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Merge. base (repo, one, two) ](/api/merge/#base) |  Async   |
+| [Merge. bases (repo, one, two) ](/api/merge/#bases) |  Async   |
+| [Merge. commits (repo, ourCommit, theirCommit, [options]) ](/api/merge/#commits) |  Sync   |
+| [Merge. fileInitInput (opts, version) ](/api/merge/#fileInitInput) |  Sync   |
+| [Merge. initOptions (opts, version) ](/api/merge/#initOptions) |  Sync   |
+| [Merge. trees (repo, ancestor_tree, our_tree, their_tree, opts) ](/api/merge/#trees) |  Async   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Merge. ANALYSIS](/api/merge/#ANALYSIS)|  |
+| [Merge. FILE_FAVOR](/api/merge/#FILE_FAVOR)|  |
+| [Merge. FILE_FLAGS](/api/merge/#FILE_FLAGS)|  |
+| [Merge. PREFERENCE](/api/merge/#PREFERENCE)|  |
+| [Merge. TREE_FLAG](/api/merge/#TREE_FLAG)|  |
+
+
+##  [MergeFileInput](/api/merge_file_input/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [MergeFileInput# mode](/api/merge_file_input/#mode) |  |
+| [MergeFileInput# path](/api/merge_file_input/#path) |  |
+| [MergeFileInput# ptr](/api/merge_file_input/#ptr) |  |
+| [MergeFileInput# size](/api/merge_file_input/#size) |  |
+| [MergeFileInput# version](/api/merge_file_input/#version) |  |
+
+
+##  [MergeFileOptions](/api/merge_file_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [MergeFileOptions# ancestorLabel](/api/merge_file_options/#ancestorLabel) |  |
+| [MergeFileOptions# favor](/api/merge_file_options/#favor) |  |
+| [MergeFileOptions# flags](/api/merge_file_options/#flags) |  |
+| [MergeFileOptions# ourLabel](/api/merge_file_options/#ourLabel) |  |
+| [MergeFileOptions# theirLabel](/api/merge_file_options/#theirLabel) |  |
+| [MergeFileOptions# version](/api/merge_file_options/#version) |  |
+
+
+##  [MergeFileResult](/api/merge_file_result/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [MergeFileResult# automergeable](/api/merge_file_result/#automergeable) |  |
+| [MergeFileResult# len](/api/merge_file_result/#len) |  |
+| [MergeFileResult# mode](/api/merge_file_result/#mode) |  |
+| [MergeFileResult# path](/api/merge_file_result/#path) |  |
+| [MergeFileResult# ptr](/api/merge_file_result/#ptr) |  |
+
+
+##  [MergeOptions](/api/merge_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [MergeOptions# fileFavor](/api/merge_options/#fileFavor) |  |
+| [MergeOptions# flags](/api/merge_options/#flags) |  |
+| [MergeOptions# renameThreshold](/api/merge_options/#renameThreshold) |  |
+| [MergeOptions# targetLimit](/api/merge_options/#targetLimit) |  |
+| [MergeOptions# version](/api/merge_options/#version) |  |
+
+
+
+
+##  [Note](/api/note/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Note. create (repo, notes_ref, author, committer, oid, note, force) ](/api/note/#create) |  Async Experimental   |
+| [Note. defaultRef (repo) ](/api/note/#defaultRef) |  Async Experimental   |
+| [Note. iteratorNew (repo, notes_ref) ](/api/note/#iteratorNew) |  Async Experimental   |
+| [Note. next (note_id, annotated_id, it) ](/api/note/#next) |  Sync Experimental   |
+| [Note. read (repo, notes_ref, oid) ](/api/note/#read) |  Async Experimental   |
+| [Note. remove (repo, notes_ref, author, committer, oid) ](/api/note/#remove) |  Sync Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Note# author () ](/api/note/#author) |  Sync Experimental   |
+| [Note# committer () ](/api/note/#committer) |  Sync Experimental   |
+| [Note# free () ](/api/note/#free) |  Sync Experimental   |
+| [Note# id () ](/api/note/#id) |  Sync Experimental   |
+| [Note# message () ](/api/note/#message) |  Sync Experimental   |
+
+
+
+##  [Object](/api/object/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Object. lookup (repo, id, type) ](/api/object/#lookup) |  Async Experimental   |
+| [Object. lookupPrefix (repo, id, len, type) ](/api/object/#lookupPrefix) |  Async Experimental   |
+| [Object. size (type) ](/api/object/#size) |  Sync Experimental   |
+| [Object. string2type (str) ](/api/object/#string2type) |  Sync Experimental   |
+| [Object. type2string (type) ](/api/object/#type2string) |  Sync Experimental   |
+| [Object. typeisloose (type) ](/api/object/#typeisloose) |  Sync Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Object# dup () ](/api/object/#dup) |  Async Experimental   |
+| [Object# free () ](/api/object/#free) |  Sync Experimental   |
+| [Object# id () ](/api/object/#id) |  Sync Experimental   |
+| [Object# lookupByPath (path, type) ](/api/object/#lookupByPath) |  Async Experimental   |
+| [Object# owner () ](/api/object/#owner) |  Sync Experimental   |
+| [Object# peel (target_type) ](/api/object/#peel) |  Async Experimental   |
+| [Object# shortId () ](/api/object/#shortId) |  Async Experimental   |
+| [Object# type () ](/api/object/#type) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Object. TYPE](/api/object/#TYPE)|  |
+
+
+##  [Odb](/api/odb/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Odb. open (objects_dir) ](/api/odb/#open) |  Async   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Odb# addDiskAlternate (path) ](/api/odb/#addDiskAlternate) |  Sync   |
+| [Odb# free () ](/api/odb/#free) |  Sync   |
+| [Odb# read (id) ](/api/odb/#read) |  Async   |
+| [Odb# write (data, len, type) ](/api/odb/#write) |  Async   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Odb. STREAM](/api/odb/#STREAM)|  |
+
+
+##  [OdbObject](/api/odb_object/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [OdbObject# data () ](/api/odb_object/#data) |  Sync Experimental   |
+| [OdbObject# dup () ](/api/odb_object/#dup) |  Async Experimental   |
+| [OdbObject# free () ](/api/odb_object/#free) |  Sync Experimental   |
+| [OdbObject# id () ](/api/odb_object/#id) |  Sync Experimental   |
+| [OdbObject# size () ](/api/odb_object/#size) |  Sync Experimental   |
+| [OdbObject# type () ](/api/odb_object/#type) |  Sync Experimental   |
+
+
+##  [Oid](/api/oid/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Oid. fromString (str) ](/api/oid/#fromString) |  Sync   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Oid# cmp () ](/api/oid/#cmp) |  Sync   |
+| [Oid# equal () ](/api/oid/#equal) |  Sync   |
+| [Oid# iszero () ](/api/oid/#iszero) |  Sync   |
+| [Oid# ncmp (len) ](/api/oid/#ncmp) |  Sync   |
+| [Oid# strcmp (str) ](/api/oid/#strcmp) |  Sync   |
+| [Oid# streq (str) ](/api/oid/#streq) |  Sync   |
+| [Oid# tostrS () ](/api/oid/#tostrS) |  Sync   |
+
+
+
+##  [Oidarray](/api/oidarray/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [Oidarray# free () ](/api/oidarray/#free) |  Sync Experimental   |
+
+| Instance Variables |  |
+| --- | ---: |
+| [Oidarray# count](/api/oidarray/#count) |  |
+| [Oidarray# ids](/api/oidarray/#ids) |  |
+
+
+##  [Openssl](/api/openssl/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Openssl. setLocking () ](/api/openssl/#setLocking) |  Sync Experimental   |
+
+
+##  [Packbuilder](/api/packbuilder/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [Packbuilder# free () ](/api/packbuilder/#free) |  Sync Experimental   |
+| [Packbuilder# hash () ](/api/packbuilder/#hash) |  Sync Experimental   |
+| [Packbuilder# insert (id, name) ](/api/packbuilder/#insert) |  Sync Experimental   |
+| [Packbuilder# insertCommit (id) ](/api/packbuilder/#insertCommit) |  Sync Experimental   |
+| [Packbuilder# insertTree (id) ](/api/packbuilder/#insertTree) |  Sync Experimental   |
+| [Packbuilder# objectCount () ](/api/packbuilder/#objectCount) |  Sync Experimental   |
+| [Packbuilder# setThreads (n) ](/api/packbuilder/#setThreads) |  Sync Experimental   |
+| [Packbuilder# written () ](/api/packbuilder/#written) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Packbuilder. STAGE](/api/packbuilder/#STAGE)|  |
+
+
+##  [Patch](/api/patch/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Patch. fromBlobAndBuffer (old_blob, old_as_path, buffer, buffer_len, buffer_as_path, opts) ](/api/patch/#fromBlobAndBuffer) |  Async Experimental   |
+| [Patch. fromBlobs (old_blob, old_as_path, new_blob, new_as_path, opts) ](/api/patch/#fromBlobs) |  Async Experimental   |
+| [Patch. fromDiff (diff, idx) ](/api/patch/#fromDiff) |  Sync Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Patch# getDelta () ](/api/patch/#getDelta) |  Sync Experimental   |
+| [Patch# getHunk (hunk_idx) ](/api/patch/#getHunk) |  Sync Experimental   |
+| [Patch# getLineInHunk (hunk_idx, line_of_hunk) ](/api/patch/#getLineInHunk) |  Sync Experimental   |
+| [Patch# numHunks () ](/api/patch/#numHunks) |  Sync Experimental   |
+| [Patch# numLinesInHunk (hunk_idx) ](/api/patch/#numLinesInHunk) |  Sync Experimental   |
+| [Patch# size (include_context, include_hunk_headers, include_file_headers) ](/api/patch/#size) |  Sync Experimental   |
+
+
+##  [Pathspec](/api/pathspec/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Pathspec. create (pathspec) ](/api/pathspec/#create) |  Async   |
+| [Pathspec. matchListDiffEntry (m, pos) ](/api/pathspec/#matchListDiffEntry) |  Sync   |
+| [Pathspec. matchListEntry (m, pos) ](/api/pathspec/#matchListEntry) |  Sync   |
+| [Pathspec. matchListEntrycount (m) ](/api/pathspec/#matchListEntrycount) |  Sync   |
+| [Pathspec. matchListFailedEntry (m, pos) ](/api/pathspec/#matchListFailedEntry) |  Sync   |
+| [Pathspec. matchListFailedEntrycount (m) ](/api/pathspec/#matchListFailedEntrycount) |  Sync   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Pathspec# free () ](/api/pathspec/#free) |  Sync   |
+| [Pathspec# matchDiff (diff, flags) ](/api/pathspec/#matchDiff) |  Async   |
+| [Pathspec# matchIndex (index, flags) ](/api/pathspec/#matchIndex) |  Async   |
+| [Pathspec# matchTree (tree, flags) ](/api/pathspec/#matchTree) |  Async   |
+| [Pathspec# matchWorkdir (repo, flags) ](/api/pathspec/#matchWorkdir) |  Async   |
+| [Pathspec# matchesPath (flags, path) ](/api/pathspec/#matchesPath) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Pathspec. FLAG](/api/pathspec/#FLAG)|  |
+
+
+
+##  [Push](/api/push/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Push. initOptions (opts, version) ](/api/push/#initOptions) |  Sync Experimental   |
+
+
+##  [PushOptions](/api/push_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [PushOptions# pbParallelism](/api/push_options/#pbParallelism) |  |
+| [PushOptions# version](/api/push_options/#version) |  |
+
+
+##  [Rebase](/api/rebase/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Rebase. init (repo, branch, upstream, onto, signature, opts) ](/api/rebase/#init) |  Async Experimental   |
+| [Rebase. initOptions (opts, version) ](/api/rebase/#initOptions) |  Sync Experimental   |
+| [Rebase. open (repo) ](/api/rebase/#open) |  Async Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Rebase# abort (signature) ](/api/rebase/#abort) |  Sync Experimental   |
+| [Rebase# commit (id, author, committer, message_encoding, message) ](/api/rebase/#commit) |  Sync Experimental   |
+| [Rebase# finish (signature, opts) ](/api/rebase/#finish) |  Sync Experimental   |
+| [Rebase# free () ](/api/rebase/#free) |  Sync Experimental   |
+| [Rebase# operationByIndex (idx) ](/api/rebase/#operationByIndex) |  Sync Experimental   |
+| [Rebase# operationCurrent () ](/api/rebase/#operationCurrent) |  Sync Experimental   |
+| [Rebase# operationEntrycount () ](/api/rebase/#operationEntrycount) |  Sync Experimental   |
+
+
+##  [RebaseOperation](/api/rebase_operation/)
+
+| ENUMS |  |
+| --- | ---: |
+| [RebaseOperation. REBASE_OPERATION](/api/rebase_operation/#REBASE_OPERATION)|  |
+
+| Instance Variables |  |
+| --- | ---: |
+| [RebaseOperation# exec](/api/rebase_operation/#exec) |  |
+| [RebaseOperation# id](/api/rebase_operation/#id) |  |
+| [RebaseOperation# type](/api/rebase_operation/#type) |  |
+
+
+##  [RebaseOptions](/api/rebase_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [RebaseOptions# quiet](/api/rebase_options/#quiet) |  |
+| [RebaseOptions# rewriteNotesRef](/api/rebase_options/#rewriteNotesRef) |  |
+| [RebaseOptions# version](/api/rebase_options/#version) |  |
+
+
+##  [Refdb](/api/refdb/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Refdb. open (repo) ](/api/refdb/#open) |  Async Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Refdb# compress () ](/api/refdb/#compress) |  Sync Experimental   |
+| [Refdb# free () ](/api/refdb/#free) |  Sync Experimental   |
+
+
+##  [Reference](/api/reference/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Reference. create (repo, name, id, force, signature, log_message) ](/api/reference/#create) |  Async Experimental   |
+| [Reference. createMatching (repo, name, id, force, current_id, signature, log_message) ](/api/reference/#createMatching) |  Async Experimental   |
+| [Reference. dwim (repo, id, callback) ](/api/reference/#dwim) |  Async   |
+| [Reference. ensureLog (repo, refname) ](/api/reference/#ensureLog) |  Sync Experimental   |
+| [Reference. hasLog (repo, refname) ](/api/reference/#hasLog) |  Sync Experimental   |
+| [Reference. isValidName (refname) ](/api/reference/#isValidName) |  Sync Experimental   |
+| [Reference. list (repo) ](/api/reference/#list) |  Async Experimental   |
+| [Reference. lookup (repo, id, callback) ](/api/reference/#lookup) |  Async   |
+| [Reference. nameToId (repo, name) ](/api/reference/#nameToId) |  Async Experimental   |
+| [Reference. normalizeName (buffer_out, buffer_size, name, flags) ](/api/reference/#normalizeName) |  Sync Experimental   |
+| [Reference. remove (repo, name) ](/api/reference/#remove) |  Sync Experimental   |
+| [Reference. symbolicCreate (repo, name, target, force, signature, log_message) ](/api/reference/#symbolicCreate) |  Async Experimental   |
+| [Reference. symbolicCreateMatching (repo, name, target, force, current_value, signature, log_message) ](/api/reference/#symbolicCreateMatching) |  Async Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Reference# cmp () ](/api/reference/#cmp) |  Sync Experimental   |
+| [Reference# delete () ](/api/reference/#delete) |  Sync Experimental   |
+| [Reference# isBranch () ](/api/reference/#isBranch) |  Sync Experimental   |
+| [Reference# isConcrete () ](/api/reference/#isConcrete) |  Sync   |
+| [Reference# isHead () ](/api/reference/#isHead) |  Sync   |
+| [Reference# isNote () ](/api/reference/#isNote) |  Sync Experimental   |
+| [Reference# isRemote () ](/api/reference/#isRemote) |  Sync Experimental   |
+| [Reference# isSymbolic () ](/api/reference/#isSymbolic) |  Sync   |
+| [Reference# isTag () ](/api/reference/#isTag) |  Sync Experimental   |
+| [Reference# isValid () ](/api/reference/#isValid) |  Sync   |
+| [Reference# name () ](/api/reference/#name) |  Sync Experimental   |
+| [Reference# owner () ](/api/reference/#owner) |  Sync Experimental   |
+| [Reference# peel (type) ](/api/reference/#peel) |  Async Experimental   |
+| [Reference# rename (new_name, force, signature, log_message) ](/api/reference/#rename) |  Async Experimental   |
+| [Reference# resolve () ](/api/reference/#resolve) |  Async Experimental   |
+| [Reference# setTarget (id, signature, log_message) ](/api/reference/#setTarget) |  Async Experimental   |
+| [Reference# shorthand () ](/api/reference/#shorthand) |  Sync Experimental   |
+| [Reference# symbolicSetTarget (target, signature, log_message) ](/api/reference/#symbolicSetTarget) |  Async Experimental   |
+| [Reference# symbolicTarget () ](/api/reference/#symbolicTarget) |  Sync Experimental   |
+| [Reference# target () ](/api/reference/#target) |  Sync Experimental   |
+| [Reference# targetPeel () ](/api/reference/#targetPeel) |  Sync Experimental   |
+| [Reference# toString () ](/api/reference/#toString) |  Sync   |
+| [Reference# type () ](/api/reference/#type) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Reference. NORMALIZE](/api/reference/#NORMALIZE)|  |
+| [Reference. TYPE](/api/reference/#TYPE)|  |
+
+
+##  [Reflog](/api/reflog/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Reflog. delete (repo, name) ](/api/reflog/#delete) |  Sync Experimental   |
+| [Reflog. entryCommitter (entry) ](/api/reflog/#entryCommitter) |  Sync Experimental   |
+| [Reflog. entryIdNew (entry) ](/api/reflog/#entryIdNew) |  Sync Experimental   |
+| [Reflog. entryIdOld (entry) ](/api/reflog/#entryIdOld) |  Sync Experimental   |
+| [Reflog. entryMessage (entry) ](/api/reflog/#entryMessage) |  Sync Experimental   |
+| [Reflog. read (repo, name) ](/api/reflog/#read) |  Async Experimental   |
+| [Reflog. rename (repo, old_name, name) ](/api/reflog/#rename) |  Sync Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Reflog# append (id, committer, msg) ](/api/reflog/#append) |  Sync Experimental   |
+| [Reflog# drop (idx, rewrite_previous_entry) ](/api/reflog/#drop) |  Sync Experimental   |
+| [Reflog# entryByIndex (idx) ](/api/reflog/#entryByIndex) |  Sync Experimental   |
+| [Reflog# entrycount () ](/api/reflog/#entrycount) |  Sync Experimental   |
+| [Reflog# free () ](/api/reflog/#free) |  Sync Experimental   |
+| [Reflog# write () ](/api/reflog/#write) |  Sync Experimental   |
+
+
+
+##  [Refspec](/api/refspec/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [Refspec# direction () ](/api/refspec/#direction) |  Sync Experimental   |
+| [Refspec# dst () ](/api/refspec/#dst) |  Sync Experimental   |
+| [Refspec# dstMatches (refname) ](/api/refspec/#dstMatches) |  Sync Experimental   |
+| [Refspec# force () ](/api/refspec/#force) |  Sync Experimental   |
+| [Refspec# src () ](/api/refspec/#src) |  Sync Experimental   |
+| [Refspec# srcMatches (refname) ](/api/refspec/#srcMatches) |  Sync Experimental   |
+
+
+##  [Remote](/api/remote/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Remote. create (repo, name, url) ](/api/remote/#create) |  Async   |
+| [Remote. createAnonymous (repo, url, fetch) ](/api/remote/#createAnonymous) |  Async   |
+| [Remote. createWithFetchspec (repo, name, url, fetch) ](/api/remote/#createWithFetchspec) |  Async   |
+| [Remote. delete (repo, name) ](/api/remote/#delete) |  Sync   |
+| [Remote. initCallbacks (opts, version) ](/api/remote/#initCallbacks) |  Sync   |
+| [Remote. isValidName (remote_name) ](/api/remote/#isValidName) |  Sync   |
+| [Remote. list (repo) ](/api/remote/#list) |  Async   |
+| [Remote. lookup (repo, name, callback) ](/api/remote/#lookup) |  Async   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Remote# addFetch (refspec) ](/api/remote/#addFetch) |  Sync   |
+| [Remote# addPush (refspec) ](/api/remote/#addPush) |  Sync   |
+| [Remote# autotag () ](/api/remote/#autotag) |  Sync   |
+| [Remote# clearRefspecs () ](/api/remote/#clearRefspecs) |  Sync   |
+| [Remote# connect (direction) ](/api/remote/#connect) |  Async   |
+| [Remote# connected () ](/api/remote/#connected) |  Sync   |
+| [Remote# disconnect () ](/api/remote/#disconnect) |  Async   |
+| [Remote# download (refspecs) ](/api/remote/#download) |  Async   |
+| [Remote# dup () ](/api/remote/#dup) |  Async   |
+| [Remote# fetch (refspecs, signature, reflog_message) ](/api/remote/#fetch) |  Async   |
+| [Remote# free () ](/api/remote/#free) |  Sync   |
+| [Remote# getCallbacks () ](/api/remote/#getCallbacks) |  Sync   |
+| [Remote# getFetchRefspecs () ](/api/remote/#getFetchRefspecs) |  Async   |
+| [Remote# getPushRefspecs () ](/api/remote/#getPushRefspecs) |  Async   |
+| [Remote# getRefspec (n) ](/api/remote/#getRefspec) |  Sync   |
+| [Remote# ls (size) ](/api/remote/#ls) |  Async   |
+| [Remote# name () ](/api/remote/#name) |  Sync   |
+| [Remote# owner () ](/api/remote/#owner) |  Sync   |
+| [Remote# prune () ](/api/remote/#prune) |  Sync   |
+| [Remote# pruneRefs () ](/api/remote/#pruneRefs) |  Sync   |
+| [Remote# push (refSpecs, options, signature, message) ](/api/remote/#push) |  Async   |
+| [Remote# pushurl () ](/api/remote/#pushurl) |  Sync   |
+| [Remote# refspecCount () ](/api/remote/#refspecCount) |  Sync   |
+| [Remote# save () ](/api/remote/#save) |  Sync   |
+| [Remote# setAutotag (value) ](/api/remote/#setAutotag) |  Sync   |
+| [Remote# setCallbacks (callbacks) ](/api/remote/#setCallbacks) |  Sync   |
+| [Remote# setPushurl (url) ](/api/remote/#setPushurl) |  Sync   |
+| [Remote# setUpdateFetchhead (value) ](/api/remote/#setUpdateFetchhead) |  Sync   |
+| [Remote# setUrl (url) ](/api/remote/#setUrl) |  Sync   |
+| [Remote# stats () ](/api/remote/#stats) |  Sync   |
+| [Remote# stop () ](/api/remote/#stop) |  Sync   |
+| [Remote# updateFetchhead () ](/api/remote/#updateFetchhead) |  Sync   |
+| [Remote# updateTips (signature, reflog_message) ](/api/remote/#updateTips) |  Sync   |
+| [Remote# upload (refspecs, opts) ](/api/remote/#upload) |  Sync   |
+| [Remote# url () ](/api/remote/#url) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Remote. AUTOTAG_OPTION](/api/remote/#AUTOTAG_OPTION)|  |
+| [Remote. COMPLETION_TYPE](/api/remote/#COMPLETION_TYPE)|  |
+
+
+##  [RemoteCallbacks](/api/remote_callbacks/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [RemoteCallbacks# certificateCheck](/api/remote_callbacks/#certificateCheck) |  |
+| [RemoteCallbacks# credentials](/api/remote_callbacks/#credentials) |  |
+| [RemoteCallbacks# payload](/api/remote_callbacks/#payload) |  |
+| [RemoteCallbacks# transferProgress](/api/remote_callbacks/#transferProgress) |  |
+| [RemoteCallbacks# version](/api/remote_callbacks/#version) |  |
+
+
+##  [Repository](/api/repository/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Repository. init (path, is_bare) ](/api/repository/#init) |  Async   |
+| [Repository. initExt (repo_path, opts) ](/api/repository/#initExt) |  Async   |
+| [Repository. open (path) ](/api/repository/#open) |  Async   |
+| [Repository. openBare (bare_path) ](/api/repository/#openBare) |  Async   |
+| [Repository. openExt (path, flags, ceiling_dirs) ](/api/repository/#openExt) |  Async   |
+| [Repository. wrapOdb (odb) ](/api/repository/#wrapOdb) |  Async   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Repository# checkoutBranch (branch, opts) ](/api/repository/#checkoutBranch) |  Sync   |
+| [Repository# config () ](/api/repository/#config) |  Async   |
+| [Repository# configSnapshot () ](/api/repository/#configSnapshot) |  Async   |
+| [Repository# createLightweightTag (String, name) ](/api/repository/#createLightweightTag) |  Async   |
+| [Repository# createRevWalk (String) ](/api/repository/#createRevWalk) |  Sync   |
+| [Repository# createTag (String, name, message) ](/api/repository/#createTag) |  Async   |
+| [Repository# deleteTagByName (Short) ](/api/repository/#deleteTagByName) |  Async   |
+| [Repository# detachHead (signature, reflog_message) ](/api/repository/#detachHead) |  Sync   |
+| [Repository# free () ](/api/repository/#free) |  Sync   |
+| [Repository# getBlob (String) ](/api/repository/#getBlob) |  Async   |
+| [Repository# getBranch (name) ](/api/repository/#getBranch) |  Async   |
+| [Repository# getBranchCommit (name) ](/api/repository/#getBranchCommit) |  Async   |
+| [Repository# getCommit (String) ](/api/repository/#getCommit) |  Async   |
+| [Repository# getCurrentBranch () ](/api/repository/#getCurrentBranch) |  Async   |
+| [Repository# getNamespace () ](/api/repository/#getNamespace) |  Sync   |
+| [Repository# getReference (name) ](/api/repository/#getReference) |  Async   |
+| [Repository# getReferenceCommit (name) ](/api/repository/#getReferenceCommit) |  Async   |
+| [Repository# getReferenceNames (type) ](/api/repository/#getReferenceNames) |  Async   |
+| [Repository# getReferences (type) ](/api/repository/#getReferences) |  Async   |
+| [Repository# getStatusExt (opts) ](/api/repository/#getStatusExt) |  Sync   |
+| [Repository# getTag (String) ](/api/repository/#getTag) |  Async   |
+| [Repository# getTagByName (Short) ](/api/repository/#getTagByName) |  Async   |
+| [Repository# getTree (String) ](/api/repository/#getTree) |  Async   |
+| [Repository# head () ](/api/repository/#head) |  Async   |
+| [Repository# headDetached () ](/api/repository/#headDetached) |  Sync   |
+| [Repository# headUnborn () ](/api/repository/#headUnborn) |  Sync   |
+| [Repository# index () ](/api/repository/#index) |  Async   |
+| [Repository# isBare () ](/api/repository/#isBare) |  Sync   |
+| [Repository# isEmpty () ](/api/repository/#isEmpty) |  Sync   |
+| [Repository# isShallow () ](/api/repository/#isShallow) |  Sync   |
+| [Repository# messageRemove () ](/api/repository/#messageRemove) |  Sync   |
+| [Repository# odb () ](/api/repository/#odb) |  Async   |
+| [Repository# path () ](/api/repository/#path) |  Sync   |
+| [Repository# refdb () ](/api/repository/#refdb) |  Async   |
+| [Repository# setHead (refname, signature, log_message) ](/api/repository/#setHead) |  Async   |
+| [Repository# setHeadDetached (commitish, signature, log_message) ](/api/repository/#setHeadDetached) |  Sync   |
+| [Repository# setNamespace (nmspace) ](/api/repository/#setNamespace) |  Sync   |
+| [Repository# setWorkdir (workdir, update_gitlink) ](/api/repository/#setWorkdir) |  Sync   |
+| [Repository# state () ](/api/repository/#state) |  Sync   |
+| [Repository# stateCleanup () ](/api/repository/#stateCleanup) |  Sync   |
+| [Repository# workdir () ](/api/repository/#workdir) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Repository. INIT_FLAG](/api/repository/#INIT_FLAG)|  |
+| [Repository. INIT_MODE](/api/repository/#INIT_MODE)|  |
+| [Repository. OPEN_FLAG](/api/repository/#OPEN_FLAG)|  |
+| [Repository. STATE](/api/repository/#STATE)|  |
+
+
+##  [RepositoryInitOptions](/api/repository_init_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [RepositoryInitOptions# description](/api/repository_init_options/#description) |  |
+| [RepositoryInitOptions# flags](/api/repository_init_options/#flags) |  |
+| [RepositoryInitOptions# initialHead](/api/repository_init_options/#initialHead) |  |
+| [RepositoryInitOptions# mode](/api/repository_init_options/#mode) |  |
+| [RepositoryInitOptions# originUrl](/api/repository_init_options/#originUrl) |  |
+| [RepositoryInitOptions# templatePath](/api/repository_init_options/#templatePath) |  |
+| [RepositoryInitOptions# version](/api/repository_init_options/#version) |  |
+| [RepositoryInitOptions# workdirPath](/api/repository_init_options/#workdirPath) |  |
+
+
+##  [Reset](/api/reset/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Reset. default (repo, target, pathspecs) ](/api/reset/#default) |  Async   |
+| [Reset. reset (repo, target, reset_type, checkout_opts, signature, log_message) ](/api/reset/#reset) |  Async   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Reset. TYPE](/api/reset/#TYPE)|  |
+
+
+##  [Revert](/api/revert/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Revert. commit (repo, revert_commit, our_commit, mainline, merge_options) ](/api/revert/#commit) |  Async Experimental   |
+| [Revert. revert (repo, commit, given_opts) ](/api/revert/#revert) |  Sync Experimental   |
+
+
+##  [RevertOptions](/api/revert_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [RevertOptions# checkoutOpts](/api/revert_options/#checkoutOpts) |  |
+| [RevertOptions# mainline](/api/revert_options/#mainline) |  |
+| [RevertOptions# mergeOpts](/api/revert_options/#mergeOpts) |  |
+| [RevertOptions# version](/api/revert_options/#version) |  |
+
+
+##  [Revparse](/api/revparse/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Revparse. ext (object_out, reference_out, repo, spec) ](/api/revparse/#ext) |  Sync Experimental   |
+| [Revparse. single (repo, spec) ](/api/revparse/#single) |  Async Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Revparse. MODE](/api/revparse/#MODE)|  |
+
+
+##  [Revwalk](/api/revwalk/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Revwalk. create (repo) ](/api/revwalk/#create) |  Sync   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Revwalk# getCommits (count) ](/api/revwalk/#getCommits) |  Sync   |
+| [Revwalk# getCommitsUntil (checkFn) ](/api/revwalk/#getCommitsUntil) |  Sync   |
+| [Revwalk# hide (commit_id) ](/api/revwalk/#hide) |  Sync   |
+| [Revwalk# hideGlob (glob) ](/api/revwalk/#hideGlob) |  Sync   |
+| [Revwalk# hideHead () ](/api/revwalk/#hideHead) |  Sync   |
+| [Revwalk# hideRef (refname) ](/api/revwalk/#hideRef) |  Sync   |
+| [Revwalk# next () ](/api/revwalk/#next) |  Async   |
+| [Revwalk# push (id) ](/api/revwalk/#push) |  Sync   |
+| [Revwalk# pushGlob (glob) ](/api/revwalk/#pushGlob) |  Sync   |
+| [Revwalk# pushHead () ](/api/revwalk/#pushHead) |  Sync   |
+| [Revwalk# pushRange (range) ](/api/revwalk/#pushRange) |  Sync   |
+| [Revwalk# pushRef (refname) ](/api/revwalk/#pushRef) |  Sync   |
+| [Revwalk# repository () ](/api/revwalk/#repository) |  Sync   |
+| [Revwalk# reset () ](/api/revwalk/#reset) |  Sync   |
+| [Revwalk# simplifyFirstParent () ](/api/revwalk/#simplifyFirstParent) |  Sync   |
+| [Revwalk# sorting (sort) ](/api/revwalk/#sorting) |  Sync   |
+| [Revwalk# walk (oid, callback) ](/api/revwalk/#walk) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Revwalk. SORT](/api/revwalk/#SORT)|  |
+
+
+##  [Signature](/api/signature/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Signature. create (name, email, time, offset) ](/api/signature/#create) |  Sync   |
+| [Signature. default (repo) ](/api/signature/#default) |  Sync   |
+| [Signature. now (name, email) ](/api/signature/#now) |  Sync   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Signature# dup () ](/api/signature/#dup) |  Async   |
+| [Signature# free () ](/api/signature/#free) |  Sync   |
+| [Signature# toString () ](/api/signature/#toString) |  Sync   |
+
+| Instance Variables |  |
+| --- | ---: |
+| [Signature# email](/api/signature/#email) |  |
+| [Signature# name](/api/signature/#name) |  |
+| [Signature# when](/api/signature/#when) |  |
+
+
+
+##  [Stash](/api/stash/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Stash. drop (repo, index) ](/api/stash/#drop) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Stash. FLAGS](/api/stash/#FLAGS)|  |
+
+
+##  [Status](/api/status/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Status. byIndex (statuslist, idx) ](/api/status/#byIndex) |  Sync   |
+| [Status. file (status_flags, repo, path) ](/api/status/#file) |  Sync   |
+| [Status. foreach (repo, callback, payload) ](/api/status/#foreach) |  Async   |
+| [Status. foreachExt (repo, opts, callback, payload) ](/api/status/#foreachExt) |  Async   |
+| [Status. shouldIgnore (ignored, repo, path) ](/api/status/#shouldIgnore) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Status. OPT](/api/status/#OPT)|  |
+| [Status. SHOW](/api/status/#SHOW)|  |
+| [Status. STATUS](/api/status/#STATUS)|  |
+
+
+##  [StatusEntry](/api/status_entry/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [StatusEntry# headToIndex](/api/status_entry/#headToIndex) |  |
+| [StatusEntry# indexToWorkdir](/api/status_entry/#indexToWorkdir) |  |
+| [StatusEntry# status](/api/status_entry/#status) |  |
+
+
+##  [StatusList](/api/status_list/)
+
+| Class Methods |  |
+| --- | ---: |
+| [StatusList. create (repo, opts) ](/api/status_list/#create) |  Async   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [StatusList# entrycount () ](/api/status_list/#entrycount) |  Sync   |
+| [StatusList# free () ](/api/status_list/#free) |  Sync   |
+| [StatusList# getPerfdata () ](/api/status_list/#getPerfdata) |  Async   |
+
+
+##  [StatusOptions](/api/status_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [StatusOptions# flags](/api/status_options/#flags) |  |
+| [StatusOptions# pathspec](/api/status_options/#pathspec) |  |
+| [StatusOptions# show](/api/status_options/#show) |  |
+| [StatusOptions# version](/api/status_options/#version) |  |
+
+
+##  [Strarray](/api/strarray/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [Strarray# copy () ](/api/strarray/#copy) |  Sync Experimental   |
+| [Strarray# free () ](/api/strarray/#free) |  Sync Experimental   |
+
+| Instance Variables |  |
+| --- | ---: |
+| [Strarray# count](/api/strarray/#count) |  |
+| [Strarray# strings](/api/strarray/#strings) |  |
+
+
+##  [Submodule](/api/submodule/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Submodule. addSetup (repo, url, path, use_gitlink) ](/api/submodule/#addSetup) |  Async Experimental   |
+| [Submodule. lookup (repo, name) ](/api/submodule/#lookup) |  Async Experimental   |
+| [Submodule. reloadAll (repo, force) ](/api/submodule/#reloadAll) |  Sync Experimental   |
+| [Submodule. resolveUrl (repo, url) ](/api/submodule/#resolveUrl) |  Async Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Submodule# addFinalize () ](/api/submodule/#addFinalize) |  Sync Experimental   |
+| [Submodule# addToIndex (write_index) ](/api/submodule/#addToIndex) |  Sync Experimental   |
+| [Submodule# branch () ](/api/submodule/#branch) |  Sync Experimental   |
+| [Submodule# fetchRecurseSubmodules () ](/api/submodule/#fetchRecurseSubmodules) |  Sync Experimental   |
+| [Submodule# free () ](/api/submodule/#free) |  Sync Experimental   |
+| [Submodule# headId () ](/api/submodule/#headId) |  Sync Experimental   |
+| [Submodule# ignore () ](/api/submodule/#ignore) |  Sync Experimental   |
+| [Submodule# indexId () ](/api/submodule/#indexId) |  Sync Experimental   |
+| [Submodule# init (overwrite) ](/api/submodule/#init) |  Sync Experimental   |
+| [Submodule# name () ](/api/submodule/#name) |  Sync Experimental   |
+| [Submodule# open (repo) ](/api/submodule/#open) |  Sync Experimental   |
+| [Submodule# owner () ](/api/submodule/#owner) |  Sync Experimental   |
+| [Submodule# path () ](/api/submodule/#path) |  Sync Experimental   |
+| [Submodule# reload (force) ](/api/submodule/#reload) |  Sync Experimental   |
+| [Submodule# repoInit (use_gitlink) ](/api/submodule/#repoInit) |  Async Experimental   |
+| [Submodule# save () ](/api/submodule/#save) |  Sync Experimental   |
+| [Submodule# setFetchRecurseSubmodules (fetch_recurse_submodules) ](/api/submodule/#setFetchRecurseSubmodules) |  Sync Experimental   |
+| [Submodule# setIgnore (ignore) ](/api/submodule/#setIgnore) |  Sync Experimental   |
+| [Submodule# setUpdate (update) ](/api/submodule/#setUpdate) |  Sync Experimental   |
+| [Submodule# setUrl (url) ](/api/submodule/#setUrl) |  Sync Experimental   |
+| [Submodule# sync () ](/api/submodule/#sync) |  Sync Experimental   |
+| [Submodule# update (init, options) ](/api/submodule/#update) |  Sync Experimental   |
+| [Submodule# updateStrategy () ](/api/submodule/#updateStrategy) |  Sync Experimental   |
+| [Submodule# url () ](/api/submodule/#url) |  Sync Experimental   |
+| [Submodule# wdId () ](/api/submodule/#wdId) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Submodule. IGNORE](/api/submodule/#IGNORE)|  |
+| [Submodule. RECURSE](/api/submodule/#RECURSE)|  |
+| [Submodule. STATUS](/api/submodule/#STATUS)|  |
+| [Submodule. UPDATE](/api/submodule/#UPDATE)|  |
+
+
+##  [SubmoduleUpdateOptions](/api/submodule_update_options/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [SubmoduleUpdateOptions# checkoutOpts](/api/submodule_update_options/#checkoutOpts) |  |
+| [SubmoduleUpdateOptions# cloneCheckoutStrategy](/api/submodule_update_options/#cloneCheckoutStrategy) |  |
+| [SubmoduleUpdateOptions# remoteCallbacks](/api/submodule_update_options/#remoteCallbacks) |  |
+| [SubmoduleUpdateOptions# signature](/api/submodule_update_options/#signature) |  |
+| [SubmoduleUpdateOptions# version](/api/submodule_update_options/#version) |  |
+
+
+##  [Tag](/api/tag/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Tag. annotationCreate (repo, tag_name, target, tagger, message) ](/api/tag/#annotationCreate) |  Async   |
+| [Tag. create (repo, tag_name, target, tagger, message, force) ](/api/tag/#create) |  Async   |
+| [Tag. createLightweight (repo, tag_name, target, force) ](/api/tag/#createLightweight) |  Async   |
+| [Tag. delete (repo, tag_name) ](/api/tag/#delete) |  Async   |
+| [Tag. list (repo) ](/api/tag/#list) |  Async   |
+| [Tag. listMatch (tag_names, pattern, repo) ](/api/tag/#listMatch) |  Sync   |
+| [Tag. lookup (repo, id) ](/api/tag/#lookup) |  Async   |
+| [Tag. lookupPrefix (repo, id, len) ](/api/tag/#lookupPrefix) |  Async   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Tag# free () ](/api/tag/#free) |  Sync   |
+| [Tag# id () ](/api/tag/#id) |  Sync   |
+| [Tag# message () ](/api/tag/#message) |  Sync   |
+| [Tag# name () ](/api/tag/#name) |  Sync   |
+| [Tag# owner () ](/api/tag/#owner) |  Sync   |
+| [Tag# peel (tag_target_out) ](/api/tag/#peel) |  Sync   |
+| [Tag# tagger () ](/api/tag/#tagger) |  Sync   |
+| [Tag# target () ](/api/tag/#target) |  Sync   |
+| [Tag# targetId () ](/api/tag/#targetId) |  Sync   |
+| [Tag# targetType () ](/api/tag/#targetType) |  Sync   |
+
+
+##  [Time](/api/time/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [Time# offset](/api/time/#offset) |  |
+| [Time# time](/api/time/#time) |  |
+
+
+##  [Trace](/api/trace/)
+
+| ENUMS |  |
+| --- | ---: |
+| [Trace. LEVEL](/api/trace/#LEVEL)|  |
+
+
+
+##  [TransferProgress](/api/transfer_progress/)
+
+| Instance Variables |  |
+| --- | ---: |
+| [TransferProgress# indexedDeltas](/api/transfer_progress/#indexedDeltas) |  |
+| [TransferProgress# indexedObjects](/api/transfer_progress/#indexedObjects) |  |
+| [TransferProgress# localObjects](/api/transfer_progress/#localObjects) |  |
+| [TransferProgress# receivedBytes](/api/transfer_progress/#receivedBytes) |  |
+| [TransferProgress# receivedObjects](/api/transfer_progress/#receivedObjects) |  |
+| [TransferProgress# totalDeltas](/api/transfer_progress/#totalDeltas) |  |
+| [TransferProgress# totalObjects](/api/transfer_progress/#totalObjects) |  |
+
+
+##  [Transport](/api/transport/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Transport. sshWithPaths (owner, payload) ](/api/transport/#sshWithPaths) |  Async Experimental   |
+| [Transport. unregister (prefix) ](/api/transport/#unregister) |  Sync Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Transport# init (version) ](/api/transport/#init) |  Sync Experimental   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Transport. FLAGS](/api/transport/#FLAGS)|  |
+
+
+##  [Tree](/api/tree/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Tree. entryCmp (e1, e2) ](/api/tree/#entryCmp) |  Sync Experimental   |
+| [Tree. entryDup (dest, source) ](/api/tree/#entryDup) |  Sync Experimental   |
+| [Tree. entryFilemode (entry) ](/api/tree/#entryFilemode) |  Sync Experimental   |
+| [Tree. entryFilemodeRaw (entry) ](/api/tree/#entryFilemodeRaw) |  Sync Experimental   |
+| [Tree. entryId (entry) ](/api/tree/#entryId) |  Sync Experimental   |
+| [Tree. entryName (entry) ](/api/tree/#entryName) |  Sync Experimental   |
+| [Tree. entryToObject (object_out, repo, entry) ](/api/tree/#entryToObject) |  Sync Experimental   |
+| [Tree. entryType (entry) ](/api/tree/#entryType) |  Sync Experimental   |
+| [Tree. lookup (repo, id, callback) ](/api/tree/#lookup) |  Async   |
+| [Tree. lookupPrefix (repo, id, len) ](/api/tree/#lookupPrefix) |  Async Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Tree# _entryByIndex (idx) ](/api/tree/#_entryByIndex) |  Sync Experimental   |
+| [Tree# builder () ](/api/tree/#builder) |  Sync   |
+| [Tree# diff (tree, callback) ](/api/tree/#diff) |  Async   |
+| [Tree# entries () ](/api/tree/#entries) |  Sync   |
+| [Tree# entryById (id) ](/api/tree/#entryById) |  Sync Experimental   |
+| [Tree# entryByIndex (i) ](/api/tree/#entryByIndex) |  Sync   |
+| [Tree# entryByName (name) ](/api/tree/#entryByName) |  Sync   |
+| [Tree# entryByPath (path) ](/api/tree/#entryByPath) |  Async Experimental   |
+| [Tree# entryCount () ](/api/tree/#entryCount) |  Sync Experimental   |
+| [Tree# free () ](/api/tree/#free) |  Sync Experimental   |
+| [Tree# getEntry (path) ](/api/tree/#getEntry) |  Sync   |
+| [Tree# id () ](/api/tree/#id) |  Sync Experimental   |
+| [Tree# owner () ](/api/tree/#owner) |  Sync Experimental   |
+| [Tree# path () ](/api/tree/#path) |  Sync   |
+| [Tree# walk ([blobsOnly) ](/api/tree/#walk) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [Tree. WALK_MODE](/api/tree/#WALK_MODE)|  |
+
+
+##  [TreeEntry](/api/tree_entry/)
+
+| Instance Methods |  |
+| --- | ---: |
+| [TreeEntry# getBlob () ](/api/tree_entry/#getBlob) |  Async   |
+| [TreeEntry# getTree () ](/api/tree_entry/#getTree) |  Async   |
+| [TreeEntry# isBlob () ](/api/tree_entry/#isBlob) |  Sync   |
+| [TreeEntry# isDirectory () ](/api/tree_entry/#isDirectory) |  Sync   |
+| [TreeEntry# isFile () ](/api/tree_entry/#isFile) |  Sync   |
+| [TreeEntry# isTree () ](/api/tree_entry/#isTree) |  Sync   |
+| [TreeEntry# path () ](/api/tree_entry/#path) |  Sync   |
+| [TreeEntry# sha () ](/api/tree_entry/#sha) |  Sync   |
+| [TreeEntry# toString () ](/api/tree_entry/#toString) |  Sync   |
+
+| ENUMS |  |
+| --- | ---: |
+| [TreeEntry. FILEMODE](/api/tree_entry/#FILEMODE)|  |
+
+| Instance Variables |  |
+| --- | ---: |
+| [TreeEntry# attr](/api/tree_entry/#attr) |  |
+| [TreeEntry# filename](/api/tree_entry/#filename) |  |
+| [TreeEntry# filenameLen](/api/tree_entry/#filenameLen) |  |
+| [TreeEntry# oid](/api/tree_entry/#oid) |  |
+
+
+##  [Treebuilder](/api/treebuilder/)
+
+| Class Methods |  |
+| --- | ---: |
+| [Treebuilder. create (repo, source) ](/api/treebuilder/#create) |  Async Experimental   |
+
+| Instance Methods |  |
+| --- | ---: |
+| [Treebuilder# clear () ](/api/treebuilder/#clear) |  Sync Experimental   |
+| [Treebuilder# entrycount () ](/api/treebuilder/#entrycount) |  Sync Experimental   |
+| [Treebuilder# free () ](/api/treebuilder/#free) |  Sync Experimental   |
+| [Treebuilder# get (filename) ](/api/treebuilder/#get) |  Sync Experimental   |
+| [Treebuilder# insert (filename, id, filemode) ](/api/treebuilder/#insert) |  Async Experimental   |
+| [Treebuilder# remove (filename) ](/api/treebuilder/#remove) |  Sync Experimental   |
+| [Treebuilder# write (id) ](/api/treebuilder/#write) |  Sync Experimental   |
+
+
diff --git a/api/index/index.md b/api/index/index.md
new file mode 100644
index 0000000..132c657
--- /dev/null
+++ b/api/index/index.md
@@ -0,0 +1,439 @@
+---
+layout: default
+menu_item: api
+title: Index
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "entryStage": "#entryStage"
+  "open": "#open"
+  "#add": "#add"
+  "#addAll": "#addAll"
+  "#addByPath": "#addByPath"
+  "#caps": "#caps"
+  "#clear": "#clear"
+  "#conflictAdd": "#conflictAdd"
+  "#conflictCleanup": "#conflictCleanup"
+  "#conflictRemove": "#conflictRemove"
+  "#entries": "#entries"
+  "#entryCount": "#entryCount"
+  "#getByIndex": "#getByIndex"
+  "#getByPath": "#getByPath"
+  "#hasConflicts": "#hasConflicts"
+  "#owner": "#owner"
+  "#path": "#path"
+  "#read": "#read"
+  "#readTree": "#readTree"
+  "#remove": "#remove"
+  "#removeAll": "#removeAll"
+  "#removeByPath": "#removeByPath"
+  "#removeDirectory": "#removeDirectory"
+  "#setCaps": "#setCaps"
+  "#updateAll": "#updateAll"
+  "#write": "#write"
+  "#writeTree": "#writeTree"
+  "#writeTreeTo": "#writeTreeTo"
+  "ADD_OPTION": "#ADD_OPTION"
+  "CAP": "#CAP"
+---
+
+## Index. entryStage Sync  
+
+```js
+var result = Index.entryStage(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [IndexEntry](/api/index_entry/) | The entry |
+
+| Returns |  |
+| --- | --- |
+| Number |  the stage number |
+
+## Index. open Async  
+
+```js
+Index.open(index_path).then(function(index) {
+  // Use index
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| index_path | String | the path to the index file in disk |
+
+| Returns |  |
+| --- | --- |
+| [Index](/api/index/) |  |
+
+## Index# add Sync  
+
+```js
+var result = index.add(source_entry);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| source_entry | [IndexEntry](/api/index_entry/) | new entry object |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# addAll Async  
+
+```js
+index.addAll(pathspec, flags, callback, payload).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| pathspec | [Strarray](/api/strarray/) | array of path patterns |
+| flags | Number | combination of git_index_add_option_t flags |
+| callback | IndexMatchedPathCb | notification callback for each added/updated path (also gets index of matching pathspec entry); can be NULL; return 0 to add, >0 to skip, <0 to abort scan. |
+| payload | Void | payload passed through to callback function |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, negative callback return value, or error code |
+
+## Index# addByPath Sync  
+
+```js
+var result = index.addByPath(path);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String | filename to add |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# caps Sync  
+
+```js
+var result = index.caps();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  A combination of GIT_INDEXCAP values |
+
+## Index# clear Sync  
+
+```js
+var result = index.clear();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, error code 
+<
+ 0 on failure |
+
+## Index# conflictAdd Sync  
+
+```js
+var result = index.conflictAdd(ancestor_entry, our_entry, their_entry);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| ancestor_entry | [IndexEntry](/api/index_entry/) | the entry data for the ancestor of the conflict |
+| our_entry | [IndexEntry](/api/index_entry/) | the entry data for our side of the merge conflict |
+| their_entry | [IndexEntry](/api/index_entry/) | the entry data for their side of the merge conflict |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# conflictCleanup Sync  
+
+```js
+var result = index.conflictCleanup();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# conflictRemove Sync  
+
+```js
+var result = index.conflictRemove(path);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String | path to remove conflicts for |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# entries Sync  
+
+```js
+var arrayIndexEntry = index.entries();
+```
+
+Return an array of the entries in this index.
+
+| Returns |  |
+| --- | --- |
+| Array<[IndexEntry](/api/index_entry/)> | an array of IndexEntrys |
+
+## Index# entryCount Sync  
+
+```js
+var result = index.entryCount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  integer of count of current entries |
+
+## Index# getByIndex Sync  
+
+```js
+var indexEntry = index.getByIndex(n);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| n | Number | the position of the entry |
+
+| Returns |  |
+| --- | --- |
+| [IndexEntry](/api/index_entry/) |  the entry; NULL if out of bounds |
+
+## Index# getByPath Sync  
+
+```js
+var indexEntry = index.getByPath(path, stage);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String | path to search |
+| stage | Number | stage to search |
+
+| Returns |  |
+| --- | --- |
+| [IndexEntry](/api/index_entry/) |  the entry; NULL if it was not found |
+
+## Index# hasConflicts Sync  
+
+```js
+var result = index.hasConflicts();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if at least one conflict is found, 0 otherwise. |
+
+## Index# owner Sync  
+
+```js
+var repository = index.owner();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  the repository |
+
+## Index# path Sync  
+
+```js
+var string = index.path();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  path to index file or NULL for in-memory index |
+
+## Index# read Sync  
+
+```js
+var result = index.read(force);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| force | Number | if true, always reload, vs. only read if file has changed |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# readTree Sync  
+
+```js
+var result = index.readTree(tree);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| tree | [Tree](/api/tree/) | tree to read |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# remove Sync  
+
+```js
+var result = index.remove(path, stage);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String | path to search |
+| stage | Number | stage to search |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# removeAll Async  
+
+```js
+index.removeAll(pathspec, callback, payload).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| pathspec | [Strarray](/api/strarray/) | array of path patterns |
+| callback | IndexMatchedPathCb | notification callback for each removed path (also gets index of matching pathspec entry); can be NULL; return 0 to add, >0 to skip, <0 to abort scan. |
+| payload | Void | payload passed through to callback function |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, negative callback return value, or error code |
+
+## Index# removeByPath Sync  
+
+```js
+var result = index.removeByPath(path);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String | filename to remove |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# removeDirectory Sync  
+
+```js
+var result = index.removeDirectory(dir, stage);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| dir | String | container directory path |
+| stage | Number | stage to search |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# setCaps Sync  
+
+```js
+var result = index.setCaps(caps);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| caps | Number | A combination of GIT_INDEXCAP values |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, -1 on failure |
+
+## Index# updateAll Async  
+
+```js
+index.updateAll(pathspec, callback, payload).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| pathspec | [Strarray](/api/strarray/) | array of path patterns |
+| callback | IndexMatchedPathCb | notification callback for each updated path (also gets index of matching pathspec entry); can be NULL; return 0 to add, >0 to skip, <0 to abort scan. |
+| payload | Void | payload passed through to callback function |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, negative callback return value, or error code |
+
+## Index# write Sync  
+
+```js
+var result = index.write();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Index# writeTree Async  
+
+```js
+index.writeTree().then(function(oid) {
+  // Use oid
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) | the OID of the written tree |
+
+## Index# writeTreeTo Async  
+
+```js
+index.writeTreeTo(repo).then(function(oid) {
+  // Use oid
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where to write the tree |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) | OID of the the written tree |
+
+## Index. ADD_OPTION ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Index.ADD_OPTION. ADD_DEFAULT | 0 |
+| Index.ADD_OPTION. ADD_FORCE | 1 |
+| Index.ADD_OPTION. ADD_DISABLE_PATHSPEC_MATCH | 2 |
+| Index.ADD_OPTION. ADD_CHECK_PATHSPEC | 4 |
+
+## Index. CAP ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Index.CAP. IGNORE_CASE | 1 |
+| Index.CAP. NO_FILEMODE | 2 |
+| Index.CAP. NO_SYMLINKS | 4 |
+| Index.CAP. FROM_OWNER | -1 |
+
diff --git a/api/index_entry/index.md b/api/index_entry/index.md
new file mode 100644
index 0000000..acfe000
--- /dev/null
+++ b/api/index_entry/index.md
@@ -0,0 +1,33 @@
+---
+layout: default
+menu_item: api
+title: IndexEntry
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var indexEntry = new IndexEntry();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  ctime | IndexTime |
+|  dev | Number |
+|  fileSize | Number |
+|  flags | Number |
+|  flagsExtended | Number |
+|  gid | Number |
+|  id | Oid |
+|  ino | Number |
+|  mode | Number |
+|  mtime | IndexTime |
+|  path | String |
+|  uid | Number |
+
diff --git a/api/index_time/index.md b/api/index_time/index.md
new file mode 100644
index 0000000..62ed34a
--- /dev/null
+++ b/api/index_time/index.md
@@ -0,0 +1,19 @@
+---
+layout: default
+menu_item: api
+title: IndexTime
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  nanoseconds | Number |
+|  seconds | Number |
+
diff --git a/api/indexer/index.md b/api/indexer/index.md
new file mode 100644
index 0000000..28c7f0b
--- /dev/null
+++ b/api/indexer/index.md
@@ -0,0 +1,44 @@
+---
+layout: default
+menu_item: api
+title: Indexer
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#commit": "#commit"
+  "#free": "#free"
+  "#hash": "#hash"
+---
+
+## Indexer# commit Sync Experimental  
+
+```js
+var result = indexer.commit(stats);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| stats | [TransferProgress](/api/transfer_progress/) |  |
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Indexer# free Sync Experimental  
+
+```js
+indexer.free();
+```
+
+## Indexer# hash Sync Experimental  
+
+```js
+var oid = indexer.hash();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
diff --git a/api/libgit_2/index.md b/api/libgit_2/index.md
new file mode 100644
index 0000000..139aaf3
--- /dev/null
+++ b/api/libgit_2/index.md
@@ -0,0 +1,94 @@
+---
+layout: default
+menu_item: api
+title: Libgit2
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "features": "#features"
+  "init": "#init"
+  "opts": "#opts"
+  "shutdown": "#shutdown"
+  "version": "#version"
+  "OPT": "#OPT"
+---
+
+## Libgit2. features Sync Experimental  
+
+```js
+var result = Libgit2.features();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  A combination of GIT_FEATURE_* values. |
+
+## Libgit2. init Sync Experimental  
+
+```js
+var result = Libgit2.init();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the number of initializations of the library, or an error code. |
+
+## Libgit2. opts Sync Experimental  
+
+```js
+var result = Libgit2.opts(option);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| option | Number | Option key |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, 
+<
+0 on failure |
+
+## Libgit2. shutdown Sync Experimental  
+
+```js
+var result = Libgit2.shutdown();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the number of remaining initializations of the library, or an
+ error code. |
+
+## Libgit2. version Sync Experimental  
+
+```js
+Libgit2.version(major, minor, rev);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| major | Number | Store the major version number |
+| minor | Number | Store the minor version number |
+| rev | Number | Store the revision (patch) number |
+
+## Libgit2. OPT ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Libgit2.OPT. GET_MWINDOW_SIZE | 0 |
+| Libgit2.OPT. SET_MWINDOW_SIZE | 1 |
+| Libgit2.OPT. GET_MWINDOW_MAPPED_LIMIT | 2 |
+| Libgit2.OPT. SET_MWINDOW_MAPPED_LIMIT | 3 |
+| Libgit2.OPT. GET_SEARCH_PATH | 4 |
+| Libgit2.OPT. SET_SEARCH_PATH | 5 |
+| Libgit2.OPT. SET_CACHE_OBJECT_LIMIT | 6 |
+| Libgit2.OPT. SET_CACHE_MAX_SIZE | 7 |
+| Libgit2.OPT. ENABLE_CACHING | 8 |
+| Libgit2.OPT. GET_CACHED_MEMORY | 9 |
+| Libgit2.OPT. GET_TEMPLATE_PATH | 10 |
+| Libgit2.OPT. SET_TEMPLATE_PATH | 11 |
+| Libgit2.OPT. SET_SSL_CERT_LOCATIONS | 12 |
+
diff --git a/api/merge/index.md b/api/merge/index.md
new file mode 100644
index 0000000..fe57bcd
--- /dev/null
+++ b/api/merge/index.md
@@ -0,0 +1,167 @@
+---
+layout: default
+menu_item: api
+title: Merge
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "base": "#base"
+  "bases": "#bases"
+  "commits": "#commits"
+  "fileInitInput": "#fileInitInput"
+  "initOptions": "#initOptions"
+  "trees": "#trees"
+  "ANALYSIS": "#ANALYSIS"
+  "FILE_FAVOR": "#FILE_FAVOR"
+  "FILE_FLAGS": "#FILE_FLAGS"
+  "PREFERENCE": "#PREFERENCE"
+  "TREE_FLAG": "#TREE_FLAG"
+---
+
+## Merge. base Async  
+
+```js
+Merge.base(repo, one, two).then(function(oid) {
+  // Use oid
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository where the commits exist |
+| one | [Oid](/api/oid/) | one of the commits |
+| two | [Oid](/api/oid/) | the other commit |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) | the OID of a merge base between 'one' and 'two' |
+
+## Merge. bases Async  
+
+```js
+Merge.bases(repo, one, two).then(function(oidarray) {
+  // Use oidarray
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository where the commits exist |
+| one | [Oid](/api/oid/) | one of the commits |
+| two | [Oid](/api/oid/) | the other commit |
+
+| Returns |  |
+| --- | --- |
+| [Oidarray](/api/oidarray/) | array in which to store the resulting ids |
+
+## Merge. commits Sync  
+
+```js
+Merge.commits(repo, ourCommit, theirCommit, [options]);
+```
+
+Merge 2 commits together and create an new index that can
+be used to create a merge commit.
+
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository that contains the given commits |
+| ourCommit | [Commit](/api/commit/) | The commit that reflects the destination tree |
+| theirCommit | [Commit](/api/commit/) | The commit to merge into ourCommit |
+| [options] | [MergeOptions](/api/merge_options/) | The merge tree options (null for default) |
+
+## Merge. fileInitInput Sync  
+
+```js
+var result = Merge.fileInitInput(opts, version);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| opts | [MergeFileInput](/api/merge_file_input/) | the `git_merge_file_input` instance to initialize. |
+| version | Number | the version of the struct; you should pass `GIT_MERGE_FILE_INPUT_VERSION` here. |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
+## Merge. initOptions Sync  
+
+```js
+var result = Merge.initOptions(opts, version);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| opts | [MergeOptions](/api/merge_options/) | the `git_merge_options` instance to initialize. |
+| version | Number | the version of the struct; you should pass `GIT_MERGE_OPTIONS_VERSION` here. |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
+## Merge. trees Async  
+
+```js
+Merge.trees(repo, ancestor_tree, our_tree, their_tree, opts).then(function(index) {
+  // Use index
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository that contains the given trees |
+| ancestor_tree | [Tree](/api/tree/) | the common ancestor between the trees (or null if none) |
+| our_tree | [Tree](/api/tree/) | the tree that reflects the destination tree |
+| their_tree | [Tree](/api/tree/) | the tree to merge in to `our_tree` |
+| opts | [MergeOptions](/api/merge_options/) | the merge tree options (or null for defaults) |
+
+| Returns |  |
+| --- | --- |
+| [Index](/api/index/) |  |
+
+## Merge. ANALYSIS ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Merge.ANALYSIS. NONE | 0 |
+| Merge.ANALYSIS. NORMAL | 1 |
+| Merge.ANALYSIS. UP_TO_DATE | 2 |
+| Merge.ANALYSIS. FASTFORWARD | 4 |
+| Merge.ANALYSIS. UNBORN | 8 |
+
+## Merge. FILE_FAVOR ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Merge.FILE_FAVOR. NORMAL | 0 |
+| Merge.FILE_FAVOR. OURS | 1 |
+| Merge.FILE_FAVOR. THEIRS | 2 |
+| Merge.FILE_FAVOR. UNION | 3 |
+
+## Merge. FILE_FLAGS ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Merge.FILE_FLAGS. FILE_DEFAULT | 0 |
+| Merge.FILE_FLAGS. FILE_STYLE_MERGE | 1 |
+| Merge.FILE_FLAGS. FILE_STYLE_DIFF3 | 2 |
+| Merge.FILE_FLAGS. FILE_SIMPLIFY_ALNUM | 4 |
+
+## Merge. PREFERENCE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Merge.PREFERENCE. NONE | 0 |
+| Merge.PREFERENCE. NO_FASTFORWARD | 1 |
+| Merge.PREFERENCE. FASTFORWARD_ONLY | 2 |
+
+## Merge. TREE_FLAG ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Merge.TREE_FLAG. TREE_FIND_RENAMES | 1 |
+
diff --git a/api/merge_file_input/index.md b/api/merge_file_input/index.md
new file mode 100644
index 0000000..2e6d43d
--- /dev/null
+++ b/api/merge_file_input/index.md
@@ -0,0 +1,26 @@
+---
+layout: default
+menu_item: api
+title: MergeFileInput
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var mergeFileInput = new MergeFileInput();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  mode | Number |
+|  path | String |
+|  ptr | String |
+|  size | Number |
+|  version | Number |
+
diff --git a/api/merge_file_options/index.md b/api/merge_file_options/index.md
new file mode 100644
index 0000000..8cac6ef
--- /dev/null
+++ b/api/merge_file_options/index.md
@@ -0,0 +1,27 @@
+---
+layout: default
+menu_item: api
+title: MergeFileOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var mergeFileOptions = new MergeFileOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  ancestorLabel | String |
+|  favor | Number |
+|  flags | Number |
+|  ourLabel | String |
+|  theirLabel | String |
+|  version | Number |
+
diff --git a/api/merge_file_result/index.md b/api/merge_file_result/index.md
new file mode 100644
index 0000000..1fd7917
--- /dev/null
+++ b/api/merge_file_result/index.md
@@ -0,0 +1,22 @@
+---
+layout: default
+menu_item: api
+title: MergeFileResult
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  automergeable | Number |
+|  len | Number |
+|  mode | Number |
+|  path | String |
+|  ptr | String |
+
diff --git a/api/merge_options/index.md b/api/merge_options/index.md
new file mode 100644
index 0000000..8548ae0
--- /dev/null
+++ b/api/merge_options/index.md
@@ -0,0 +1,26 @@
+---
+layout: default
+menu_item: api
+title: MergeOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var mergeOptions = new MergeOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  fileFavor | Number |
+|  flags | Number |
+|  renameThreshold | Number |
+|  targetLimit | Number |
+|  version | Number |
+
diff --git a/api/note/index.md b/api/note/index.md
new file mode 100644
index 0000000..95e3b34
--- /dev/null
+++ b/api/note/index.md
@@ -0,0 +1,176 @@
+---
+layout: default
+menu_item: api
+title: Note
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "defaultRef": "#defaultRef"
+  "iteratorNew": "#iteratorNew"
+  "next": "#next"
+  "read": "#read"
+  "remove": "#remove"
+  "#author": "#author"
+  "#committer": "#committer"
+  "#free": "#free"
+  "#id": "#id"
+  "#message": "#message"
+---
+
+## Note. create Async Experimental  
+
+```js
+Note.create(repo, notes_ref, author, committer, oid, note, force).then(function(oid) {
+  // Use oid
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository where to store the note |
+| notes_ref | String | canonical name of the reference to use (optional); defaults to "refs/notes/commits" |
+| author | [Signature](/api/signature/) | signature of the notes commit author |
+| committer | [Signature](/api/signature/) | signature of the notes commit committer |
+| oid | [Oid](/api/oid/) | OID of the git object to decorate |
+| note | String | Content of the note to add for object oid |
+| force | Number | Overwrite existing note |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
+## Note. defaultRef Async Experimental  
+
+```js
+Note.defaultRef(repo).then(function(string) {
+  // Use string
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The Git repository |
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## Note. iteratorNew Async Experimental  
+
+```js
+Note.iteratorNew(repo, notes_ref).then(function(noteIterator) {
+  // Use noteIterator
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository where to look up the note |
+| notes_ref | String | canonical name of the reference to use (optional); defaults to "refs/notes/commits" |
+
+| Returns |  |
+| --- | --- |
+| [NoteIterator](/api/note_iterator/) |  |
+
+## Note. next Sync Experimental  
+
+```js
+var result = Note.next(note_id, annotated_id, it);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| note_id | [Oid](/api/oid/) | id of blob containing the message |
+| annotated_id | [Oid](/api/oid/) | id of the git object being annotated |
+| it | [NoteIterator](/api/note_iterator/) | pointer to the iterator |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 (no error), GIT_ITEROVER (iteration is done) or an error code
+         (negative value) |
+
+## Note. read Async Experimental  
+
+```js
+Note.read(repo, notes_ref, oid).then(function(note) {
+  // Use note
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository where to look up the note |
+| notes_ref | String | canonical name of the reference to use (optional); defaults to "refs/notes/commits" |
+| oid | [Oid](/api/oid/) | OID of the git object to read the note from |
+
+| Returns |  |
+| --- | --- |
+| [Note](/api/note/) |  |
+
+## Note. remove Sync Experimental  
+
+```js
+var result = Note.remove(repo, notes_ref, author, committer, oid);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository where the note lives |
+| notes_ref | String | canonical name of the reference to use (optional); defaults to "refs/notes/commits" |
+| author | [Signature](/api/signature/) | signature of the notes commit author |
+| committer | [Signature](/api/signature/) | signature of the notes commit committer |
+| oid | [Oid](/api/oid/) | OID of the git object to remove the note from |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Note# author Sync Experimental  
+
+```js
+var signature = note.author();
+```
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) |  the author |
+
+## Note# committer Sync Experimental  
+
+```js
+var signature = note.committer();
+```
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) |  the committer |
+
+## Note# free Sync Experimental  
+
+```js
+note.free();
+```
+
+## Note# id Sync Experimental  
+
+```js
+var oid = note.id();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the note object's id |
+
+## Note# message Sync Experimental  
+
+```js
+var string = note.message();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the note message |
+
diff --git a/api/object/index.md b/api/object/index.md
new file mode 100644
index 0000000..ab2e922
--- /dev/null
+++ b/api/object/index.md
@@ -0,0 +1,229 @@
+---
+layout: default
+menu_item: api
+title: Object
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "lookup": "#lookup"
+  "lookupPrefix": "#lookupPrefix"
+  "size": "#size"
+  "string2type": "#string2type"
+  "type2string": "#type2string"
+  "typeisloose": "#typeisloose"
+  "#dup": "#dup"
+  "#free": "#free"
+  "#id": "#id"
+  "#lookupByPath": "#lookupByPath"
+  "#owner": "#owner"
+  "#peel": "#peel"
+  "#shortId": "#shortId"
+  "#type": "#type"
+  "TYPE": "#TYPE"
+---
+
+## Object. lookup Async Experimental  
+
+```js
+Object.lookup(repo, id, type).then(function(object) {
+  // Use object
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository to look up the object |
+| id | [Oid](/api/oid/) | the unique identifier for the object |
+| type | Number | the type of the object |
+
+| Returns |  |
+| --- | --- |
+| [Object](/api/object/) |  |
+
+## Object. lookupPrefix Async Experimental  
+
+```js
+Object.lookupPrefix(repo, id, len, type).then(function(object) {
+  // Use object
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository to look up the object |
+| id | [Oid](/api/oid/) | a short identifier for the object |
+| len | Number | the length of the short identifier |
+| type | Number | the type of the object |
+
+| Returns |  |
+| --- | --- |
+| [Object](/api/object/) | the looked-up object |
+
+## Object. size Sync Experimental  
+
+```js
+var result = Object.size(type);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| type | Number | object type to get its size |
+
+| Returns |  |
+| --- | --- |
+| Number |  size in bytes of the object |
+
+## Object. string2type Sync Experimental  
+
+```js
+var result = Object.string2type(str);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| str | String | the string to convert. |
+
+| Returns |  |
+| --- | --- |
+| Number |  the corresponding git_otype. |
+
+## Object. type2string Sync Experimental  
+
+```js
+var string = Object.type2string(type);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| type | Number | object type to convert. |
+
+| Returns |  |
+| --- | --- |
+| String |  the corresponding string representation. |
+
+## Object. typeisloose Sync Experimental  
+
+```js
+var result = Object.typeisloose(type);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| type | Number | object type to test. |
+
+| Returns |  |
+| --- | --- |
+| Number |  true if the type represents a valid loose object type,
+ false otherwise. |
+
+## Object# dup Async Experimental  
+
+```js
+object.dup().then(function(object) {
+  // Use object
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Object](/api/object/) |  |
+
+## Object# free Sync Experimental  
+
+```js
+object.free();
+```
+
+## Object# id Sync Experimental  
+
+```js
+var oid = object.id();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the SHA1 id |
+
+## Object# lookupByPath Async Experimental  
+
+```js
+object.lookupByPath(path, type).then(function(object) {
+  // Use object
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String | relative path from the root object to the desired object |
+| type | Number | type of object desired |
+
+| Returns |  |
+| --- | --- |
+| [Object](/api/object/) | buffer that receives the object (which must be freed
+            by the caller) |
+
+## Object# owner Sync Experimental  
+
+```js
+var repository = object.owner();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  the repository who owns this object |
+
+## Object# peel Async Experimental  
+
+```js
+object.peel(target_type).then(function(object) {
+  // Use object
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| target_type | Number | The type of the requested object (a GIT_OBJ_ value) |
+
+| Returns |  |
+| --- | --- |
+| [Object](/api/object/) |  |
+
+## Object# shortId Async Experimental  
+
+```js
+object.shortId().then(function(buf) {
+  // Use buf
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Buf](/api/buf/) | Buffer to write string into |
+
+## Object# type Sync Experimental  
+
+```js
+var result = object.type();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the object's type |
+
+## Object. TYPE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Object.TYPE. ANY | -2 |
+| Object.TYPE. BAD | -1 |
+| Object.TYPE. EXT1 | 0 |
+| Object.TYPE. COMMIT | 1 |
+| Object.TYPE. TREE | 2 |
+| Object.TYPE. BLOB | 3 |
+| Object.TYPE. TAG | 4 |
+| Object.TYPE. EXT2 | 5 |
+| Object.TYPE. OFS_DELTA | 6 |
+| Object.TYPE. REF_DELTA | 7 |
+
diff --git a/api/odb/index.md b/api/odb/index.md
new file mode 100644
index 0000000..83187d8
--- /dev/null
+++ b/api/odb/index.md
@@ -0,0 +1,95 @@
+---
+layout: default
+menu_item: api
+title: Odb
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "open": "#open"
+  "#addDiskAlternate": "#addDiskAlternate"
+  "#free": "#free"
+  "#read": "#read"
+  "#write": "#write"
+  "STREAM": "#STREAM"
+---
+
+## Odb. open Async  
+
+```js
+Odb.open(objects_dir).then(function(odb) {
+  // Use odb
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| objects_dir | String | path of the backends' "objects" directory. |
+
+| Returns |  |
+| --- | --- |
+| [Odb](/api/odb/) |  |
+
+## Odb# addDiskAlternate Sync  
+
+```js
+var result = odb.addDiskAlternate(path);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String | path to the objects folder for the alternate |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success; error code otherwise |
+
+## Odb# free Sync  
+
+```js
+odb.free();
+```
+
+## Odb# read Async  
+
+```js
+odb.read(id).then(function(odbObject) {
+  // Use odbObject
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | identity of the object to read. |
+
+| Returns |  |
+| --- | --- |
+| [OdbObject](/api/odb_object/) | the read object |
+
+## Odb# write Async  
+
+```js
+odb.write(data, len, type).then(function(oid) {
+  // Use oid
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| data | Buffer | buffer with the data to store |
+| len | Number | size of the buffer |
+| type | Number | type of the data to store |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
+## Odb. STREAM ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Odb.STREAM. RDONLY | 2 |
+| Odb.STREAM. WRONLY | 4 |
+| Odb.STREAM. RW | 6 |
+
diff --git a/api/odb_object/index.md b/api/odb_object/index.md
new file mode 100644
index 0000000..ba8ae1d
--- /dev/null
+++ b/api/odb_object/index.md
@@ -0,0 +1,75 @@
+---
+layout: default
+menu_item: api
+title: OdbObject
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#data": "#data"
+  "#dup": "#dup"
+  "#free": "#free"
+  "#id": "#id"
+  "#size": "#size"
+  "#type": "#type"
+---
+
+## OdbObject# data Sync Experimental  
+
+```js
+var buffer = odbObject.data();
+```
+
+| Returns |  |
+| --- | --- |
+| Buffer |  the data |
+
+## OdbObject# dup Async Experimental  
+
+```js
+odbObject.dup().then(function(odbObject) {
+  // Use odbObject
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [OdbObject](/api/odb_object/) | the copy |
+
+## OdbObject# free Sync Experimental  
+
+```js
+odbObject.free();
+```
+
+## OdbObject# id Sync Experimental  
+
+```js
+var oid = odbObject.id();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the OID |
+
+## OdbObject# size Sync Experimental  
+
+```js
+var result = odbObject.size();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the size |
+
+## OdbObject# type Sync Experimental  
+
+```js
+var result = odbObject.type();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the type |
+
diff --git a/api/oid/index.md b/api/oid/index.md
new file mode 100644
index 0000000..600dff0
--- /dev/null
+++ b/api/oid/index.md
@@ -0,0 +1,122 @@
+---
+layout: default
+menu_item: api
+title: Oid
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "fromString": "#fromString"
+  "#cmp": "#cmp"
+  "#equal": "#equal"
+  "#iszero": "#iszero"
+  "#ncmp": "#ncmp"
+  "#strcmp": "#strcmp"
+  "#streq": "#streq"
+  "#tostrS": "#tostrS"
+---
+
+## Oid. fromString Sync  
+
+```js
+var oid = Oid.fromString(str);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| str | String | input hex string; must be pointing at the start of the hex sequence and have at least the number of bytes needed for an oid encoded in hex (40 bytes). |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) | oid structure the result is written into. |
+
+## Oid# cmp Sync  
+
+```js
+var result = oid.cmp();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  
+<
+0, 0, >0 if a 
+<
+ b, a == b, a > b. |
+
+## Oid# equal Sync  
+
+```js
+var result = oid.equal();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  true if equal, false otherwise |
+
+## Oid# iszero Sync  
+
+```js
+var result = oid.iszero();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if all zeros, 0 otherwise. |
+
+## Oid# ncmp Sync  
+
+```js
+var result = oid.ncmp(len);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| len | Number | the number of hex chars to compare |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 in case of a match |
+
+## Oid# strcmp Sync  
+
+```js
+var result = oid.strcmp(str);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| str | String | input hex string of an object id. |
+
+| Returns |  |
+| --- | --- |
+| Number |  -1 if str is not valid, 
+<
+0 if id sorts before str,
+         0 if id matches str, >0 if id sorts after str. |
+
+## Oid# streq Sync  
+
+```js
+var result = oid.streq(str);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| str | String | input hex string of an object id. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 in case of a match, -1 otherwise. |
+
+## Oid# tostrS Sync  
+
+```js
+var string = oid.tostrS();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the c-string |
+
diff --git a/api/oidarray/index.md b/api/oidarray/index.md
new file mode 100644
index 0000000..752cec9
--- /dev/null
+++ b/api/oidarray/index.md
@@ -0,0 +1,26 @@
+---
+layout: default
+menu_item: api
+title: Oidarray
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#free": "#free"
+  "Instance Variables": "#ivars"
+---
+
+## Oidarray# free Sync Experimental  
+
+```js
+oidarray.free();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  count | Number |
+|  ids | Oid |
+
diff --git a/api/openssl/index.md b/api/openssl/index.md
new file mode 100644
index 0000000..5582714
--- /dev/null
+++ b/api/openssl/index.md
@@ -0,0 +1,23 @@
+---
+layout: default
+menu_item: api
+title: Openssl
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "setLocking": "#setLocking"
+---
+
+## Openssl. setLocking Sync Experimental  
+
+```js
+var result = Openssl.setLocking();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, -1 if there are errors or if libgit2 was not
+ built with OpenSSL and threading support. |
+
diff --git a/api/packbuilder/index.md b/api/packbuilder/index.md
new file mode 100644
index 0000000..caad5e7
--- /dev/null
+++ b/api/packbuilder/index.md
@@ -0,0 +1,120 @@
+---
+layout: default
+menu_item: api
+title: Packbuilder
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#free": "#free"
+  "#hash": "#hash"
+  "#insert": "#insert"
+  "#insertCommit": "#insertCommit"
+  "#insertTree": "#insertTree"
+  "#objectCount": "#objectCount"
+  "#setThreads": "#setThreads"
+  "#written": "#written"
+  "STAGE": "#STAGE"
+---
+
+## Packbuilder# free Sync Experimental  
+
+```js
+packbuilder.free();
+```
+
+## Packbuilder# hash Sync Experimental  
+
+```js
+var oid = packbuilder.hash();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
+## Packbuilder# insert Sync Experimental  
+
+```js
+var result = packbuilder.insert(id, name);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | The oid of the commit |
+| name | String | The name; might be NULL |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Packbuilder# insertCommit Sync Experimental  
+
+```js
+var result = packbuilder.insertCommit(id);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | The oid of the commit |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Packbuilder# insertTree Sync Experimental  
+
+```js
+var result = packbuilder.insertTree(id);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | The oid of the root tree |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Packbuilder# objectCount Sync Experimental  
+
+```js
+var result = packbuilder.objectCount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the number of objects in the packfile |
+
+## Packbuilder# setThreads Sync Experimental  
+
+```js
+var result = packbuilder.setThreads(n);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| n | Number | Number of threads to spawn |
+
+| Returns |  |
+| --- | --- |
+| Number |  number of actual threads to be used |
+
+## Packbuilder# written Sync Experimental  
+
+```js
+var result = packbuilder.written();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the number of objects which have already been written |
+
+## Packbuilder. STAGE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Packbuilder.STAGE. ADDING_OBJECTS | 0 |
+| Packbuilder.STAGE. DELTAFICATION | 1 |
+
diff --git a/api/patch/index.md b/api/patch/index.md
new file mode 100644
index 0000000..7cfc61e
--- /dev/null
+++ b/api/patch/index.md
@@ -0,0 +1,155 @@
+---
+layout: default
+menu_item: api
+title: Patch
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "fromBlobAndBuffer": "#fromBlobAndBuffer"
+  "fromBlobs": "#fromBlobs"
+  "fromDiff": "#fromDiff"
+  "#getDelta": "#getDelta"
+  "#getHunk": "#getHunk"
+  "#getLineInHunk": "#getLineInHunk"
+  "#numHunks": "#numHunks"
+  "#numLinesInHunk": "#numLinesInHunk"
+  "#size": "#size"
+---
+
+## Patch. fromBlobAndBuffer Async Experimental  
+
+```js
+Patch.fromBlobAndBuffer(old_blob, old_as_path, buffer, buffer_len, buffer_as_path, opts).then(function(patch) {
+  // Use patch
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| old_blob | [Blob](/api/blob/) | Blob for old side of diff, or NULL for empty blob |
+| old_as_path | String | Treat old blob as if it had this filename; can be NULL |
+| buffer | String | Raw data for new side of diff, or NULL for empty |
+| buffer_len | Number | Length of raw data for new side of diff |
+| buffer_as_path | String | Treat buffer as if it had this filename; can be NULL |
+| opts | [DiffOptions](/api/diff_options/) | Options for diff, or NULL for default options |
+
+| Returns |  |
+| --- | --- |
+| [Patch](/api/patch/) | The generated patch; NULL on error |
+
+## Patch. fromBlobs Async Experimental  
+
+```js
+Patch.fromBlobs(old_blob, old_as_path, new_blob, new_as_path, opts).then(function(patch) {
+  // Use patch
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| old_blob | [Blob](/api/blob/) | Blob for old side of diff, or NULL for empty blob |
+| old_as_path | String | Treat old blob as if it had this filename; can be NULL |
+| new_blob | [Blob](/api/blob/) | Blob for new side of diff, or NULL for empty blob |
+| new_as_path | String | Treat new blob as if it had this filename; can be NULL |
+| opts | [DiffOptions](/api/diff_options/) | Options for diff, or NULL for default options |
+
+| Returns |  |
+| --- | --- |
+| [Patch](/api/patch/) | The generated patch; NULL on error |
+
+## Patch. fromDiff Sync Experimental  
+
+```js
+var patch = Patch.fromDiff(diff, idx);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| diff | [Diff](/api/diff/) | Diff list object |
+| idx | Number | Index into diff list |
+
+| Returns |  |
+| --- | --- |
+| [Patch](/api/patch/) | Output parameter for the delta patch object |
+
+## Patch# getDelta Sync Experimental  
+
+```js
+var diffDelta = patch.getDelta();
+```
+
+| Returns |  |
+| --- | --- |
+| [DiffDelta](/api/diff_delta/) |  |
+
+## Patch# getHunk Sync Experimental  
+
+```js
+var result = patch.getHunk(hunk_idx);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| hunk_idx | Number | Input index of hunk to get information about |
+
+| Returns |  |
+| --- | --- |
+| Number | Output count of total lines in this hunk |
+
+## Patch# getLineInHunk Sync Experimental  
+
+```js
+var diffLine = patch.getLineInHunk(hunk_idx, line_of_hunk);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| hunk_idx | Number | The index of the hunk |
+| line_of_hunk | Number | The index of the line in the hunk |
+
+| Returns |  |
+| --- | --- |
+| [DiffLine](/api/diff_line/) | The git_diff_line data for this line |
+
+## Patch# numHunks Sync Experimental  
+
+```js
+var result = patch.numHunks();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Patch# numLinesInHunk Sync Experimental  
+
+```js
+var result = patch.numLinesInHunk(hunk_idx);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| hunk_idx | Number | Index of the hunk |
+
+| Returns |  |
+| --- | --- |
+| Number |  Number of lines in hunk or -1 if invalid hunk index |
+
+## Patch# size Sync Experimental  
+
+```js
+var result = patch.size(include_context, include_hunk_headers, include_file_headers);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| include_context | Number | Include context lines in size if non-zero |
+| include_hunk_headers | Number | Include hunk header lines if non-zero |
+| include_file_headers | Number | Include file header lines if non-zero |
+
+| Returns |  |
+| --- | --- |
+| Number |  The number of bytes of data |
+
diff --git a/api/pathspec/index.md b/api/pathspec/index.md
new file mode 100644
index 0000000..ce6681f
--- /dev/null
+++ b/api/pathspec/index.md
@@ -0,0 +1,214 @@
+---
+layout: default
+menu_item: api
+title: Pathspec
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "matchListDiffEntry": "#matchListDiffEntry"
+  "matchListEntry": "#matchListEntry"
+  "matchListEntrycount": "#matchListEntrycount"
+  "matchListFailedEntry": "#matchListFailedEntry"
+  "matchListFailedEntrycount": "#matchListFailedEntrycount"
+  "#free": "#free"
+  "#matchDiff": "#matchDiff"
+  "#matchIndex": "#matchIndex"
+  "#matchTree": "#matchTree"
+  "#matchWorkdir": "#matchWorkdir"
+  "#matchesPath": "#matchesPath"
+  "FLAG": "#FLAG"
+---
+
+## Pathspec. create Async  
+
+```js
+Pathspec.create(pathspec).then(function(pathspec) {
+  // Use pathspec
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| pathspec | [Strarray](/api/strarray/) | A git_strarray of the paths to match |
+
+| Returns |  |
+| --- | --- |
+| [Pathspec](/api/pathspec/) | Output of the compiled pathspec |
+
+## Pathspec. matchListDiffEntry Sync  
+
+```js
+var diffDelta = Pathspec.matchListDiffEntry(m, pos);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| m | [PathspecMatchList](/api/pathspec_match_list/) | The git_pathspec_match_list object |
+| pos | Number | The index into the list |
+
+| Returns |  |
+| --- | --- |
+| [DiffDelta](/api/diff_delta/) |  The filename of the match |
+
+## Pathspec. matchListEntry Sync  
+
+```js
+var string = Pathspec.matchListEntry(m, pos);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| m | [PathspecMatchList](/api/pathspec_match_list/) | The git_pathspec_match_list object |
+| pos | Number | The index into the list |
+
+| Returns |  |
+| --- | --- |
+| String |  The filename of the match |
+
+## Pathspec. matchListEntrycount Sync  
+
+```js
+var result = Pathspec.matchListEntrycount(m);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| m | [PathspecMatchList](/api/pathspec_match_list/) | The git_pathspec_match_list object |
+
+| Returns |  |
+| --- | --- |
+| Number |  Number of items in match list |
+
+## Pathspec. matchListFailedEntry Sync  
+
+```js
+var string = Pathspec.matchListFailedEntry(m, pos);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| m | [PathspecMatchList](/api/pathspec_match_list/) | The git_pathspec_match_list object |
+| pos | Number | The index into the failed items |
+
+| Returns |  |
+| --- | --- |
+| String |  The pathspec pattern that didn't match anything |
+
+## Pathspec. matchListFailedEntrycount Sync  
+
+```js
+var result = Pathspec.matchListFailedEntrycount(m);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| m | [PathspecMatchList](/api/pathspec_match_list/) | The git_pathspec_match_list object |
+
+| Returns |  |
+| --- | --- |
+| Number |  Number of items in original pathspec that had no matches |
+
+## Pathspec# free Sync  
+
+```js
+pathspec.free();
+```
+
+## Pathspec# matchDiff Async  
+
+```js
+pathspec.matchDiff(diff, flags).then(function(pathspecMatchList) {
+  // Use pathspecMatchList
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| diff | [Diff](/api/diff/) | A generated diff list |
+| flags | Number | Combination of git_pathspec_flag_t options to control match |
+
+| Returns |  |
+| --- | --- |
+| [PathspecMatchList](/api/pathspec_match_list/) | Output list of matches; pass NULL to just get return value |
+
+## Pathspec# matchIndex Async  
+
+```js
+pathspec.matchIndex(index, flags).then(function(pathspecMatchList) {
+  // Use pathspecMatchList
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| index | [Index](/api/index/) | The index to match against |
+| flags | Number | Combination of git_pathspec_flag_t options to control match |
+
+| Returns |  |
+| --- | --- |
+| [PathspecMatchList](/api/pathspec_match_list/) | Output list of matches; pass NULL to just get return value |
+
+## Pathspec# matchTree Async  
+
+```js
+pathspec.matchTree(tree, flags).then(function(pathspecMatchList) {
+  // Use pathspecMatchList
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| tree | [Tree](/api/tree/) | The root-level tree to match against |
+| flags | Number | Combination of git_pathspec_flag_t options to control match |
+
+| Returns |  |
+| --- | --- |
+| [PathspecMatchList](/api/pathspec_match_list/) | Output list of matches; pass NULL to just get return value |
+
+## Pathspec# matchWorkdir Async  
+
+```js
+pathspec.matchWorkdir(repo, flags).then(function(pathspecMatchList) {
+  // Use pathspecMatchList
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository in which to match; bare repo is an error |
+| flags | Number | Combination of git_pathspec_flag_t options to control match |
+
+| Returns |  |
+| --- | --- |
+| [PathspecMatchList](/api/pathspec_match_list/) | Output list of matches; pass NULL to just get return value |
+
+## Pathspec# matchesPath Sync  
+
+```js
+var result = pathspec.matchesPath(flags, path);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| flags | Number | Combination of git_pathspec_flag_t options to control match |
+| path | String | The pathname to attempt to match |
+
+| Returns |  |
+| --- | --- |
+| Number |  1 is path matches spec, 0 if it does not |
+
+## Pathspec. FLAG ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Pathspec.FLAG. DEFAULT | 0 |
+| Pathspec.FLAG. IGNORE_CASE | 1 |
+| Pathspec.FLAG. USE_CASE | 2 |
+| Pathspec.FLAG. NO_GLOB | 4 |
+| Pathspec.FLAG. NO_MATCH_ERROR | 8 |
+| Pathspec.FLAG. FIND_FAILURES | 16 |
+| Pathspec.FLAG. FAILURES_ONLY | 32 |
+
diff --git a/api/push/index.md b/api/push/index.md
new file mode 100644
index 0000000..80ab8e1
--- /dev/null
+++ b/api/push/index.md
@@ -0,0 +1,27 @@
+---
+layout: default
+menu_item: api
+title: Push
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "initOptions": "#initOptions"
+---
+
+## Push. initOptions Sync Experimental  
+
+```js
+var result = Push.initOptions(opts, version);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| opts | [PushOptions](/api/push_options/) | the `git_push_options` instance to initialize. |
+| version | Number | the version of the struct; you should pass `GIT_PUSH_OPTIONS_VERSION` here. |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
diff --git a/api/push_options/index.md b/api/push_options/index.md
new file mode 100644
index 0000000..e16c707
--- /dev/null
+++ b/api/push_options/index.md
@@ -0,0 +1,23 @@
+---
+layout: default
+menu_item: api
+title: PushOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var pushOptions = new PushOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  pbParallelism | Number |
+|  version | Number |
+
diff --git a/api/rebase/index.md b/api/rebase/index.md
new file mode 100644
index 0000000..6cecfe9
--- /dev/null
+++ b/api/rebase/index.md
@@ -0,0 +1,164 @@
+---
+layout: default
+menu_item: api
+title: Rebase
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "init": "#init"
+  "initOptions": "#initOptions"
+  "open": "#open"
+  "#abort": "#abort"
+  "#commit": "#commit"
+  "#finish": "#finish"
+  "#free": "#free"
+  "#operationByIndex": "#operationByIndex"
+  "#operationCurrent": "#operationCurrent"
+  "#operationEntrycount": "#operationEntrycount"
+---
+
+## Rebase. init Async Experimental  
+
+```js
+Rebase.init(repo, branch, upstream, onto, signature, opts).then(function(rebase) {
+  // Use rebase
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository to perform the rebase |
+| branch | [AnnotatedCommit](/api/annotated_commit/) | The terminal commit to rebase |
+| upstream | [AnnotatedCommit](/api/annotated_commit/) | The commit to begin rebasing from, or NULL to rebase all reachable commits |
+| onto | [AnnotatedCommit](/api/annotated_commit/) | The branch to rebase onto, or NULL to rebase onto the given upstream |
+| signature | [Signature](/api/signature/) | The signature of the rebaser (optional) |
+| opts | [RebaseOptions](/api/rebase_options/) | Options to specify how rebase is performed |
+
+| Returns |  |
+| --- | --- |
+| [Rebase](/api/rebase/) |  |
+
+## Rebase. initOptions Sync Experimental  
+
+```js
+var result = Rebase.initOptions(opts, version);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| opts | [RebaseOptions](/api/rebase_options/) | the `git_rebase_options` instance to initialize. |
+| version | Number | the version of the struct; you should pass `GIT_REBASE_OPTIONS_VERSION` here. |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
+## Rebase. open Async Experimental  
+
+```js
+Rebase.open(repo).then(function(rebase) {
+  // Use rebase
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) |  |
+
+| Returns |  |
+| --- | --- |
+| [Rebase](/api/rebase/) |  |
+
+## Rebase# abort Sync Experimental  
+
+```js
+var result = rebase.abort(signature);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| signature | [Signature](/api/signature/) | The identity that is aborting the rebase |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; GIT_ENOTFOUND if a rebase is not in progress,
+         -1 on other errors. |
+
+## Rebase# commit Sync Experimental  
+
+```js
+var result = rebase.commit(id, author, committer, message_encoding, message);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | Pointer in which to store the OID of the newly created commit |
+| author | [Signature](/api/signature/) | The author of the updated commit, or NULL to keep the author from the original commit |
+| committer | [Signature](/api/signature/) | The committer of the rebase |
+| message_encoding | String | The encoding for the message in the commit, represented with a standard encoding name. If message is NULL, this should also be NULL, and the encoding from the original commit will be maintained. If message is specified, this may be NULL to indicate that "UTF-8" is to be used. |
+| message | String | The message for this commit, or NULL to use the message from the original commit. |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success, GIT_EUNMERGED if there are unmerged changes in
+        the index, GIT_EAPPLIED if the current commit has already
+        been applied to the upstream and there is nothing to commit,
+        -1 on failure. |
+
+## Rebase# finish Sync Experimental  
+
+```js
+var result = rebase.finish(signature, opts);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| signature | [Signature](/api/signature/) | The identity that is finishing the rebase (optional) |
+| opts | [RebaseOptions](/api/rebase_options/) | Options to specify how rebase is finished |
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Rebase# free Sync Experimental  
+
+```js
+rebase.free();
+```
+
+## Rebase# operationByIndex Sync Experimental  
+
+```js
+var rebaseOperation = rebase.operationByIndex(idx);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| idx | Number | The index of the rebase operation to retrieve |
+
+| Returns |  |
+| --- | --- |
+| [RebaseOperation](/api/rebase_operation/) |  The rebase operation or NULL if `idx` was out of bounds |
+
+## Rebase# operationCurrent Sync Experimental  
+
+```js
+var result = rebase.operationCurrent();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  The index of the rebase operation currently being applied. |
+
+## Rebase# operationEntrycount Sync Experimental  
+
+```js
+var result = rebase.operationEntrycount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  The number of rebase operations in total |
+
diff --git a/api/rebase_operation/index.md b/api/rebase_operation/index.md
new file mode 100644
index 0000000..038574f
--- /dev/null
+++ b/api/rebase_operation/index.md
@@ -0,0 +1,32 @@
+---
+layout: default
+menu_item: api
+title: RebaseOperation
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "REBASE_OPERATION": "#REBASE_OPERATION"
+  "Instance Variables": "#ivars"
+---
+
+## RebaseOperation. REBASE_OPERATION ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| RebaseOperation.REBASE_OPERATION. PICK | 0 |
+| RebaseOperation.REBASE_OPERATION. REWORD | 1 |
+| RebaseOperation.REBASE_OPERATION. EDIT | 2 |
+| RebaseOperation.REBASE_OPERATION. SQUASH | 3 |
+| RebaseOperation.REBASE_OPERATION. FIXUP | 4 |
+| RebaseOperation.REBASE_OPERATION. EXEC | 5 |
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  exec | String |
+|  id | Oid |
+|  type | Number |
+
diff --git a/api/rebase_options/index.md b/api/rebase_options/index.md
new file mode 100644
index 0000000..9260bec
--- /dev/null
+++ b/api/rebase_options/index.md
@@ -0,0 +1,24 @@
+---
+layout: default
+menu_item: api
+title: RebaseOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var rebaseOptions = new RebaseOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  quiet | Number |
+|  rewriteNotesRef | String |
+|  version | Number |
+
diff --git a/api/refdb/index.md b/api/refdb/index.md
new file mode 100644
index 0000000..f65d777
--- /dev/null
+++ b/api/refdb/index.md
@@ -0,0 +1,46 @@
+---
+layout: default
+menu_item: api
+title: Refdb
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "open": "#open"
+  "#compress": "#compress"
+  "#free": "#free"
+---
+
+## Refdb. open Async Experimental  
+
+```js
+Refdb.open(repo).then(function(refdb) {
+  // Use refdb
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository |
+
+| Returns |  |
+| --- | --- |
+| [Refdb](/api/refdb/) |  |
+
+## Refdb# compress Sync Experimental  
+
+```js
+var result = refdb.compress();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Refdb# free Sync Experimental  
+
+```js
+refdb.free();
+```
+
diff --git a/api/reference/index.md b/api/reference/index.md
new file mode 100644
index 0000000..11e2408
--- /dev/null
+++ b/api/reference/index.md
@@ -0,0 +1,581 @@
+---
+layout: default
+menu_item: api
+title: Reference
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "createMatching": "#createMatching"
+  "dwim": "#dwim"
+  "ensureLog": "#ensureLog"
+  "hasLog": "#hasLog"
+  "isValidName": "#isValidName"
+  "list": "#list"
+  "lookup": "#lookup"
+  "nameToId": "#nameToId"
+  "normalizeName": "#normalizeName"
+  "remove": "#remove"
+  "symbolicCreate": "#symbolicCreate"
+  "symbolicCreateMatching": "#symbolicCreateMatching"
+  "#cmp": "#cmp"
+  "#delete": "#delete"
+  "#isBranch": "#isBranch"
+  "#isConcrete": "#isConcrete"
+  "#isHead": "#isHead"
+  "#isNote": "#isNote"
+  "#isRemote": "#isRemote"
+  "#isSymbolic": "#isSymbolic"
+  "#isTag": "#isTag"
+  "#isValid": "#isValid"
+  "#name": "#name"
+  "#owner": "#owner"
+  "#peel": "#peel"
+  "#rename": "#rename"
+  "#resolve": "#resolve"
+  "#setTarget": "#setTarget"
+  "#shorthand": "#shorthand"
+  "#symbolicSetTarget": "#symbolicSetTarget"
+  "#symbolicTarget": "#symbolicTarget"
+  "#target": "#target"
+  "#targetPeel": "#targetPeel"
+  "#toString": "#toString"
+  "#type": "#type"
+  "NORMALIZE": "#NORMALIZE"
+  "TYPE": "#TYPE"
+---
+
+## Reference. create Async Experimental  
+
+```js
+Reference.create(repo, name, id, force, signature, log_message).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where that reference will live |
+| name | String | The name of the reference |
+| id | [Oid](/api/oid/) | The object id pointed to by the reference. |
+| force | Number | Overwrite existing references |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference. createMatching Async Experimental  
+
+```js
+Reference.createMatching(repo, name, id, force, current_id, signature, log_message).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where that reference will live |
+| name | String | The name of the reference |
+| id | [Oid](/api/oid/) | The object id pointed to by the reference. |
+| force | Number | Overwrite existing references |
+| current_id | [Oid](/api/oid/) | The expected value of the reference at the time of update |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference. dwim Async  
+
+```js
+Reference.dwim(repo, id, callback).then(function(reference) {
+  // Use reference
+});
+```
+
+Retrieves the reference by it's short name
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repo that the reference lives in |
+| id | String, [Reference](/api/reference/) | The reference to lookup |
+| callback | Function |  |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference. ensureLog Sync Experimental  
+
+```js
+var result = Reference.ensureLog(repo, refname);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository |
+| refname | String | the reference's name |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code. |
+
+## Reference. hasLog Sync Experimental  
+
+```js
+var result = Reference.hasLog(repo, refname);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository |
+| refname | String | the reference's name |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 when no reflog can be found, 1 when it exists;
+ otherwise an error code. |
+
+## Reference. isValidName Sync Experimental  
+
+```js
+var result = Reference.isValidName(refname);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| refname | String | name to be checked. |
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the reference name is acceptable; 0 if it isn't |
+
+## Reference. list Async Experimental  
+
+```js
+Reference.list(repo).then(function(array) {
+  // Use array
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where to find the refs |
+
+| Returns |  |
+| --- | --- |
+| Array |  |
+
+## Reference. lookup Async  
+
+```js
+Reference.lookup(repo, id, callback).then(function(reference) {
+  // Use reference
+});
+```
+
+Retrieves the reference pointed to by the oid
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repo that the reference lives in |
+| id | String, [Reference](/api/reference/) | The reference to lookup |
+| callback | Function |  |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference. nameToId Async Experimental  
+
+```js
+Reference.nameToId(repo, name).then(function(oid) {
+  // Use oid
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository in which to look up the reference |
+| name | String | The long name for the reference (e.g. HEAD, refs/heads/master, refs/tags/v0.1.0, ...) |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
+## Reference. normalizeName Sync Experimental  
+
+```js
+var result = Reference.normalizeName(buffer_out, buffer_size, name, flags);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| buffer_out | String | User allocated buffer to store normalized name |
+| buffer_size | Number | Size of buffer_out |
+| name | String | Reference name to be checked. |
+| flags | Number | Flags to constrain name validation rules - see the GIT_REF_FORMAT constants above. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, GIT_EBUFS if buffer is too small, GIT_EINVALIDSPEC
+ or an error code. |
+
+## Reference. remove Sync Experimental  
+
+```js
+var result = Reference.remove(repo, name);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) |  |
+| name | String | The reference to remove |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Reference. symbolicCreate Async Experimental  
+
+```js
+Reference.symbolicCreate(repo, name, target, force, signature, log_message).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where that reference will live |
+| name | String | The name of the reference |
+| target | String | The target of the reference |
+| force | Number | Overwrite existing references |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference. symbolicCreateMatching Async Experimental  
+
+```js
+Reference.symbolicCreateMatching(repo, name, target, force, current_value, signature, log_message).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where that reference will live |
+| name | String | The name of the reference |
+| target | String | The target of the reference |
+| force | Number | Overwrite existing references |
+| current_value | String | The expected value of the reference when updating |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference# cmp Sync Experimental  
+
+```js
+var result = reference.cmp();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 if the same, else a stable but meaningless ordering. |
+
+## Reference# delete Sync Experimental  
+
+```js
+var result = reference.delete();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0, GIT_EMODIFIED or an error code |
+
+## Reference# isBranch Sync Experimental  
+
+```js
+var result = reference.isBranch();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 when the reference lives in the refs/heads
+ namespace; 0 otherwise. |
+
+## Reference# isConcrete Sync  
+
+```js
+var boolean = reference.isConcrete();
+```
+
+Returns true if this reference is not symbolic
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## Reference# isHead Sync  
+
+```js
+var bool = reference.isHead();
+```
+
+Returns if the ref is pointed at by HEAD
+
+| Returns |  |
+| --- | --- |
+| bool |  |
+
+## Reference# isNote Sync Experimental  
+
+```js
+var result = reference.isNote();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 when the reference lives in the refs/notes
+ namespace; 0 otherwise. |
+
+## Reference# isRemote Sync Experimental  
+
+```js
+var result = reference.isRemote();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 when the reference lives in the refs/remotes
+ namespace; 0 otherwise. |
+
+## Reference# isSymbolic Sync  
+
+```js
+var boolean = reference.isSymbolic();
+```
+
+Returns true if this reference is symbolic
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## Reference# isTag Sync Experimental  
+
+```js
+var result = reference.isTag();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 when the reference lives in the refs/tags
+ namespace; 0 otherwise. |
+
+## Reference# isValid Sync  
+
+```js
+var boolean = reference.isValid();
+```
+
+Returns true if this reference is valid
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## Reference# name Sync Experimental  
+
+```js
+var string = reference.name();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the full name for the ref |
+
+## Reference# owner Sync Experimental  
+
+```js
+var repository = reference.owner();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  the repo |
+
+## Reference# peel Async Experimental  
+
+```js
+reference.peel(type).then(function(object) {
+  // Use object
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| type | Number | The type of the requested object (GIT_OBJ_COMMIT, GIT_OBJ_TAG, GIT_OBJ_TREE, GIT_OBJ_BLOB or GIT_OBJ_ANY). |
+
+| Returns |  |
+| --- | --- |
+| [Object](/api/object/) |  |
+
+## Reference# rename Async Experimental  
+
+```js
+reference.rename(new_name, force, signature, log_message).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| new_name | String | The new name for the reference |
+| force | Number | Overwrite an existing reference |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference# resolve Async Experimental  
+
+```js
+reference.resolve().then(function(reference) {
+  // Use reference
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference# setTarget Async Experimental  
+
+```js
+reference.setTarget(id, signature, log_message).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | The new target OID for the reference |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference# shorthand Sync Experimental  
+
+```js
+var string = reference.shorthand();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the human-readable version of the name |
+
+## Reference# symbolicSetTarget Async Experimental  
+
+```js
+reference.symbolicSetTarget(target, signature, log_message).then(function(reference) {
+  // Use reference
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| target | String | The new target for the reference |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Reference# symbolicTarget Sync Experimental  
+
+```js
+var string = reference.symbolicTarget();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the name if available, NULL otherwise |
+
+## Reference# target Sync Experimental  
+
+```js
+var oid = reference.target();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the oid if available, NULL otherwise |
+
+## Reference# targetPeel Sync Experimental  
+
+```js
+var oid = reference.targetPeel();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the oid if available, NULL otherwise |
+
+## Reference# toString Sync  
+
+```js
+var string = reference.toString();
+```
+
+Returns the name of the reference.
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## Reference# type Sync Experimental  
+
+```js
+var result = reference.type();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the type |
+
+## Reference. NORMALIZE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Reference.NORMALIZE. REF_FORMAT_NORMAL | 0 |
+| Reference.NORMALIZE. REF_FORMAT_ALLOW_ONELEVEL | 1 |
+| Reference.NORMALIZE. REF_FORMAT_REFSPEC_PATTERN | 2 |
+| Reference.NORMALIZE. REF_FORMAT_REFSPEC_SHORTHAND | 4 |
+
+## Reference. TYPE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Reference.TYPE. INVALID | 0 |
+| Reference.TYPE. OID | 1 |
+| Reference.TYPE. SYMBOLIC | 2 |
+| Reference.TYPE. LISTALL | 3 |
+
diff --git a/api/reflog/index.md b/api/reflog/index.md
new file mode 100644
index 0000000..528fc8e
--- /dev/null
+++ b/api/reflog/index.md
@@ -0,0 +1,200 @@
+---
+layout: default
+menu_item: api
+title: Reflog
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "delete": "#delete"
+  "entryCommitter": "#entryCommitter"
+  "entryIdNew": "#entryIdNew"
+  "entryIdOld": "#entryIdOld"
+  "entryMessage": "#entryMessage"
+  "read": "#read"
+  "rename": "#rename"
+  "#append": "#append"
+  "#drop": "#drop"
+  "#entryByIndex": "#entryByIndex"
+  "#entrycount": "#entrycount"
+  "#free": "#free"
+  "#write": "#write"
+---
+
+## Reflog. delete Sync Experimental  
+
+```js
+var result = Reflog.delete(repo, name);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository |
+| name | String | the reflog to delete |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Reflog. entryCommitter Sync Experimental  
+
+```js
+var signature = Reflog.entryCommitter(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [ReflogEntry](/api/reflog_entry/) | a reflog entry |
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) |  the committer |
+
+## Reflog. entryIdNew Sync Experimental  
+
+```js
+var oid = Reflog.entryIdNew(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [ReflogEntry](/api/reflog_entry/) | a reflog entry |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the new oid at this time |
+
+## Reflog. entryIdOld Sync Experimental  
+
+```js
+var oid = Reflog.entryIdOld(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [ReflogEntry](/api/reflog_entry/) | a reflog entry |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the old oid |
+
+## Reflog. entryMessage Sync Experimental  
+
+```js
+var string = Reflog.entryMessage(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [ReflogEntry](/api/reflog_entry/) | a reflog entry |
+
+| Returns |  |
+| --- | --- |
+| String |  the log msg |
+
+## Reflog. read Async Experimental  
+
+```js
+Reflog.read(repo, name).then(function(reflog) {
+  // Use reflog
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repostiory |
+| name | String | reference to look up |
+
+| Returns |  |
+| --- | --- |
+| [Reflog](/api/reflog/) |  |
+
+## Reflog. rename Sync Experimental  
+
+```js
+var result = Reflog.rename(repo, old_name, name);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository |
+| old_name | String | the old name of the reference |
+| name | String | the new name of the reference |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, GIT_EINVALIDSPEC or an error code |
+
+## Reflog# append Sync Experimental  
+
+```js
+var result = reflog.append(id, committer, msg);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | the OID the reference is now pointing to |
+| committer | [Signature](/api/signature/) | the signature of the committer |
+| msg | String | the reflog message |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Reflog# drop Sync Experimental  
+
+```js
+var result = reflog.drop(idx, rewrite_previous_entry);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| idx | Number | the position of the entry to remove. Should be greater than or equal to 0 (zero) and less than `git_reflog_entrycount()`. |
+| rewrite_previous_entry | Number | 1 to rewrite the history; 0 otherwise. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, GIT_ENOTFOUND if the entry doesn't exist
+ or an error code. |
+
+## Reflog# entryByIndex Sync Experimental  
+
+```js
+var reflogEntry = reflog.entryByIndex(idx);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| idx | Number | the position of the entry to lookup. Should be greater than or equal to 0 (zero) and less than `git_reflog_entrycount()`. |
+
+| Returns |  |
+| --- | --- |
+| [ReflogEntry](/api/reflog_entry/) |  the entry; NULL if not found |
+
+## Reflog# entrycount Sync Experimental  
+
+```js
+var result = reflog.entrycount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the number of log entries |
+
+## Reflog# free Sync Experimental  
+
+```js
+reflog.free();
+```
+
+## Reflog# write Sync Experimental  
+
+```js
+var result = reflog.write();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
diff --git a/api/refspec/index.md b/api/refspec/index.md
new file mode 100644
index 0000000..d3407fd
--- /dev/null
+++ b/api/refspec/index.md
@@ -0,0 +1,85 @@
+---
+layout: default
+menu_item: api
+title: Refspec
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#direction": "#direction"
+  "#dst": "#dst"
+  "#dstMatches": "#dstMatches"
+  "#force": "#force"
+  "#src": "#src"
+  "#srcMatches": "#srcMatches"
+---
+
+## Refspec# direction Sync Experimental  
+
+```js
+var result = refspec.direction();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  GIT_DIRECTION_FETCH or GIT_DIRECTION_PUSH |
+
+## Refspec# dst Sync Experimental  
+
+```js
+var string = refspec.dst();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the refspec's destination specifier |
+
+## Refspec# dstMatches Sync Experimental  
+
+```js
+var result = refspec.dstMatches(refname);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refname | String | the name of the reference to check |
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the refspec matches, 0 otherwise |
+
+## Refspec# force Sync Experimental  
+
+```js
+var result = refspec.force();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if force update has been set, 0 otherwise |
+
+## Refspec# src Sync Experimental  
+
+```js
+var string = refspec.src();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the refspec's source specifier |
+
+## Refspec# srcMatches Sync Experimental  
+
+```js
+var result = refspec.srcMatches(refname);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refname | String | the name of the reference to check |
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the refspec matches, 0 otherwise |
+
diff --git a/api/remote/index.md b/api/remote/index.md
new file mode 100644
index 0000000..2c62bd4
--- /dev/null
+++ b/api/remote/index.md
@@ -0,0 +1,620 @@
+---
+layout: default
+menu_item: api
+title: Remote
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "createAnonymous": "#createAnonymous"
+  "createWithFetchspec": "#createWithFetchspec"
+  "delete": "#delete"
+  "initCallbacks": "#initCallbacks"
+  "isValidName": "#isValidName"
+  "list": "#list"
+  "lookup": "#lookup"
+  "#addFetch": "#addFetch"
+  "#addPush": "#addPush"
+  "#autotag": "#autotag"
+  "#clearRefspecs": "#clearRefspecs"
+  "#connect": "#connect"
+  "#connected": "#connected"
+  "#disconnect": "#disconnect"
+  "#download": "#download"
+  "#dup": "#dup"
+  "#fetch": "#fetch"
+  "#free": "#free"
+  "#getCallbacks": "#getCallbacks"
+  "#getFetchRefspecs": "#getFetchRefspecs"
+  "#getPushRefspecs": "#getPushRefspecs"
+  "#getRefspec": "#getRefspec"
+  "#ls": "#ls"
+  "#name": "#name"
+  "#owner": "#owner"
+  "#prune": "#prune"
+  "#pruneRefs": "#pruneRefs"
+  "#push": "#push"
+  "#pushurl": "#pushurl"
+  "#refspecCount": "#refspecCount"
+  "#save": "#save"
+  "#setAutotag": "#setAutotag"
+  "#setCallbacks": "#setCallbacks"
+  "#setPushurl": "#setPushurl"
+  "#setUpdateFetchhead": "#setUpdateFetchhead"
+  "#setUrl": "#setUrl"
+  "#stats": "#stats"
+  "#stop": "#stop"
+  "#updateFetchhead": "#updateFetchhead"
+  "#updateTips": "#updateTips"
+  "#upload": "#upload"
+  "#url": "#url"
+  "AUTOTAG_OPTION": "#AUTOTAG_OPTION"
+  "COMPLETION_TYPE": "#COMPLETION_TYPE"
+---
+
+## Remote. create Async  
+
+```js
+Remote.create(repo, name, url).then(function(remote) {
+  // Use remote
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository in which to create the remote |
+| name | String | the remote's name |
+| url | String | the remote's url |
+
+| Returns |  |
+| --- | --- |
+| [Remote](/api/remote/) | the resulting remote |
+
+## Remote. createAnonymous Async  
+
+```js
+Remote.createAnonymous(repo, url, fetch).then(function(remote) {
+  // Use remote
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the associated repository |
+| url | String | the remote repository's URL |
+| fetch | String | the fetch refspec to use for this remote. |
+
+| Returns |  |
+| --- | --- |
+| [Remote](/api/remote/) |  |
+
+## Remote. createWithFetchspec Async  
+
+```js
+Remote.createWithFetchspec(repo, name, url, fetch).then(function(remote) {
+  // Use remote
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository in which to create the remote |
+| name | String | the remote's name |
+| url | String | the remote's url |
+| fetch | String | the remote fetch value |
+
+| Returns |  |
+| --- | --- |
+| [Remote](/api/remote/) | the resulting remote |
+
+## Remote. delete Sync  
+
+```js
+var result = Remote.delete(repo, name);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository in which to act |
+| name | String | the name of the remove to delete |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, or an error code. |
+
+## Remote. initCallbacks Sync  
+
+```js
+var result = Remote.initCallbacks(opts, version);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| opts | [RemoteCallbacks](/api/remote_callbacks/) | the `git_remote_callbacks` struct to initialize |
+| version | Number | Version of struct; pass `GIT_REMOTE_CALLBACKS_VERSION` |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
+## Remote. isValidName Sync  
+
+```js
+var result = Remote.isValidName(remote_name);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| remote_name | String | name to be checked. |
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the reference name is acceptable; 0 if it isn't |
+
+## Remote. list Async  
+
+```js
+Remote.list(repo).then(function(array) {
+  // Use array
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository to query |
+
+| Returns |  |
+| --- | --- |
+| Array | a string array which receives the names of the remotes |
+
+## Remote. lookup Async  
+
+```js
+Remote.lookup(repo, name, callback).then(function(remote) {
+  // Use remote
+});
+```
+
+Retrieves the remote by name
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repo that the remote lives in |
+| name | String, [Remote](/api/remote/) | The remote to lookup |
+| callback | Function |  |
+
+| Returns |  |
+| --- | --- |
+| [Remote](/api/remote/) |  |
+
+## Remote# addFetch Sync  
+
+```js
+var result = remote.addFetch(refspec);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refspec | String | the new fetch refspec |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error value |
+
+## Remote# addPush Sync  
+
+```js
+var result = remote.addPush(refspec);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refspec | String | the new push refspec |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error value |
+
+## Remote# autotag Sync  
+
+```js
+var result = remote.autotag();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the auto-follow setting |
+
+## Remote# clearRefspecs Sync  
+
+```js
+remote.clearRefspecs();
+```
+
+## Remote# connect Async  
+
+```js
+remote.connect(direction).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| direction | Number | GIT_DIRECTION_FETCH if you want to fetch or GIT_DIRECTION_PUSH if you want to push |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Remote# connected Sync  
+
+```js
+var result = remote.connected();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if it's connected, 0 otherwise. |
+
+## Remote# disconnect Async  
+
+```js
+remote.disconnect().then(function() {
+  // method complete});
+```
+
+## Remote# download Async  
+
+```js
+remote.download(refspecs).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refspecs | [Strarray](/api/strarray/) | the refspecs to use for this negotiation and download. Use NULL or an empty array to use the base refspecs |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Remote# dup Async  
+
+```js
+remote.dup().then(function(remote) {
+  // Use remote
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Remote](/api/remote/) | the copy |
+
+## Remote# fetch Async  
+
+```js
+remote.fetch(refspecs, signature, reflog_message).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refspecs | [Strarray](/api/strarray/) | the refspecs to use for this fetch. Pass NULL or an empty array to use the base refspecs. |
+| signature | [Signature](/api/signature/) | The identity to use when updating reflogs |
+| reflog_message | String | The message to insert into the reflogs. If NULL, the default is "fetch" |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Remote# free Sync  
+
+```js
+remote.free();
+```
+
+## Remote# getCallbacks Sync  
+
+```js
+var remoteCallbacks = remote.getCallbacks();
+```
+
+| Returns |  |
+| --- | --- |
+| [RemoteCallbacks](/api/remote_callbacks/) |  the callbacks structure |
+
+## Remote# getFetchRefspecs Async  
+
+```js
+remote.getFetchRefspecs().then(function(array) {
+  // Use array
+});
+```
+
+| Returns |  |
+| --- | --- |
+| Array |  |
+
+## Remote# getPushRefspecs Async  
+
+```js
+remote.getPushRefspecs().then(function(array) {
+  // Use array
+});
+```
+
+| Returns |  |
+| --- | --- |
+| Array |  |
+
+## Remote# getRefspec Sync  
+
+```js
+var refspec = remote.getRefspec(n);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| n | Number | the refspec to get |
+
+| Returns |  |
+| --- | --- |
+| [Refspec](/api/refspec/) |  the nth refspec |
+
+## Remote# ls Async  
+
+```js
+remote.ls(size).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| size | Number | the number of remote heads |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, or an error code |
+
+## Remote# name Sync  
+
+```js
+var string = remote.name();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the name or NULL for in-memory remotes |
+
+## Remote# owner Sync  
+
+```js
+var repository = remote.owner();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  the repository |
+
+## Remote# prune Sync  
+
+```js
+var result = remote.prune();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Remote# pruneRefs Sync  
+
+```js
+var result = remote.pruneRefs();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the ref-prune setting |
+
+## Remote# push Async  
+
+```js
+remote.push(refSpecs, options, signature, message).then(function(number) {
+  // Use number
+});
+```
+
+Pushes to a remote
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| refSpecs | Array | The ref specs that should be pushed |
+| options | [PushOptions](/api/push_options/) | Options for the checkout |
+| signature | [Signature](/api/signature/) | The identity to use for the reflog of the updated references |
+| message | String | The message to use for the update reflog messages |
+
+| Returns |  |
+| --- | --- |
+| Number | error code |
+
+## Remote# pushurl Sync  
+
+```js
+var string = remote.pushurl();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the url or NULL if no special url for pushing is set |
+
+## Remote# refspecCount Sync  
+
+```js
+var result = remote.refspecCount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the amount of refspecs configured in this remote |
+
+## Remote# save Sync  
+
+```js
+var result = remote.save();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0, GIT_EINVALIDSPEC or an error code |
+
+## Remote# setAutotag Sync  
+
+```js
+remote.setAutotag(value);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| value | Number | a GIT_REMOTE_DOWNLOAD_TAGS value |
+
+## Remote# setCallbacks Sync  
+
+```js
+var result = remote.setCallbacks(callbacks);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| callbacks | [RemoteCallbacks](/api/remote_callbacks/) | a pointer to the user's callback settings |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Remote# setPushurl Sync  
+
+```js
+var result = remote.setPushurl(url);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| url | String | the url to set or NULL to clear the pushurl |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error value |
+
+## Remote# setUpdateFetchhead Sync  
+
+```js
+remote.setUpdateFetchhead(value);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| value | Number | 0 to disable updating FETCH_HEAD |
+
+## Remote# setUrl Sync  
+
+```js
+var result = remote.setUrl(url);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| url | String | the url to set |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error value |
+
+## Remote# stats Sync  
+
+```js
+var transferProgress = remote.stats();
+```
+
+| Returns |  |
+| --- | --- |
+| [TransferProgress](/api/transfer_progress/) |  |
+
+## Remote# stop Sync  
+
+```js
+remote.stop();
+```
+
+## Remote# updateFetchhead Sync  
+
+```js
+var result = remote.updateFetchhead();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the update FETCH_HEAD setting |
+
+## Remote# updateTips Sync  
+
+```js
+var result = remote.updateTips(signature, reflog_message);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| signature | [Signature](/api/signature/) | The identity to use when updating reflogs |
+| reflog_message | String | The message to insert into the reflogs. If NULL, the default is "fetch ", where  is the name of the remote (or its url, for in-memory remotes). |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Remote# upload Sync  
+
+```js
+var result = remote.upload(refspecs, opts);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refspecs | [Strarray](/api/strarray/) | the refspecs to use for this negotiation and upload. Use NULL or an empty array to use the base refspecs |
+| opts | [PushOptions](/api/push_options/) |  |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Remote# url Sync  
+
+```js
+var string = remote.url();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the url |
+
+## Remote. AUTOTAG_OPTION ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Remote.AUTOTAG_OPTION. DOWNLOAD_TAGS_AUTO | 0 |
+| Remote.AUTOTAG_OPTION. DOWNLOAD_TAGS_NONE | 1 |
+| Remote.AUTOTAG_OPTION. DOWNLOAD_TAGS_ALL | 2 |
+
+## Remote. COMPLETION_TYPE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Remote.COMPLETION_TYPE. COMPLETION_DOWNLOAD | 0 |
+| Remote.COMPLETION_TYPE. COMPLETION_INDEXING | 1 |
+| Remote.COMPLETION_TYPE. COMPLETION_ERROR | 2 |
+
diff --git a/api/remote_callbacks/index.md b/api/remote_callbacks/index.md
new file mode 100644
index 0000000..46e40e1
--- /dev/null
+++ b/api/remote_callbacks/index.md
@@ -0,0 +1,26 @@
+---
+layout: default
+menu_item: api
+title: RemoteCallbacks
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var remoteCallbacks = new RemoteCallbacks();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  certificateCheck | TransportCertificateCheckCb |
+|  credentials | CredAcquireCb |
+|  payload | Void |
+|  transferProgress | TransferProgressCb |
+|  version | Number |
+
diff --git a/api/repository/index.md b/api/repository/index.md
new file mode 100644
index 0000000..25711c4
--- /dev/null
+++ b/api/repository/index.md
@@ -0,0 +1,805 @@
+---
+layout: default
+menu_item: api
+title: Repository
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "init": "#init"
+  "initExt": "#initExt"
+  "open": "#open"
+  "openBare": "#openBare"
+  "openExt": "#openExt"
+  "wrapOdb": "#wrapOdb"
+  "#checkoutBranch": "#checkoutBranch"
+  "#config": "#config"
+  "#configSnapshot": "#configSnapshot"
+  "#createLightweightTag": "#createLightweightTag"
+  "#createRevWalk": "#createRevWalk"
+  "#createTag": "#createTag"
+  "#deleteTagByName": "#deleteTagByName"
+  "#detachHead": "#detachHead"
+  "#free": "#free"
+  "#getBlob": "#getBlob"
+  "#getBranch": "#getBranch"
+  "#getBranchCommit": "#getBranchCommit"
+  "#getCommit": "#getCommit"
+  "#getCurrentBranch": "#getCurrentBranch"
+  "#getNamespace": "#getNamespace"
+  "#getReference": "#getReference"
+  "#getReferenceCommit": "#getReferenceCommit"
+  "#getReferenceNames": "#getReferenceNames"
+  "#getReferences": "#getReferences"
+  "#getStatusExt": "#getStatusExt"
+  "#getTag": "#getTag"
+  "#getTagByName": "#getTagByName"
+  "#getTree": "#getTree"
+  "#head": "#head"
+  "#headDetached": "#headDetached"
+  "#headUnborn": "#headUnborn"
+  "#index": "#index"
+  "#isBare": "#isBare"
+  "#isEmpty": "#isEmpty"
+  "#isShallow": "#isShallow"
+  "#messageRemove": "#messageRemove"
+  "#odb": "#odb"
+  "#path": "#path"
+  "#refdb": "#refdb"
+  "#setHead": "#setHead"
+  "#setHeadDetached": "#setHeadDetached"
+  "#setNamespace": "#setNamespace"
+  "#setWorkdir": "#setWorkdir"
+  "#state": "#state"
+  "#stateCleanup": "#stateCleanup"
+  "#workdir": "#workdir"
+  "INIT_FLAG": "#INIT_FLAG"
+  "INIT_MODE": "#INIT_MODE"
+  "OPEN_FLAG": "#OPEN_FLAG"
+  "STATE": "#STATE"
+---
+
+## Repository. init Async  
+
+```js
+Repository.init(path, is_bare).then(function(repository) {
+  // Use repository
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| path | String | the path to the repository |
+| is_bare | Number | if true, a Git repository without a working directory is created at the pointed path. If false, provided path will be considered as the working directory into which the .git directory will be created. |
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  |
+
+## Repository. initExt Async  
+
+```js
+Repository.initExt(repo_path, opts).then(function(repository) {
+  // Use repository
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo_path | String | The path to the repository. |
+| opts | [RepositoryInitOptions](/api/repository_init_options/) | Pointer to git_repository_init_options struct. |
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  |
+
+## Repository. open Async  
+
+```js
+Repository.open(path).then(function(repository) {
+  // Use repository
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| path | String | the path to the repository |
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  |
+
+## Repository. openBare Async  
+
+```js
+Repository.openBare(bare_path).then(function(repository) {
+  // Use repository
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| bare_path | String | Direct path to the bare repository |
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  |
+
+## Repository. openExt Async  
+
+```js
+Repository.openExt(path, flags, ceiling_dirs).then(function(repository) {
+  // Use repository
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| path | String | Path to open as git repository. If the flags permit "searching", then this can be a path to a subdirectory inside the working directory of the repository. |
+| flags | Number | A combination of the GIT_REPOSITORY_OPEN flags above. |
+| ceiling_dirs | String | A GIT_PATH_LIST_SEPARATOR delimited list of path prefixes at which the search for a containing repository should terminate. |
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  |
+
+## Repository. wrapOdb Async  
+
+```js
+Repository.wrapOdb(odb).then(function(repository) {
+  // Use repository
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| odb | [Odb](/api/odb/) | the object database to wrap |
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  |
+
+## Repository# checkoutBranch Sync  
+
+```js
+repository.checkoutBranch(branch, opts);
+```
+
+This will set the HEAD to point to the local branch and then attempt
+to update the index and working tree to match the content of the
+latest commit on that branch
+
+| Parameters | Type |
+| --- | --- | --- |
+| branch | String, [Reference](/api/reference/) | the branch to checkout |
+| opts | [Object](/api/object/), [CheckoutOptions](/api/checkout_options/) | the options to use for the checkout |
+
+## Repository# config Async  
+
+```js
+repository.config().then(function(config) {
+  // Use config
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Config](/api/config/) |  |
+
+## Repository# configSnapshot Async  
+
+```js
+repository.configSnapshot().then(function(config) {
+  // Use config
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Config](/api/config/) |  |
+
+## Repository# createLightweightTag Async  
+
+```js
+repository.createLightweightTag(String, name).then(function(reference) {
+  // Use reference
+});
+```
+
+Creates a new lightweight tag
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| String | String, [Oid](/api/oid/) | sha or Oid |
+| name | String | the name of the tag |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Repository# createRevWalk Sync  
+
+```js
+var revWalk = repository.createRevWalk(String);
+```
+
+Instantiate a new revision walker for browsing the Repository"s history.
+See also `Commit.prototype.history()`
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| String | String, [Oid](/api/oid/) | sha or Oid |
+
+| Returns |  |
+| --- | --- |
+| RevWalk |  |
+
+## Repository# createTag Async  
+
+```js
+repository.createTag(String, name, message).then(function(tag) {
+  // Use tag
+});
+```
+
+Creates a new annotated tag
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| String | String, [Oid](/api/oid/) | sha or Oid |
+| name | String | the name of the tag |
+| message | String | the description that will be attached to the annotated tag |
+
+| Returns |  |
+| --- | --- |
+| [Tag](/api/tag/) |  |
+
+## Repository# deleteTagByName Async  
+
+```js
+repository.deleteTagByName(Short).then(function() {
+  // method complete});
+```
+
+Deletes a tag from a repository by the tag name.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| Short | String | or full tag name |
+
+## Repository# detachHead Sync  
+
+```js
+var result = repository.detachHead(signature, reflog_message);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| reflog_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, GIT_EUNBORNBRANCH when HEAD points to a non existing
+ branch or an error code |
+
+## Repository# free Sync  
+
+```js
+repository.free();
+```
+
+## Repository# getBlob Async  
+
+```js
+repository.getBlob(String).then(function(blob) {
+  // Use blob
+});
+```
+
+Retrieve the blob represented by the oid.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| String | String, [Oid](/api/oid/) | sha or Oid |
+
+| Returns |  |
+| --- | --- |
+| [Blob](/api/blob/) |  |
+
+## Repository# getBranch Async  
+
+```js
+repository.getBranch(name).then(function(ref) {
+  // Use ref
+});
+```
+
+Look up a branch. Alias for `getReference`
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String, Ref | Ref name, e.g. "master", "refs/heads/master" or Branch Ref |
+
+| Returns |  |
+| --- | --- |
+| Ref |  |
+
+## Repository# getBranchCommit Async  
+
+```js
+repository.getBranchCommit(name).then(function(commit) {
+  // Use commit
+});
+```
+
+Look up a branch's most recent commit. Alias to `getReferenceCommit`
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String, Ref | Ref name, e.g. "master", "refs/heads/master" or Branch Ref |
+
+| Returns |  |
+| --- | --- |
+| [Commit](/api/commit/) |  |
+
+## Repository# getCommit Async  
+
+```js
+repository.getCommit(String).then(function(commit) {
+  // Use commit
+});
+```
+
+Retrieve the commit identified by oid.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| String | String, [Oid](/api/oid/) | sha or Oid |
+
+| Returns |  |
+| --- | --- |
+| [Commit](/api/commit/) |  |
+
+## Repository# getCurrentBranch Async  
+
+```js
+repository.getCurrentBranch().then(function(reference) {
+  // Use reference
+});
+```
+
+Gets the branch that HEAD currently points to
+Is an alias to head()
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Repository# getNamespace Sync  
+
+```js
+var string = repository.getNamespace();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the active namespace, or NULL if there isn't one |
+
+## Repository# getReference Async  
+
+```js
+repository.getReference(name).then(function(reference) {
+  // Use reference
+});
+```
+
+Lookup the reference with the given name.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String, Ref | Ref name, e.g. "master", "refs/heads/master" or Branch Ref |
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Repository# getReferenceCommit Async  
+
+```js
+repository.getReferenceCommit(name).then(function(commit) {
+  // Use commit
+});
+```
+
+Look up a refs's commit.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String, Ref | Ref name, e.g. "master", "refs/heads/master" or Branch Ref |
+
+| Returns |  |
+| --- | --- |
+| [Commit](/api/commit/) |  |
+
+## Repository# getReferenceNames Async  
+
+```js
+repository.getReferenceNames(type).then(function(arrayString) {
+  // Use arrayString
+});
+```
+
+Lookup reference names for a repository.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| type | [Reference.TYPE](/api/reference/#TYPE) | Type of reference to look up |
+
+| Returns |  |
+| --- | --- |
+| Array<String> |  |
+
+## Repository# getReferences Async  
+
+```js
+repository.getReferences(type).then(function(arrayReference) {
+  // Use arrayReference
+});
+```
+
+Lookup references for a repository.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| type | [Reference.TYPE](/api/reference/#TYPE) | Type of reference to look up |
+
+| Returns |  |
+| --- | --- |
+| Array<[Reference](/api/reference/)> |  |
+
+## Repository# getStatusExt Sync  
+
+```js
+var arrayStatusEntry = repository.getStatusExt(opts);
+```
+
+Get extended statuses of a repo to it's working directory. Status entries
+have `status`, `headToIndex` delta, and `indexToWorkdir` deltas
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| opts | obj |  |
+
+| Returns |  |
+| --- | --- |
+| Array<[StatusEntry](/api/status_entry/)> |  |
+
+## Repository# getTag Async  
+
+```js
+repository.getTag(String).then(function(tag) {
+  // Use tag
+});
+```
+
+Retrieve the tag represented by the oid.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| String | String, [Oid](/api/oid/) | sha or Oid |
+
+| Returns |  |
+| --- | --- |
+| [Tag](/api/tag/) |  |
+
+## Repository# getTagByName Async  
+
+```js
+repository.getTagByName(Short).then(function(tag) {
+  // Use tag
+});
+```
+
+Retrieve the tag represented by the tag name.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| Short | String | or full tag name |
+
+| Returns |  |
+| --- | --- |
+| [Tag](/api/tag/) |  |
+
+## Repository# getTree Async  
+
+```js
+repository.getTree(String).then(function(tree) {
+  // Use tree
+});
+```
+
+Retrieve the tree represented by the oid.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| String | String, [Oid](/api/oid/) | sha or Oid |
+
+| Returns |  |
+| --- | --- |
+| [Tree](/api/tree/) |  |
+
+## Repository# head Async  
+
+```js
+repository.head().then(function(reference) {
+  // Use reference
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Reference](/api/reference/) |  |
+
+## Repository# headDetached Sync  
+
+```js
+var result = repository.headDetached();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if HEAD is detached, 0 if it's not; error code if there
+ was an error. |
+
+## Repository# headUnborn Sync  
+
+```js
+var result = repository.headUnborn();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the current branch is unborn, 0 if it's not; error
+ code if there was an error |
+
+## Repository# index Async  
+
+```js
+repository.index().then(function(index) {
+  // Use index
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Index](/api/index/) |  |
+
+## Repository# isBare Sync  
+
+```js
+var result = repository.isBare();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the repository is bare, 0 otherwise. |
+
+## Repository# isEmpty Sync  
+
+```js
+var result = repository.isEmpty();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if the repository is empty, 0 if it isn't, error code
+ if the repository is corrupted |
+
+## Repository# isShallow Sync  
+
+```js
+var result = repository.isShallow();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  1 if shallow, zero if not |
+
+## Repository# messageRemove Sync  
+
+```js
+var result = repository.messageRemove();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Repository# odb Async  
+
+```js
+repository.odb().then(function(odb) {
+  // Use odb
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Odb](/api/odb/) |  |
+
+## Repository# path Sync  
+
+```js
+var string = repository.path();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the path to the repository |
+
+## Repository# refdb Async  
+
+```js
+repository.refdb().then(function(refdb) {
+  // Use refdb
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Refdb](/api/refdb/) |  |
+
+## Repository# setHead Async  
+
+```js
+repository.setHead(refname, signature, log_message).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refname | String | Canonical name of the reference the HEAD should point at |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, or an error code |
+
+## Repository# setHeadDetached Sync  
+
+```js
+var result = repository.setHeadDetached(commitish, signature, log_message);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| commitish | [Oid](/api/oid/) | Object id of the Commit the HEAD should point to |
+| signature | [Signature](/api/signature/) | The identity that will used to populate the reflog entry |
+| log_message | String | The one line long message to be appended to the reflog |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, or an error code |
+
+## Repository# setNamespace Sync  
+
+```js
+var result = repository.setNamespace(nmspace);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| nmspace | String | The namespace. This should not include the refs folder, e.g. to namespace all references under `refs/namespaces/foo/`, use `foo` as the namespace. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, -1 on error |
+
+## Repository# setWorkdir Sync  
+
+```js
+var result = repository.setWorkdir(workdir, update_gitlink);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| workdir | String | The path to a working directory |
+| update_gitlink | Number | Create/update gitlink in workdir and set config "core.worktree" (if workdir is not the parent of the .git directory) |
+
+| Returns |  |
+| --- | --- |
+| Number |  0, or an error code |
+
+## Repository# state Sync  
+
+```js
+var result = repository.state();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  The state of the repository |
+
+## Repository# stateCleanup Sync  
+
+```js
+var result = repository.stateCleanup();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, or error |
+
+## Repository# workdir Sync  
+
+```js
+var string = repository.workdir();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  the path to the working dir, if it exists |
+
+## Repository. INIT_FLAG ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Repository.INIT_FLAG. BARE | 1 |
+| Repository.INIT_FLAG. NO_REINIT | 2 |
+| Repository.INIT_FLAG. NO_DOTGIT_DIR | 4 |
+| Repository.INIT_FLAG. MKDIR | 8 |
+| Repository.INIT_FLAG. MKPATH | 16 |
+| Repository.INIT_FLAG. EXTERNAL_TEMPLATE | 32 |
+| Repository.INIT_FLAG. RELATIVE_GITLINK | 64 |
+
+## Repository. INIT_MODE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Repository.INIT_MODE. INIT_SHARED_UMASK | 0 |
+| Repository.INIT_MODE. INIT_SHARED_GROUP | 1533 |
+| Repository.INIT_MODE. INIT_SHARED_ALL | 1535 |
+
+## Repository. OPEN_FLAG ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Repository.OPEN_FLAG. OPEN_NO_SEARCH | 1 |
+| Repository.OPEN_FLAG. OPEN_CROSS_FS | 2 |
+| Repository.OPEN_FLAG. OPEN_BARE | 4 |
+
+## Repository. STATE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Repository.STATE. NONE | 0 |
+| Repository.STATE. MERGE | 1 |
+| Repository.STATE. REVERT | 2 |
+| Repository.STATE. CHERRYPICK | 3 |
+| Repository.STATE. BISECT | 4 |
+| Repository.STATE. REBASE | 5 |
+| Repository.STATE. REBASE_INTERACTIVE | 6 |
+| Repository.STATE. REBASE_MERGE | 7 |
+| Repository.STATE. APPLY_MAILBOX | 8 |
+| Repository.STATE. APPLY_MAILBOX_OR_REBASE | 9 |
+
diff --git a/api/repository_init_options/index.md b/api/repository_init_options/index.md
new file mode 100644
index 0000000..2b4b63e
--- /dev/null
+++ b/api/repository_init_options/index.md
@@ -0,0 +1,29 @@
+---
+layout: default
+menu_item: api
+title: RepositoryInitOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var repositoryInitOptions = new RepositoryInitOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  description | String |
+|  flags | Number |
+|  initialHead | String |
+|  mode | Number |
+|  originUrl | String |
+|  templatePath | String |
+|  version | Number |
+|  workdirPath | String |
+
diff --git a/api/reset/index.md b/api/reset/index.md
new file mode 100644
index 0000000..f54c270
--- /dev/null
+++ b/api/reset/index.md
@@ -0,0 +1,63 @@
+---
+layout: default
+menu_item: api
+title: Reset
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "default": "#default"
+  "reset": "#reset"
+  "TYPE": "#TYPE"
+---
+
+## Reset. default Async  
+
+```js
+Reset.default(repo, target, pathspecs).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where to perform the reset operation. |
+| target | [Object](/api/object/) | The committish which content will be used to reset the content of the index. |
+| pathspecs | [Strarray](/api/strarray/) | List of pathspecs to operate on. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success or an error code 
+<
+ 0 |
+
+## Reset. reset Async  
+
+```js
+Reset.reset(repo, target, reset_type, checkout_opts, signature, log_message).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) |  |
+| target | [Object](/api/object/) |  |
+| reset_type | Number |  |
+| checkout_opts | [CheckoutOptions](/api/checkout_options/) |  |
+| signature | [Signature](/api/signature/) |  |
+| log_message | String |  |
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Reset. TYPE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Reset.TYPE. SOFT | 1 |
+| Reset.TYPE. MIXED | 2 |
+| Reset.TYPE. HARD | 3 |
+
diff --git a/api/revert/index.md b/api/revert/index.md
new file mode 100644
index 0000000..f985788
--- /dev/null
+++ b/api/revert/index.md
@@ -0,0 +1,49 @@
+---
+layout: default
+menu_item: api
+title: Revert
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "commit": "#commit"
+  "revert": "#revert"
+---
+
+## Revert. commit Async Experimental  
+
+```js
+Revert.commit(repo, revert_commit, our_commit, mainline, merge_options).then(function(index) {
+  // Use index
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository that contains the given commits |
+| revert_commit | [Commit](/api/commit/) | the commit to revert |
+| our_commit | [Commit](/api/commit/) | the commit to revert against (eg, HEAD) |
+| mainline | Number | the parent of the revert commit, if it is a merge |
+| merge_options | [MergeOptions](/api/merge_options/) | the merge options (or null for defaults) |
+
+| Returns |  |
+| --- | --- |
+| [Index](/api/index/) |  |
+
+## Revert. revert Sync Experimental  
+
+```js
+var result = Revert.revert(repo, commit, given_opts);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository to revert |
+| commit | [Commit](/api/commit/) | the commit to revert |
+| given_opts | [RevertOptions](/api/revert_options/) | merge flags |
+
+| Returns |  |
+| --- | --- |
+| Number |  zero on success, -1 on failure. |
+
diff --git a/api/revert_options/index.md b/api/revert_options/index.md
new file mode 100644
index 0000000..8017a44
--- /dev/null
+++ b/api/revert_options/index.md
@@ -0,0 +1,25 @@
+---
+layout: default
+menu_item: api
+title: RevertOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var revertOptions = new RevertOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  checkoutOpts | CheckoutOptions |
+|  mainline | Number |
+|  mergeOpts | MergeOptions |
+|  version | Number |
+
diff --git a/api/revparse/index.md b/api/revparse/index.md
new file mode 100644
index 0000000..d6479c3
--- /dev/null
+++ b/api/revparse/index.md
@@ -0,0 +1,57 @@
+---
+layout: default
+menu_item: api
+title: Revparse
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "ext": "#ext"
+  "single": "#single"
+  "MODE": "#MODE"
+---
+
+## Revparse. ext Sync Experimental  
+
+```js
+var result = Revparse.ext(object_out, reference_out, repo, spec);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| object_out | [Object](/api/object/) | pointer to output object |
+| reference_out | [Reference](/api/reference/) | pointer to output reference or NULL |
+| repo | [Repository](/api/repository/) | the repository to search in |
+| spec | String | the textual specification for an object |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, GIT_ENOTFOUND, GIT_EAMBIGUOUS, GIT_EINVALIDSPEC
+ or an error code |
+
+## Revparse. single Async Experimental  
+
+```js
+Revparse.single(repo, spec).then(function(object) {
+  // Use object
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repository to search in |
+| spec | String | the textual specification for an object |
+
+| Returns |  |
+| --- | --- |
+| [Object](/api/object/) |  |
+
+## Revparse. MODE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Revparse.MODE. SINGLE | 1 |
+| Revparse.MODE. RANGE | 2 |
+| Revparse.MODE. MERGE_BASE | 4 |
+
diff --git a/api/revwalk/index.md b/api/revwalk/index.md
new file mode 100644
index 0000000..ca824b0
--- /dev/null
+++ b/api/revwalk/index.md
@@ -0,0 +1,273 @@
+---
+layout: default
+menu_item: api
+title: Revwalk
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "#getCommits": "#getCommits"
+  "#getCommitsUntil": "#getCommitsUntil"
+  "#hide": "#hide"
+  "#hideGlob": "#hideGlob"
+  "#hideHead": "#hideHead"
+  "#hideRef": "#hideRef"
+  "#next": "#next"
+  "#push": "#push"
+  "#pushGlob": "#pushGlob"
+  "#pushHead": "#pushHead"
+  "#pushRange": "#pushRange"
+  "#pushRef": "#pushRef"
+  "#repository": "#repository"
+  "#reset": "#reset"
+  "#simplifyFirstParent": "#simplifyFirstParent"
+  "#sorting": "#sorting"
+  "#walk": "#walk"
+  "SORT": "#SORT"
+---
+
+## Revwalk. create Sync  
+
+```js
+var revwalk = Revwalk.create(repo);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repo to walk through |
+
+| Returns |  |
+| --- | --- |
+| [Revwalk](/api/revwalk/) |  |
+
+## Revwalk# getCommits Sync  
+
+```js
+var arrayCommit = revwalk.getCommits(count);
+```
+
+Get a number of commits.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| count | Number | (default: 10) |
+
+| Returns |  |
+| --- | --- |
+| Array<[Commit](/api/commit/)> |  |
+
+## Revwalk# getCommitsUntil Sync  
+
+```js
+var array = revwalk.getCommitsUntil(checkFn);
+```
+
+Walk the history grabbing commits until the checkFn called with the
+current commit returns false.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| checkFn | Function | function returns false to stop walking |
+
+| Returns |  |
+| --- | --- |
+| Array |  |
+
+## Revwalk# hide Sync  
+
+```js
+var result = revwalk.hide(commit_id);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| commit_id | [Oid](/api/oid/) | the oid of commit that will be ignored during the traversal |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Revwalk# hideGlob Sync  
+
+```js
+var result = revwalk.hideGlob(glob);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| glob | String | the glob pattern references should match |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Revwalk# hideHead Sync  
+
+```js
+var result = revwalk.hideHead();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Revwalk# hideRef Sync  
+
+```js
+var result = revwalk.hideRef(refname);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refname | String | the reference to hide |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Revwalk# next Async  
+
+```js
+revwalk.next().then(function(oid) {
+  // Use oid
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) | the oid of the next commit |
+
+## Revwalk# push Sync  
+
+```js
+var result = revwalk.push(id);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | the oid of the commit to start from. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Revwalk# pushGlob Sync  
+
+```js
+var result = revwalk.pushGlob(glob);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| glob | String | the glob pattern references should match |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Revwalk# pushHead Sync  
+
+```js
+var result = revwalk.pushHead();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Revwalk# pushRange Sync  
+
+```js
+var result = revwalk.pushRange(range);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| range | String | the range |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Revwalk# pushRef Sync  
+
+```js
+var result = revwalk.pushRef(refname);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| refname | String | the reference to push |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Revwalk# repository Sync  
+
+```js
+var repository = revwalk.repository();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  the repository being walked |
+
+## Revwalk# reset Sync  
+
+```js
+revwalk.reset();
+```
+
+## Revwalk# simplifyFirstParent Sync  
+
+```js
+revwalk.simplifyFirstParent();
+```
+
+## Revwalk# sorting Sync  
+
+```js
+revwalk.sorting(sort);
+```
+
+Set the sort order for the revwalk. This function takes variable arguments
+like `revwalk.sorting(NodeGit.RevWalk.Topological, NodeGit.RevWalk.Reverse).`
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| sort | Number |  |
+
+## Revwalk# walk Sync  
+
+```js
+var commit = revwalk.walk(oid, callback);
+```
+
+Walk the history from the given oid. The callback is invoked for each commit;
+When the walk is over, the callback is invoked with `(null, null)`.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| oid | [Oid](/api/oid/) |  |
+| callback | Function |  |
+
+| Returns |  |
+| --- | --- |
+| [Commit](/api/commit/) |  |
+
+## Revwalk. SORT ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Revwalk.SORT. NONE | 0 |
+| Revwalk.SORT. TOPOLOGICAL | 1 |
+| Revwalk.SORT. TIME | 2 |
+| Revwalk.SORT. REVERSE | 4 |
+
diff --git a/api/signature/index.md b/api/signature/index.md
new file mode 100644
index 0000000..6baf803
--- /dev/null
+++ b/api/signature/index.md
@@ -0,0 +1,103 @@
+---
+layout: default
+menu_item: api
+title: Signature
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "default": "#default"
+  "now": "#now"
+  "#dup": "#dup"
+  "#free": "#free"
+  "#toString": "#toString"
+  "Instance Variables": "#ivars"
+---
+
+## Signature. create Sync  
+
+```js
+var signature = Signature.create(name, email, time, offset);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| name | String | name of the person |
+| email | String | email of the person |
+| time | Number | time when the action happened |
+| offset | Number | timezone offset in minutes for the time |
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) | new signature, in case of error NULL |
+
+## Signature. default Sync  
+
+```js
+var signature = Signature.default(repo);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | repository pointer |
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) | new signature |
+
+## Signature. now Sync  
+
+```js
+var signature = Signature.now(name, email);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| name | String | name of the person |
+| email | String | email of the person |
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) | new signature, in case of error NULL |
+
+## Signature# dup Async  
+
+```js
+signature.dup().then(function(signature) {
+  // Use signature
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) | the copy |
+
+## Signature# free Sync  
+
+```js
+signature.free();
+```
+
+## Signature# toString Sync  
+
+```js
+var string = signature.toString();
+```
+
+Standard string representation of an author.
+
+
+| Returns |  |
+| --- | --- |
+| string | Representation of the author. |
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  email | String |
+|  name | String |
+|  when | Time |
+
diff --git a/api/stash/index.md b/api/stash/index.md
new file mode 100644
index 0000000..cddb970
--- /dev/null
+++ b/api/stash/index.md
@@ -0,0 +1,37 @@
+---
+layout: default
+menu_item: api
+title: Stash
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "drop": "#drop"
+  "FLAGS": "#FLAGS"
+---
+
+## Stash. drop Sync Experimental  
+
+```js
+var result = Stash.drop(repo, index);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The owning repository. |
+| index | Number | The position within the stash list. 0 points to the most recent stashed state. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, or error code |
+
+## Stash. FLAGS ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Stash.FLAGS. DEFAULT | 0 |
+| Stash.FLAGS. KEEP_INDEX | 1 |
+| Stash.FLAGS. INCLUDE_UNTRACKED | 2 |
+| Stash.FLAGS. INCLUDE_IGNORED | 4 |
+
diff --git a/api/status/index.md b/api/status/index.md
new file mode 100644
index 0000000..fe27e66
--- /dev/null
+++ b/api/status/index.md
@@ -0,0 +1,155 @@
+---
+layout: default
+menu_item: api
+title: Status
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "byIndex": "#byIndex"
+  "file": "#file"
+  "foreach": "#foreach"
+  "foreachExt": "#foreachExt"
+  "shouldIgnore": "#shouldIgnore"
+  "OPT": "#OPT"
+  "SHOW": "#SHOW"
+  "STATUS": "#STATUS"
+---
+
+## Status. byIndex Sync  
+
+```js
+var statusEntry = Status.byIndex(statuslist, idx);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| statuslist | [StatusList](/api/status_list/) | Existing status list object |
+| idx | Number | Position of the entry |
+
+| Returns |  |
+| --- | --- |
+| [StatusEntry](/api/status_entry/) |  |
+
+## Status. file Sync  
+
+```js
+var result = Status.file(status_flags, repo, path);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| status_flags | Number | Output combination of git_status_t values for file |
+| repo | [Repository](/api/repository/) | A repository object |
+| path | String | The exact path to retrieve status for relative to the repository working directory |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, GIT_ENOTFOUND if the file is not found in the HEAD,
+      index, and work tree, GIT_EAMBIGUOUS if `path` matches multiple files
+      or if it refers to a folder, and -1 on other errors. |
+
+## Status. foreach Async  
+
+```js
+Status.foreach(repo, callback, payload).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | A repository object |
+| callback | StatusCb | The function to call on each file |
+| payload | Void | Pointer to pass through to callback function |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, non-zero callback return value, or error code |
+
+## Status. foreachExt Async  
+
+```js
+Status.foreachExt(repo, opts, callback, payload).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository object |
+| opts | [StatusOptions](/api/status_options/) | Status options structure |
+| callback | StatusCb | The function to call on each file |
+| payload | Void | Pointer to pass through to callback function |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, non-zero callback return value, or error code |
+
+## Status. shouldIgnore Sync  
+
+```js
+var result = Status.shouldIgnore(ignored, repo, path);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| ignored | Number | Boolean returning 0 if the file is not ignored, 1 if it is |
+| repo | [Repository](/api/repository/) | A repository object |
+| path | String | The file to check ignores for, rooted at the repo's workdir. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 if ignore rules could be processed for the file (regardless
+         of whether it exists or not), or an error 
+<
+ 0 if they could not. |
+
+## Status. OPT ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Status.OPT. INCLUDE_UNTRACKED | 1 |
+| Status.OPT. INCLUDE_IGNORED | 2 |
+| Status.OPT. INCLUDE_UNMODIFIED | 4 |
+| Status.OPT. EXCLUDE_SUBMODULES | 8 |
+| Status.OPT. RECURSE_UNTRACKED_DIRS | 16 |
+| Status.OPT. DISABLE_PATHSPEC_MATCH | 32 |
+| Status.OPT. RECURSE_IGNORED_DIRS | 64 |
+| Status.OPT. RENAMES_HEAD_TO_INDEX | 128 |
+| Status.OPT. RENAMES_INDEX_TO_WORKDIR | 256 |
+| Status.OPT. SORT_CASE_SENSITIVELY | 512 |
+| Status.OPT. SORT_CASE_INSENSITIVELY | 1024 |
+| Status.OPT. RENAMES_FROM_REWRITES | 2048 |
+| Status.OPT. NO_REFRESH | 4096 |
+| Status.OPT. UPDATE_INDEX | 8192 |
+| Status.OPT. INCLUDE_UNREADABLE | 16384 |
+| Status.OPT. INCLUDE_UNREADABLE_AS_UNTRACKED | 32768 |
+
+## Status. SHOW ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Status.SHOW. INDEX_AND_WORKDIR | 0 |
+| Status.SHOW. INDEX_ONLY | 1 |
+| Status.SHOW. WORKDIR_ONLY | 2 |
+
+## Status. STATUS ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Status.STATUS. CURRENT | 0 |
+| Status.STATUS. INDEX_NEW | 1 |
+| Status.STATUS. INDEX_MODIFIED | 2 |
+| Status.STATUS. INDEX_DELETED | 4 |
+| Status.STATUS. INDEX_RENAMED | 8 |
+| Status.STATUS. INDEX_TYPECHANGE | 16 |
+| Status.STATUS. WT_NEW | 128 |
+| Status.STATUS. WT_MODIFIED | 256 |
+| Status.STATUS. WT_DELETED | 512 |
+| Status.STATUS. WT_TYPECHANGE | 1024 |
+| Status.STATUS. WT_RENAMED | 2048 |
+| Status.STATUS. WT_UNREADABLE | 4096 |
+| Status.STATUS. IGNORED | 16384 |
+
diff --git a/api/status_entry/index.md b/api/status_entry/index.md
new file mode 100644
index 0000000..102cc87
--- /dev/null
+++ b/api/status_entry/index.md
@@ -0,0 +1,20 @@
+---
+layout: default
+menu_item: api
+title: StatusEntry
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  headToIndex | DiffDelta |
+|  indexToWorkdir | DiffDelta |
+|  status | Number |
+
diff --git a/api/status_list/index.md b/api/status_list/index.md
new file mode 100644
index 0000000..83a7552
--- /dev/null
+++ b/api/status_list/index.md
@@ -0,0 +1,60 @@
+---
+layout: default
+menu_item: api
+title: StatusList
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "#entrycount": "#entrycount"
+  "#free": "#free"
+  "#getPerfdata": "#getPerfdata"
+---
+
+## StatusList. create Async  
+
+```js
+StatusList.create(repo, opts).then(function(statusList) {
+  // Use statusList
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository object |
+| opts | [StatusOptions](/api/status_options/) | Status options structure |
+
+| Returns |  |
+| --- | --- |
+| [StatusList](/api/status_list/) |  |
+
+## StatusList# entrycount Sync  
+
+```js
+var result = statusList.entrycount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the number of status entries |
+
+## StatusList# free Sync  
+
+```js
+statusList.free();
+```
+
+## StatusList# getPerfdata Async  
+
+```js
+statusList.getPerfdata().then(function(diffPerfdata) {
+  // Use diffPerfdata
+});
+```
+
+| Returns |  |
+| --- | --- |
+| [DiffPerfdata](/api/diff_perfdata/) |  |
+
diff --git a/api/status_options/index.md b/api/status_options/index.md
new file mode 100644
index 0000000..a584901
--- /dev/null
+++ b/api/status_options/index.md
@@ -0,0 +1,25 @@
+---
+layout: default
+menu_item: api
+title: StatusOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+```js
+var statusOptions = new StatusOptions();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  flags | Number |
+|  pathspec | Strarray |
+|  show | Number |
+|  version | Number |
+
diff --git a/api/strarray/index.md b/api/strarray/index.md
new file mode 100644
index 0000000..4cda5f4
--- /dev/null
+++ b/api/strarray/index.md
@@ -0,0 +1,39 @@
+---
+layout: default
+menu_item: api
+title: Strarray
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#copy": "#copy"
+  "#free": "#free"
+  "Instance Variables": "#ivars"
+---
+
+## Strarray# copy Sync Experimental  
+
+```js
+var result = strarray.copy();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, 
+<
+ 0 on allocation failure |
+
+## Strarray# free Sync Experimental  
+
+```js
+strarray.free();
+```
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  count | Number |
+|  strings | String |
+
diff --git a/api/submodule/index.md b/api/submodule/index.md
new file mode 100644
index 0000000..d197330
--- /dev/null
+++ b/api/submodule/index.md
@@ -0,0 +1,469 @@
+---
+layout: default
+menu_item: api
+title: Submodule
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "addSetup": "#addSetup"
+  "lookup": "#lookup"
+  "reloadAll": "#reloadAll"
+  "resolveUrl": "#resolveUrl"
+  "#addFinalize": "#addFinalize"
+  "#addToIndex": "#addToIndex"
+  "#branch": "#branch"
+  "#fetchRecurseSubmodules": "#fetchRecurseSubmodules"
+  "#free": "#free"
+  "#headId": "#headId"
+  "#ignore": "#ignore"
+  "#indexId": "#indexId"
+  "#init": "#init"
+  "#name": "#name"
+  "#open": "#open"
+  "#owner": "#owner"
+  "#path": "#path"
+  "#reload": "#reload"
+  "#repoInit": "#repoInit"
+  "#save": "#save"
+  "#setFetchRecurseSubmodules": "#setFetchRecurseSubmodules"
+  "#setIgnore": "#setIgnore"
+  "#setUpdate": "#setUpdate"
+  "#setUrl": "#setUrl"
+  "#sync": "#sync"
+  "#update": "#update"
+  "#updateStrategy": "#updateStrategy"
+  "#url": "#url"
+  "#wdId": "#wdId"
+  "IGNORE": "#IGNORE"
+  "RECURSE": "#RECURSE"
+  "STATUS": "#STATUS"
+  "UPDATE": "#UPDATE"
+---
+
+## Submodule. addSetup Async Experimental  
+
+```js
+Submodule.addSetup(repo, url, path, use_gitlink).then(function(submodule) {
+  // Use submodule
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository in which you want to create the submodule |
+| url | String | URL for the submodule's remote |
+| path | String | Path at which the submodule should be created |
+| use_gitlink | Number | Should workdir contain a gitlink to the repo in .git/modules vs. repo directly in workdir. |
+
+| Returns |  |
+| --- | --- |
+| [Submodule](/api/submodule/) | The newly created submodule ready to open for clone |
+
+## Submodule. lookup Async Experimental  
+
+```js
+Submodule.lookup(repo, name).then(function(submodule) {
+  // Use submodule
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The parent repository |
+| name | String | The name of or path to the submodule; trailing slashes okay |
+
+| Returns |  |
+| --- | --- |
+| [Submodule](/api/submodule/) | Output ptr to submodule; pass NULL to just get return code |
+
+## Submodule. reloadAll Sync Experimental  
+
+```js
+var result = Submodule.reloadAll(repo, force);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repository to reload submodule data for |
+| force | Number | Force full reload even if the data doesn't seem out of date |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, 
+<
+0 on error |
+
+## Submodule. resolveUrl Async Experimental  
+
+```js
+Submodule.resolveUrl(repo, url).then(function(buf) {
+  // Use buf
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Pointer to repository object |
+| url | String | Relative url |
+
+| Returns |  |
+| --- | --- |
+| [Buf](/api/buf/) | buffer to store the absolute submodule url in |
+
+## Submodule# addFinalize Sync Experimental  
+
+```js
+var result = submodule.addFinalize();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Submodule# addToIndex Sync Experimental  
+
+```js
+var result = submodule.addToIndex(write_index);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| write_index | Number | Boolean if this should immediately write the index file. If you pass this as false, you will have to get the git_index and explicitly call `git_index_write()` on it to save the change. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, 
+<
+0 on failure |
+
+## Submodule# branch Sync Experimental  
+
+```js
+var string = submodule.branch();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## Submodule# fetchRecurseSubmodules Sync Experimental  
+
+```js
+var result = submodule.fetchRecurseSubmodules();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 if fetchRecurseSubmodules is false, 1 if true |
+
+## Submodule# free Sync Experimental  
+
+```js
+submodule.free();
+```
+
+## Submodule# headId Sync Experimental  
+
+```js
+var oid = submodule.headId();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
+## Submodule# ignore Sync Experimental  
+
+```js
+var result = submodule.ignore();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  The current git_submodule_ignore_t valyue what will be used for
+         this submodule. |
+
+## Submodule# indexId Sync Experimental  
+
+```js
+var oid = submodule.indexId();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
+## Submodule# init Sync Experimental  
+
+```js
+var result = submodule.init(overwrite);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| overwrite | Number | By default, existing entries will not be overwritten, but setting this to true forces them to be updated. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, 
+<
+0 on failure. |
+
+## Submodule# name Sync Experimental  
+
+```js
+var string = submodule.name();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## Submodule# open Sync Experimental  
+
+```js
+var result = submodule.open(repo);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Pointer to the submodule repo which was opened |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, 
+<
+0 if submodule repo could not be opened. |
+
+## Submodule# owner Sync Experimental  
+
+```js
+var repository = submodule.owner();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  |
+
+## Submodule# path Sync Experimental  
+
+```js
+var string = submodule.path();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## Submodule# reload Sync Experimental  
+
+```js
+var result = submodule.reload(force);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| force | Number | Force reload even if the data doesn't seem out of date |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, 
+<
+0 on error |
+
+## Submodule# repoInit Async Experimental  
+
+```js
+submodule.repoInit(use_gitlink).then(function(repository) {
+  // Use repository
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| use_gitlink | Number | Should the workdir contain a gitlink to the repo in .git/modules vs. repo directly in workdir. |
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  |
+
+## Submodule# save Sync Experimental  
+
+```js
+var result = submodule.save();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, 
+<
+0 on failure. |
+
+## Submodule# setFetchRecurseSubmodules Sync Experimental  
+
+```js
+var result = submodule.setFetchRecurseSubmodules(fetch_recurse_submodules);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| fetch_recurse_submodules | Number | Boolean value |
+
+| Returns |  |
+| --- | --- |
+| Number |  old value for fetchRecurseSubmodules |
+
+## Submodule# setIgnore Sync Experimental  
+
+```js
+var result = submodule.setIgnore(ignore);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| ignore | Number | The new value for the ignore rule |
+
+| Returns |  |
+| --- | --- |
+| Number |  old value for ignore |
+
+## Submodule# setUpdate Sync Experimental  
+
+```js
+var result = submodule.setUpdate(update);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| update | Number | The new value to use |
+
+| Returns |  |
+| --- | --- |
+| Number |  old value for update |
+
+## Submodule# setUrl Sync Experimental  
+
+```js
+var result = submodule.setUrl(url);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| url | String | URL that should be used for the submodule |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, 
+<
+0 on failure |
+
+## Submodule# sync Sync Experimental  
+
+```js
+var result = submodule.sync();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Submodule# update Sync Experimental  
+
+```js
+var result = submodule.update(init, options);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| init | Number | If the submodule is not initialized, setting this flag to true will initialize the submodule before updating. Otherwise, this will return an error if attempting to update an uninitialzed repository. but setting this to true forces them to be updated. |
+| options | [SubmoduleUpdateOptions](/api/submodule_update_options/) | configuration options for the update. If NULL, the function works as though GIT_SUBMODULE_UPDATE_OPTIONS_INIT was passed. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, any non-zero return value from a callback
+         function, or a negative value to indicate an error (use
+         `giterr_last` for a detailed error message). |
+
+## Submodule# updateStrategy Sync Experimental  
+
+```js
+var result = submodule.updateStrategy();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  The current git_submodule_update_t value that will be used
+         for this submodule. |
+
+## Submodule# url Sync Experimental  
+
+```js
+var string = submodule.url();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## Submodule# wdId Sync Experimental  
+
+```js
+var oid = submodule.wdId();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
+## Submodule. IGNORE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Submodule.IGNORE. RESET | -1 |
+| Submodule.IGNORE. NONE | 1 |
+| Submodule.IGNORE. UNTRACKED | 2 |
+| Submodule.IGNORE. DIRTY | 3 |
+| Submodule.IGNORE. ALL | 4 |
+| Submodule.IGNORE. DEFAULT | 0 |
+
+## Submodule. RECURSE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Submodule.RECURSE. RESET | -1 |
+| Submodule.RECURSE. NO | 0 |
+| Submodule.RECURSE. YES | 1 |
+| Submodule.RECURSE. ONDEMAND | 2 |
+
+## Submodule. STATUS ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Submodule.STATUS. IN_HEAD | 1 |
+| Submodule.STATUS. IN_INDEX | 2 |
+| Submodule.STATUS. IN_CONFIG | 4 |
+| Submodule.STATUS. IN_WD | 8 |
+| Submodule.STATUS. INDEX_ADDED | 16 |
+| Submodule.STATUS. INDEX_DELETED | 32 |
+| Submodule.STATUS. INDEX_MODIFIED | 64 |
+| Submodule.STATUS. WD_UNINITIALIZED | 128 |
+| Submodule.STATUS. WD_ADDED | 256 |
+| Submodule.STATUS. WD_DELETED | 512 |
+| Submodule.STATUS. WD_MODIFIED | 1024 |
+| Submodule.STATUS. WD_INDEX_MODIFIED | 2048 |
+| Submodule.STATUS. WD_WD_MODIFIED | 4096 |
+| Submodule.STATUS. WD_UNTRACKED | 8192 |
+
+## Submodule. UPDATE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Submodule.UPDATE. RESET | -1 |
+| Submodule.UPDATE. CHECKOUT | 1 |
+| Submodule.UPDATE. REBASE | 2 |
+| Submodule.UPDATE. MERGE | 3 |
+| Submodule.UPDATE. NONE | 4 |
+| Submodule.UPDATE. DEFAULT | 0 |
+
diff --git a/api/submodule_update_options/index.md b/api/submodule_update_options/index.md
new file mode 100644
index 0000000..114dd00
--- /dev/null
+++ b/api/submodule_update_options/index.md
@@ -0,0 +1,22 @@
+---
+layout: default
+menu_item: api
+title: SubmoduleUpdateOptions
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  checkoutOpts | CheckoutOptions |
+|  cloneCheckoutStrategy | Number |
+|  remoteCallbacks | RemoteCallbacks |
+|  signature | Signature |
+|  version | Number |
+
diff --git a/api/tag/index.md b/api/tag/index.md
new file mode 100644
index 0000000..ef04ee9
--- /dev/null
+++ b/api/tag/index.md
@@ -0,0 +1,282 @@
+---
+layout: default
+menu_item: api
+title: Tag
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "annotationCreate": "#annotationCreate"
+  "create": "#create"
+  "createLightweight": "#createLightweight"
+  "delete": "#delete"
+  "list": "#list"
+  "listMatch": "#listMatch"
+  "lookup": "#lookup"
+  "lookupPrefix": "#lookupPrefix"
+  "#free": "#free"
+  "#id": "#id"
+  "#message": "#message"
+  "#name": "#name"
+  "#owner": "#owner"
+  "#peel": "#peel"
+  "#tagger": "#tagger"
+  "#target": "#target"
+  "#targetId": "#targetId"
+  "#targetType": "#targetType"
+---
+
+## Tag. annotationCreate Async  
+
+```js
+Tag.annotationCreate(repo, tag_name, target, tagger, message).then(function(oid) {
+  // Use oid
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where to store the tag |
+| tag_name | String | Name for the tag |
+| target | [Object](/api/object/) | Object to which this tag points. This object must belong to the given `repo`. |
+| tagger | [Signature](/api/signature/) | Signature of the tagger for this tag, and of the tagging time |
+| message | String | Full message for this tag |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) | the OID of the
+ newly created tag |
+
+## Tag. create Async  
+
+```js
+Tag.create(repo, tag_name, target, tagger, message, force).then(function(oid) {
+  // Use oid
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where to store the tag |
+| tag_name | String | Name for the tag; this name is validated for consistency. It should also not conflict with an already existing tag name |
+| target | [Object](/api/object/) | Object to which this tag points. This object must belong to the given `repo`. |
+| tagger | [Signature](/api/signature/) | Signature of the tagger for this tag, and of the tagging time |
+| message | String | Full message for this tag |
+| force | Number | Overwrite existing references |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) | the OID of the
+ newly created tag. If the tag already exists, this parameter
+ will be the oid of the existing tag, and the function will
+ return a GIT_EEXISTS error code. |
+
+## Tag. createLightweight Async  
+
+```js
+Tag.createLightweight(repo, tag_name, target, force).then(function(oid) {
+  // Use oid
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where to store the lightweight tag |
+| tag_name | String | Name for the tag; this name is validated for consistency. It should also not conflict with an already existing tag name |
+| target | [Object](/api/object/) | Object to which this tag points. This object must belong to the given `repo`. |
+| force | Number | Overwrite existing references |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) | the OID of the provided
+ target object. If the tag already exists, this parameter
+ will be filled with the oid of the existing pointed object
+ and the function will return a GIT_EEXISTS error code. |
+
+## Tag. delete Async  
+
+```js
+Tag.delete(repo, tag_name).then(function(result) {
+  // Use result
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where lives the tag |
+| tag_name | String | Name of the tag to be deleted; this name is validated for consistency. |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 on success, GIT_EINVALIDSPEC or an error code |
+
+## Tag. list Async  
+
+```js
+Tag.list(repo).then(function(array) {
+  // Use array
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository where to find the tags |
+
+| Returns |  |
+| --- | --- |
+| Array |  |
+
+## Tag. listMatch Sync  
+
+```js
+var result = Tag.listMatch(tag_names, pattern, repo);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| tag_names | [Strarray](/api/strarray/) | Pointer to a git_strarray structure where the tag names will be stored |
+| pattern | String | Standard fnmatch pattern |
+| repo | [Repository](/api/repository/) | Repository where to find the tags |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Tag. lookup Async  
+
+```js
+Tag.lookup(repo, id).then(function(tag) {
+  // Use tag
+});
+```
+
+Retrieves the tag pointed to by the oid
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repo that the tag lives in |
+| id | String, [Oid](/api/oid/), [Tag](/api/tag/) | The tag to lookup |
+
+| Returns |  |
+| --- | --- |
+| [Tag](/api/tag/) |  |
+
+## Tag. lookupPrefix Async  
+
+```js
+Tag.lookupPrefix(repo, id, len).then(function(tag) {
+  // Use tag
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repo to use when locating the tag. |
+| id | [Oid](/api/oid/) | identity of the tag to locate. |
+| len | Number | the length of the short identifier |
+
+| Returns |  |
+| --- | --- |
+| [Tag](/api/tag/) |  |
+
+## Tag# free Sync  
+
+```js
+tag.free();
+```
+
+## Tag# id Sync  
+
+```js
+var oid = tag.id();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  object identity for the tag. |
+
+## Tag# message Sync  
+
+```js
+var string = tag.message();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  message of the tag or NULL when unspecified |
+
+## Tag# name Sync  
+
+```js
+var string = tag.name();
+```
+
+| Returns |  |
+| --- | --- |
+| String |  name of the tag |
+
+## Tag# owner Sync  
+
+```js
+var repository = tag.owner();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  Repository that contains this tag. |
+
+## Tag# peel Sync  
+
+```js
+var result = tag.peel(tag_target_out);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| tag_target_out | [Object](/api/object/) | Pointer to the peeled git_object |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Tag# tagger Sync  
+
+```js
+var signature = tag.tagger();
+```
+
+| Returns |  |
+| --- | --- |
+| [Signature](/api/signature/) |  reference to the tag's author or NULL when unspecified |
+
+## Tag# target Sync  
+
+```js
+var object = tag.target();
+```
+
+| Returns |  |
+| --- | --- |
+| [Object](/api/object/) | the target |
+
+## Tag# targetId Sync  
+
+```js
+var oid = tag.targetId();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  |
+
+## Tag# targetType Sync  
+
+```js
+var result = tag.targetType();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  type of the tagged object |
+
diff --git a/api/time/index.md b/api/time/index.md
new file mode 100644
index 0000000..25d0ee5
--- /dev/null
+++ b/api/time/index.md
@@ -0,0 +1,19 @@
+---
+layout: default
+menu_item: api
+title: Time
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  offset | Number |
+|  time | Number |
+
diff --git a/api/trace/index.md b/api/trace/index.md
new file mode 100644
index 0000000..8973c4e
--- /dev/null
+++ b/api/trace/index.md
@@ -0,0 +1,24 @@
+---
+layout: default
+menu_item: api
+title: Trace
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "LEVEL": "#LEVEL"
+---
+
+## Trace. LEVEL ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Trace.LEVEL. NONE | 0 |
+| Trace.LEVEL. FATAL | 1 |
+| Trace.LEVEL. ERROR | 2 |
+| Trace.LEVEL. WARN | 3 |
+| Trace.LEVEL. INFO | 4 |
+| Trace.LEVEL. DEBUG | 5 |
+| Trace.LEVEL. TRACE | 6 |
+
diff --git a/api/transfer_progress/index.md b/api/transfer_progress/index.md
new file mode 100644
index 0000000..8d69218
--- /dev/null
+++ b/api/transfer_progress/index.md
@@ -0,0 +1,24 @@
+---
+layout: default
+menu_item: api
+title: TransferProgress
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "Instance Variables": "#ivars"
+---
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  indexedDeltas | Number |
+|  indexedObjects | Number |
+|  localObjects | Number |
+|  receivedBytes | Number |
+|  receivedObjects | Number |
+|  totalDeltas | Number |
+|  totalObjects | Number |
+
diff --git a/api/transport/index.md b/api/transport/index.md
new file mode 100644
index 0000000..5f38632
--- /dev/null
+++ b/api/transport/index.md
@@ -0,0 +1,66 @@
+---
+layout: default
+menu_item: api
+title: Transport
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "sshWithPaths": "#sshWithPaths"
+  "unregister": "#unregister"
+  "#init": "#init"
+  "FLAGS": "#FLAGS"
+---
+
+## Transport. sshWithPaths Async Experimental  
+
+```js
+Transport.sshWithPaths(owner, payload).then(function(transport) {
+  // Use transport
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| owner | [Remote](/api/remote/) | the owning remote |
+| payload | Void | a strarray with the paths |
+
+| Returns |  |
+| --- | --- |
+| [Transport](/api/transport/) | the resulting transport |
+
+## Transport. unregister Sync Experimental  
+
+```js
+var result = Transport.unregister(prefix);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| prefix | String | From the previous call to git_transport_register |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Transport# init Sync Experimental  
+
+```js
+var result = transport.init(version);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| version | Number | Version of struct; pass `GIT_TRANSPORT_VERSION` |
+
+| Returns |  |
+| --- | --- |
+| Number |  Zero on success; -1 on failure. |
+
+## Transport. FLAGS ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Transport.FLAGS. NONE | 0 |
+
diff --git a/api/tree/index.md b/api/tree/index.md
new file mode 100644
index 0000000..84ef041
--- /dev/null
+++ b/api/tree/index.md
@@ -0,0 +1,423 @@
+---
+layout: default
+menu_item: api
+title: Tree
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "entryCmp": "#entryCmp"
+  "entryDup": "#entryDup"
+  "entryFilemode": "#entryFilemode"
+  "entryFilemodeRaw": "#entryFilemodeRaw"
+  "entryId": "#entryId"
+  "entryName": "#entryName"
+  "entryToObject": "#entryToObject"
+  "entryType": "#entryType"
+  "lookup": "#lookup"
+  "lookupPrefix": "#lookupPrefix"
+  "#_entryByIndex": "#_entryByIndex"
+  "#builder": "#builder"
+  "#diff": "#diff"
+  "#entries": "#entries"
+  "#entryById": "#entryById"
+  "#entryByIndex": "#entryByIndex"
+  "#entryByName": "#entryByName"
+  "#entryByPath": "#entryByPath"
+  "#entryCount": "#entryCount"
+  "#free": "#free"
+  "#getEntry": "#getEntry"
+  "#id": "#id"
+  "#owner": "#owner"
+  "#path": "#path"
+  "#walk": "#walk"
+  "WALK_MODE": "#WALK_MODE"
+---
+
+## Tree. entryCmp Sync Experimental  
+
+```js
+var result = Tree.entryCmp(e1, e2);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| e1 | [TreeEntry](/api/tree_entry/) | first tree entry |
+| e2 | [TreeEntry](/api/tree_entry/) | second tree entry |
+
+| Returns |  |
+| --- | --- |
+| Number |  
+<
+0 if e1 is before e2, 0 if e1 == e2, >0 if e1 is after e2 |
+
+## Tree. entryDup Sync Experimental  
+
+```js
+var result = Tree.entryDup(dest, source);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| dest | [TreeEntry](/api/tree_entry/) | pointer where to store the copy |
+| source | [TreeEntry](/api/tree_entry/) | tree entry to duplicate |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Tree. entryFilemode Sync Experimental  
+
+```js
+var result = Tree.entryFilemode(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [TreeEntry](/api/tree_entry/) | a tree entry |
+
+| Returns |  |
+| --- | --- |
+| Number |  filemode as an integer |
+
+## Tree. entryFilemodeRaw Sync Experimental  
+
+```js
+var result = Tree.entryFilemodeRaw(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [TreeEntry](/api/tree_entry/) | a tree entry |
+
+| Returns |  |
+| --- | --- |
+| Number |  filemode as an integer |
+
+## Tree. entryId Sync Experimental  
+
+```js
+var oid = Tree.entryId(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [TreeEntry](/api/tree_entry/) | a tree entry |
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  the oid of the object |
+
+## Tree. entryName Sync Experimental  
+
+```js
+var string = Tree.entryName(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [TreeEntry](/api/tree_entry/) | a tree entry |
+
+| Returns |  |
+| --- | --- |
+| String |  the name of the file |
+
+## Tree. entryToObject Sync Experimental  
+
+```js
+var result = Tree.entryToObject(object_out, repo, entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| object_out | [Object](/api/object/) | pointer to the converted object |
+| repo | [Repository](/api/repository/) | repository where to lookup the pointed object |
+| entry | [TreeEntry](/api/tree_entry/) | a tree entry |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
+## Tree. entryType Sync Experimental  
+
+```js
+var result = Tree.entryType(entry);
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| entry | [TreeEntry](/api/tree_entry/) | a tree entry |
+
+| Returns |  |
+| --- | --- |
+| Number |  the type of the pointed object |
+
+## Tree. lookup Async  
+
+```js
+Tree.lookup(repo, id, callback).then(function(tree) {
+  // Use tree
+});
+```
+
+Retrieves the tree pointed to by the oid
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | The repo that the tree lives in |
+| id | String, [Oid](/api/oid/), [Tree](/api/tree/) | The tree to lookup |
+| callback | Function |  |
+
+| Returns |  |
+| --- | --- |
+| [Tree](/api/tree/) |  |
+
+## Tree. lookupPrefix Async Experimental  
+
+```js
+Tree.lookupPrefix(repo, id, len).then(function(tree) {
+  // Use tree
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | the repo to use when locating the tree. |
+| id | [Oid](/api/oid/) | identity of the tree to locate. |
+| len | Number | the length of the short identifier |
+
+| Returns |  |
+| --- | --- |
+| [Tree](/api/tree/) |  |
+
+## Tree# _entryByIndex Sync Experimental  
+
+```js
+var treeEntry = tree._entryByIndex(idx);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| idx | Number | the position in the entry list |
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) |  the tree entry; NULL if not found |
+
+## Tree# builder Sync  
+
+```js
+var treebuilder = tree.builder();
+```
+
+Make builder. This is helpful for modifying trees.
+
+| Returns |  |
+| --- | --- |
+| [Treebuilder](/api/treebuilder/) |  |
+
+## Tree# diff Async  
+
+```js
+tree.diff(tree, callback).then(function(diffList) {
+  // Use diffList
+});
+```
+
+Diff two trees
+
+| Parameters | Type |
+| --- | --- | --- |
+| tree | [Tree](/api/tree/) | to diff against |
+| callback | Function |  |
+
+| Returns |  |
+| --- | --- |
+| DiffList |  |
+
+## Tree# entries Sync  
+
+```js
+var treeEntry = tree.entries();
+```
+
+Return an array of the entries in this tree (excluding its children).
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) | an array of TreeEntrys |
+
+## Tree# entryById Sync Experimental  
+
+```js
+var treeEntry = tree.entryById(id);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | the sha being looked for |
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) |  the tree entry; NULL if not found |
+
+## Tree# entryByIndex Sync  
+
+```js
+var treeEntry = tree.entryByIndex(i);
+```
+
+Get an entry at the ith position.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| i | Number |  |
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) |  |
+
+## Tree# entryByName Sync  
+
+```js
+var treeEntry = tree.entryByName(name);
+```
+
+Get an entry by name; if the tree is a directory, the name is the filename.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| name | String |  |
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) |  |
+
+## Tree# entryByPath Async Experimental  
+
+```js
+tree.entryByPath(path).then(function(treeEntry) {
+  // Use treeEntry
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String | Path to the contained entry |
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) | the tree entry |
+
+## Tree# entryCount Sync Experimental  
+
+```js
+var result = tree.entryCount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the number of entries in the tree |
+
+## Tree# free Sync Experimental  
+
+```js
+tree.free();
+```
+
+## Tree# getEntry Sync  
+
+```js
+var treeEntry = tree.getEntry(path);
+```
+
+Get an entry at a path. Unlike by name, this takes a fully
+qualified path, like `/foo/bar/baz.javascript`
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| path | String |  |
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) |  |
+
+## Tree# id Sync Experimental  
+
+```js
+var oid = tree.id();
+```
+
+| Returns |  |
+| --- | --- |
+| [Oid](/api/oid/) |  object identity for the tree. |
+
+## Tree# owner Sync Experimental  
+
+```js
+var repository = tree.owner();
+```
+
+| Returns |  |
+| --- | --- |
+| [Repository](/api/repository/) |  Repository that contains this tree. |
+
+## Tree# path Sync  
+
+```js
+var string = tree.path();
+```
+
+Return the path of this tree, like `/lib/foo/bar`
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## Tree# walk Sync  
+
+```js
+var eventEmitter = tree.walk([blobsOnly);
+
+eventEmitter.on('entry', function(tree) {
+  // Use tree
+});
+
+eventEmitter.on('end', function(trees) {
+  // Use trees
+});
+
+eventEmitter.on('error', function(error) {
+  // Use error
+});
+```
+
+Recursively walk the tree in breadth-first order. Fires an event for each
+entry.
+
+
+| Parameters | Type |
+| --- | --- | --- |
+| [blobsOnly | Boolean | = true] True to emit only blob & blob executable entries. |
+
+| Fires | Sends |
+| --- | --- |
+| entry | [Tree](/api/tree/) |
+| end | Array<[Tree](/api/tree/)> |
+| error | Error  |
+
+| Returns |  |
+| --- | --- |
+| EventEmitter |  |
+
+## Tree. WALK_MODE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| Tree.WALK_MODE. WALK_PRE | 0 |
+| Tree.WALK_MODE. WALK_POST | 1 |
+
diff --git a/api/tree_entry/index.md b/api/tree_entry/index.md
new file mode 100644
index 0000000..206dbc7
--- /dev/null
+++ b/api/tree_entry/index.md
@@ -0,0 +1,150 @@
+---
+layout: default
+menu_item: api
+title: TreeEntry
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "#getBlob": "#getBlob"
+  "#getTree": "#getTree"
+  "#isBlob": "#isBlob"
+  "#isDirectory": "#isDirectory"
+  "#isFile": "#isFile"
+  "#isTree": "#isTree"
+  "#path": "#path"
+  "#sha": "#sha"
+  "#toString": "#toString"
+  "FILEMODE": "#FILEMODE"
+  "Instance Variables": "#ivars"
+---
+
+## TreeEntry# getBlob Async  
+
+```js
+treeEntry.getBlob().then(function(blob) {
+  // Use blob
+});
+```
+
+Retrieve the tree for this entry. Make sure to call `isTree` first!
+
+| Returns |  |
+| --- | --- |
+| [Blob](/api/blob/) |  |
+
+## TreeEntry# getTree Async  
+
+```js
+treeEntry.getTree().then(function(tree) {
+  // Use tree
+});
+```
+
+Retrieve the tree for this entry. Make sure to call `isTree` first!
+
+| Returns |  |
+| --- | --- |
+| [Tree](/api/tree/) |  |
+
+## TreeEntry# isBlob Sync  
+
+```js
+var boolean = treeEntry.isBlob();
+```
+
+Is this TreeEntry a blob? Alias for `isFile`
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## TreeEntry# isDirectory Sync  
+
+```js
+var boolean = treeEntry.isDirectory();
+```
+
+Is this TreeEntry a directory? Alias for `isTree`
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## TreeEntry# isFile Sync  
+
+```js
+var boolean = treeEntry.isFile();
+```
+
+Is this TreeEntry a blob? (i.e., a file)
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## TreeEntry# isTree Sync  
+
+```js
+var boolean = treeEntry.isTree();
+```
+
+Is this TreeEntry a tree? (i.e., a directory)
+
+| Returns |  |
+| --- | --- |
+| Boolean |  |
+
+## TreeEntry# path Sync  
+
+```js
+var string = treeEntry.path();
+```
+
+Returns the path for this entry.
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## TreeEntry# sha Sync  
+
+```js
+var string = treeEntry.sha();
+```
+
+Retrieve the SHA for this TreeEntry.
+
+| Returns |  |
+| --- | --- |
+| String |  |
+
+## TreeEntry# toString Sync  
+
+```js
+treeEntry.toString();
+```
+
+Alias for `path`
+
+## TreeEntry. FILEMODE ENUM  
+
+| Flag | Value |
+| --- | --- | --- |
+| TreeEntry.FILEMODE. UNREADABLE | 0 |
+| TreeEntry.FILEMODE. TREE | 16384 |
+| TreeEntry.FILEMODE. BLOB | 33188 |
+| TreeEntry.FILEMODE. EXECUTABLE | 33261 |
+| TreeEntry.FILEMODE. LINK | 40960 |
+| TreeEntry.FILEMODE. COMMIT | 57344 |
+
+##  Instance Variables
+
+| Variable | Type |
+| --- | --- |
+|  attr | Number |
+|  filename | String |
+|  filenameLen | Number |
+|  oid | Oid |
+
diff --git a/api/treebuilder/index.md b/api/treebuilder/index.md
new file mode 100644
index 0000000..97a8717
--- /dev/null
+++ b/api/treebuilder/index.md
@@ -0,0 +1,118 @@
+---
+layout: default
+menu_item: api
+title: Treebuilder
+description: Version 0.3.0
+menu_item: api
+return_to:
+  "API Documentation Index": /api/
+sections:
+  "create": "#create"
+  "#clear": "#clear"
+  "#entrycount": "#entrycount"
+  "#free": "#free"
+  "#get": "#get"
+  "#insert": "#insert"
+  "#remove": "#remove"
+  "#write": "#write"
+---
+
+## Treebuilder. create Async Experimental  
+
+```js
+Treebuilder.create(repo, source).then(function(treebuilder) {
+  // Use treebuilder
+});
+```
+
+| Parameters | Type |   |
+| --- | --- | --- |
+| repo | [Repository](/api/repository/) | Repository in which to store the object |
+| source | [Tree](/api/tree/) | Source tree to initialize the builder (optional) |
+
+| Returns |  |
+| --- | --- |
+| [Treebuilder](/api/treebuilder/) | the tree builder |
+
+## Treebuilder# clear Sync Experimental  
+
+```js
+treebuilder.clear();
+```
+
+## Treebuilder# entrycount Sync Experimental  
+
+```js
+var result = treebuilder.entrycount();
+```
+
+| Returns |  |
+| --- | --- |
+| Number |  the number of entries in the treebuilder |
+
+## Treebuilder# free Sync Experimental  
+
+```js
+treebuilder.free();
+```
+
+## Treebuilder# get Sync Experimental  
+
+```js
+var treeEntry = treebuilder.get(filename);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| filename | String | Name of the entry |
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) |  |
+
+## Treebuilder# insert Async Experimental  
+
+```js
+treebuilder.insert(filename, id, filemode).then(function(treeEntry) {
+  // Use treeEntry
+});
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| filename | String | Filename of the entry |
+| id | [Oid](/api/oid/) | SHA1 oid of the entry |
+| filemode | Number | Folder attributes of the entry. This parameter must be valued with one of the following entries: 0040000, 0100644, 0100755, 0120000 or 0160000. |
+
+| Returns |  |
+| --- | --- |
+| [TreeEntry](/api/tree_entry/) |  |
+
+## Treebuilder# remove Sync Experimental  
+
+```js
+var result = treebuilder.remove(filename);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| filename | String | Filename of the entry to remove |
+
+| Returns |  |
+| --- | --- |
+| Number |  |
+
+## Treebuilder# write Sync Experimental  
+
+```js
+var result = treebuilder.write(id);
+```
+
+| Parameters | Type |
+| --- | --- | --- |
+| id | [Oid](/api/oid/) | Pointer to store the OID of the newly written tree |
+
+| Returns |  |
+| --- | --- |
+| Number |  0 or an error code |
+
diff --git a/blog/index.md b/blog/index.md
new file mode 100644
index 0000000..b41be6f
--- /dev/null
+++ b/blog/index.md
@@ -0,0 +1,11 @@
+---
+layout: full
+menu_item: blog
+title: Blog
+description: NodeGit talk
+---
+
+##### __[New release, new site!](new-release/)__ 03/03/2015 
+
+v0.3.0 brings with it: a new site (docs are better now we promise!), more
+stable Windows support, a ton of libgit2 API coverage, and more...
diff --git a/blog/new-release/index.md b/blog/new-release/index.md
new file mode 100644
index 0000000..eabad3f
--- /dev/null
+++ b/blog/new-release/index.md
@@ -0,0 +1,7 @@
+---
+layout: full
+menu_item: blog
+title: New release
+description: 3/3/2015
+---
+
diff --git a/bower.json b/bower.json
deleted file mode 100644
index 05b177b..0000000
--- a/bower.json
+++ /dev/null
@@ -1,9 +0,0 @@
-{
-  "name": "nodegit.github.com",
-  "versions": "0.1.0",
-  "dependencies": {
-    "combyne": "~0.6.1",
-    "jquery": "~2.1.1",
-    "underscore": "~1.7.0"
-  }
-}
diff --git a/bower_components/combyne/.bower.json b/bower_components/combyne/.bower.json
deleted file mode 100644
index 1204346..0000000
--- a/bower_components/combyne/.bower.json
+++ /dev/null
@@ -1,32 +0,0 @@
-{
-  "name": "combyne",
-  "version": "0.6.1",
-  "main": "dist/combyne.js",
-  "devDependencies": {
-    "mocha": "~1.20.1",
-    "requirejs": "~2.1.10",
-    "assert": "~0.1.0",
-    "json3": "~3.3.1"
-  },
-  "ignore": [
-    "build",
-    "test",
-    ".gitignore",
-    ".jscs.json",
-    ".jshintrc",
-    ".travis.yml",
-    "CONTRIBUTING.md",
-    "Gruntfile.coffee",
-    "package.json"
-  ],
-  "homepage": "https://github.com/tbranyen/combyne",
-  "_release": "0.6.1",
-  "_resolution": {
-    "type": "version",
-    "tag": "0.6.1",
-    "commit": "1b22c91330e90864b2a1383bca97c266f1c55737"
-  },
-  "_source": "git://github.com/tbranyen/combyne.git",
-  "_target": "~0.6.1",
-  "_originalSource": "combyne"
-}
\ No newline at end of file
diff --git a/bower_components/combyne/.npmignore b/bower_components/combyne/.npmignore
deleted file mode 100644
index 90996ff..0000000
--- a/bower_components/combyne/.npmignore
+++ /dev/null
@@ -1,11 +0,0 @@
-bower_components
-node_modules
-build
-test
-.gitignore
-.jscs.json
-.jshintrc
-.npmignore
-.travis.yml
-CONTRIBUTING.md
-Gruntfile.coffee
diff --git a/bower_components/combyne/LICENSE b/bower_components/combyne/LICENSE
deleted file mode 100644
index 8fe4c2f..0000000
--- a/bower_components/combyne/LICENSE
+++ /dev/null
@@ -1,19 +0,0 @@
-Copyright (c) 2014 Tim Branyen
-
-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:
-
-The above copyright notice and this permission notice shall be included in all
-copies or substantial portions of the Software.
-
-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.
diff --git a/bower_components/combyne/README.md b/bower_components/combyne/README.md
deleted file mode 100644
index 8d4c017..0000000
--- a/bower_components/combyne/README.md
+++ /dev/null
@@ -1,563 +0,0 @@
- 
-
-**Stable: 0.6.1**
-
-[](https://travis-ci.org/tbranyen/combyne)
-[](https://coveralls.io/r/tbranyen/combyne?branch=master)
-[](https://codeclimate.com/github/tbranyen/combyne)
-
-No dependencies.  Can be loaded as a browser global, AMD module, and Node
-module.  Works with Browserify.  Can be installed via NPM or Bower.
-
-Combyne works great with:
-
-- [Express](https://github.com/tbranyen/combynexpress)
-- [Browserify](https://github.com/chesles/combynify)
-- [AMD](https://github.com/tbranyen/combyne-amd-loader)
-
-## Install. ##
-
-Node:
-
-``` bash
-npm install combyne
-```
-
-Bower:
-
-``` bash
-bower install combyne
-```
-
-## Getting started. ##
-
-### Node. ###
-
-Require in your source:
-
-``` javascript
-var combyne = require("combyne");
-```
-
-### AMD. ###
-
-``` javascript
-// Configure the path if necessary.
-require({
-  paths: {
-    combyne: "path/to/combyne"
-  }
-});
-
-// Use in a module.
-define(["combyne"], function(combyne) {});
-```
-
-There is also an AMD plugin for easier consumption and building:
-
-https://github.com/tbranyen/combyne-amd-loader
-
-### Browserify. ###
-
-[combynify](https://github.com/chesles/combynify) is a
-[browserify](https://github.com/substack/browserify) transform plugin to
-pre-compile combyne templates.
-
-In your code:
-
-``` javascript
-var template = require("./template.combyne");
-var data = { ... }
-
-template.render(data)
-```
-
-Install combynify and browserify it:
-
-``` bash
-npm install --save-dev combynify
-browserify -t combynify main.js > bundle.js
-```
-
-Once the template is precompiled, there is no dependency on the combyne
-engine.
-
-### Browser global. ###
-
-[Include the latest stable](https://github.com/tbranyen/combyne/releases)
-in your markup:
-
-``` html
-
-```
-
-#### Compatibility. ####
-
-Combyne is written in ES5 and contains polyfills to provide support back to IE
-7.  These polyfills are omitted in the **dist/combyne.js** file, but exist in
-the **dist/combyne.legacy.js** file.  Use this if you are developing/testing
-with older IE.
-
-[](https://saucelabs.com/u/combyne)
-
-## Basic usage. ##
-
-``` javascript
-var tmpl = combyne("hello {{msg}}!");
-tmpl.render({ msg: "world" });
-
-// => hello world!
-```
-
-## Features. ##
-
-Combyne works by parsing your template into an AST.  This provides mechanisms
-for intelligent compilation and optimization.  The template is converted to
-JavaScript and invoked upon calling render with data.
-
-### Security. ###
-
-By default all templates are encoded to avoid possible issues arising from XSS
-attacks.  This is specifically applied to properties and you can avoid this by
-using the raw property style: `{{{ value }}}`.  This is very similar to
-Mustache.
-
-While using this template engine in the browser, it is important to note that
-you should not trust unknown values to render unencoded.  The recommendation is
-to forget it exists while writing templates in the browser, unless you know
-what you're doing and have a valid use case.
-
-View this [XSS (Cross Site Scripting) Prevention Cheat Sheet](https://www.owasp.org/index.php/XSS_(Cross_Site_Scripting)_Prevention_Cheat_Sheet) for more information.
-
-### Comments. ###
-
-Comments are useful for ignoring anything between the open and close.  They can
-be nested.
-
-``` javascript
-var tmpl = combyne("test {%-- not parsed --%}");
-tmpl.render();
-
-// => test
-```
-
-### Custom delimiters. ###
-
-If you are not happy with the default Mustache-like syntax, you can trivially
-change the delimiters to suit your needs.  You may only change the delimiters
-at a global level, because templates are compiled immediately after invoking
-the `combyne` function.
-
-``` javascript
-// This sets the delimiters, and applies to all templates.
-combyne.settings.delimiters = {
-  START_PROP: "[[",
-  END_PROP: "]]"
-};
-
-var tmpl = combyne("[[msg]]", { msg: "hello world" });
-
-tmpl.render();
-// => hello world
-```
-
-Defaults:
-
-``` javascript
-START_RAW:  "{{{"
-END_RAW:    "}}}"
-START_PROP: "{{"
-END_PROP:   "}}"
-START_EXPR: "{%"
-END_EXPR:   "%}"
-COMMENT:    "--"
-FILTER:     "|"
-```
-
-### Template variables. ###
-
-
-``` javascript
-var template = "{{foo}}";
-var context = { foo: "hello" };
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "hello"
-```
-
-Variables can be literal values, functions, or even objects.
-
-#### Passing arguments to a function. ####
-
-
-``` javascript
-var template = "{{toUpper 'hi'}}";
-var context = { toUpper: function(val) { return val.toUpperCase(); } };
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "HI"
-```
-
-### Using filters on variables. ###
-
-``` javascript
-var template = "{{foo|reverse}}";
-var context = { foo: "hello" };
-
-var tmpl = combyne(template);
-
-tmpl.registerFilter("reverse", function(val) {
-  return val.split("").reverse().join("");
-});
-
-var output = tmpl.render(context);
-/// output == "olleh"
-```
-
-#### Passing arguments to filters. ####
-
-You may find that the property value is not enough information for the filter
-function, in which case you can send additional arguments.
-
-``` javascript
-var tmpl = combyne("{{ code|highlight 'javascript' }}");
-
-tmpl.registerFilter("highlight", function(code, language) {
-  // Magic highlight function that takes code and language.
-  return highlight(code, language);
-});
-```
-
-#### Chaining filters on variables. ####
-
-``` javascript
-var template = "{{foo|reverse|toUpper}}";
-var context = { foo: "hello" };
-
-var tmpl = combyne(template);
-
-tmpl.registerFilter("reverse", function(val) {
-  return val.split("").reverse().join("");
-});
-
-tmpl.registerFilter("toUpper", function(val) {
-  return val.toUpperCase();
-});
-
-var output = tmpl.render(context);
-/// output == "OLLEH"
-```
-
-### Conditionals. ###
-
-Instead of being *logic-less*, `combyne` doesn't make any assumptions and
-allows you to do things like `if/elsif/else` with simple conditionals,
-such as `if something == somethingElse` or `if not something`.  All data
-types will be coerced to Strings except for Numbers.
-
-``` javascript
-var template = "{%if not foo%}why not?{%endif%}";
-var context = { foo: false };
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "why not?"
-```
-
-or a more complicated example...
-
-``` javascript
-var template = "{%if foo == 'hello'%}Hi!{%else%}bye...{%endif%}";
-var context = { foo: "hello" };
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "Hi!"
-```
-
-elsif is also supported:
-
-``` javascript
-var template = "{%if foo == ''%}goodbye!{%elsif foo == 'hello'%}hello!{%endif%}";
-var context = { foo: "hello" };
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "hello!"
-```
-
-You can also pass conditionals through filters to do more complex logic:
-
-``` javascript
-var tmpl = combyne("{%if hello|upper|reverse == 'OLLEH'%}hello{%endif%}");
-
-tmpl.registerFilter('upper', function(value) {
-  return value.toUpperCase();
-});
-
-tmpl.registerFilter("reverse", function(value) {
-  return value.split("").reverse().join("");
-});
-
-var output = tmpl.render({ hello: 'hello'});
-/// output == "hello"
-```
-
-It also works with properties that need to be not encoded
-
-``` javascript
-var tmpl = combyne("{%if {{{hello}}} == '<>'%}hello{%endif%}");
-
-var output = tmpl.render({ hello: '<>'});
-/// output == "hello";
-```
-
-### Iterating arrays. ###
-
-*Also works on array-like objects: arguments and NodeList.*
-
-``` javascript
-var template = "{%each foo%}{{.}} {%endeach%}";
-var context = { foo: [1,2,3,4] };
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "1 2 3 4 "
-```
-
-You can also pass the value into a filter before iterating over it
-
-``` javascript
-var template = "{%each foo|upper%}{{.}} {%endeach%}";
-var context = { foo: ["a", "b", "c"] };
-
-template.registerFilter("upper", function(array) {
-  return array.map(function (entry) {
-    return entry.toUpperCase();
-  });
-});
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "A B C"
-```
-
-You can even use filters on the root object by either specifying '.'
-or leaving it blank
-
-``` javascript
-var template = "{%each .|upper%}{{.}} {%endeach%}";
-var context = ["a", "b", "c"];
-
-template.registerFilter("upper", function(array) {
-  return array.map(function (entry) {
-    return entry.toUpperCase();
-  });
-});
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "A B C"
-```
-
-#### Iterating an array of objects shorthand. ####
-
-If you pass an array of objects to Combyne, you may iterate it via a shorthand:
-
-``` javascript
-var template = "{%each%}{{foo}} {%endeach%}";
-var context = [{ foo: 1 }, { foo: 2 }, { foo: 3 }, { foo: 4 }];
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "1 2 3 4 "
-```
-
-#### Change the iterated identifer within loops. ####
-
-``` javascript
-var template = "{%each arr as val%}{{val}}{%endeach%}";
-var context = { arr: [1,2,3] };
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output = "123"
-```
-
-### Iterating objects. ###
-
-``` javascript
-var template = "{%each fruits as val key%}the {{key}} is {{val}}{%endeach%}";
-var context = {
-  fruits: {
-    apple: "green"
-  }
-};
-
-var tmpl = combyne(template);
-
-var output = tmpl.render(context);
-/// output == "the apple is green"
-```
-
-### Partials. ###
-
-``` javascript
-var template = "{{foo}} {%partial bar%}";
-var context = { foo: "hello" };
-
-var tmpl = combyne(template);
-
-tmpl.registerPartial("bar", combyne("{{name}}", {
-  name: "john"
-}));
-
-var output = tmpl.render(context);
-/// output == "hello john"
-```
-
-#### Pass template data to partial. ####
-
-If you need to pass the template's data to the partial, simply use the magic
-operator `.`.
-
-``` javascript
-var template = "{{foo}} {%partial bar .%}";
-var context = { foo: "hello", name: "carl" };
-
-var tmpl = combyne(template);
-
-tmpl.registerPartial("bar", combyne("{{name}}"));
-
-var output = tmpl.render(context);
-/// output == "hello carl"
-```
-
-If you need to manipulate the data passed to any partial, you must create a
-function on the parent template's data that returns an object or array that
-will be used by the nested partial.
-
-You can even pass arguments along to that function to use.
-
-An example follows:
-
-``` javascript
-var template = "{%partial bar showName 'carl'%}";
-var context = {
-  showName: function(name) {
-    return { displayName: name };
-  }
-};
-
-var tmpl = combyne(template);
-
-tmpl.registerPartial("bar", combyne("hello {{displayName}}"));
-
-var output = tmpl.render(context);
-/// output == "hello carl"
-```
-
-#### Template inheritance. ####
-
-When using a framework that handles rendering for you and you wish to inject
-your template into a different template (maybe a layout) in a given region
-you can express this through template inheritance expressions.
-
-Illustrated below is a typical use case for this feature:
-
-``` javascript
-var template = "{%extend layout as content%}{{header}} {%endextend%}";
-var context = { header: "Home page" };
-
-var page = combyne(template);
-
-// Register the layout template into the page template.
-page.registerPartial("layout", combyne("{%partial content%}"));
-
-var output = page.render(context);
-/// output == "Home page "
-```
-
-The context object you pass at the `page.render` line will be propagated to
-the partial template.  This means that you can optionally pass a nested object
-structure like:
-
-``` javascript
-var context = {
-  header: "My site",
-
-  page: {
-    header: "Home page"
-  }
-};
-
-// Pass the page object to the page template, restricting what it has access
-// to.
-var layout = "{{header}} {%partial content page%}";
-
-// Register it in the partial.
-page.registerPartial("layout", combyne(layout));
-
-var output = page.render(context);
-/// output == "My site Home page "
-```
-
-## Unit tests. ##
-
-There are many ways to run the unit tests as this library can operate in
-various environments.
-
-### Browser ###
-
-Open test/index.html in your web browser.
-
-### Node ###
-
-Run the tests inside the Node runtime and within PhantomJS:
-
-``` bash
-grunt test
-```
-
-This will run the tests against the AMD source, the built modern
-dist/combyne.js, and the built legacy dist/combyne.legacy.js files.
-
-### Continuous testing ###
-
-To keep the PhantomJS tests running continuously, run:
-
-``` bash
-grunt karma:watch
-```
-
-The tests will automatically run whenever files change.
-
-#### Code coverage ####
-
-If you run the tests through Karma, a test/coverage directory will be created
-containing folders that correspond with the environment where the tests were
-run.
-
-If you are running the defaults you should see something that looks like:
-
-``` unicode
-.
-└── coverage
-    ├── Chrome 33.0.1750 (Linux)
-    └── PhantomJS 1.9.7 (Linux)
-```
-
-Inside PhantomJS contains the HTML output that can be opened in a browser to
-inspect the source coverage from running the tests.
diff --git a/bower_components/combyne/bower.json b/bower_components/combyne/bower.json
deleted file mode 100644
index cad66e4..0000000
--- a/bower_components/combyne/bower.json
+++ /dev/null
@@ -1,22 +0,0 @@
-{
-  "name": "combyne",
-  "version": "0.6.1",
-  "main": "dist/combyne.js",
-  "devDependencies": {
-    "mocha": "~1.20.1",
-    "requirejs": "~2.1.10",
-    "assert": "~0.1.0",
-    "json3": "~3.3.1"
-  },
-  "ignore": [
-    "build",
-    "test",
-    ".gitignore",
-    ".jscs.json",
-    ".jshintrc",
-    ".travis.yml",
-    "CONTRIBUTING.md",
-    "Gruntfile.coffee",
-    "package.json"
-  ]
-}
diff --git a/bower_components/combyne/dist/combyne.js b/bower_components/combyne/dist/combyne.js
deleted file mode 100644
index 81316e8..0000000
--- a/bower_components/combyne/dist/combyne.js
+++ /dev/null
@@ -1,937 +0,0 @@
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.combyne=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o -1) {
-        body.push(createObject, type, map);
-    }
-    if (compiledSource.indexOf('encode(') > -1) {
-        body.push(type, encode);
-    }
-    body = body.concat(['return \'\'' + compiledSource]).join(';\n');
-    this.func = new Function('data', 'partials', 'filters', body);
-    this.source = [
-        '{',
-        '_partials: {},',
-        '_filters: {},',
-        'registerPartial: ' + registerPartial + ',',
-        'registerFilter: ' + registerFilter + ',',
-        'render: function(data) {',
-        'return ' + this.func + '(data, this._partials, this._filters)',
-        '}',
-        '}'
-    ].join('\n');
-}
-Compiler.prototype.process = function (nodes, keyVal) {
-    var commands = [];
-    nodes.map(function (node, index) {
-        switch (node.type) {
-        case 'RawProperty':
-            commands.push(this.compileProperty(node, false));
-            break;
-        case 'Property':
-            commands.push(this.compileProperty(node, true));
-            break;
-        case 'ConditionalExpression':
-            commands.push(this.compileConditional(node));
-            break;
-        case 'LoopExpression':
-            commands.push(this.compileLoop(node));
-            break;
-        case 'PartialExpression':
-            commands.push(this.compilePartial(node));
-            break;
-        case 'ExtendExpression':
-            commands.push(this.compileExtend(node));
-            break;
-        default:
-            if (node.value) {
-                commands.push('\'' + escapeValue(node.value) + '\'');
-            }
-            break;
-        }
-    }, this);
-    return commands.join('+');
-};
-Compiler.prototype.compileProperty = function (node, encode) {
-    var identifier = node.value;
-    if (identifier.indexOf('\'') === -1 && identifier.indexOf('"') === -1) {
-        identifier = normalizeIdentifier(node.value);
-    }
-    var value = [
-            '(',
-            'typeof',
-            identifier,
-            '===',
-            '\'function\'',
-            '?',
-            encode ? 'encode(' + identifier + '(' + node.args + '))' : identifier + '(' + node.args + ')',
-            ':',
-            encode ? 'encode(' + identifier + ') == null ? \'\' : encode(' + identifier + ')' : identifier + ' == null ? \'\' : ' + identifier,
-            ')'
-        ].join(' ');
-    value = node.filters.reduce(function (memo, filter) {
-        var args = filter.args.length ? ', ' + filter.args.map(function (value) {
-                if (value.indexOf('\'') === -1 && value.indexOf('"') === -1) {
-                    if (!Number(value)) {
-                        return normalizeIdentifier(value);
-                    }
-                }
-                return value;
-            }).join(', ') : '';
-        return 'filters[\'' + filter.value + '\']' + '(' + memo + args + ')';
-    }, value);
-    return value;
-};
-Compiler.prototype.compileConditional = function (node) {
-    if (node.conditions.length === 0) {
-        throw new Error('Missing conditions to if statement.');
-    }
-    var _this = this;
-    var condition = node.conditions.map(function (condition) {
-            switch (condition.type) {
-            case 'Identifier':
-                return _this.compileProperty(condition.value, condition.value.type == 'Property');
-            case 'Not':
-                return '!';
-            case 'Literal':
-                return condition.value;
-            case 'Equality':
-                return condition.value;
-            }
-        }).join('');
-    var els = node.els ? this.process(node.els.nodes) : null;
-    var elsif = node.elsif ? this.compileConditional(node.elsif) : null;
-    return [
-        '(',
-        '(',
-        condition,
-        ')',
-        '?',
-        this.process(node.nodes),
-        ':',
-        els || elsif || '\'\'',
-        ')'
-    ].join('');
-};
-Compiler.prototype.compileLoop = function (node) {
-    var conditions = node.conditions;
-    var keyVal = [
-            conditions[3] ? conditions[3].value : 'i',
-            conditions[2] ? conditions[2].value : '.'
-        ];
-    var value = conditions.length && conditions[0].value;
-    var loop = [
-            'map(',
-            value ? this.compileProperty(value, value.type == 'Property') : 'data',
-            ',',
-            '\'',
-            keyVal[0],
-            '\'',
-            ',',
-            '\'',
-            value ? keyVal[1] : '',
-            '\'',
-            ',',
-            'data',
-            ',',
-            'function(data) {',
-            'return ' + this.process(node.nodes, keyVal),
-            '}',
-            ').join(\'\')'
-        ].join('');
-    return loop;
-};
-Compiler.prototype.compilePartial = function (node) {
-    return [
-        '(',
-        '(partials[\'' + node.value + '\']._partials = partials),',
-        '(partials[\'' + node.value + '\']._filters = filters),',
-        'partials[\'' + node.value + '\'].render(',
-        node.args.length ? this.compileProperty({
-            value: node.args[0],
-            args: node.args.slice(1),
-            filters: []
-        }) : node.data,
-        ')',
-        ')'
-    ].join('');
-};
-Compiler.prototype.compileExtend = function (node) {
-    return [
-        '(',
-        'partials[\'',
-        node.value.template.trim(),
-        '\'].registerPartial',
-        '(\'',
-        node.value.partial.trim(),
-        '\', { render: function(_data) {',
-        'data = _data || data;',
-        'return ',
-        this.process(node.nodes),
-        ';',
-        '}, data: data}),',
-        'partials[\'',
-        node.value.template.trim(),
-        '\'].render(data)',
-        ')'
-    ].join('');
-};
-module.exports = Compiler;
-},{"./shared/encode":4,"./shared/map":5,"./shared/register_filter":6,"./shared/register_partial":7,"./support/array/map":9,"./support/array/reduce":10,"./utils/create_object":15,"./utils/type":18}],2:[function(require,module,exports){
-'use strict';
-var escapeDelimiter = require('./utils/escape_delimiter');
-require('./support/array/map');
-require('./support/array/some');
-function Grammar(delimiters) {
-    this.delimiters = delimiters;
-    this.internal = [
-        makeEntry('START_IF', 'if '),
-        makeEntry('ELSE', 'else'),
-        makeEntry('ELSIF', 'elsif '),
-        makeEntry('END_IF', 'endif'),
-        makeEntry('NOT', 'not '),
-        makeEntry('EQUALITY', '=='),
-        makeEntry('NOT_EQUALITY', '!='),
-        makeEntry('GREATER_THAN_EQUAL', '>='),
-        makeEntry('GREATER_THAN', '>'),
-        makeEntry('LESS_THAN_EQUAL', '<='),
-        makeEntry('LESS_THAN', '<'),
-        makeEntry('START_EACH', 'each'),
-        makeEntry('END_EACH', 'endeach'),
-        makeEntry('ASSIGN', ' as '),
-        makeEntry('PARTIAL', 'partial'),
-        makeEntry('START_EXTEND', 'extend'),
-        makeEntry('END_EXTEND', 'endextend'),
-        makeEntry('MAGIC', '.')
-    ];
-}
-function makeEntry(name, value) {
-    var escaped = escapeDelimiter(value);
-    return {
-        name: name,
-        escaped: escaped,
-        test: new RegExp('^' + escaped)
-    };
-}
-Grammar.prototype.escape = function () {
-    var grammar = [
-            'START_RAW',
-            'START_PROP',
-            'START_EXPR',
-            'END_RAW',
-            'END_PROP',
-            'END_EXPR',
-            'COMMENT',
-            'FILTER'
-        ];
-    grammar = grammar.map(function (key) {
-        return makeEntry(key, this.delimiters[key]);
-    }, this);
-    grammar.push.apply(grammar, this.internal);
-    var string = grammar.map(function (value) {
-            return value.escaped;
-        }).join('|');
-    grammar.push({
-        name: 'WHITESPACE',
-        test: /^[\ \t\r\n]+/
-    });
-    string += '| |\t|\r|\n';
-    grammar.push({
-        name: 'OTHER',
-        test: new RegExp('^((?!' + string + ').)*')
-    });
-    return grammar;
-};
-module.exports = Grammar;
-},{"./support/array/map":9,"./support/array/some":11,"./utils/escape_delimiter":17}],3:[function(require,module,exports){
-'use strict';
-var Grammar = require('./grammar');
-var Tokenizer = require('./tokenizer');
-var Tree = require('./tree');
-var Compiler = require('./compiler');
-var registerPartial = require('./shared/register_partial');
-var registerFilter = require('./shared/register_filter');
-var type = require('./utils/type');
-var defaults = require('./utils/defaults');
-var defaultDelimiters = {
-        START_RAW: '{{{',
-        END_RAW: '}}}',
-        START_PROP: '{{',
-        END_PROP: '}}',
-        START_EXPR: '{%',
-        END_EXPR: '%}',
-        COMMENT: '--',
-        FILTER: '|'
-    };
-function Combyne(template, data) {
-    if (!(this instanceof Combyne)) {
-        return new Combyne(template, data);
-    }
-    this.template = template;
-    this.data = data || {};
-    this._partials = {};
-    this._filters = {};
-    if (type(this.template) !== 'string') {
-        throw new Error('Template must be a String.');
-    }
-    var delimiters = defaults(Combyne.settings.delimiters, defaultDelimiters);
-    var grammar = new Grammar(delimiters).escape();
-    var stack = new Tokenizer(this.template, grammar).parse();
-    var tree = new Tree(stack).make();
-    this.tree = tree;
-    this.stack = stack;
-    this.compiler = new Compiler(tree);
-    this.source = this.compiler.source;
-}
-Combyne.prototype.registerPartial = registerPartial;
-Combyne.prototype.registerFilter = registerFilter;
-Combyne.settings = {};
-Combyne.prototype.render = function (data) {
-    this.data = data || this.data;
-    return this.compiler.func(this.data, this._partials, this._filters);
-};
-Combyne.VERSION = '0.6.1';
-module.exports = Combyne;
-},{"./compiler":1,"./grammar":2,"./shared/register_filter":6,"./shared/register_partial":7,"./tokenizer":13,"./tree":14,"./utils/defaults":16,"./utils/type":18}],4:[function(require,module,exports){
-'use strict';
-var type = require('../utils/type');
-function encode(raw) {
-    if (type(raw) !== 'string') {
-        return raw;
-    }
-    return raw.replace(/["&'<>`]/g, function (match) {
-        return '' + match.charCodeAt(0) + ';';
-    });
-}
-module.exports = encode;
-},{"../utils/type":18}],5:[function(require,module,exports){
-'use strict';
-var type = require('../utils/type');
-var createObject = require('../utils/create_object');
-require('../support/array/is_array');
-function map(obj, index, value, data, iterator) {
-    var isArrayLike = type(obj) === 'arguments' || type(obj) === 'nodelist';
-    var isArray = Array.isArray(obj) || isArrayLike;
-    var output = [];
-    var dataObject;
-    if (isArray) {
-        obj = [].slice.call(obj);
-        for (var i = 0; i < obj.length; i++) {
-            dataObject = createObject(data);
-            dataObject[index] = i;
-            if (value) {
-                dataObject[value] = obj[i];
-            } else {
-                dataObject = obj[i];
-            }
-            output.push(iterator(dataObject));
-        }
-        return output;
-    } else {
-        for (var key in obj) {
-            if (!obj.hasOwnProperty(key)) {
-                continue;
-            }
-            dataObject = createObject(data);
-            dataObject[index] = key;
-            if (value) {
-                dataObject[value] = obj[key];
-            } else {
-                dataObject = obj[key];
-            }
-            output.push(iterator(dataObject));
-        }
-        return output;
-    }
-}
-module.exports = map;
-},{"../support/array/is_array":8,"../utils/create_object":15,"../utils/type":18}],6:[function(require,module,exports){
-'use strict';
-function registerFilter(name, callback) {
-    this._filters[name] = callback;
-}
-module.exports = registerFilter;
-},{}],7:[function(require,module,exports){
-'use strict';
-function registerPartial(name, template) {
-    this._partials[name] = template;
-    this._partials[name]._filters = this._filters;
-}
-module.exports = registerPartial;
-},{}],8:[function(require,module,exports){
-'use strict';
-var type = require('../../utils/type');
-if (Array.isArray) {
-    return isArray;
-}
-function isArray(arg) {
-    return type(arg) === '[object Array]';
-}
-module.exports = Array.isArray = isArray;
-},{"../../utils/type":18}],9:[function(require,module,exports){
-'use strict';
-if (Array.prototype.map) {
-    return map;
-}
-function map(iterator, thisArg) {
-    if (this == null) {
-        throw new TypeError();
-    }
-    if (typeof iterator !== 'function') {
-        throw new TypeError();
-    }
-    thisArg = thisArg || this;
-    var array = Array.prototype.slice.call(this);
-    var retVal = [];
-    for (var i = 0; i < array.length; i++) {
-        if (i in array) {
-            retVal[retVal.length] = iterator.call(thisArg, array[i], i, array);
-        }
-    }
-    return retVal;
-}
-module.exports = Array.prototype.map = map;
-},{}],10:[function(require,module,exports){
-'use strict';
-if (Array.prototype.reduce) {
-    return reduce;
-}
-function reduce(iterator, memo) {
-    if (this == null) {
-        throw new TypeError();
-    }
-    if (typeof iterator !== 'function') {
-        throw new TypeError();
-    }
-    var array = Array.prototype.slice.call(this);
-    for (var i = 0; i < array.length; i++) {
-        if (i in array) {
-            memo = iterator(memo, array[i], i, array);
-        }
-    }
-    return memo;
-}
-module.exports = Array.prototype.reduce = reduce;
-},{}],11:[function(require,module,exports){
-'use strict';
-if (Array.prototype.some) {
-    return some;
-}
-function some(iterator, thisArg) {
-    if (this == null) {
-        throw new TypeError();
-    }
-    if (typeof iterator !== 'function') {
-        throw new TypeError();
-    }
-    thisArg = thisArg || this;
-    var array = Array.prototype.slice.call(this);
-    for (var i = 0; i < array.length; i++) {
-        if (i in array) {
-            if (iterator.call(thisArg, array[i], i, array)) {
-                return true;
-            }
-        }
-    }
-    return false;
-}
-module.exports = Array.prototype.some = some;
-},{}],12:[function(require,module,exports){
-'use strict';
-if (String.prototype.trim) {
-    return trim;
-}
-function trim() {
-    return this.replace(/^\s+|\s+$/g, '');
-}
-module.exports = String.prototype.trim = trim;
-},{}],13:[function(require,module,exports){
-'use strict';
-require('./support/array/some');
-function Tokenizer(template, grammar) {
-    this.template = template;
-    this.grammar = grammar;
-    this.stack = [];
-}
-function parseNextToken(template, grammar, stack) {
-    grammar.some(function (token) {
-        var capture = token.test.exec(template);
-        if (capture && capture[0]) {
-            template = template.replace(token.test, '');
-            stack.push({
-                name: token.name,
-                capture: capture
-            });
-            return true;
-        }
-    });
-    return template;
-}
-Tokenizer.prototype.parse = function () {
-    var template = this.template;
-    var grammar = this.grammar;
-    var stack = this.stack;
-    var stackLen = 0;
-    while (template.length) {
-        template = parseNextToken(template, grammar, stack);
-        stackLen = stack.length;
-        if (stackLen - 2 >= 0) {
-            stack[stackLen - 1].previous = stack[stackLen - 2];
-        }
-    }
-    return stack;
-};
-module.exports = Tokenizer;
-},{"./support/array/some":11}],14:[function(require,module,exports){
-'use strict';
-var isString = /['"]+/;
-require('./support/string/trim');
-function Tree(stack) {
-    this.stack = stack.slice();
-    this.root = {
-        type: 'Template',
-        nodes: []
-    };
-}
-Tree.prototype.make = function (root, END) {
-    root = root || this.root;
-    var node, result, prev;
-    var index = 0;
-    while (this.stack.length) {
-        node = this.stack.shift();
-        switch (node.name) {
-        case 'START_RAW':
-            root.nodes.push(this.constructProperty(false));
-            break;
-        case 'START_PROP':
-            root.nodes.push(this.constructProperty(true));
-            break;
-        case 'START_EXPR':
-            if (result = this.constructExpression(root, END)) {
-                root.nodes.push(result);
-                break;
-            } else if (result !== false) {
-                return null;
-            }
-            break;
-        case 'END_EXPR':
-            break;
-        case 'WHITESPACE':
-            var capture = node.capture[0];
-            if (node.previous.name == 'END_EXPR') {
-                capture = capture.replace('\n', '');
-            }
-            root.nodes.push({
-                type: 'Text',
-                value: capture
-            });
-            break;
-        default:
-            var prevWhitespace = '';
-            if (prev && prev.type === 'Text') {
-                root.nodes.pop();
-                prevWhitespace = prev.value;
-            }
-            root.nodes.push({
-                type: 'Text',
-                value: prevWhitespace + node.capture[0]
-            });
-            break;
-        }
-        prev = node;
-        ++index;
-    }
-    return root;
-};
-Tree.prototype.constructProperty = function (encoded) {
-    var propertyDescriptor = {
-            type: encoded ? 'Property' : 'RawProperty',
-            value: '',
-            args: [],
-            filters: []
-        };
-    var previous;
-    var input = '', processParsedProperty = function () {
-            var parts = input.trim().split(' ');
-            propertyDescriptor.value = parts[0];
-            propertyDescriptor.args = parts.slice(1);
-        };
-    while (this.stack.length) {
-        var node = this.stack.shift();
-        if (!previous && node.name == 'ASSIGN') {
-            node.name = 'OTHER';
-        }
-        switch (node.name) {
-        case 'FILTER':
-            propertyDescriptor.value = input.trim();
-            return this.constructFilter(propertyDescriptor);
-        case 'END_EXPR':
-        case 'EQUALITY':
-        case 'NOT_EQUALITY':
-        case 'GREATER_THAN':
-        case 'GREATER_THAN_EQUAL':
-        case 'LESS_THAN':
-        case 'LESS_THAN_EQUAL':
-        case 'ASSIGN':
-            processParsedProperty();
-            this.stack.unshift(node);
-            return propertyDescriptor;
-        case 'END_RAW':
-        case 'END_PROP':
-        case 'END_EXPR':
-            processParsedProperty();
-            return propertyDescriptor;
-        default:
-            input += node.capture[0];
-            break;
-        }
-        previous = node;
-    }
-    throw new Error('Unterminated property.');
-};
-Tree.prototype.constructExtend = function (root) {
-    root.type = 'ExtendExpression';
-    var value = {
-            template: '',
-            partial: ''
-        };
-    var side = 'template';
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            switch (node.name) {
-            case 'END_EXPR':
-                break LOOP;
-            case 'ASSIGN':
-                side = 'partial';
-                break;
-            default:
-                value[side] += node.capture[0];
-                break;
-            }
-        }
-    value.template = value.template.trim();
-    value.partial = value.partial.trim();
-    root.value = value;
-    if (!root.value.template) {
-        throw new Error('Missing valid template name.');
-    }
-    if (!root.value.partial) {
-        throw new Error('Missing valid partial name.');
-    }
-    this.make(root, 'END_EXTEND');
-    return root;
-};
-Tree.prototype.constructPartial = function (root) {
-    root.type = 'PartialExpression';
-    root.data = 'null';
-    delete root.nodes;
-    var input = '';
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            switch (node.name) {
-            case 'END_EXPR':
-                break LOOP;
-            case 'MAGIC':
-                root.data = 'data';
-                break;
-            default:
-                input += node.capture[0];
-            }
-        }
-    var parts = input.trim().split(' ');
-    root.value = parts[0];
-    if (!root.value) {
-        throw new Error('Missing valid partials name.');
-    }
-    root.args = parts.slice(1);
-    return root;
-};
-Tree.prototype.constructFilter = function (root) {
-    var current = {
-            type: 'Filter',
-            args: []
-        };
-    var previous;
-    var input = '';
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            if (!previous && node.name == 'ASSIGN') {
-                node.name = 'OTHER';
-            }
-            switch (node.name) {
-            case 'END_EXPR':
-            case 'EQUALITY':
-            case 'NOT_EQUALITY':
-            case 'GREATER_THAN':
-            case 'GREATER_THAN_EQUAL':
-            case 'LESS_THAN':
-            case 'LESS_THAN_EQUAL':
-            case 'ASSIGN':
-                root.filters.push(current);
-                this.stack.unshift(node);
-                break LOOP;
-            case 'END_RAW':
-            case 'END_PROP':
-                root.filters.push(current);
-                break LOOP;
-            case 'FILTER':
-                root.filters.push(current);
-                this.constructFilter(root);
-                break LOOP;
-            default:
-                input += node.capture[0];
-            }
-            previous = node;
-        }
-    var parts = input.trim().split(' ');
-    current.value = parts[0];
-    if (!current.value) {
-        throw new Error('Missing valid filter name.');
-    }
-    current.args = parts.slice(1);
-    return root;
-};
-Tree.prototype.constructEach = function (root) {
-    root.type = 'LoopExpression';
-    root.conditions = [];
-    var isLeftSide = true;
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            switch (node.name) {
-            case 'ASSIGN':
-                isLeftSide = false;
-                root.conditions.push({
-                    type: 'Assignment',
-                    value: node.capture[0].trim()
-                });
-                break;
-            case 'END_EXPR':
-                break LOOP;
-            case 'WHITESPACE':
-                break;
-            default:
-                if (!isLeftSide) {
-                    root.conditions.push({
-                        type: 'Identifier',
-                        value: node.capture[0].trim()
-                    });
-                } else {
-                    if (node.name != 'START_RAW' && node.name != 'START_PROP') {
-                        this.stack.unshift(node);
-                    }
-                    root.conditions.push({
-                        type: 'Identifier',
-                        value: this.constructProperty(node.name != 'START_RAW')
-                    });
-                }
-                break;
-            }
-        }
-    this.make(root, 'END_EACH');
-    return root;
-};
-Tree.prototype.constructComment = function (root) {
-    var previous = {};
-    while (this.stack.length) {
-        var node = this.stack.shift();
-        switch (node.name) {
-        case 'COMMENT':
-            if (previous.name === 'START_EXPR') {
-                this.constructComment(root);
-            }
-            break;
-        case 'END_EXPR':
-            if (previous.name === 'COMMENT') {
-                return false;
-            }
-            break;
-        }
-        previous = node;
-    }
-    return false;
-};
-Tree.prototype.constructConditional = function (root, kind) {
-    root.type = root.type || 'ConditionalExpression';
-    root.conditions = root.conditions || [];
-    var prev = {};
-    if (kind === 'ELSE') {
-        root.els = { nodes: [] };
-        return this.make(root.els, 'END_IF');
-    }
-    if (kind === 'ELSIF') {
-        root.elsif = { nodes: [] };
-        this.constructConditional(root.elsif, 'SKIP');
-        return this.make(root.elsif, 'END_IF');
-    }
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            var value = node.capture[0].trim();
-            switch (node.name) {
-            case 'NOT':
-                root.conditions.push({ type: 'Not' });
-                break;
-            case 'EQUALITY':
-            case 'NOT_EQUALITY':
-            case 'GREATER_THAN':
-            case 'GREATER_THAN_EQUAL':
-            case 'LESS_THAN':
-            case 'LESS_THAN_EQUAL':
-                root.conditions.push({
-                    type: 'Equality',
-                    value: node.capture[0].trim()
-                });
-                break;
-            case 'END_EXPR':
-                break LOOP;
-            default:
-                if (node.name == 'WHITESPACE') {
-                    value = node.capture[0];
-                }
-                if (value === 'false' || value === 'true') {
-                    root.conditions.push({
-                        type: 'Literal',
-                        value: value
-                    });
-                } else if (Number(value) === Number(value)) {
-                    root.conditions.push({
-                        type: 'Literal',
-                        value: value
-                    });
-                } else if (isString.test(value)) {
-                    root.conditions.push({
-                        type: 'Literal',
-                        value: value
-                    });
-                } else if (prev.type === 'Literal') {
-                    prev.value += value;
-                } else {
-                    if (node.name != 'START_RAW' && node.name != 'START_PROP') {
-                        this.stack.unshift(node);
-                    }
-                    root.conditions.push({
-                        type: 'Identifier',
-                        value: this.constructProperty(node.name != 'START_RAW')
-                    });
-                }
-                break;
-            }
-            prev = root.conditions[root.conditions.length - 1] || {};
-        }
-    if (kind !== 'SKIP') {
-        this.make(root, 'END_IF');
-    }
-    return root;
-};
-Tree.prototype.constructExpression = function (root, END) {
-    var expressionRoot = { nodes: [] };
-    while (this.stack.length) {
-        var type = this.stack.shift();
-        switch (type.name) {
-        case END:
-            return;
-        case 'WHITESPACE':
-            break;
-        case 'COMMENT':
-            return this.constructComment(expressionRoot);
-        case 'START_EACH':
-            return this.constructEach(expressionRoot);
-        case 'ELSIF':
-        case 'ELSE':
-        case 'START_IF':
-            if (type.name !== 'START_IF') {
-                expressionRoot = root;
-            }
-            return this.constructConditional(expressionRoot, type.name);
-        case 'PARTIAL':
-            return this.constructPartial(expressionRoot);
-        case 'START_EXTEND':
-            return this.constructExtend(expressionRoot);
-        default:
-            throw new Error('Invalid expression type: ' + type.name);
-        }
-    }
-};
-module.exports = Tree;
-},{"./support/string/trim":12}],15:[function(require,module,exports){
-'use strict';
-function createObject(parent) {
-    function F() {
-    }
-    F.prototype = parent;
-    return new F();
-}
-module.exports = createObject;
-},{}],16:[function(require,module,exports){
-'use strict';
-function defaults(target, source) {
-    target = target || {};
-    source = source;
-    for (var key in source) {
-        if (!source.hasOwnProperty(key)) {
-            continue;
-        }
-        if (!(key in target)) {
-            target[key] = source[key];
-        }
-    }
-    return target;
-}
-module.exports = defaults;
-},{}],17:[function(require,module,exports){
-'use strict';
-var specialCharsExp = /[\^$\\\/.*+?()\[\]{}|]/g;
-function escapeDelimiter(delimiter) {
-    return delimiter.replace(specialCharsExp, '\\$&');
-}
-module.exports = escapeDelimiter;
-},{}],18:[function(require,module,exports){
-'use strict';
-function type(value) {
-    return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
-}
-module.exports = type;
-},{}]},{},[3])(3)
-});
\ No newline at end of file
diff --git a/bower_components/combyne/dist/combyne.legacy.js b/bower_components/combyne/dist/combyne.legacy.js
deleted file mode 100644
index 81316e8..0000000
--- a/bower_components/combyne/dist/combyne.legacy.js
+++ /dev/null
@@ -1,937 +0,0 @@
-!function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{var f;"undefined"!=typeof window?f=window:"undefined"!=typeof global?f=global:"undefined"!=typeof self&&(f=self),f.combyne=e()}}(function(){var define,module,exports;return (function e(t,n,r){function s(o,u){if(!n[o]){if(!t[o]){var a=typeof require=="function"&&require;if(!u&&a)return a(o,!0);if(i)return i(o,!0);var f=new Error("Cannot find module '"+o+"'");throw f.code="MODULE_NOT_FOUND",f}var l=n[o]={exports:{}};t[o][0].call(l.exports,function(e){var n=t[o][1][e];return s(n?n:e)},l,l.exports,e,t,n,r)}return n[o].exports}var i=typeof require=="function"&&require;for(var o=0;o -1) {
-        body.push(createObject, type, map);
-    }
-    if (compiledSource.indexOf('encode(') > -1) {
-        body.push(type, encode);
-    }
-    body = body.concat(['return \'\'' + compiledSource]).join(';\n');
-    this.func = new Function('data', 'partials', 'filters', body);
-    this.source = [
-        '{',
-        '_partials: {},',
-        '_filters: {},',
-        'registerPartial: ' + registerPartial + ',',
-        'registerFilter: ' + registerFilter + ',',
-        'render: function(data) {',
-        'return ' + this.func + '(data, this._partials, this._filters)',
-        '}',
-        '}'
-    ].join('\n');
-}
-Compiler.prototype.process = function (nodes, keyVal) {
-    var commands = [];
-    nodes.map(function (node, index) {
-        switch (node.type) {
-        case 'RawProperty':
-            commands.push(this.compileProperty(node, false));
-            break;
-        case 'Property':
-            commands.push(this.compileProperty(node, true));
-            break;
-        case 'ConditionalExpression':
-            commands.push(this.compileConditional(node));
-            break;
-        case 'LoopExpression':
-            commands.push(this.compileLoop(node));
-            break;
-        case 'PartialExpression':
-            commands.push(this.compilePartial(node));
-            break;
-        case 'ExtendExpression':
-            commands.push(this.compileExtend(node));
-            break;
-        default:
-            if (node.value) {
-                commands.push('\'' + escapeValue(node.value) + '\'');
-            }
-            break;
-        }
-    }, this);
-    return commands.join('+');
-};
-Compiler.prototype.compileProperty = function (node, encode) {
-    var identifier = node.value;
-    if (identifier.indexOf('\'') === -1 && identifier.indexOf('"') === -1) {
-        identifier = normalizeIdentifier(node.value);
-    }
-    var value = [
-            '(',
-            'typeof',
-            identifier,
-            '===',
-            '\'function\'',
-            '?',
-            encode ? 'encode(' + identifier + '(' + node.args + '))' : identifier + '(' + node.args + ')',
-            ':',
-            encode ? 'encode(' + identifier + ') == null ? \'\' : encode(' + identifier + ')' : identifier + ' == null ? \'\' : ' + identifier,
-            ')'
-        ].join(' ');
-    value = node.filters.reduce(function (memo, filter) {
-        var args = filter.args.length ? ', ' + filter.args.map(function (value) {
-                if (value.indexOf('\'') === -1 && value.indexOf('"') === -1) {
-                    if (!Number(value)) {
-                        return normalizeIdentifier(value);
-                    }
-                }
-                return value;
-            }).join(', ') : '';
-        return 'filters[\'' + filter.value + '\']' + '(' + memo + args + ')';
-    }, value);
-    return value;
-};
-Compiler.prototype.compileConditional = function (node) {
-    if (node.conditions.length === 0) {
-        throw new Error('Missing conditions to if statement.');
-    }
-    var _this = this;
-    var condition = node.conditions.map(function (condition) {
-            switch (condition.type) {
-            case 'Identifier':
-                return _this.compileProperty(condition.value, condition.value.type == 'Property');
-            case 'Not':
-                return '!';
-            case 'Literal':
-                return condition.value;
-            case 'Equality':
-                return condition.value;
-            }
-        }).join('');
-    var els = node.els ? this.process(node.els.nodes) : null;
-    var elsif = node.elsif ? this.compileConditional(node.elsif) : null;
-    return [
-        '(',
-        '(',
-        condition,
-        ')',
-        '?',
-        this.process(node.nodes),
-        ':',
-        els || elsif || '\'\'',
-        ')'
-    ].join('');
-};
-Compiler.prototype.compileLoop = function (node) {
-    var conditions = node.conditions;
-    var keyVal = [
-            conditions[3] ? conditions[3].value : 'i',
-            conditions[2] ? conditions[2].value : '.'
-        ];
-    var value = conditions.length && conditions[0].value;
-    var loop = [
-            'map(',
-            value ? this.compileProperty(value, value.type == 'Property') : 'data',
-            ',',
-            '\'',
-            keyVal[0],
-            '\'',
-            ',',
-            '\'',
-            value ? keyVal[1] : '',
-            '\'',
-            ',',
-            'data',
-            ',',
-            'function(data) {',
-            'return ' + this.process(node.nodes, keyVal),
-            '}',
-            ').join(\'\')'
-        ].join('');
-    return loop;
-};
-Compiler.prototype.compilePartial = function (node) {
-    return [
-        '(',
-        '(partials[\'' + node.value + '\']._partials = partials),',
-        '(partials[\'' + node.value + '\']._filters = filters),',
-        'partials[\'' + node.value + '\'].render(',
-        node.args.length ? this.compileProperty({
-            value: node.args[0],
-            args: node.args.slice(1),
-            filters: []
-        }) : node.data,
-        ')',
-        ')'
-    ].join('');
-};
-Compiler.prototype.compileExtend = function (node) {
-    return [
-        '(',
-        'partials[\'',
-        node.value.template.trim(),
-        '\'].registerPartial',
-        '(\'',
-        node.value.partial.trim(),
-        '\', { render: function(_data) {',
-        'data = _data || data;',
-        'return ',
-        this.process(node.nodes),
-        ';',
-        '}, data: data}),',
-        'partials[\'',
-        node.value.template.trim(),
-        '\'].render(data)',
-        ')'
-    ].join('');
-};
-module.exports = Compiler;
-},{"./shared/encode":4,"./shared/map":5,"./shared/register_filter":6,"./shared/register_partial":7,"./support/array/map":9,"./support/array/reduce":10,"./utils/create_object":15,"./utils/type":18}],2:[function(require,module,exports){
-'use strict';
-var escapeDelimiter = require('./utils/escape_delimiter');
-require('./support/array/map');
-require('./support/array/some');
-function Grammar(delimiters) {
-    this.delimiters = delimiters;
-    this.internal = [
-        makeEntry('START_IF', 'if '),
-        makeEntry('ELSE', 'else'),
-        makeEntry('ELSIF', 'elsif '),
-        makeEntry('END_IF', 'endif'),
-        makeEntry('NOT', 'not '),
-        makeEntry('EQUALITY', '=='),
-        makeEntry('NOT_EQUALITY', '!='),
-        makeEntry('GREATER_THAN_EQUAL', '>='),
-        makeEntry('GREATER_THAN', '>'),
-        makeEntry('LESS_THAN_EQUAL', '<='),
-        makeEntry('LESS_THAN', '<'),
-        makeEntry('START_EACH', 'each'),
-        makeEntry('END_EACH', 'endeach'),
-        makeEntry('ASSIGN', ' as '),
-        makeEntry('PARTIAL', 'partial'),
-        makeEntry('START_EXTEND', 'extend'),
-        makeEntry('END_EXTEND', 'endextend'),
-        makeEntry('MAGIC', '.')
-    ];
-}
-function makeEntry(name, value) {
-    var escaped = escapeDelimiter(value);
-    return {
-        name: name,
-        escaped: escaped,
-        test: new RegExp('^' + escaped)
-    };
-}
-Grammar.prototype.escape = function () {
-    var grammar = [
-            'START_RAW',
-            'START_PROP',
-            'START_EXPR',
-            'END_RAW',
-            'END_PROP',
-            'END_EXPR',
-            'COMMENT',
-            'FILTER'
-        ];
-    grammar = grammar.map(function (key) {
-        return makeEntry(key, this.delimiters[key]);
-    }, this);
-    grammar.push.apply(grammar, this.internal);
-    var string = grammar.map(function (value) {
-            return value.escaped;
-        }).join('|');
-    grammar.push({
-        name: 'WHITESPACE',
-        test: /^[\ \t\r\n]+/
-    });
-    string += '| |\t|\r|\n';
-    grammar.push({
-        name: 'OTHER',
-        test: new RegExp('^((?!' + string + ').)*')
-    });
-    return grammar;
-};
-module.exports = Grammar;
-},{"./support/array/map":9,"./support/array/some":11,"./utils/escape_delimiter":17}],3:[function(require,module,exports){
-'use strict';
-var Grammar = require('./grammar');
-var Tokenizer = require('./tokenizer');
-var Tree = require('./tree');
-var Compiler = require('./compiler');
-var registerPartial = require('./shared/register_partial');
-var registerFilter = require('./shared/register_filter');
-var type = require('./utils/type');
-var defaults = require('./utils/defaults');
-var defaultDelimiters = {
-        START_RAW: '{{{',
-        END_RAW: '}}}',
-        START_PROP: '{{',
-        END_PROP: '}}',
-        START_EXPR: '{%',
-        END_EXPR: '%}',
-        COMMENT: '--',
-        FILTER: '|'
-    };
-function Combyne(template, data) {
-    if (!(this instanceof Combyne)) {
-        return new Combyne(template, data);
-    }
-    this.template = template;
-    this.data = data || {};
-    this._partials = {};
-    this._filters = {};
-    if (type(this.template) !== 'string') {
-        throw new Error('Template must be a String.');
-    }
-    var delimiters = defaults(Combyne.settings.delimiters, defaultDelimiters);
-    var grammar = new Grammar(delimiters).escape();
-    var stack = new Tokenizer(this.template, grammar).parse();
-    var tree = new Tree(stack).make();
-    this.tree = tree;
-    this.stack = stack;
-    this.compiler = new Compiler(tree);
-    this.source = this.compiler.source;
-}
-Combyne.prototype.registerPartial = registerPartial;
-Combyne.prototype.registerFilter = registerFilter;
-Combyne.settings = {};
-Combyne.prototype.render = function (data) {
-    this.data = data || this.data;
-    return this.compiler.func(this.data, this._partials, this._filters);
-};
-Combyne.VERSION = '0.6.1';
-module.exports = Combyne;
-},{"./compiler":1,"./grammar":2,"./shared/register_filter":6,"./shared/register_partial":7,"./tokenizer":13,"./tree":14,"./utils/defaults":16,"./utils/type":18}],4:[function(require,module,exports){
-'use strict';
-var type = require('../utils/type');
-function encode(raw) {
-    if (type(raw) !== 'string') {
-        return raw;
-    }
-    return raw.replace(/["&'<>`]/g, function (match) {
-        return '' + match.charCodeAt(0) + ';';
-    });
-}
-module.exports = encode;
-},{"../utils/type":18}],5:[function(require,module,exports){
-'use strict';
-var type = require('../utils/type');
-var createObject = require('../utils/create_object');
-require('../support/array/is_array');
-function map(obj, index, value, data, iterator) {
-    var isArrayLike = type(obj) === 'arguments' || type(obj) === 'nodelist';
-    var isArray = Array.isArray(obj) || isArrayLike;
-    var output = [];
-    var dataObject;
-    if (isArray) {
-        obj = [].slice.call(obj);
-        for (var i = 0; i < obj.length; i++) {
-            dataObject = createObject(data);
-            dataObject[index] = i;
-            if (value) {
-                dataObject[value] = obj[i];
-            } else {
-                dataObject = obj[i];
-            }
-            output.push(iterator(dataObject));
-        }
-        return output;
-    } else {
-        for (var key in obj) {
-            if (!obj.hasOwnProperty(key)) {
-                continue;
-            }
-            dataObject = createObject(data);
-            dataObject[index] = key;
-            if (value) {
-                dataObject[value] = obj[key];
-            } else {
-                dataObject = obj[key];
-            }
-            output.push(iterator(dataObject));
-        }
-        return output;
-    }
-}
-module.exports = map;
-},{"../support/array/is_array":8,"../utils/create_object":15,"../utils/type":18}],6:[function(require,module,exports){
-'use strict';
-function registerFilter(name, callback) {
-    this._filters[name] = callback;
-}
-module.exports = registerFilter;
-},{}],7:[function(require,module,exports){
-'use strict';
-function registerPartial(name, template) {
-    this._partials[name] = template;
-    this._partials[name]._filters = this._filters;
-}
-module.exports = registerPartial;
-},{}],8:[function(require,module,exports){
-'use strict';
-var type = require('../../utils/type');
-if (Array.isArray) {
-    return isArray;
-}
-function isArray(arg) {
-    return type(arg) === '[object Array]';
-}
-module.exports = Array.isArray = isArray;
-},{"../../utils/type":18}],9:[function(require,module,exports){
-'use strict';
-if (Array.prototype.map) {
-    return map;
-}
-function map(iterator, thisArg) {
-    if (this == null) {
-        throw new TypeError();
-    }
-    if (typeof iterator !== 'function') {
-        throw new TypeError();
-    }
-    thisArg = thisArg || this;
-    var array = Array.prototype.slice.call(this);
-    var retVal = [];
-    for (var i = 0; i < array.length; i++) {
-        if (i in array) {
-            retVal[retVal.length] = iterator.call(thisArg, array[i], i, array);
-        }
-    }
-    return retVal;
-}
-module.exports = Array.prototype.map = map;
-},{}],10:[function(require,module,exports){
-'use strict';
-if (Array.prototype.reduce) {
-    return reduce;
-}
-function reduce(iterator, memo) {
-    if (this == null) {
-        throw new TypeError();
-    }
-    if (typeof iterator !== 'function') {
-        throw new TypeError();
-    }
-    var array = Array.prototype.slice.call(this);
-    for (var i = 0; i < array.length; i++) {
-        if (i in array) {
-            memo = iterator(memo, array[i], i, array);
-        }
-    }
-    return memo;
-}
-module.exports = Array.prototype.reduce = reduce;
-},{}],11:[function(require,module,exports){
-'use strict';
-if (Array.prototype.some) {
-    return some;
-}
-function some(iterator, thisArg) {
-    if (this == null) {
-        throw new TypeError();
-    }
-    if (typeof iterator !== 'function') {
-        throw new TypeError();
-    }
-    thisArg = thisArg || this;
-    var array = Array.prototype.slice.call(this);
-    for (var i = 0; i < array.length; i++) {
-        if (i in array) {
-            if (iterator.call(thisArg, array[i], i, array)) {
-                return true;
-            }
-        }
-    }
-    return false;
-}
-module.exports = Array.prototype.some = some;
-},{}],12:[function(require,module,exports){
-'use strict';
-if (String.prototype.trim) {
-    return trim;
-}
-function trim() {
-    return this.replace(/^\s+|\s+$/g, '');
-}
-module.exports = String.prototype.trim = trim;
-},{}],13:[function(require,module,exports){
-'use strict';
-require('./support/array/some');
-function Tokenizer(template, grammar) {
-    this.template = template;
-    this.grammar = grammar;
-    this.stack = [];
-}
-function parseNextToken(template, grammar, stack) {
-    grammar.some(function (token) {
-        var capture = token.test.exec(template);
-        if (capture && capture[0]) {
-            template = template.replace(token.test, '');
-            stack.push({
-                name: token.name,
-                capture: capture
-            });
-            return true;
-        }
-    });
-    return template;
-}
-Tokenizer.prototype.parse = function () {
-    var template = this.template;
-    var grammar = this.grammar;
-    var stack = this.stack;
-    var stackLen = 0;
-    while (template.length) {
-        template = parseNextToken(template, grammar, stack);
-        stackLen = stack.length;
-        if (stackLen - 2 >= 0) {
-            stack[stackLen - 1].previous = stack[stackLen - 2];
-        }
-    }
-    return stack;
-};
-module.exports = Tokenizer;
-},{"./support/array/some":11}],14:[function(require,module,exports){
-'use strict';
-var isString = /['"]+/;
-require('./support/string/trim');
-function Tree(stack) {
-    this.stack = stack.slice();
-    this.root = {
-        type: 'Template',
-        nodes: []
-    };
-}
-Tree.prototype.make = function (root, END) {
-    root = root || this.root;
-    var node, result, prev;
-    var index = 0;
-    while (this.stack.length) {
-        node = this.stack.shift();
-        switch (node.name) {
-        case 'START_RAW':
-            root.nodes.push(this.constructProperty(false));
-            break;
-        case 'START_PROP':
-            root.nodes.push(this.constructProperty(true));
-            break;
-        case 'START_EXPR':
-            if (result = this.constructExpression(root, END)) {
-                root.nodes.push(result);
-                break;
-            } else if (result !== false) {
-                return null;
-            }
-            break;
-        case 'END_EXPR':
-            break;
-        case 'WHITESPACE':
-            var capture = node.capture[0];
-            if (node.previous.name == 'END_EXPR') {
-                capture = capture.replace('\n', '');
-            }
-            root.nodes.push({
-                type: 'Text',
-                value: capture
-            });
-            break;
-        default:
-            var prevWhitespace = '';
-            if (prev && prev.type === 'Text') {
-                root.nodes.pop();
-                prevWhitespace = prev.value;
-            }
-            root.nodes.push({
-                type: 'Text',
-                value: prevWhitespace + node.capture[0]
-            });
-            break;
-        }
-        prev = node;
-        ++index;
-    }
-    return root;
-};
-Tree.prototype.constructProperty = function (encoded) {
-    var propertyDescriptor = {
-            type: encoded ? 'Property' : 'RawProperty',
-            value: '',
-            args: [],
-            filters: []
-        };
-    var previous;
-    var input = '', processParsedProperty = function () {
-            var parts = input.trim().split(' ');
-            propertyDescriptor.value = parts[0];
-            propertyDescriptor.args = parts.slice(1);
-        };
-    while (this.stack.length) {
-        var node = this.stack.shift();
-        if (!previous && node.name == 'ASSIGN') {
-            node.name = 'OTHER';
-        }
-        switch (node.name) {
-        case 'FILTER':
-            propertyDescriptor.value = input.trim();
-            return this.constructFilter(propertyDescriptor);
-        case 'END_EXPR':
-        case 'EQUALITY':
-        case 'NOT_EQUALITY':
-        case 'GREATER_THAN':
-        case 'GREATER_THAN_EQUAL':
-        case 'LESS_THAN':
-        case 'LESS_THAN_EQUAL':
-        case 'ASSIGN':
-            processParsedProperty();
-            this.stack.unshift(node);
-            return propertyDescriptor;
-        case 'END_RAW':
-        case 'END_PROP':
-        case 'END_EXPR':
-            processParsedProperty();
-            return propertyDescriptor;
-        default:
-            input += node.capture[0];
-            break;
-        }
-        previous = node;
-    }
-    throw new Error('Unterminated property.');
-};
-Tree.prototype.constructExtend = function (root) {
-    root.type = 'ExtendExpression';
-    var value = {
-            template: '',
-            partial: ''
-        };
-    var side = 'template';
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            switch (node.name) {
-            case 'END_EXPR':
-                break LOOP;
-            case 'ASSIGN':
-                side = 'partial';
-                break;
-            default:
-                value[side] += node.capture[0];
-                break;
-            }
-        }
-    value.template = value.template.trim();
-    value.partial = value.partial.trim();
-    root.value = value;
-    if (!root.value.template) {
-        throw new Error('Missing valid template name.');
-    }
-    if (!root.value.partial) {
-        throw new Error('Missing valid partial name.');
-    }
-    this.make(root, 'END_EXTEND');
-    return root;
-};
-Tree.prototype.constructPartial = function (root) {
-    root.type = 'PartialExpression';
-    root.data = 'null';
-    delete root.nodes;
-    var input = '';
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            switch (node.name) {
-            case 'END_EXPR':
-                break LOOP;
-            case 'MAGIC':
-                root.data = 'data';
-                break;
-            default:
-                input += node.capture[0];
-            }
-        }
-    var parts = input.trim().split(' ');
-    root.value = parts[0];
-    if (!root.value) {
-        throw new Error('Missing valid partials name.');
-    }
-    root.args = parts.slice(1);
-    return root;
-};
-Tree.prototype.constructFilter = function (root) {
-    var current = {
-            type: 'Filter',
-            args: []
-        };
-    var previous;
-    var input = '';
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            if (!previous && node.name == 'ASSIGN') {
-                node.name = 'OTHER';
-            }
-            switch (node.name) {
-            case 'END_EXPR':
-            case 'EQUALITY':
-            case 'NOT_EQUALITY':
-            case 'GREATER_THAN':
-            case 'GREATER_THAN_EQUAL':
-            case 'LESS_THAN':
-            case 'LESS_THAN_EQUAL':
-            case 'ASSIGN':
-                root.filters.push(current);
-                this.stack.unshift(node);
-                break LOOP;
-            case 'END_RAW':
-            case 'END_PROP':
-                root.filters.push(current);
-                break LOOP;
-            case 'FILTER':
-                root.filters.push(current);
-                this.constructFilter(root);
-                break LOOP;
-            default:
-                input += node.capture[0];
-            }
-            previous = node;
-        }
-    var parts = input.trim().split(' ');
-    current.value = parts[0];
-    if (!current.value) {
-        throw new Error('Missing valid filter name.');
-    }
-    current.args = parts.slice(1);
-    return root;
-};
-Tree.prototype.constructEach = function (root) {
-    root.type = 'LoopExpression';
-    root.conditions = [];
-    var isLeftSide = true;
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            switch (node.name) {
-            case 'ASSIGN':
-                isLeftSide = false;
-                root.conditions.push({
-                    type: 'Assignment',
-                    value: node.capture[0].trim()
-                });
-                break;
-            case 'END_EXPR':
-                break LOOP;
-            case 'WHITESPACE':
-                break;
-            default:
-                if (!isLeftSide) {
-                    root.conditions.push({
-                        type: 'Identifier',
-                        value: node.capture[0].trim()
-                    });
-                } else {
-                    if (node.name != 'START_RAW' && node.name != 'START_PROP') {
-                        this.stack.unshift(node);
-                    }
-                    root.conditions.push({
-                        type: 'Identifier',
-                        value: this.constructProperty(node.name != 'START_RAW')
-                    });
-                }
-                break;
-            }
-        }
-    this.make(root, 'END_EACH');
-    return root;
-};
-Tree.prototype.constructComment = function (root) {
-    var previous = {};
-    while (this.stack.length) {
-        var node = this.stack.shift();
-        switch (node.name) {
-        case 'COMMENT':
-            if (previous.name === 'START_EXPR') {
-                this.constructComment(root);
-            }
-            break;
-        case 'END_EXPR':
-            if (previous.name === 'COMMENT') {
-                return false;
-            }
-            break;
-        }
-        previous = node;
-    }
-    return false;
-};
-Tree.prototype.constructConditional = function (root, kind) {
-    root.type = root.type || 'ConditionalExpression';
-    root.conditions = root.conditions || [];
-    var prev = {};
-    if (kind === 'ELSE') {
-        root.els = { nodes: [] };
-        return this.make(root.els, 'END_IF');
-    }
-    if (kind === 'ELSIF') {
-        root.elsif = { nodes: [] };
-        this.constructConditional(root.elsif, 'SKIP');
-        return this.make(root.elsif, 'END_IF');
-    }
-    LOOP:
-        while (this.stack.length) {
-            var node = this.stack.shift();
-            var value = node.capture[0].trim();
-            switch (node.name) {
-            case 'NOT':
-                root.conditions.push({ type: 'Not' });
-                break;
-            case 'EQUALITY':
-            case 'NOT_EQUALITY':
-            case 'GREATER_THAN':
-            case 'GREATER_THAN_EQUAL':
-            case 'LESS_THAN':
-            case 'LESS_THAN_EQUAL':
-                root.conditions.push({
-                    type: 'Equality',
-                    value: node.capture[0].trim()
-                });
-                break;
-            case 'END_EXPR':
-                break LOOP;
-            default:
-                if (node.name == 'WHITESPACE') {
-                    value = node.capture[0];
-                }
-                if (value === 'false' || value === 'true') {
-                    root.conditions.push({
-                        type: 'Literal',
-                        value: value
-                    });
-                } else if (Number(value) === Number(value)) {
-                    root.conditions.push({
-                        type: 'Literal',
-                        value: value
-                    });
-                } else if (isString.test(value)) {
-                    root.conditions.push({
-                        type: 'Literal',
-                        value: value
-                    });
-                } else if (prev.type === 'Literal') {
-                    prev.value += value;
-                } else {
-                    if (node.name != 'START_RAW' && node.name != 'START_PROP') {
-                        this.stack.unshift(node);
-                    }
-                    root.conditions.push({
-                        type: 'Identifier',
-                        value: this.constructProperty(node.name != 'START_RAW')
-                    });
-                }
-                break;
-            }
-            prev = root.conditions[root.conditions.length - 1] || {};
-        }
-    if (kind !== 'SKIP') {
-        this.make(root, 'END_IF');
-    }
-    return root;
-};
-Tree.prototype.constructExpression = function (root, END) {
-    var expressionRoot = { nodes: [] };
-    while (this.stack.length) {
-        var type = this.stack.shift();
-        switch (type.name) {
-        case END:
-            return;
-        case 'WHITESPACE':
-            break;
-        case 'COMMENT':
-            return this.constructComment(expressionRoot);
-        case 'START_EACH':
-            return this.constructEach(expressionRoot);
-        case 'ELSIF':
-        case 'ELSE':
-        case 'START_IF':
-            if (type.name !== 'START_IF') {
-                expressionRoot = root;
-            }
-            return this.constructConditional(expressionRoot, type.name);
-        case 'PARTIAL':
-            return this.constructPartial(expressionRoot);
-        case 'START_EXTEND':
-            return this.constructExtend(expressionRoot);
-        default:
-            throw new Error('Invalid expression type: ' + type.name);
-        }
-    }
-};
-module.exports = Tree;
-},{"./support/string/trim":12}],15:[function(require,module,exports){
-'use strict';
-function createObject(parent) {
-    function F() {
-    }
-    F.prototype = parent;
-    return new F();
-}
-module.exports = createObject;
-},{}],16:[function(require,module,exports){
-'use strict';
-function defaults(target, source) {
-    target = target || {};
-    source = source;
-    for (var key in source) {
-        if (!source.hasOwnProperty(key)) {
-            continue;
-        }
-        if (!(key in target)) {
-            target[key] = source[key];
-        }
-    }
-    return target;
-}
-module.exports = defaults;
-},{}],17:[function(require,module,exports){
-'use strict';
-var specialCharsExp = /[\^$\\\/.*+?()\[\]{}|]/g;
-function escapeDelimiter(delimiter) {
-    return delimiter.replace(specialCharsExp, '\\$&');
-}
-module.exports = escapeDelimiter;
-},{}],18:[function(require,module,exports){
-'use strict';
-function type(value) {
-    return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
-}
-module.exports = type;
-},{}]},{},[3])(3)
-});
\ No newline at end of file
diff --git a/bower_components/combyne/lib/compiler.js b/bower_components/combyne/lib/compiler.js
deleted file mode 100644
index e019e92..0000000
--- a/bower_components/combyne/lib/compiler.js
+++ /dev/null
@@ -1,373 +0,0 @@
-/**
- * Compiles a template Tree into JavaScript.
- *
- * @module compiler
- * @requires shared/register_partial
- * @requires shared/register_filter
- * @requires shared/map
- * @requires shared/encode
- * @requires utils/type
- * @requires utils/create_object
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // Shared.
-  var registerPartial = require("./shared/register_partial");
-  var registerFilter = require("./shared/register_filter");
-  var map = require("./shared/map");
-  var encode = require("./shared/encode");
-
-  // Utils.
-  var type = require("./utils/type");
-  var createObject = require("./utils/create_object");
-
-  // Support.
-  require("./support/array/map");
-  require("./support/array/reduce");
-
-  // Borrowed from Underscore.js template function.
-  var escaper = /\\|'|\r|\n|\t|\u2028|\u2029/g;
-
-  // Borrowed from Underscore.js template function.
-  var escapes = {
-    "'": "'",
-    "\\": "\\",
-    "\r": "r",
-    "\n": "n",
-    "\t": "t",
-    "\u2028": "u2028",
-    "\u2029": "u2029"
-  };
-
-  /**
-   * Escapes passed values.
-   *
-   * @private
-   * @param {string} value - The value to escape.
-   * @returns {string} The value escaped.
-   */
-  function escapeValue(value) {
-    return value.replace(escaper, function(match) {
-      return "\\" + escapes[match];
-    });
-  }
-
-  /**
-   * Normalizes properties in the identifier to be looked up via hash-style
-   * instead of dot-notation.
-   *
-   * @private
-   * @param {string} identifier - The identifier to normalize.
-   * @returns {string} The identifier normalized.
-   */
-  function normalizeIdentifier(identifier) {
-    if (identifier === ".") {
-      // '.' might be referencing either the root or a locally scoped variable
-      // called '.'. So try for the locally scoped variable first and then
-      // default to the root
-      return "(data['.'] || data)";
-    }
-
-    return "data" + identifier.split(".").map(function(property) {
-      return property ? "['" + property + "']" : "";
-    }).join("");
-  }
-
-  /**
-   * Represents a Compiler.
-   *
-   * @class
-   * @memberOf module:compiler
-   * @param {Tree} tree - A template [Tree]{@link module:tree.Tree} to compile.
-   */
-  function Compiler(tree) {
-    this.tree = tree;
-    this.string = "";
-
-    var compiledSource = this.process(this.tree.nodes);
-
-    // The compiled function body.
-    var body = [];
-
-    // If there is a function, concatenate it to the default empty value.
-    if (compiledSource) {
-      compiledSource = " + " + compiledSource;
-    }
-
-    // Include map and its dependencies.
-    if (compiledSource.indexOf("map(") > -1) {
-      body.push(createObject, type, map);
-    }
-
-    // Include encode and its dependencies.
-    if (compiledSource.indexOf("encode(") > -1) {
-      body.push(type, encode);
-    }
-
-    // The compiled function body.
-    body = body.concat([
-      // Return the evaluated contents.
-      "return ''" + compiledSource
-    ]).join(";\n");
-
-    // Create the JavaScript function from the source code.
-    this.func = new Function("data", "partials", "filters", body);
-
-    // toString the function to get its raw source and expose.
-    this.source = [
-      "{",
-        "_partials: {},",
-        "_filters: {},",
-        "registerPartial: " + registerPartial + ",",
-        "registerFilter: " + registerFilter + ",",
-        "render: function(data) {",
-          "return " + this.func + "(data, this._partials, this._filters)",
-        "}",
-      "}"
-    ].join("\n");
-  }
-
-  /**
-   * A recursively called method to detect how to compile each Node in the
-   * Tree.
-   *
-   * @memberOf module:compiler.Compiler
-   * @param {array} nodes - An Array of Tree nodes to process.
-   * @param {array} keyVal - An optional array of meta condition keys.
-   * @return {string} Joined compiled nodes representing the template body.
-   */
-  Compiler.prototype.process = function(nodes, keyVal) {
-    var commands = [];
-
-    // Parse the Tree and execute the respective compile to JavaScript method.
-    nodes.map(function(node, index) {
-      switch (node.type) {
-        case "RawProperty":
-          commands.push(this.compileProperty(node, false));
-          break;
-
-        case "Property":
-          commands.push(this.compileProperty(node, true));
-          break;
-
-        case "ConditionalExpression":
-          commands.push(this.compileConditional(node));
-          break;
-
-        case "LoopExpression":
-          commands.push(this.compileLoop(node));
-          break;
-
-        case "PartialExpression":
-          commands.push(this.compilePartial(node));
-          break;
-
-        case "ExtendExpression":
-          commands.push(this.compileExtend(node));
-          break;
-
-        default:
-          // Ensure a node always has a value.
-          if (node.value) {
-            commands.push("'" + escapeValue(node.value) + "'");
-          }
-          break;
-      }
-    }, this);
-
-    return commands.join("+");
-  };
-
-  /**
-   * Compiles a property into JavaScript.
-   *
-   * @memberOf module:compiler.Compiler
-   * @param {object} node - The property node to compile.
-   * @param {boolean} encode - Whether or not to encode the property.
-   * @return {string} The compiled JavaScript source string value.
-   */
-  Compiler.prototype.compileProperty = function(node, encode) {
-    var identifier = node.value;
-
-    // Normalize string property values that contain single or double quotes.
-    if (identifier.indexOf("'") === -1 && identifier.indexOf("\"") === -1) {
-      identifier = normalizeIdentifier(node.value);
-    }
-
-    // Build the initial identifier value check.
-    var value = [
-      "(",
-        // If the identifier is a function, then invoke, otherwise return
-        // identifier.
-        "typeof", identifier, "===", "'function'",
-          "?", encode ? "encode(" + identifier + "(" + node.args + "))" :
-            identifier + "(" + node.args + ")",
-          ":", encode ? "encode(" + identifier + ") == null ? '' : encode(" +
-            identifier + ")" : identifier + " == null ? '' : " + identifier,
-      ")"
-    ].join(" ");
-
-    // Find any filters and nest them.
-    value = node.filters.reduce(function(memo, filter) {
-      var args = filter.args.length ? ", " + filter.args.map(function(value) {
-        if (value.indexOf("'") === -1 && value.indexOf("\"") === -1) {
-          if (!Number(value)) {
-            return normalizeIdentifier(value);
-          }
-        }
-
-        return value;
-      }).join(", ") : "";
-      return "filters['" + filter.value + "']" + "(" + memo + args + ")";
-    }, value);
-
-    return value;
-  };
-
-  /**
-   * Compiles a conditional into JavaScript.
-   *
-   * @memberOf module:compiler.Compiler
-   * @param {object} node - The conditional node to compile.
-   * @return {string} The compiled JavaScript source string value.
-   */
-  Compiler.prototype.compileConditional = function(node) {
-    if (node.conditions.length === 0) {
-      throw new Error("Missing conditions to if statement.");
-    }
-
-    var _this = this;
-
-    var condition = node.conditions.map(function(condition) {
-      switch (condition.type) {
-        case "Identifier":
-          return _this.compileProperty(
-            condition.value,
-            condition.value.type == "Property");
-
-        case "Not":
-          return "!";
-
-        case "Literal":
-          return condition.value;
-
-        case "Equality":
-          return condition.value;
-      }
-    }).join("");
-
-    // If an else was provided, hook into it.
-    var els = node.els ? this.process(node.els.nodes) : null;
-
-    // If an elsif was provided, hook into it.
-    var elsif = node.elsif ? this.compileConditional(node.elsif) : null;
-
-    return [
-      "(", "(", condition, ")", "?", this.process(node.nodes), ":",
-
-      els || elsif || "''",
-
-      ")"
-    ].join("");
-  };
-
-  /**
-   * Compiles a loop into JavaScript.
-   *
-   * @memberOf module:compiler.Compiler
-   * @param {object} node - The loop node to compile.
-   * @return {string} The compiled JavaScript source string value.
-   */
-  Compiler.prototype.compileLoop = function(node) {
-    var conditions = node.conditions;
-
-    var keyVal = [
-      // Key
-      (conditions[3] ? conditions[3].value : "i"),
-
-      // Value.
-      (conditions[2] ? conditions[2].value : ".")
-    ];
-
-    // Normalize the value to the condition if it exists.
-    var value = conditions.length && conditions[0].value;
-
-    // Construct the loop, utilizing map because it will return back the
-    // template as an array and ready to join into the template.
-    var loop = [
-      "map(",
-        value ? this.compileProperty(value, value.type == "Property") : "data",
-        ",",
-
-        // Index keyword.
-        "'", keyVal[0], "'", ",",
-
-        // Value keyword.
-        "'", value ? keyVal[1] : "", "'", ",",
-
-        // Outer scope data object.
-        "data", ",",
-
-        // The iterator function.
-        "function(data) {",
-          "return " + this.process(node.nodes, keyVal),
-        "}",
-      ").join('')"
-    ].join("");
-
-    return loop;
-  };
-
-  /**
-   * Compiles a partial into JavaScript.
-   *
-   * @memberOf module:compiler.Compiler
-   * @param {object} node - The partial node to compile.
-   * @return {string} The compiled JavaScript source string value.
-   */
-  Compiler.prototype.compilePartial = function(node) {
-    return [
-      "(",
-        "(partials['" + node.value + "']._partials = partials),",
-        "(partials['" + node.value + "']._filters = filters),",
-        "partials['" + node.value + "'].render(",
-          node.args.length ? this.compileProperty({
-            // We're crafting a fake node here, but only the value is required.
-            value: node.args[0],
-
-            // Forward the remaining arguments as arguments to the property.
-            args: node.args.slice(1),
-
-            // No filters are support at the moment.
-            filters: []
-          }) : node.data,
-        ")",
-      ")"
-    ].join("");
-  };
-
-  /**
-   * Compiles a render into JavaScript.
-   *
-   * @memberOf module:compiler.Compiler
-   * @param {object} node - The partial node to compile.
-   * @return {string} The compiled JavaScript source string value.
-   */
-  Compiler.prototype.compileExtend = function(node) {
-    return [
-      "(",
-        // Register this template as the child partial of the parent.
-        "partials['", node.value.template.trim(), "'].registerPartial",
-          "('", node.value.partial.trim(), "', { render: function(_data) {",
-            "data = _data || data;",
-            "return ", this.process(node.nodes), ";",
-          "}, data: data}),",
-        // Invoke the parent template with the passed data.
-        "partials['", node.value.template.trim(), "'].render(data)",
-      ")"
-    ].join("");
-  };
-
-  module.exports = Compiler;
-});
diff --git a/bower_components/combyne/lib/grammar.js b/bower_components/combyne/lib/grammar.js
deleted file mode 100644
index 205f293..0000000
--- a/bower_components/combyne/lib/grammar.js
+++ /dev/null
@@ -1,118 +0,0 @@
-/**
- * Defines the grammer to use when parsing the template for tokens.
- *
- * @module grammar
- * @requires utils/escape_delimiter
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // Utils.
-  var escapeDelimiter = require("./utils/escape_delimiter");
-
-  // Support.
-  require("./support/array/map");
-  require("./support/array/some");
-
-  /**
-   * Represents a Grammar.
-   *
-   * @class
-   * @memberOf module:grammar
-   * @param {object} delimiters - Delimiters to use store and use internally.
-   */
-  function Grammar(delimiters) {
-    this.delimiters = delimiters;
-
-    this.internal = [
-      makeEntry("START_IF", "if "),
-      makeEntry("ELSE", "else"),
-      makeEntry("ELSIF", "elsif "),
-      makeEntry("END_IF", "endif"),
-      makeEntry("NOT", "not "),
-      makeEntry("EQUALITY", "=="),
-      makeEntry("NOT_EQUALITY", "!="),
-      makeEntry("GREATER_THAN_EQUAL", ">="),
-      makeEntry("GREATER_THAN", ">"),
-      makeEntry("LESS_THAN_EQUAL", "<="),
-      makeEntry("LESS_THAN", "<"),
-      makeEntry("START_EACH", "each"),
-      makeEntry("END_EACH", "endeach"),
-      makeEntry("ASSIGN", " as "),
-      makeEntry("PARTIAL", "partial"),
-      makeEntry("START_EXTEND", "extend"),
-      makeEntry("END_EXTEND", "endextend"),
-      makeEntry("MAGIC", ".")
-    ];
-  }
-
-  /**
-   * Abstract the logic for adding items to the grammar.
-   *
-   * @private
-   * @param {string} name - Required to identify the match.
-   * @param {string} value - To be escaped and used within a RegExp.
-   * @returns {object} The normalized metadata.
-   */
-  function makeEntry(name, value) {
-    var escaped = escapeDelimiter(value);
-
-    return {
-      name: name,
-      escaped: escaped,
-      test: new RegExp("^" + escaped)
-    };
-  }
-
-  /**
-   * Escape the stored delimiters.
-   *
-   * @memberOf module:grammar.Grammar
-   * @returns {array} Metadata describing the grammar.
-   */
-  Grammar.prototype.escape = function() {
-    // Order matters here.
-    var grammar = [
-      "START_RAW",
-      "START_PROP",
-      "START_EXPR",
-      "END_RAW",
-      "END_PROP",
-      "END_EXPR",
-      "COMMENT",
-      "FILTER"
-    ];
-
-    // Add all normalized delimiters into the grammar.
-    grammar = grammar.map(function(key) {
-      return makeEntry(key, this.delimiters[key]);
-    }, this);
-
-    // Add all normalized internals into the grammar.
-    grammar.push.apply(grammar, this.internal);
-
-    // Take the current grammar and craft the remaining valid string values.
-    var string = grammar.map(function(value) {
-      return value.escaped;
-    }).join("|");
-
-    // Add whitespace to grammar.
-    grammar.push({
-      name: "WHITESPACE",
-      test: /^[\ \t\r\n]+/
-    });
-
-    // Add whitespace to the whitelist.
-    string += "| |\t|\r|\n";
-
-    // The everything-else bucket.
-    grammar.push({
-      name: "OTHER",
-      test: new RegExp("^((?!" + string + ").)*")
-    });
-
-    return grammar;
-  };
-
-  module.exports = Grammar;
-});
diff --git a/bower_components/combyne/lib/index.js b/bower_components/combyne/lib/index.js
deleted file mode 100644
index d7911e6..0000000
--- a/bower_components/combyne/lib/index.js
+++ /dev/null
@@ -1,142 +0,0 @@
-/**
- * Exposed module for creating and rendering templates.
- *
- * @module index
- * @requires grammar
- * @requires tokenizer
- * @requires tree
- * @requires compiler
- * @requires shared/register_partial
- * @requires shared/register_filter
- * @requires utils/type
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  var Grammar = require("./grammar");
-  var Tokenizer = require("./tokenizer");
-  var Tree = require("./tree");
-  var Compiler = require("./compiler");
-
-  // Shared.
-  var registerPartial = require("./shared/register_partial");
-  var registerFilter = require("./shared/register_filter");
-
-  // Utils.
-  var type = require("./utils/type");
-  var defaults = require("./utils/defaults");
-
-  // These are the custom delimiters that will always be falled back on for
-  // every template.  They can be overwritten in the settings object.
-  var defaultDelimiters = {
-    START_RAW: "{{{",
-    END_RAW: "}}}",
-    START_PROP: "{{",
-    END_PROP: "}}",
-    START_EXPR: "{%",
-    END_EXPR: "%}",
-    COMMENT: "--",
-    FILTER: "|"
-  };
-
-  /**
-   * Represents a Combyne template.
-   *
-   * @class Combyne
-   * @param {string} template - The template to compile.
-   * @param {object} data - Optional data to compile.
-   * @memberOf module:index
-   */
-  function Combyne(template, data) {
-    // Allow this method to run standalone.
-    if (!(this instanceof Combyne)) {
-      return new Combyne(template, data);
-    }
-
-    // Expose the template for easier accessing and mutation.
-    this.template = template;
-
-    // Default the data to an empty object.
-    this.data = data || {};
-
-    // Internal use only.  Stores the partials and filters.
-    this._partials = {};
-    this._filters = {};
-
-    // Ensure the template is a String.
-    if (type(this.template) !== "string") {
-      throw new Error("Template must be a String.");
-    }
-
-    // Normalize the delimiters with the defaults, to ensure a full object.
-    var delimiters = defaults(Combyne.settings.delimiters, defaultDelimiters);
-
-    // Create a new grammar with the delimiters.
-    var grammar = new Grammar(delimiters).escape();
-
-    // Break down the template into a series of tokens.
-    var stack = new Tokenizer(this.template, grammar).parse();
-
-    // Take the stack and create something resembling an AST.
-    var tree = new Tree(stack).make();
-
-    // Expose the internal tree and stack.
-    this.tree = tree;
-    this.stack = stack;
-
-    // Compile the template function from the tree.
-    this.compiler = new Compiler(tree);
-
-    // Update the source.
-    this.source = this.compiler.source;
-  }
-
-  /**
-   * Register a partial into the template.
-   *
-   * @memberOf module:index.Combyne
-   * @see {@link module:shared/register_partial}
-   */
-  Combyne.prototype.registerPartial = registerPartial;
-
-  /**
-   * Register a filter into the template.
-   *
-   * @memberOf module:index.Combyne
-   * @see {@link module:shared/register_filter}
-   */
-  Combyne.prototype.registerFilter = registerFilter;
-
-  /**
-   * Expose the global template settings.
-   *
-   * @memberOf module:index.Combyne
-   * @type {object}
-   */
-  Combyne.settings = {};
-
-  /**
-   * Render the template with data.
-   *
-   * @memberOf module:index.Combyne
-   * @param {object} data - The data to provide to the template.
-   * @return {string} Rendered template.
-   */
-  Combyne.prototype.render = function(data) {
-    // Override the template data if provided.
-    this.data = data || this.data;
-
-    // Execute the template function with the correct data.
-    return this.compiler.func(this.data, this._partials, this._filters);
-  };
-
-  /**
-   * Attach the version number.
-   *
-   * @memberOf module:index.Combyne
-   * @type {string}
-   */
-  Combyne.VERSION = "0.6.1";
-
-  module.exports = Combyne;
-});
diff --git a/bower_components/combyne/lib/shared/encode.js b/bower_components/combyne/lib/shared/encode.js
deleted file mode 100644
index 98eb646..0000000
--- a/bower_components/combyne/lib/shared/encode.js
+++ /dev/null
@@ -1,36 +0,0 @@
-/**
- * Encodes strings to make user input safer.
- *
- * @module shared/encode
- * @requires module:utils/type
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // Utils.
-  var type = require("../utils/type");
-
-  /**
-   * Encodes a String with HTML entities.
-   *
-   * Solution adapted from:
-   * http://stackoverflow.com/questions/18749591
-   *
-   * @memberOf module:shared/encode
-   * @param {*} raw - The raw value to encode, identity if not a String.
-   * @returns {string} An encoded string with HTML entities.
-   */
-  function encode(raw) {
-    if (type(raw) !== "string") {
-      return raw;
-    }
-
-    // Identifies all characters in the unicode range: 00A0-9999, ampersands,
-    // greater & less than) with their respective html entity.
-    return raw.replace(/["&'<>`]/g, function(match) {
-       return "" + match.charCodeAt(0) + ";";
-    });
-  }
-
-  module.exports = encode;
-});
diff --git a/bower_components/combyne/lib/shared/map.js b/bower_components/combyne/lib/shared/map.js
deleted file mode 100644
index 36ce028..0000000
--- a/bower_components/combyne/lib/shared/map.js
+++ /dev/null
@@ -1,87 +0,0 @@
-/**
- * Iterates various JavaScript types.
- *
- * @module utils/map
- * @requires utils/type
- * @requires utils/create_object
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // Utils.
-  var type = require("../utils/type");
-  var createObject = require("../utils/create_object");
-
-  // Support.
-  require("../support/array/is_array");
-
-  /**
-   * Allows iteration of an Array, Arguments, NodeList, or plain Object.
-   *
-   * @memberOf module:utils/map
-   * @param {*} obj - Object or Array to iterate.
-   * @param {String} index - An identifier name for index.
-   * @param {String} value - An identifier name for value.
-   * @param {object} data - Data from parent scope.
-   * @param {Function} iterator - Function that is called within the template.
-   * @returns {Array} String output to be joined.
-   */
-  function map(obj, index, value, data, iterator) {
-    var isArrayLike = type(obj) === "arguments" || type(obj) === "nodelist";
-    var isArray = Array.isArray(obj) || isArrayLike;
-    var output = [];
-    var dataObject;
-
-    // Iteration branch if Array.
-    if (isArray) {
-      // Make a clone of the Array to operate on, also potentially coercing.
-      obj = [].slice.call(obj);
-
-      for (var i = 0; i < obj.length; i++) {
-        // Create a new scoped data object.
-        dataObject = createObject(data);
-        dataObject[index] = i;
-
-        if (value) {
-          dataObject[value] = obj[i];
-        }
-        // If no value was supplied, use this object to key off of.
-        else {
-          dataObject = obj[i];
-        }
-
-        // Add return value of iterator function to output.
-        output.push(iterator(dataObject));
-      }
-
-      return output;
-    }
-    // Iteration branch if Object.
-    else {
-      for (var key in obj) {
-        if (!obj.hasOwnProperty(key)) {
-          continue;
-        }
-
-        // Create a new scoped data object.
-        dataObject = createObject(data);
-        dataObject[index] = key;
-
-        if (value) {
-          dataObject[value] = obj[key];
-        }
-        // If no value was supplied, use this object to key off of.
-        else {
-          dataObject = obj[key];
-        }
-
-        // Add return value of iterator function to output.
-        output.push(iterator(dataObject));
-      }
-
-      return output;
-    }
-  }
-
-  module.exports = map;
-});
diff --git a/bower_components/combyne/lib/shared/register_filter.js b/bower_components/combyne/lib/shared/register_filter.js
deleted file mode 100644
index 313d016..0000000
--- a/bower_components/combyne/lib/shared/register_filter.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Registers filter functions on a template.
- *
- * @module shared/register_filter
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  /**
-   * Registers a filter on the template object.
-   *
-   * @memberOf module:shared/register_filter
-   * @param {string} name - The name to register.
-   * @param {function} callback - The callback to trigger for the filter.
-   */
-  function registerFilter(name, callback) {
-    this._filters[name] = callback;
-  }
-
-  module.exports = registerFilter;
-});
diff --git a/bower_components/combyne/lib/shared/register_partial.js b/bower_components/combyne/lib/shared/register_partial.js
deleted file mode 100644
index ba908ea..0000000
--- a/bower_components/combyne/lib/shared/register_partial.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Registers partials on a template.
- *
- * @module shared/register_partial
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  /**
-   * Registers a partial on the template object.
-   *
-   * @memberOf module:shared/register_partial
-   * @param {string} name - The name to register.
-   * @param {function} template - The template to use as a partial.
-   */
-  function registerPartial(name, template) {
-    this._partials[name] = template;
-
-    // Partials share filters.
-    this._partials[name]._filters = this._filters;
-  }
-
-  module.exports = registerPartial;
-});
diff --git a/bower_components/combyne/lib/support/array/is_array.js b/bower_components/combyne/lib/support/array/is_array.js
deleted file mode 100644
index f16855b..0000000
--- a/bower_components/combyne/lib/support/array/is_array.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- * Legacy support for browsers that don't support Array.prototype.is_array.
- *
- * @module: support/array/is_array
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // Utils.
-  var type = require("../../utils/type");
-
-  // This polyfill isn't necessary.
-  if (Array.isArray) {
-    return isArray;
-  }
-
-  /**
-   * A polyfill for Array.isArray.  Modified from MDN.
-   *
-   * @memberOf module:support/array/is_array
-   * @param {*} arg - A value to test.
-   * @returns {boolean} Whether or not the arg is an Array.
-   */
-  function isArray(arg) {
-    return type(arg) === "[object Array]";
-  }
-
-  module.exports = Array.isArray = isArray;
-});
diff --git a/bower_components/combyne/lib/support/array/map.js b/bower_components/combyne/lib/support/array/map.js
deleted file mode 100644
index 24b0a48..0000000
--- a/bower_components/combyne/lib/support/array/map.js
+++ /dev/null
@@ -1,52 +0,0 @@
-/**
- * Legacy support for browsers that don't support Array.prototype.map.
- *
- * @module: support/array/map
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // This polyfill isn't necessary.
-  if (Array.prototype.map) {
-    return map;
-  }
-
-  /**
-   * A polyfill for Array#map.  Modified from MDN.
-   *
-   * @memberOf module:support/array/map
-   * @param {function} iterator - An interator function to call.
-   * @param {object} thisArg - An optional context to pass.
-   * @returns {array} The return values from the iterator function.
-   */
-  function map(iterator, thisArg) {
-    // Ensure called with a valid context.
-    if (this == null) {
-      throw new TypeError();
-    }
-
-    // Ensure a function was passed as the iterator.
-    if (typeof iterator !== "function") {
-      throw new TypeError();
-    }
-
-    // Ensure there is always a `thisArg`.
-    thisArg = thisArg || this;
-
-    // Coerce this value to an Array.
-    var array = Array.prototype.slice.call(this);
-
-    // Cache the return values.
-    var retVal = [];
-
-    for (var i = 0; i < array.length; i++) {
-      if (i in array) {
-        retVal[retVal.length] = iterator.call(thisArg, array[i], i, array);
-      }
-    }
-
-    return retVal;
-  }
-
-  module.exports = Array.prototype.map = map;
-});
diff --git a/bower_components/combyne/lib/support/array/reduce.js b/bower_components/combyne/lib/support/array/reduce.js
deleted file mode 100644
index 0cc773c..0000000
--- a/bower_components/combyne/lib/support/array/reduce.js
+++ /dev/null
@@ -1,46 +0,0 @@
-/**
- * Legacy support for browsers that don't support Array.prototype.reduce.
- *
- * @module: support/array/reduce
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // This polyfill isn't necessary.
-  if (Array.prototype.reduce) {
-    return reduce;
-  }
-
-  /**
-   * A polyfill for Array#reduce.  Modified from MDN.
-   *
-   * @memberOf module:support/array/reduce
-   * @param {function} iterator - An interator function to call.
-   * @param {object} memo - A reference object to use as memo.
-   * @returns {object} The memoized object.
-   */
-  function reduce(iterator, memo) {
-    // Ensure called with a valid context.
-    if (this == null) {
-      throw new TypeError();
-    }
-
-    // Ensure a function was passed as the iterator.
-    if (typeof iterator !== "function") {
-      throw new TypeError();
-    }
-
-    // Coerce this value to an Array.
-    var array = Array.prototype.slice.call(this);
-
-    for (var i = 0; i < array.length; i++) {
-      if (i in array) {
-        memo = iterator(memo, array[i], i, array);
-      }
-    }
-
-    return memo;
-  }
-
-  module.exports = Array.prototype.reduce = reduce;
-});
diff --git a/bower_components/combyne/lib/support/array/some.js b/bower_components/combyne/lib/support/array/some.js
deleted file mode 100644
index 8890e9a..0000000
--- a/bower_components/combyne/lib/support/array/some.js
+++ /dev/null
@@ -1,51 +0,0 @@
-/**
- * Legacy support for browsers that don't support Array.prototype.some.
- *
- * @module: support/array/some
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // This polyfill isn't necessary.
-  if (Array.prototype.some) {
-    return some;
-  }
-
-  /**
-   * A polyfill for Array#some.  Modified from MDN.
-   *
-   * @memberOf module:support/array/some
-   * @param {function} iterator - An interator function to call.
-   * @param {object} thisArg - An optional context to pass.
-   * @returns {boolean} Whether or not the iterator returned truthy.
-   */
-  function some(iterator, thisArg) {
-    // Ensure called with a valid context.
-    if (this == null) {
-      throw new TypeError();
-    }
-
-    // Ensure a function was passed as the iterator.
-    if (typeof iterator !== "function") {
-      throw new TypeError();
-    }
-
-    // Ensure there is always a `thisArg`.
-    thisArg = thisArg || this;
-
-    // Coerce this value to an Array.
-    var array = Array.prototype.slice.call(this);
-
-    for (var i = 0; i < array.length; i++) {
-      if (i in array) {
-        if (iterator.call(thisArg, array[i], i, array)) {
-          return true;
-        }
-      }
-    }
-
-    return false;
-  }
-
-  module.exports = Array.prototype.some = some;
-});
diff --git a/bower_components/combyne/lib/support/string/trim.js b/bower_components/combyne/lib/support/string/trim.js
deleted file mode 100644
index 92d4eed..0000000
--- a/bower_components/combyne/lib/support/string/trim.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Legacy support for browsers that don't support String.prototype.trim.
- *
- * @module: support/string/trim
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // This polyfill isn't necessary.
-  if (String.prototype.trim) {
-    return trim;
-  }
-
-  /**
-   * A polyfill for String#trim.  Modified from MDN.
-   *
-   * @memberOf module:support/string/trim
-   * @returns {string} The trimmed String.
-   */
-  function trim() {
-    return this.replace(/^\s+|\s+$/g, "");
-  }
-
-  module.exports = String.prototype.trim = trim;
-});
diff --git a/bower_components/combyne/lib/support/string/trim_left.js b/bower_components/combyne/lib/support/string/trim_left.js
deleted file mode 100644
index b74fc51..0000000
--- a/bower_components/combyne/lib/support/string/trim_left.js
+++ /dev/null
@@ -1,25 +0,0 @@
-/**
- * Legacy support for browsers that don't support String.prototype.trimLeft.
- *
- * @module: support/string/trim_left
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // This polyfill isn't necessary.
-  if (String.prototype.trimLeft) {
-    return trimLeft;
-  }
-
-  /**
-   * A polyfill for String#trimLeft.  Modified from MDN.
-   *
-   * @memberOf module:support/string/trim_left
-   * @returns {string} The trimmed String.
-   */
-  function trimLeft() {
-    return this.replace(/^\s+/, "");
-  }
-
-  module.exports = String.prototype.trimLeft = trimLeft;
-});
diff --git a/bower_components/combyne/lib/tokenizer.js b/bower_components/combyne/lib/tokenizer.js
deleted file mode 100644
index 2377181..0000000
--- a/bower_components/combyne/lib/tokenizer.js
+++ /dev/null
@@ -1,78 +0,0 @@
-/**
- * Deconstructs a template into tokens.
- *
- * @module tokenizer
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  // Support.
-  require("./support/array/some");
-
-  /**
-   * Represents a Tokenizer.
-   *
-   * @class
-   * @memberOf module:tokenizer
-   * @param {string} template - The template string to tokenize.
-   * @param {array} grammar - The specified grammar to test against.
-   */
-  function Tokenizer(template, grammar) {
-    this.template = template;
-    this.grammar = grammar;
-    this.stack = [];
-  }
-
-  /**
-   * Loop through the grammar and return on the first source match.  Remove
-   * matches from the source, after pushing to the stack.
-   *
-   * @private
-   * @param {string} template that is searched on till its length is 0.
-   * @param {array} grammar array of test regexes.
-   * @param {array} stack to push found tokens to.
-   * @returns {string} template that has been truncated.
-   */
-  function parseNextToken(template, grammar, stack) {
-    grammar.some(function(token) {
-      var capture = token.test.exec(template);
-
-      // Ignore empty captures.
-      if (capture && capture[0]) {
-        template = template.replace(token.test, "");
-        stack.push({ name: token.name, capture: capture });
-        return true;
-      }
-    });
-
-    return template;
-  }
-
-  /**
-   * Parses the template into a series of tokens.
-   *
-   * @memberOf module:tokenizer.Tokenizer
-   * @returns {array} The series of tokens.
-   */
-  Tokenizer.prototype.parse = function() {
-    var template = this.template;
-    var grammar = this.grammar;
-    var stack = this.stack;
-    var stackLen = 0;
-
-    // While the template still needs to be parsed, loop.
-    while (template.length) {
-      template = parseNextToken(template, grammar, stack);
-      stackLen = stack.length;
-
-      // Add the previous token, if it exists.
-      if (stackLen - 2 >= 0) {
-        stack[stackLen - 1].previous = stack[stackLen - 2];
-      }
-    }
-
-    return stack;
-  };
-
-  module.exports = Tokenizer;
-});
diff --git a/bower_components/combyne/lib/tree.js b/bower_components/combyne/lib/tree.js
deleted file mode 100644
index 6290183..0000000
--- a/bower_components/combyne/lib/tree.js
+++ /dev/null
@@ -1,652 +0,0 @@
-/**
- * A tree representation of the template tokens.
- *
- * @module tree
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  var isString = /['"]+/;
-
-  // Support.
-  require("./support/string/trim");
-
-  /**
-   * Represents a Tree.
-   *
-   * @class
-   * @memberOf module:tree
-   * @param {array} stack - A stack of tokens to parse.
-   */
-  function Tree(stack) {
-    // Internally use a copy of the stack.
-    this.stack = stack.slice();
-
-    // The root tree node.
-    this.root = {
-      type: "Template",
-      nodes: []
-    };
-  }
-
-  /**
-   * Takes in an element from the stack of generated tokens.
-   *
-   * @memberOf module:tree.Tree
-   * @param {object} root - Current token in stack or tree node to process.
-   * @param {string} END - Token name to cause an expression to end processing.
-   * @return {object} The root element decorated or null to stop.
-   */
-  Tree.prototype.make = function(root, END) {
-    root = root || this.root;
-
-    var node, result, prev;
-    var index = 0;
-
-    // Pull out the first item in the stack.
-    while (this.stack.length) {
-      node = this.stack.shift();
-
-      switch (node.name) {
-        case "START_RAW":
-          root.nodes.push(this.constructProperty(false));
-          break;
-
-        case "START_PROP":
-          root.nodes.push(this.constructProperty(true));
-          break;
-
-        case "START_EXPR":
-          if (result = this.constructExpression(root, END)) {
-            root.nodes.push(result);
-            break;
-          }
-
-          // Comments return false.
-          else if (result !== false) {
-            return null;
-          }
-
-          break;
-
-        case "END_EXPR":
-          break;
-
-        case "WHITESPACE":
-          var capture = node.capture[0];
-
-          // Trim newlines from expression ends.
-          if (node.previous.name == "END_EXPR") {
-            capture = capture.replace("\n", "");
-          }
-
-          root.nodes.push({
-            type: "Text",
-            value: capture
-          });
-
-          break;
-
-        default:
-          var prevWhitespace = "";
-
-          // Detect previous whitespace to condense.
-          if (prev && prev.type === "Text") {
-            root.nodes.pop();
-            prevWhitespace = prev.value;
-          }
-
-          root.nodes.push({
-            type: "Text",
-            value: prevWhitespace + node.capture[0]
-          });
-
-          break;
-      }
-
-      prev = node;
-      ++index;
-    }
-
-    return root;
-  };
-
-  /**
-   * Build a descriptor to describe an instance of a property.
-   *
-   * @memberOf module:tree.Tree
-   * @param {boolean} encoded - Whether or not to encode this property.
-   * @return {object} Either a property descriptor or filter pass.
-   */
-  Tree.prototype.constructProperty = function(encoded) {
-    var propertyDescriptor = {
-      type: encoded ? "Property" : "RawProperty",
-      value: "",
-      args: [],
-      filters: []
-    };
-    var previous;
-    var input = "",
-        processParsedProperty = function() {
-          // Split up the input into space-delimited parts.
-          var parts = input.trim().split(" ");
-
-          // The property name.
-          propertyDescriptor.value = parts[0];
-
-          // Properties can have arguments passed.
-          propertyDescriptor.args = parts.slice(1);
-        };
-
-    // Keep iterating through the stack until END_PROP is found.
-    while (this.stack.length) {
-      var node = this.stack.shift();
-
-      // If this is the first token, allow the user to use the reserved word
-      // 'as'
-      if (!previous && node.name == "ASSIGN") {
-        node.name = "OTHER";
-      }
-
-      switch (node.name) {
-        case "FILTER":
-          propertyDescriptor.value = input.trim();
-          return this.constructFilter(propertyDescriptor);
-
-        case "END_EXPR":
-        case "EQUALITY":
-        case "NOT_EQUALITY":
-        case "GREATER_THAN":
-        case "GREATER_THAN_EQUAL":
-        case "LESS_THAN":
-        case "LESS_THAN_EQUAL":
-        case "ASSIGN":
-          processParsedProperty();
-
-          // This property is embedded in some of expression, so lets stop
-          // processing it and put the current token back on top of the stack
-          // so whatever expression was working can finish it's processing
-          this.stack.unshift(node);
-
-          return propertyDescriptor;
-
-        case "END_RAW":
-        case "END_PROP":
-        case "END_EXPR":
-          processParsedProperty();
-
-          return propertyDescriptor;
-
-        default:
-          input += node.capture[0];
-          break;
-      }
-
-      previous = node;
-    }
-
-    throw new Error("Unterminated property.");
-  };
-
-  /**
-   * Build a descriptor to describe an instance of an extend.
-   *
-   * @memberOf module:tree.Tree
-   * @param {object} root - Current token in stack or tree node to process.
-   * @return {object} The root element decorated.
-   */
-  Tree.prototype.constructExtend = function(root) {
-    root.type = "ExtendExpression";
-
-    // What to return to the compiler.
-    var value = {
-      template: "",
-      partial: ""
-    };
-
-    // Start filling the template first.
-    var side = "template";
-
-    LOOP:
-    while (this.stack.length) {
-      var node = this.stack.shift();
-
-      switch (node.name) {
-        case "END_EXPR":
-          break LOOP;
-
-        case "ASSIGN":
-          side = "partial";
-          break;
-
-        default:
-          // Capture the template and partial values.
-          value[side] += node.capture[0];
-          break;
-      }
-    }
-
-    // Trim the template and partial values.
-    value.template = value.template.trim();
-    value.partial = value.partial.trim();
-
-    // Assign this value.
-    root.value = value;
-
-    // If no template, this is an error.
-    if (!root.value.template) {
-      throw new Error("Missing valid template name.");
-    }
-
-    // If no partial, this is an error.
-    if (!root.value.partial) {
-      throw new Error("Missing valid partial name.");
-    }
-
-    this.make(root, "END_EXTEND");
-
-    return root;
-  };
-
-  /**
-   * Build a descriptor to describe an instance of a partial.
-   *
-   * @memberOf module:tree.Tree
-   * @param {object} root - Current token in stack or tree node to process.
-   * @return {object} The root element decorated.
-   */
-  Tree.prototype.constructPartial = function(root) {
-    root.type = "PartialExpression";
-
-    // By default isolate the partial from the parent's data.
-    root.data = "null";
-
-    // No node in a partial expression?
-    delete root.nodes;
-
-    // All stringified contents found.
-    var input = "";
-
-    LOOP:
-    while (this.stack.length) {
-      var node = this.stack.shift();
-
-      switch (node.name) {
-        case "END_EXPR":
-          break LOOP;
-
-        case "MAGIC":
-          // If requested, pass the parent's data to the partial.
-          root.data = "data";
-          break;
-
-        default:
-          // Accumulate all values into the input variable, will split later.
-          input += node.capture[0];
-      }
-    }
-
-    // Split up the input into space-delimited parts.
-    var parts = input.trim().split(" ");
-
-    // The partial name.
-    root.value = parts[0];
-
-    // If no value, this is an error.
-    if (!root.value) {
-      throw new Error("Missing valid partials name.");
-    }
-
-    // Partials have arguments passed.
-    root.args = parts.slice(1);
-
-    return root;
-  };
-
-  /**
-   * Build a descriptor to describe an instance of a filter.
-   *
-   * @memberOf module:tree.Tree
-   * @param {object} root - Current token in stack or tree node to process.
-   * @return {object} The root element decorated.
-   */
-  Tree.prototype.constructFilter = function(root) {
-    var current = {
-      type: "Filter",
-      args: []
-    };
-
-    var previous;
-
-    // All stringified contents found.
-    var input = "";
-
-    LOOP:
-    while (this.stack.length) {
-      var node = this.stack.shift();
-
-      // If this is the first token, allow the user to use the reserved word
-      // 'as'
-      if (!previous && node.name == "ASSIGN") {
-        node.name = "OTHER";
-      }
-
-      switch (node.name) {
-        case "END_EXPR":
-        case "EQUALITY":
-        case "NOT_EQUALITY":
-        case "GREATER_THAN":
-        case "GREATER_THAN_EQUAL":
-        case "LESS_THAN":
-        case "LESS_THAN_EQUAL":
-        case "ASSIGN":
-          root.filters.push(current);
-
-          // This filter is embedded in some of expression, so lets stop
-          // processing it and put the current token back on top of the stack
-          // so whatever expression was working can finish it's processing
-          this.stack.unshift(node);
-
-          break LOOP;
-
-        case "END_RAW":
-        case "END_PROP":
-          root.filters.push(current);
-          break LOOP;
-
-        // Allow nested filters.
-        case "FILTER":
-          root.filters.push(current);
-          this.constructFilter(root);
-          break LOOP;
-
-        // Accumulate all values into the input variable, will split later.
-        default:
-          input += node.capture[0];
-      }
-
-      previous = node;
-    }
-
-    // Split up the input into space-delimited parts.
-    var parts = input.trim().split(" ");
-
-    // The partial name.
-    current.value = parts[0];
-
-    // If no value, this is an error.
-    if (!current.value) {
-      throw new Error("Missing valid filter name.");
-    }
-
-    // Partials have arguments passed.
-    current.args = parts.slice(1);
-
-    return root;
-  };
-
-  /**
-   * Build a descriptor to describe an instance of a loop.
-   *
-   * @memberOf module:tree.Tree
-   * @param {object} root - Current token in stack or tree node to process.
-   * @return {object} The root element decorated.
-   */
-  Tree.prototype.constructEach = function(root) {
-    root.type = "LoopExpression";
-    root.conditions = [];
-
-    // Find the left side identifier.
-    var isLeftSide = true;
-
-    LOOP:
-    while (this.stack.length) {
-      var node = this.stack.shift();
-
-      switch (node.name) {
-        case "ASSIGN":
-          isLeftSide = false;
-
-          root.conditions.push({
-            type: "Assignment",
-            value: node.capture[0].trim()
-          });
-
-          break;
-
-        case "END_EXPR":
-          break LOOP;
-
-        case "WHITESPACE":
-          break;
-
-        default:
-          // If we're on the left hand side and there are already conditions,
-          // this is the only time we're aren't pushing a value descriptor.
-          if (!isLeftSide) {
-            root.conditions.push({
-              type: "Identifier",
-              value: node.capture[0].trim()
-            });
-          }
-          else {
-            if (node.name != "START_RAW" && node.name != "START_PROP") {
-              // this value needs to be processed by constructProperty so put
-              // it back on the top of the stack
-              this.stack.unshift(node);
-            }
-
-            root.conditions.push({
-              type: "Identifier",
-              value: this.constructProperty(node.name != "START_RAW")
-            });
-          }
-
-          break;
-      }
-    }
-
-    this.make(root, "END_EACH");
-
-    return root;
-  };
-
-  /**
-   * Build a descriptor to describe an instance of a comment.
-   *
-   * @memberOf module:tree.Tree
-   * @param {object} root - Current token in stack or tree node to process.
-   * @return {object} The root element decorated.
-   */
-  Tree.prototype.constructComment = function(root) {
-    var previous = {};
-
-    while (this.stack.length) {
-      var node = this.stack.shift();
-
-      switch (node.name) {
-        case "COMMENT":
-          if (previous.name === "START_EXPR") {
-            this.constructComment(root);
-          }
-
-          break;
-
-        case "END_EXPR":
-          if (previous.name === "COMMENT") {
-            return false;
-          }
-
-          break;
-      }
-
-      previous = node;
-    }
-
-    return false;
-  };
-
-  /**
-   * Build a descriptor to describe an instance of a conditional.
-   *
-   * @memberOf module:tree.Tree
-   * @param {object} root - Current token in stack or tree node to process.
-   * @param {string} kind - A way to determine else from elsif.
-   * @return {object} The root element decorated.
-   */
-  Tree.prototype.constructConditional = function(root, kind) {
-    root.type = root.type || "ConditionalExpression";
-    root.conditions = root.conditions || [];
-
-    var prev = {};
-
-    if (kind === "ELSE") {
-      root.els = { nodes: [] };
-      return this.make(root.els, "END_IF");
-    }
-
-    if (kind === "ELSIF") {
-      root.elsif = { nodes: [] };
-      this.constructConditional(root.elsif, "SKIP");
-      return this.make(root.elsif, "END_IF");
-    }
-
-    LOOP:
-    while (this.stack.length) {
-      var node = this.stack.shift();
-      var value = node.capture[0].trim();
-
-      switch (node.name) {
-        case "NOT":
-          root.conditions.push({
-            type: "Not"
-          });
-
-          break;
-
-        case "EQUALITY":
-        case "NOT_EQUALITY":
-        case "GREATER_THAN":
-        case "GREATER_THAN_EQUAL":
-        case "LESS_THAN":
-        case "LESS_THAN_EQUAL":
-          root.conditions.push({
-            type: "Equality",
-            value: node.capture[0].trim()
-          });
-
-          break;
-
-        case "END_EXPR":
-          break LOOP;
-
-        default:
-          // If it's a whitespace we need the non-trimmed value
-          if (node.name == "WHITESPACE") {
-            value = node.capture[0];
-          }
-
-          if (value === "false" || value === "true") {
-            root.conditions.push({
-              type: "Literal",
-              value: value
-            });
-          }
-          // Easy way to determine if the value is NaN or not.
-          else if (Number(value) === Number(value)) {
-            root.conditions.push({
-              type: "Literal",
-              value: value
-            });
-          }
-          else if (isString.test(value)) {
-            root.conditions.push({
-              type: "Literal",
-              value: value
-            });
-          }
-          else if (prev.type === "Literal") {
-            prev.value += value;
-          }
-          else {
-
-            if (node.name != "START_RAW" && node.name != "START_PROP") {
-              // this value needs to be processed by constructProperty so put
-              // it back on the top of the stack
-              this.stack.unshift(node);
-            }
-
-            root.conditions.push({
-              type: "Identifier",
-              value: this.constructProperty(node.name != "START_RAW")
-            });
-          }
-
-          break;
-      }
-
-      // Store the previous condition object if it exists.
-      prev = root.conditions[root.conditions.length - 1] || {};
-    }
-
-    if (kind !== "SKIP") {
-      this.make(root, "END_IF");
-    }
-
-    return root;
-  };
-
-  /**
-   * Build a descriptor to describe an instance of an expression.
-   *
-   * @memberOf module:tree.Tree
-   * @param {object} root - Current token in stack or tree node to process.
-   * @param {string} END - Token name to cause an expression to end processing.
-   * @return {object} The root element decorated.
-   */
-  Tree.prototype.constructExpression = function(root, END) {
-    var expressionRoot = {
-      nodes: []
-    };
-
-    // Find the type.
-    while (this.stack.length) {
-      var type = this.stack.shift();
-
-      switch (type.name) {
-        //  WHEN ANY OF THESE ARE HIT, BREAK OUT.
-        case END:
-          return;
-
-        case "WHITESPACE":
-          break;
-
-        case "COMMENT":
-          return this.constructComment(expressionRoot);
-
-        case "START_EACH":
-          return this.constructEach(expressionRoot);
-
-        case "ELSIF":
-        case "ELSE":
-        case "START_IF":
-          if (type.name !== "START_IF") {
-            expressionRoot = root;
-          }
-
-          return this.constructConditional(expressionRoot, type.name);
-
-        case "PARTIAL":
-          return this.constructPartial(expressionRoot);
-
-        case "START_EXTEND":
-          return this.constructExtend(expressionRoot);
-
-        default:
-          throw new Error("Invalid expression type: " + type.name);
-      }
-    }
-  };
-
-  module.exports = Tree;
-});
diff --git a/bower_components/combyne/lib/utils/create_object.js b/bower_components/combyne/lib/utils/create_object.js
deleted file mode 100644
index 14ba57b..0000000
--- a/bower_components/combyne/lib/utils/create_object.js
+++ /dev/null
@@ -1,24 +0,0 @@
-/**
- * Creates a new object with the [[Proto]] set to a passed in object.
- *
- * @module utils/create_object
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  /**
-   * Basic Crockford-ian style Object.create.  Intentionally named to
-   * distinguish from the native implementation.
-   *
-   * @memberOf module:utils/create_object
-   * @param {Object} parent - An object to specify as the return prototype.
-   * @returns {object} An object with parent object as the prototype.
-   */
-  function createObject(parent) {
-    function F() {}
-    F.prototype = parent;
-    return new F();
-  }
-
-  module.exports = createObject;
-});
diff --git a/bower_components/combyne/lib/utils/defaults.js b/bower_components/combyne/lib/utils/defaults.js
deleted file mode 100644
index 131339f..0000000
--- a/bower_components/combyne/lib/utils/defaults.js
+++ /dev/null
@@ -1,37 +0,0 @@
-/**
- * Merges default target object into source.
- *
- * @module utils/defaults
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  /**
-   * Merge all default properties into target.
-   *
-   * @memberOf module:utils/defaults
-   * @param {object} target - The object to merge into.
-   * @param {object} source - The defaults object that will be merged.
-   * @returns {object} The target object.
-   */
-  function defaults(target, source) {
-    // Ensure target and source are always objects.
-    target = target || {};
-    source = source;
-
-    for (var key in source) {
-      if (!source.hasOwnProperty(key)) {
-        continue;
-      }
-
-      // Ensure the key isn't present, before merging.
-      if (!(key in target)) {
-        target[key] = source[key];
-      }
-    }
-
-    return target;
-  }
-
-  module.exports = defaults;
-});
diff --git a/bower_components/combyne/lib/utils/escape_delimiter.js b/bower_components/combyne/lib/utils/escape_delimiter.js
deleted file mode 100644
index f3fef35..0000000
--- a/bower_components/combyne/lib/utils/escape_delimiter.js
+++ /dev/null
@@ -1,23 +0,0 @@
-/**
- * Safely escapes Strings to be used as delimiters via RegExp.
- *
- * @module utils/escape_delimiter
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  var specialCharsExp = /[\^$\\\/.*+?()\[\]{}|]/g;
-
-  /**
-   * Escape special characters that may interfere with RegExp building.
-   *
-   * @memberOf module:utils/escape_delimiter
-   * @param {String} delimiter - The value to escape.
-   * @returns {String} A safe value for RegExp building.
-   */
-  function escapeDelimiter(delimiter) {
-    return delimiter.replace(specialCharsExp,"\\$&");
-  }
-
-  module.exports = escapeDelimiter;
-});
diff --git a/bower_components/combyne/lib/utils/type.js b/bower_components/combyne/lib/utils/type.js
deleted file mode 100644
index a4dc07e..0000000
--- a/bower_components/combyne/lib/utils/type.js
+++ /dev/null
@@ -1,21 +0,0 @@
-/**
- * Determines the type of a passed in value.
- *
- * @module utils/type
- */
-define(function(require, exports, module) {
-  "use strict";
-
-  /**
-   * Determine the type of a given value.
-   *
-   * @memberOf module:utils/type
-   * @param {*} value - A value to test.
-   * @returns {string} The value's type.
-   */
-  function type(value) {
-    return Object.prototype.toString.call(value).slice(8, -1).toLowerCase();
-  }
-
-  module.exports = type;
-});
diff --git a/bower_components/jquery/.bower.json b/bower_components/jquery/.bower.json
deleted file mode 100644
index ba14528..0000000
--- a/bower_components/jquery/.bower.json
+++ /dev/null
@@ -1,37 +0,0 @@
-{
-  "name": "jquery",
-  "version": "2.1.1",
-  "main": "dist/jquery.js",
-  "license": "MIT",
-  "ignore": [
-    "**/.*",
-    "build",
-    "speed",
-    "test",
-    "*.md",
-    "AUTHORS.txt",
-    "Gruntfile.js",
-    "package.json"
-  ],
-  "devDependencies": {
-    "sizzle": "1.10.19",
-    "requirejs": "2.1.10",
-    "qunit": "1.14.0",
-    "sinon": "1.8.1"
-  },
-  "keywords": [
-    "jquery",
-    "javascript",
-    "library"
-  ],
-  "homepage": "https://github.com/jquery/jquery",
-  "_release": "2.1.1",
-  "_resolution": {
-    "type": "version",
-    "tag": "2.1.1",
-    "commit": "4dec426aa2a6cbabb1b064319ba7c272d594a688"
-  },
-  "_source": "git://github.com/jquery/jquery.git",
-  "_target": "~2.1.1",
-  "_originalSource": "jquery"
-}
\ No newline at end of file
diff --git a/bower_components/jquery/MIT-LICENSE.txt b/bower_components/jquery/MIT-LICENSE.txt
deleted file mode 100644
index cdd31b5..0000000
--- a/bower_components/jquery/MIT-LICENSE.txt
+++ /dev/null
@@ -1,21 +0,0 @@
-Copyright 2014 jQuery Foundation and other contributors
-http://jquery.com/
-
-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:
-
-The above copyright notice and this permission notice shall be
-included in all copies or substantial portions of the Software.
-
-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.
diff --git a/bower_components/jquery/bower.json b/bower_components/jquery/bower.json
deleted file mode 100644
index c66a750..0000000
--- a/bower_components/jquery/bower.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "name": "jquery",
-  "version": "2.1.1",
-  "main": "dist/jquery.js",
-  "license": "MIT",
-  "ignore": [
-    "**/.*",
-    "build",
-    "speed",
-    "test",
-    "*.md",
-    "AUTHORS.txt",
-    "Gruntfile.js",
-    "package.json"
-  ],
-  "devDependencies": {
-    "sizzle": "1.10.19",
-    "requirejs": "2.1.10",
-    "qunit": "1.14.0",
-    "sinon": "1.8.1"
-  },
-  "keywords": [
-    "jquery",
-    "javascript",
-    "library"
-  ]
-}
diff --git a/bower_components/jquery/dist/jquery.js b/bower_components/jquery/dist/jquery.js
deleted file mode 100644
index 9f7b3d3..0000000
--- a/bower_components/jquery/dist/jquery.js
+++ /dev/null
@@ -1,9190 +0,0 @@
-/*!
- * jQuery JavaScript Library v2.1.1
- * http://jquery.com/
- *
- * Includes Sizzle.js
- * http://sizzlejs.com/
- *
- * Copyright 2005, 2014 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2014-05-01T17:11Z
- */
-
-(function( global, factory ) {
-
-	if ( typeof module === "object" && typeof module.exports === "object" ) {
-		// For CommonJS and CommonJS-like environments where a proper window is present,
-		// execute the factory and get jQuery
-		// For environments that do not inherently posses a window with a document
-		// (such as Node.js), expose a jQuery-making factory as module.exports
-		// This accentuates the need for the creation of a real window
-		// e.g. var jQuery = require("jquery")(window);
-		// See ticket #14549 for more info
-		module.exports = global.document ?
-			factory( global, true ) :
-			function( w ) {
-				if ( !w.document ) {
-					throw new Error( "jQuery requires a window with a document" );
-				}
-				return factory( w );
-			};
-	} else {
-		factory( global );
-	}
-
-// Pass this if window is not defined yet
-}(typeof window !== "undefined" ? window : this, function( window, noGlobal ) {
-
-// Can't do this because several apps including ASP.NET trace
-// the stack via arguments.caller.callee and Firefox dies if
-// you try to trace through "use strict" call chains. (#13335)
-// Support: Firefox 18+
-//
-
-var arr = [];
-
-var slice = arr.slice;
-
-var concat = arr.concat;
-
-var push = arr.push;
-
-var indexOf = arr.indexOf;
-
-var class2type = {};
-
-var toString = class2type.toString;
-
-var hasOwn = class2type.hasOwnProperty;
-
-var support = {};
-
-
-
-var
-	// Use the correct document accordingly with window argument (sandbox)
-	document = window.document,
-
-	version = "2.1.1",
-
-	// Define a local copy of jQuery
-	jQuery = function( selector, context ) {
-		// The jQuery object is actually just the init constructor 'enhanced'
-		// Need init if jQuery is called (just allow error to be thrown if not included)
-		return new jQuery.fn.init( selector, context );
-	},
-
-	// Support: Android<4.1
-	// Make sure we trim BOM and NBSP
-	rtrim = /^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,
-
-	// Matches dashed string for camelizing
-	rmsPrefix = /^-ms-/,
-	rdashAlpha = /-([\da-z])/gi,
-
-	// Used by jQuery.camelCase as callback to replace()
-	fcamelCase = function( all, letter ) {
-		return letter.toUpperCase();
-	};
-
-jQuery.fn = jQuery.prototype = {
-	// The current version of jQuery being used
-	jquery: version,
-
-	constructor: jQuery,
-
-	// Start with an empty selector
-	selector: "",
-
-	// The default length of a jQuery object is 0
-	length: 0,
-
-	toArray: function() {
-		return slice.call( this );
-	},
-
-	// Get the Nth element in the matched element set OR
-	// Get the whole matched element set as a clean array
-	get: function( num ) {
-		return num != null ?
-
-			// Return just the one element from the set
-			( num < 0 ? this[ num + this.length ] : this[ num ] ) :
-
-			// Return all the elements in a clean array
-			slice.call( this );
-	},
-
-	// Take an array of elements and push it onto the stack
-	// (returning the new matched element set)
-	pushStack: function( elems ) {
-
-		// Build a new jQuery matched element set
-		var ret = jQuery.merge( this.constructor(), elems );
-
-		// Add the old object onto the stack (as a reference)
-		ret.prevObject = this;
-		ret.context = this.context;
-
-		// Return the newly-formed element set
-		return ret;
-	},
-
-	// Execute a callback for every element in the matched set.
-	// (You can seed the arguments with an array of args, but this is
-	// only used internally.)
-	each: function( callback, args ) {
-		return jQuery.each( this, callback, args );
-	},
-
-	map: function( callback ) {
-		return this.pushStack( jQuery.map(this, function( elem, i ) {
-			return callback.call( elem, i, elem );
-		}));
-	},
-
-	slice: function() {
-		return this.pushStack( slice.apply( this, arguments ) );
-	},
-
-	first: function() {
-		return this.eq( 0 );
-	},
-
-	last: function() {
-		return this.eq( -1 );
-	},
-
-	eq: function( i ) {
-		var len = this.length,
-			j = +i + ( i < 0 ? len : 0 );
-		return this.pushStack( j >= 0 && j < len ? [ this[j] ] : [] );
-	},
-
-	end: function() {
-		return this.prevObject || this.constructor(null);
-	},
-
-	// For internal use only.
-	// Behaves like an Array's method, not like a jQuery method.
-	push: push,
-	sort: arr.sort,
-	splice: arr.splice
-};
-
-jQuery.extend = jQuery.fn.extend = function() {
-	var options, name, src, copy, copyIsArray, clone,
-		target = arguments[0] || {},
-		i = 1,
-		length = arguments.length,
-		deep = false;
-
-	// Handle a deep copy situation
-	if ( typeof target === "boolean" ) {
-		deep = target;
-
-		// skip the boolean and the target
-		target = arguments[ i ] || {};
-		i++;
-	}
-
-	// Handle case when target is a string or something (possible in deep copy)
-	if ( typeof target !== "object" && !jQuery.isFunction(target) ) {
-		target = {};
-	}
-
-	// extend jQuery itself if only one argument is passed
-	if ( i === length ) {
-		target = this;
-		i--;
-	}
-
-	for ( ; i < length; i++ ) {
-		// Only deal with non-null/undefined values
-		if ( (options = arguments[ i ]) != null ) {
-			// Extend the base object
-			for ( name in options ) {
-				src = target[ name ];
-				copy = options[ name ];
-
-				// Prevent never-ending loop
-				if ( target === copy ) {
-					continue;
-				}
-
-				// Recurse if we're merging plain objects or arrays
-				if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
-					if ( copyIsArray ) {
-						copyIsArray = false;
-						clone = src && jQuery.isArray(src) ? src : [];
-
-					} else {
-						clone = src && jQuery.isPlainObject(src) ? src : {};
-					}
-
-					// Never move original objects, clone them
-					target[ name ] = jQuery.extend( deep, clone, copy );
-
-				// Don't bring in undefined values
-				} else if ( copy !== undefined ) {
-					target[ name ] = copy;
-				}
-			}
-		}
-	}
-
-	// Return the modified object
-	return target;
-};
-
-jQuery.extend({
-	// Unique for each copy of jQuery on the page
-	expando: "jQuery" + ( version + Math.random() ).replace( /\D/g, "" ),
-
-	// Assume jQuery is ready without the ready module
-	isReady: true,
-
-	error: function( msg ) {
-		throw new Error( msg );
-	},
-
-	noop: function() {},
-
-	// See test/unit/core.js for details concerning isFunction.
-	// Since version 1.3, DOM methods and functions like alert
-	// aren't supported. They return false on IE (#2968).
-	isFunction: function( obj ) {
-		return jQuery.type(obj) === "function";
-	},
-
-	isArray: Array.isArray,
-
-	isWindow: function( obj ) {
-		return obj != null && obj === obj.window;
-	},
-
-	isNumeric: function( obj ) {
-		// parseFloat NaNs numeric-cast false positives (null|true|false|"")
-		// ...but misinterprets leading-number strings, particularly hex literals ("0x...")
-		// subtraction forces infinities to NaN
-		return !jQuery.isArray( obj ) && obj - parseFloat( obj ) >= 0;
-	},
-
-	isPlainObject: function( obj ) {
-		// Not plain objects:
-		// - Any object or value whose internal [[Class]] property is not "[object Object]"
-		// - DOM nodes
-		// - window
-		if ( jQuery.type( obj ) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
-			return false;
-		}
-
-		if ( obj.constructor &&
-				!hasOwn.call( obj.constructor.prototype, "isPrototypeOf" ) ) {
-			return false;
-		}
-
-		// If the function hasn't returned already, we're confident that
-		// |obj| is a plain object, created by {} or constructed with new Object
-		return true;
-	},
-
-	isEmptyObject: function( obj ) {
-		var name;
-		for ( name in obj ) {
-			return false;
-		}
-		return true;
-	},
-
-	type: function( obj ) {
-		if ( obj == null ) {
-			return obj + "";
-		}
-		// Support: Android < 4.0, iOS < 6 (functionish RegExp)
-		return typeof obj === "object" || typeof obj === "function" ?
-			class2type[ toString.call(obj) ] || "object" :
-			typeof obj;
-	},
-
-	// Evaluates a script in a global context
-	globalEval: function( code ) {
-		var script,
-			indirect = eval;
-
-		code = jQuery.trim( code );
-
-		if ( code ) {
-			// If the code includes a valid, prologue position
-			// strict mode pragma, execute code by injecting a
-			// script tag into the document.
-			if ( code.indexOf("use strict") === 1 ) {
-				script = document.createElement("script");
-				script.text = code;
-				document.head.appendChild( script ).parentNode.removeChild( script );
-			} else {
-			// Otherwise, avoid the DOM node creation, insertion
-			// and removal by using an indirect global eval
-				indirect( code );
-			}
-		}
-	},
-
-	// Convert dashed to camelCase; used by the css and data modules
-	// Microsoft forgot to hump their vendor prefix (#9572)
-	camelCase: function( string ) {
-		return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
-	},
-
-	nodeName: function( elem, name ) {
-		return elem.nodeName && elem.nodeName.toLowerCase() === name.toLowerCase();
-	},
-
-	// args is for internal usage only
-	each: function( obj, callback, args ) {
-		var value,
-			i = 0,
-			length = obj.length,
-			isArray = isArraylike( obj );
-
-		if ( args ) {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.apply( obj[ i ], args );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-
-		// A special, fast, case for the most common use of each
-		} else {
-			if ( isArray ) {
-				for ( ; i < length; i++ ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			} else {
-				for ( i in obj ) {
-					value = callback.call( obj[ i ], i, obj[ i ] );
-
-					if ( value === false ) {
-						break;
-					}
-				}
-			}
-		}
-
-		return obj;
-	},
-
-	// Support: Android<4.1
-	trim: function( text ) {
-		return text == null ?
-			"" :
-			( text + "" ).replace( rtrim, "" );
-	},
-
-	// results is for internal usage only
-	makeArray: function( arr, results ) {
-		var ret = results || [];
-
-		if ( arr != null ) {
-			if ( isArraylike( Object(arr) ) ) {
-				jQuery.merge( ret,
-					typeof arr === "string" ?
-					[ arr ] : arr
-				);
-			} else {
-				push.call( ret, arr );
-			}
-		}
-
-		return ret;
-	},
-
-	inArray: function( elem, arr, i ) {
-		return arr == null ? -1 : indexOf.call( arr, elem, i );
-	},
-
-	merge: function( first, second ) {
-		var len = +second.length,
-			j = 0,
-			i = first.length;
-
-		for ( ; j < len; j++ ) {
-			first[ i++ ] = second[ j ];
-		}
-
-		first.length = i;
-
-		return first;
-	},
-
-	grep: function( elems, callback, invert ) {
-		var callbackInverse,
-			matches = [],
-			i = 0,
-			length = elems.length,
-			callbackExpect = !invert;
-
-		// Go through the array, only saving the items
-		// that pass the validator function
-		for ( ; i < length; i++ ) {
-			callbackInverse = !callback( elems[ i ], i );
-			if ( callbackInverse !== callbackExpect ) {
-				matches.push( elems[ i ] );
-			}
-		}
-
-		return matches;
-	},
-
-	// arg is for internal usage only
-	map: function( elems, callback, arg ) {
-		var value,
-			i = 0,
-			length = elems.length,
-			isArray = isArraylike( elems ),
-			ret = [];
-
-		// Go through the array, translating each of the items to their new values
-		if ( isArray ) {
-			for ( ; i < length; i++ ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-
-		// Go through every key on the object,
-		} else {
-			for ( i in elems ) {
-				value = callback( elems[ i ], i, arg );
-
-				if ( value != null ) {
-					ret.push( value );
-				}
-			}
-		}
-
-		// Flatten any nested arrays
-		return concat.apply( [], ret );
-	},
-
-	// A global GUID counter for objects
-	guid: 1,
-
-	// Bind a function to a context, optionally partially applying any
-	// arguments.
-	proxy: function( fn, context ) {
-		var tmp, args, proxy;
-
-		if ( typeof context === "string" ) {
-			tmp = fn[ context ];
-			context = fn;
-			fn = tmp;
-		}
-
-		// Quick check to determine if target is callable, in the spec
-		// this throws a TypeError, but we will just return undefined.
-		if ( !jQuery.isFunction( fn ) ) {
-			return undefined;
-		}
-
-		// Simulated bind
-		args = slice.call( arguments, 2 );
-		proxy = function() {
-			return fn.apply( context || this, args.concat( slice.call( arguments ) ) );
-		};
-
-		// Set the guid of unique handler to the same of original handler, so it can be removed
-		proxy.guid = fn.guid = fn.guid || jQuery.guid++;
-
-		return proxy;
-	},
-
-	now: Date.now,
-
-	// jQuery.support is not used in Core but other projects attach their
-	// properties to it so it needs to exist.
-	support: support
-});
-
-// Populate the class2type map
-jQuery.each("Boolean Number String Function Array Date RegExp Object Error".split(" "), function(i, name) {
-	class2type[ "[object " + name + "]" ] = name.toLowerCase();
-});
-
-function isArraylike( obj ) {
-	var length = obj.length,
-		type = jQuery.type( obj );
-
-	if ( type === "function" || jQuery.isWindow( obj ) ) {
-		return false;
-	}
-
-	if ( obj.nodeType === 1 && length ) {
-		return true;
-	}
-
-	return type === "array" || length === 0 ||
-		typeof length === "number" && length > 0 && ( length - 1 ) in obj;
-}
-var Sizzle =
-/*!
- * Sizzle CSS Selector Engine v1.10.19
- * http://sizzlejs.com/
- *
- * Copyright 2013 jQuery Foundation, Inc. and other contributors
- * Released under the MIT license
- * http://jquery.org/license
- *
- * Date: 2014-04-18
- */
-(function( window ) {
-
-var i,
-	support,
-	Expr,
-	getText,
-	isXML,
-	tokenize,
-	compile,
-	select,
-	outermostContext,
-	sortInput,
-	hasDuplicate,
-
-	// Local document vars
-	setDocument,
-	document,
-	docElem,
-	documentIsHTML,
-	rbuggyQSA,
-	rbuggyMatches,
-	matches,
-	contains,
-
-	// Instance-specific data
-	expando = "sizzle" + -(new Date()),
-	preferredDoc = window.document,
-	dirruns = 0,
-	done = 0,
-	classCache = createCache(),
-	tokenCache = createCache(),
-	compilerCache = createCache(),
-	sortOrder = function( a, b ) {
-		if ( a === b ) {
-			hasDuplicate = true;
-		}
-		return 0;
-	},
-
-	// General-purpose constants
-	strundefined = typeof undefined,
-	MAX_NEGATIVE = 1 << 31,
-
-	// Instance methods
-	hasOwn = ({}).hasOwnProperty,
-	arr = [],
-	pop = arr.pop,
-	push_native = arr.push,
-	push = arr.push,
-	slice = arr.slice,
-	// Use a stripped-down indexOf if we can't use a native one
-	indexOf = arr.indexOf || function( elem ) {
-		var i = 0,
-			len = this.length;
-		for ( ; i < len; i++ ) {
-			if ( this[i] === elem ) {
-				return i;
-			}
-		}
-		return -1;
-	},
-
-	booleans = "checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",
-
-	// Regular expressions
-
-	// Whitespace characters http://www.w3.org/TR/css3-selectors/#whitespace
-	whitespace = "[\\x20\\t\\r\\n\\f]",
-	// http://www.w3.org/TR/css3-syntax/#characters
-	characterEncoding = "(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",
-
-	// Loosely modeled on CSS identifier characters
-	// An unquoted value should be a CSS identifier http://www.w3.org/TR/css3-selectors/#attribute-selectors
-	// Proper syntax: http://www.w3.org/TR/CSS21/syndata.html#value-def-identifier
-	identifier = characterEncoding.replace( "w", "w#" ),
-
-	// Attribute selectors: http://www.w3.org/TR/selectors/#attribute-selectors
-	attributes = "\\[" + whitespace + "*(" + characterEncoding + ")(?:" + whitespace +
-		// Operator (capture 2)
-		"*([*^$|!~]?=)" + whitespace +
-		// "Attribute values must be CSS identifiers [capture 5] or strings [capture 3 or capture 4]"
-		"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|(" + identifier + "))|)" + whitespace +
-		"*\\]",
-
-	pseudos = ":(" + characterEncoding + ")(?:\\((" +
-		// To reduce the number of selectors needing tokenize in the preFilter, prefer arguments:
-		// 1. quoted (capture 3; capture 4 or capture 5)
-		"('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|" +
-		// 2. simple (capture 6)
-		"((?:\\\\.|[^\\\\()[\\]]|" + attributes + ")*)|" +
-		// 3. anything else (capture 2)
-		".*" +
-		")\\)|)",
-
-	// Leading and non-escaped trailing whitespace, capturing some non-whitespace characters preceding the latter
-	rtrim = new RegExp( "^" + whitespace + "+|((?:^|[^\\\\])(?:\\\\.)*)" + whitespace + "+$", "g" ),
-
-	rcomma = new RegExp( "^" + whitespace + "*," + whitespace + "*" ),
-	rcombinators = new RegExp( "^" + whitespace + "*([>+~]|" + whitespace + ")" + whitespace + "*" ),
-
-	rattributeQuotes = new RegExp( "=" + whitespace + "*([^\\]'\"]*?)" + whitespace + "*\\]", "g" ),
-
-	rpseudo = new RegExp( pseudos ),
-	ridentifier = new RegExp( "^" + identifier + "$" ),
-
-	matchExpr = {
-		"ID": new RegExp( "^#(" + characterEncoding + ")" ),
-		"CLASS": new RegExp( "^\\.(" + characterEncoding + ")" ),
-		"TAG": new RegExp( "^(" + characterEncoding.replace( "w", "w*" ) + ")" ),
-		"ATTR": new RegExp( "^" + attributes ),
-		"PSEUDO": new RegExp( "^" + pseudos ),
-		"CHILD": new RegExp( "^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\(" + whitespace +
-			"*(even|odd|(([+-]|)(\\d*)n|)" + whitespace + "*(?:([+-]|)" + whitespace +
-			"*(\\d+)|))" + whitespace + "*\\)|)", "i" ),
-		"bool": new RegExp( "^(?:" + booleans + ")$", "i" ),
-		// For use in libraries implementing .is()
-		// We use this for POS matching in `select`
-		"needsContext": new RegExp( "^" + whitespace + "*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\(" +
-			whitespace + "*((?:-\\d)?\\d*)" + whitespace + "*\\)|)(?=[^-]|$)", "i" )
-	},
-
-	rinputs = /^(?:input|select|textarea|button)$/i,
-	rheader = /^h\d$/i,
-
-	rnative = /^[^{]+\{\s*\[native \w/,
-
-	// Easily-parseable/retrievable ID or TAG or CLASS selectors
-	rquickExpr = /^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,
-
-	rsibling = /[+~]/,
-	rescape = /'|\\/g,
-
-	// CSS escapes http://www.w3.org/TR/CSS21/syndata.html#escaped-characters
-	runescape = new RegExp( "\\\\([\\da-f]{1,6}" + whitespace + "?|(" + whitespace + ")|.)", "ig" ),
-	funescape = function( _, escaped, escapedWhitespace ) {
-		var high = "0x" + escaped - 0x10000;
-		// NaN means non-codepoint
-		// Support: Firefox<24
-		// Workaround erroneous numeric interpretation of +"0x"
-		return high !== high || escapedWhitespace ?
-			escaped :
-			high < 0 ?
-				// BMP codepoint
-				String.fromCharCode( high + 0x10000 ) :
-				// Supplemental Plane codepoint (surrogate pair)
-				String.fromCharCode( high >> 10 | 0xD800, high & 0x3FF | 0xDC00 );
-	};
-
-// Optimize for push.apply( _, NodeList )
-try {
-	push.apply(
-		(arr = slice.call( preferredDoc.childNodes )),
-		preferredDoc.childNodes
-	);
-	// Support: Android<4.0
-	// Detect silently failing push.apply
-	arr[ preferredDoc.childNodes.length ].nodeType;
-} catch ( e ) {
-	push = { apply: arr.length ?
-
-		// Leverage slice if possible
-		function( target, els ) {
-			push_native.apply( target, slice.call(els) );
-		} :
-
-		// Support: IE<9
-		// Otherwise append directly
-		function( target, els ) {
-			var j = target.length,
-				i = 0;
-			// Can't trust NodeList.length
-			while ( (target[j++] = els[i++]) ) {}
-			target.length = j - 1;
-		}
-	};
-}
-
-function Sizzle( selector, context, results, seed ) {
-	var match, elem, m, nodeType,
-		// QSA vars
-		i, groups, old, nid, newContext, newSelector;
-
-	if ( ( context ? context.ownerDocument || context : preferredDoc ) !== document ) {
-		setDocument( context );
-	}
-
-	context = context || document;
-	results = results || [];
-
-	if ( !selector || typeof selector !== "string" ) {
-		return results;
-	}
-
-	if ( (nodeType = context.nodeType) !== 1 && nodeType !== 9 ) {
-		return [];
-	}
-
-	if ( documentIsHTML && !seed ) {
-
-		// Shortcuts
-		if ( (match = rquickExpr.exec( selector )) ) {
-			// Speed-up: Sizzle("#ID")
-			if ( (m = match[1]) ) {
-				if ( nodeType === 9 ) {
-					elem = context.getElementById( m );
-					// Check parentNode to catch when Blackberry 4.6 returns
-					// nodes that are no longer in the document (jQuery #6963)
-					if ( elem && elem.parentNode ) {
-						// Handle the case where IE, Opera, and Webkit return items
-						// by name instead of ID
-						if ( elem.id === m ) {
-							results.push( elem );
-							return results;
-						}
-					} else {
-						return results;
-					}
-				} else {
-					// Context is not a document
-					if ( context.ownerDocument && (elem = context.ownerDocument.getElementById( m )) &&
-						contains( context, elem ) && elem.id === m ) {
-						results.push( elem );
-						return results;
-					}
-				}
-
-			// Speed-up: Sizzle("TAG")
-			} else if ( match[2] ) {
-				push.apply( results, context.getElementsByTagName( selector ) );
-				return results;
-
-			// Speed-up: Sizzle(".CLASS")
-			} else if ( (m = match[3]) && support.getElementsByClassName && context.getElementsByClassName ) {
-				push.apply( results, context.getElementsByClassName( m ) );
-				return results;
-			}
-		}
-
-		// QSA path
-		if ( support.qsa && (!rbuggyQSA || !rbuggyQSA.test( selector )) ) {
-			nid = old = expando;
-			newContext = context;
-			newSelector = nodeType === 9 && selector;
-
-			// qSA works strangely on Element-rooted queries
-			// We can work around this by specifying an extra ID on the root
-			// and working up from there (Thanks to Andrew Dupont for the technique)
-			// IE 8 doesn't work on object elements
-			if ( nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
-				groups = tokenize( selector );
-
-				if ( (old = context.getAttribute("id")) ) {
-					nid = old.replace( rescape, "\\$&" );
-				} else {
-					context.setAttribute( "id", nid );
-				}
-				nid = "[id='" + nid + "'] ";
-
-				i = groups.length;
-				while ( i-- ) {
-					groups[i] = nid + toSelector( groups[i] );
-				}
-				newContext = rsibling.test( selector ) && testContext( context.parentNode ) || context;
-				newSelector = groups.join(",");
-			}
-
-			if ( newSelector ) {
-				try {
-					push.apply( results,
-						newContext.querySelectorAll( newSelector )
-					);
-					return results;
-				} catch(qsaError) {
-				} finally {
-					if ( !old ) {
-						context.removeAttribute("id");
-					}
-				}
-			}
-		}
-	}
-
-	// All others
-	return select( selector.replace( rtrim, "$1" ), context, results, seed );
-}
-
-/**
- * Create key-value caches of limited size
- * @returns {Function(string, Object)} Returns the Object data after storing it on itself with
- *	property name the (space-suffixed) string and (if the cache is larger than Expr.cacheLength)
- *	deleting the oldest entry
- */
-function createCache() {
-	var keys = [];
-
-	function cache( key, value ) {
-		// Use (key + " ") to avoid collision with native prototype properties (see Issue #157)
-		if ( keys.push( key + " " ) > Expr.cacheLength ) {
-			// Only keep the most recent entries
-			delete cache[ keys.shift() ];
-		}
-		return (cache[ key + " " ] = value);
-	}
-	return cache;
-}
-
-/**
- * Mark a function for special use by Sizzle
- * @param {Function} fn The function to mark
- */
-function markFunction( fn ) {
-	fn[ expando ] = true;
-	return fn;
-}
-
-/**
- * Support testing using an element
- * @param {Function} fn Passed the created div and expects a boolean result
- */
-function assert( fn ) {
-	var div = document.createElement("div");
-
-	try {
-		return !!fn( div );
-	} catch (e) {
-		return false;
-	} finally {
-		// Remove from its parent by default
-		if ( div.parentNode ) {
-			div.parentNode.removeChild( div );
-		}
-		// release memory in IE
-		div = null;
-	}
-}
-
-/**
- * Adds the same handler for all of the specified attrs
- * @param {String} attrs Pipe-separated list of attributes
- * @param {Function} handler The method that will be applied
- */
-function addHandle( attrs, handler ) {
-	var arr = attrs.split("|"),
-		i = attrs.length;
-
-	while ( i-- ) {
-		Expr.attrHandle[ arr[i] ] = handler;
-	}
-}
-
-/**
- * Checks document order of two siblings
- * @param {Element} a
- * @param {Element} b
- * @returns {Number} Returns less than 0 if a precedes b, greater than 0 if a follows b
- */
-function siblingCheck( a, b ) {
-	var cur = b && a,
-		diff = cur && a.nodeType === 1 && b.nodeType === 1 &&
-			( ~b.sourceIndex || MAX_NEGATIVE ) -
-			( ~a.sourceIndex || MAX_NEGATIVE );
-
-	// Use IE sourceIndex if available on both nodes
-	if ( diff ) {
-		return diff;
-	}
-
-	// Check if b follows a
-	if ( cur ) {
-		while ( (cur = cur.nextSibling) ) {
-			if ( cur === b ) {
-				return -1;
-			}
-		}
-	}
-
-	return a ? 1 : -1;
-}
-
-/**
- * Returns a function to use in pseudos for input types
- * @param {String} type
- */
-function createInputPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return name === "input" && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for buttons
- * @param {String} type
- */
-function createButtonPseudo( type ) {
-	return function( elem ) {
-		var name = elem.nodeName.toLowerCase();
-		return (name === "input" || name === "button") && elem.type === type;
-	};
-}
-
-/**
- * Returns a function to use in pseudos for positionals
- * @param {Function} fn
- */
-function createPositionalPseudo( fn ) {
-	return markFunction(function( argument ) {
-		argument = +argument;
-		return markFunction(function( seed, matches ) {
-			var j,
-				matchIndexes = fn( [], seed.length, argument ),
-				i = matchIndexes.length;
-
-			// Match elements found at the specified indexes
-			while ( i-- ) {
-				if ( seed[ (j = matchIndexes[i]) ] ) {
-					seed[j] = !(matches[j] = seed[j]);
-				}
-			}
-		});
-	});
-}
-
-/**
- * Checks a node for validity as a Sizzle context
- * @param {Element|Object=} context
- * @returns {Element|Object|Boolean} The input node if acceptable, otherwise a falsy value
- */
-function testContext( context ) {
-	return context && typeof context.getElementsByTagName !== strundefined && context;
-}
-
-// Expose support vars for convenience
-support = Sizzle.support = {};
-
-/**
- * Detects XML nodes
- * @param {Element|Object} elem An element or a document
- * @returns {Boolean} True iff elem is a non-HTML XML node
- */
-isXML = Sizzle.isXML = function( elem ) {
-	// documentElement is verified for cases where it doesn't yet exist
-	// (such as loading iframes in IE - #4833)
-	var documentElement = elem && (elem.ownerDocument || elem).documentElement;
-	return documentElement ? documentElement.nodeName !== "HTML" : false;
-};
-
-/**
- * Sets document-related variables once based on the current document
- * @param {Element|Object} [doc] An element or document object to use to set the document
- * @returns {Object} Returns the current document
- */
-setDocument = Sizzle.setDocument = function( node ) {
-	var hasCompare,
-		doc = node ? node.ownerDocument || node : preferredDoc,
-		parent = doc.defaultView;
-
-	// If no document and documentElement is available, return
-	if ( doc === document || doc.nodeType !== 9 || !doc.documentElement ) {
-		return document;
-	}
-
-	// Set our document
-	document = doc;
-	docElem = doc.documentElement;
-
-	// Support tests
-	documentIsHTML = !isXML( doc );
-
-	// Support: IE>8
-	// If iframe document is assigned to "document" variable and if iframe has been reloaded,
-	// IE will throw "permission denied" error when accessing "document" variable, see jQuery #13936
-	// IE6-8 do not support the defaultView property so parent will be undefined
-	if ( parent && parent !== parent.top ) {
-		// IE11 does not have attachEvent, so all must suffer
-		if ( parent.addEventListener ) {
-			parent.addEventListener( "unload", function() {
-				setDocument();
-			}, false );
-		} else if ( parent.attachEvent ) {
-			parent.attachEvent( "onunload", function() {
-				setDocument();
-			});
-		}
-	}
-
-	/* Attributes
-	---------------------------------------------------------------------- */
-
-	// Support: IE<8
-	// Verify that getAttribute really returns attributes and not properties (excepting IE8 booleans)
-	support.attributes = assert(function( div ) {
-		div.className = "i";
-		return !div.getAttribute("className");
-	});
-
-	/* getElement(s)By*
-	---------------------------------------------------------------------- */
-
-	// Check if getElementsByTagName("*") returns only elements
-	support.getElementsByTagName = assert(function( div ) {
-		div.appendChild( doc.createComment("") );
-		return !div.getElementsByTagName("*").length;
-	});
-
-	// Check if getElementsByClassName can be trusted
-	support.getElementsByClassName = rnative.test( doc.getElementsByClassName ) && assert(function( div ) {
-		div.innerHTML = "
";
-
-		// Support: Safari<4
-		// Catch class over-caching
-		div.firstChild.className = "i";
-		// Support: Opera<10
-		// Catch gEBCN failure to find non-leading classes
-		return div.getElementsByClassName("i").length === 2;
-	});
-
-	// Support: IE<10
-	// Check if getElementById returns elements by name
-	// The broken getElementById methods don't pick up programatically-set names,
-	// so use a roundabout getElementsByName test
-	support.getById = assert(function( div ) {
-		docElem.appendChild( div ).id = expando;
-		return !doc.getElementsByName || !doc.getElementsByName( expando ).length;
-	});
-
-	// ID find and filter
-	if ( support.getById ) {
-		Expr.find["ID"] = function( id, context ) {
-			if ( typeof context.getElementById !== strundefined && documentIsHTML ) {
-				var m = context.getElementById( id );
-				// Check parentNode to catch when Blackberry 4.6 returns
-				// nodes that are no longer in the document #6963
-				return m && m.parentNode ? [ m ] : [];
-			}
-		};
-		Expr.filter["ID"] = function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				return elem.getAttribute("id") === attrId;
-			};
-		};
-	} else {
-		// Support: IE6/7
-		// getElementById is not reliable as a find shortcut
-		delete Expr.find["ID"];
-
-		Expr.filter["ID"] =  function( id ) {
-			var attrId = id.replace( runescape, funescape );
-			return function( elem ) {
-				var node = typeof elem.getAttributeNode !== strundefined && elem.getAttributeNode("id");
-				return node && node.value === attrId;
-			};
-		};
-	}
-
-	// Tag
-	Expr.find["TAG"] = support.getElementsByTagName ?
-		function( tag, context ) {
-			if ( typeof context.getElementsByTagName !== strundefined ) {
-				return context.getElementsByTagName( tag );
-			}
-		} :
-		function( tag, context ) {
-			var elem,
-				tmp = [],
-				i = 0,
-				results = context.getElementsByTagName( tag );
-
-			// Filter out possible comments
-			if ( tag === "*" ) {
-				while ( (elem = results[i++]) ) {
-					if ( elem.nodeType === 1 ) {
-						tmp.push( elem );
-					}
-				}
-
-				return tmp;
-			}
-			return results;
-		};
-
-	// Class
-	Expr.find["CLASS"] = support.getElementsByClassName && function( className, context ) {
-		if ( typeof context.getElementsByClassName !== strundefined && documentIsHTML ) {
-			return context.getElementsByClassName( className );
-		}
-	};
-
-	/* QSA/matchesSelector
-	---------------------------------------------------------------------- */
-
-	// QSA and matchesSelector support
-
-	// matchesSelector(:active) reports false when true (IE9/Opera 11.5)
-	rbuggyMatches = [];
-
-	// qSa(:focus) reports false when true (Chrome 21)
-	// We allow this because of a bug in IE8/9 that throws an error
-	// whenever `document.activeElement` is accessed on an iframe
-	// So, we allow :focus to pass through QSA all the time to avoid the IE error
-	// See http://bugs.jquery.com/ticket/13378
-	rbuggyQSA = [];
-
-	if ( (support.qsa = rnative.test( doc.querySelectorAll )) ) {
-		// Build QSA regex
-		// Regex strategy adopted from Diego Perini
-		assert(function( div ) {
-			// Select is set to empty string on purpose
-			// This is to test IE's treatment of not explicitly
-			// setting a boolean content attribute,
-			// since its presence should be enough
-			// http://bugs.jquery.com/ticket/12359
-			div.innerHTML = " ";
-
-			// Support: IE8, Opera 11-12.16
-			// Nothing should be selected when empty strings follow ^= or $= or *=
-			// The test attribute must be unknown in Opera but "safe" for WinRT
-			// http://msdn.microsoft.com/en-us/library/ie/hh465388.aspx#attribute_section
-			if ( div.querySelectorAll("[msallowclip^='']").length ) {
-				rbuggyQSA.push( "[*^$]=" + whitespace + "*(?:''|\"\")" );
-			}
-
-			// Support: IE8
-			// Boolean attributes and "value" are not treated correctly
-			if ( !div.querySelectorAll("[selected]").length ) {
-				rbuggyQSA.push( "\\[" + whitespace + "*(?:value|" + booleans + ")" );
-			}
-
-			// Webkit/Opera - :checked should return selected option elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":checked").length ) {
-				rbuggyQSA.push(":checked");
-			}
-		});
-
-		assert(function( div ) {
-			// Support: Windows 8 Native Apps
-			// The type and name attributes are restricted during .innerHTML assignment
-			var input = doc.createElement("input");
-			input.setAttribute( "type", "hidden" );
-			div.appendChild( input ).setAttribute( "name", "D" );
-
-			// Support: IE8
-			// Enforce case-sensitivity of name attribute
-			if ( div.querySelectorAll("[name=d]").length ) {
-				rbuggyQSA.push( "name" + whitespace + "*[*^$|!~]?=" );
-			}
-
-			// FF 3.5 - :enabled/:disabled and hidden elements (hidden elements are still enabled)
-			// IE8 throws error here and will not see later tests
-			if ( !div.querySelectorAll(":enabled").length ) {
-				rbuggyQSA.push( ":enabled", ":disabled" );
-			}
-
-			// Opera 10-11 does not throw on post-comma invalid pseudos
-			div.querySelectorAll("*,:x");
-			rbuggyQSA.push(",.*:");
-		});
-	}
-
-	if ( (support.matchesSelector = rnative.test( (matches = docElem.matches ||
-		docElem.webkitMatchesSelector ||
-		docElem.mozMatchesSelector ||
-		docElem.oMatchesSelector ||
-		docElem.msMatchesSelector) )) ) {
-
-		assert(function( div ) {
-			// Check to see if it's possible to do matchesSelector
-			// on a disconnected node (IE 9)
-			support.disconnectedMatch = matches.call( div, "div" );
-
-			// This should fail with an exception
-			// Gecko does not error, returns false instead
-			matches.call( div, "[s!='']:x" );
-			rbuggyMatches.push( "!=", pseudos );
-		});
-	}
-
-	rbuggyQSA = rbuggyQSA.length && new RegExp( rbuggyQSA.join("|") );
-	rbuggyMatches = rbuggyMatches.length && new RegExp( rbuggyMatches.join("|") );
-
-	/* Contains
-	---------------------------------------------------------------------- */
-	hasCompare = rnative.test( docElem.compareDocumentPosition );
-
-	// Element contains another
-	// Purposefully does not implement inclusive descendent
-	// As in, an element does not contain itself
-	contains = hasCompare || rnative.test( docElem.contains ) ?
-		function( a, b ) {
-			var adown = a.nodeType === 9 ? a.documentElement : a,
-				bup = b && b.parentNode;
-			return a === bup || !!( bup && bup.nodeType === 1 && (
-				adown.contains ?
-					adown.contains( bup ) :
-					a.compareDocumentPosition && a.compareDocumentPosition( bup ) & 16
-			));
-		} :
-		function( a, b ) {
-			if ( b ) {
-				while ( (b = b.parentNode) ) {
-					if ( b === a ) {
-						return true;
-					}
-				}
-			}
-			return false;
-		};
-
-	/* Sorting
-	---------------------------------------------------------------------- */
-
-	// Document order sorting
-	sortOrder = hasCompare ?
-	function( a, b ) {
-
-		// Flag for duplicate removal
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		// Sort on method existence if only one input has compareDocumentPosition
-		var compare = !a.compareDocumentPosition - !b.compareDocumentPosition;
-		if ( compare ) {
-			return compare;
-		}
-
-		// Calculate position if both inputs belong to the same document
-		compare = ( a.ownerDocument || a ) === ( b.ownerDocument || b ) ?
-			a.compareDocumentPosition( b ) :
-
-			// Otherwise we know they are disconnected
-			1;
-
-		// Disconnected nodes
-		if ( compare & 1 ||
-			(!support.sortDetached && b.compareDocumentPosition( a ) === compare) ) {
-
-			// Choose the first element that is related to our preferred document
-			if ( a === doc || a.ownerDocument === preferredDoc && contains(preferredDoc, a) ) {
-				return -1;
-			}
-			if ( b === doc || b.ownerDocument === preferredDoc && contains(preferredDoc, b) ) {
-				return 1;
-			}
-
-			// Maintain original order
-			return sortInput ?
-				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-				0;
-		}
-
-		return compare & 4 ? -1 : 1;
-	} :
-	function( a, b ) {
-		// Exit early if the nodes are identical
-		if ( a === b ) {
-			hasDuplicate = true;
-			return 0;
-		}
-
-		var cur,
-			i = 0,
-			aup = a.parentNode,
-			bup = b.parentNode,
-			ap = [ a ],
-			bp = [ b ];
-
-		// Parentless nodes are either documents or disconnected
-		if ( !aup || !bup ) {
-			return a === doc ? -1 :
-				b === doc ? 1 :
-				aup ? -1 :
-				bup ? 1 :
-				sortInput ?
-				( indexOf.call( sortInput, a ) - indexOf.call( sortInput, b ) ) :
-				0;
-
-		// If the nodes are siblings, we can do a quick check
-		} else if ( aup === bup ) {
-			return siblingCheck( a, b );
-		}
-
-		// Otherwise we need full lists of their ancestors for comparison
-		cur = a;
-		while ( (cur = cur.parentNode) ) {
-			ap.unshift( cur );
-		}
-		cur = b;
-		while ( (cur = cur.parentNode) ) {
-			bp.unshift( cur );
-		}
-
-		// Walk down the tree looking for a discrepancy
-		while ( ap[i] === bp[i] ) {
-			i++;
-		}
-
-		return i ?
-			// Do a sibling check if the nodes have a common ancestor
-			siblingCheck( ap[i], bp[i] ) :
-
-			// Otherwise nodes in our document sort first
-			ap[i] === preferredDoc ? -1 :
-			bp[i] === preferredDoc ? 1 :
-			0;
-	};
-
-	return doc;
-};
-
-Sizzle.matches = function( expr, elements ) {
-	return Sizzle( expr, null, null, elements );
-};
-
-Sizzle.matchesSelector = function( elem, expr ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	// Make sure that attribute selectors are quoted
-	expr = expr.replace( rattributeQuotes, "='$1']" );
-
-	if ( support.matchesSelector && documentIsHTML &&
-		( !rbuggyMatches || !rbuggyMatches.test( expr ) ) &&
-		( !rbuggyQSA     || !rbuggyQSA.test( expr ) ) ) {
-
-		try {
-			var ret = matches.call( elem, expr );
-
-			// IE 9's matchesSelector returns false on disconnected nodes
-			if ( ret || support.disconnectedMatch ||
-					// As well, disconnected nodes are said to be in a document
-					// fragment in IE 9
-					elem.document && elem.document.nodeType !== 11 ) {
-				return ret;
-			}
-		} catch(e) {}
-	}
-
-	return Sizzle( expr, document, null, [ elem ] ).length > 0;
-};
-
-Sizzle.contains = function( context, elem ) {
-	// Set document vars if needed
-	if ( ( context.ownerDocument || context ) !== document ) {
-		setDocument( context );
-	}
-	return contains( context, elem );
-};
-
-Sizzle.attr = function( elem, name ) {
-	// Set document vars if needed
-	if ( ( elem.ownerDocument || elem ) !== document ) {
-		setDocument( elem );
-	}
-
-	var fn = Expr.attrHandle[ name.toLowerCase() ],
-		// Don't get fooled by Object.prototype properties (jQuery #13807)
-		val = fn && hasOwn.call( Expr.attrHandle, name.toLowerCase() ) ?
-			fn( elem, name, !documentIsHTML ) :
-			undefined;
-
-	return val !== undefined ?
-		val :
-		support.attributes || !documentIsHTML ?
-			elem.getAttribute( name ) :
-			(val = elem.getAttributeNode(name)) && val.specified ?
-				val.value :
-				null;
-};
-
-Sizzle.error = function( msg ) {
-	throw new Error( "Syntax error, unrecognized expression: " + msg );
-};
-
-/**
- * Document sorting and removing duplicates
- * @param {ArrayLike} results
- */
-Sizzle.uniqueSort = function( results ) {
-	var elem,
-		duplicates = [],
-		j = 0,
-		i = 0;
-
-	// Unless we *know* we can detect duplicates, assume their presence
-	hasDuplicate = !support.detectDuplicates;
-	sortInput = !support.sortStable && results.slice( 0 );
-	results.sort( sortOrder );
-
-	if ( hasDuplicate ) {
-		while ( (elem = results[i++]) ) {
-			if ( elem === results[ i ] ) {
-				j = duplicates.push( i );
-			}
-		}
-		while ( j-- ) {
-			results.splice( duplicates[ j ], 1 );
-		}
-	}
-
-	// Clear input after sorting to release objects
-	// See https://github.com/jquery/sizzle/pull/225
-	sortInput = null;
-
-	return results;
-};
-
-/**
- * Utility function for retrieving the text value of an array of DOM nodes
- * @param {Array|Element} elem
- */
-getText = Sizzle.getText = function( elem ) {
-	var node,
-		ret = "",
-		i = 0,
-		nodeType = elem.nodeType;
-
-	if ( !nodeType ) {
-		// If no nodeType, this is expected to be an array
-		while ( (node = elem[i++]) ) {
-			// Do not traverse comment nodes
-			ret += getText( node );
-		}
-	} else if ( nodeType === 1 || nodeType === 9 || nodeType === 11 ) {
-		// Use textContent for elements
-		// innerText usage removed for consistency of new lines (jQuery #11153)
-		if ( typeof elem.textContent === "string" ) {
-			return elem.textContent;
-		} else {
-			// Traverse its children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				ret += getText( elem );
-			}
-		}
-	} else if ( nodeType === 3 || nodeType === 4 ) {
-		return elem.nodeValue;
-	}
-	// Do not include comment or processing instruction nodes
-
-	return ret;
-};
-
-Expr = Sizzle.selectors = {
-
-	// Can be adjusted by the user
-	cacheLength: 50,
-
-	createPseudo: markFunction,
-
-	match: matchExpr,
-
-	attrHandle: {},
-
-	find: {},
-
-	relative: {
-		">": { dir: "parentNode", first: true },
-		" ": { dir: "parentNode" },
-		"+": { dir: "previousSibling", first: true },
-		"~": { dir: "previousSibling" }
-	},
-
-	preFilter: {
-		"ATTR": function( match ) {
-			match[1] = match[1].replace( runescape, funescape );
-
-			// Move the given value to match[3] whether quoted or unquoted
-			match[3] = ( match[3] || match[4] || match[5] || "" ).replace( runescape, funescape );
-
-			if ( match[2] === "~=" ) {
-				match[3] = " " + match[3] + " ";
-			}
-
-			return match.slice( 0, 4 );
-		},
-
-		"CHILD": function( match ) {
-			/* matches from matchExpr["CHILD"]
-				1 type (only|nth|...)
-				2 what (child|of-type)
-				3 argument (even|odd|\d*|\d*n([+-]\d+)?|...)
-				4 xn-component of xn+y argument ([+-]?\d*n|)
-				5 sign of xn-component
-				6 x of xn-component
-				7 sign of y-component
-				8 y of y-component
-			*/
-			match[1] = match[1].toLowerCase();
-
-			if ( match[1].slice( 0, 3 ) === "nth" ) {
-				// nth-* requires argument
-				if ( !match[3] ) {
-					Sizzle.error( match[0] );
-				}
-
-				// numeric x and y parameters for Expr.filter.CHILD
-				// remember that false/true cast respectively to 0/1
-				match[4] = +( match[4] ? match[5] + (match[6] || 1) : 2 * ( match[3] === "even" || match[3] === "odd" ) );
-				match[5] = +( ( match[7] + match[8] ) || match[3] === "odd" );
-
-			// other types prohibit arguments
-			} else if ( match[3] ) {
-				Sizzle.error( match[0] );
-			}
-
-			return match;
-		},
-
-		"PSEUDO": function( match ) {
-			var excess,
-				unquoted = !match[6] && match[2];
-
-			if ( matchExpr["CHILD"].test( match[0] ) ) {
-				return null;
-			}
-
-			// Accept quoted arguments as-is
-			if ( match[3] ) {
-				match[2] = match[4] || match[5] || "";
-
-			// Strip excess characters from unquoted arguments
-			} else if ( unquoted && rpseudo.test( unquoted ) &&
-				// Get excess from tokenize (recursively)
-				(excess = tokenize( unquoted, true )) &&
-				// advance to the next closing parenthesis
-				(excess = unquoted.indexOf( ")", unquoted.length - excess ) - unquoted.length) ) {
-
-				// excess is a negative index
-				match[0] = match[0].slice( 0, excess );
-				match[2] = unquoted.slice( 0, excess );
-			}
-
-			// Return only captures needed by the pseudo filter method (type and argument)
-			return match.slice( 0, 3 );
-		}
-	},
-
-	filter: {
-
-		"TAG": function( nodeNameSelector ) {
-			var nodeName = nodeNameSelector.replace( runescape, funescape ).toLowerCase();
-			return nodeNameSelector === "*" ?
-				function() { return true; } :
-				function( elem ) {
-					return elem.nodeName && elem.nodeName.toLowerCase() === nodeName;
-				};
-		},
-
-		"CLASS": function( className ) {
-			var pattern = classCache[ className + " " ];
-
-			return pattern ||
-				(pattern = new RegExp( "(^|" + whitespace + ")" + className + "(" + whitespace + "|$)" )) &&
-				classCache( className, function( elem ) {
-					return pattern.test( typeof elem.className === "string" && elem.className || typeof elem.getAttribute !== strundefined && elem.getAttribute("class") || "" );
-				});
-		},
-
-		"ATTR": function( name, operator, check ) {
-			return function( elem ) {
-				var result = Sizzle.attr( elem, name );
-
-				if ( result == null ) {
-					return operator === "!=";
-				}
-				if ( !operator ) {
-					return true;
-				}
-
-				result += "";
-
-				return operator === "=" ? result === check :
-					operator === "!=" ? result !== check :
-					operator === "^=" ? check && result.indexOf( check ) === 0 :
-					operator === "*=" ? check && result.indexOf( check ) > -1 :
-					operator === "$=" ? check && result.slice( -check.length ) === check :
-					operator === "~=" ? ( " " + result + " " ).indexOf( check ) > -1 :
-					operator === "|=" ? result === check || result.slice( 0, check.length + 1 ) === check + "-" :
-					false;
-			};
-		},
-
-		"CHILD": function( type, what, argument, first, last ) {
-			var simple = type.slice( 0, 3 ) !== "nth",
-				forward = type.slice( -4 ) !== "last",
-				ofType = what === "of-type";
-
-			return first === 1 && last === 0 ?
-
-				// Shortcut for :nth-*(n)
-				function( elem ) {
-					return !!elem.parentNode;
-				} :
-
-				function( elem, context, xml ) {
-					var cache, outerCache, node, diff, nodeIndex, start,
-						dir = simple !== forward ? "nextSibling" : "previousSibling",
-						parent = elem.parentNode,
-						name = ofType && elem.nodeName.toLowerCase(),
-						useCache = !xml && !ofType;
-
-					if ( parent ) {
-
-						// :(first|last|only)-(child|of-type)
-						if ( simple ) {
-							while ( dir ) {
-								node = elem;
-								while ( (node = node[ dir ]) ) {
-									if ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) {
-										return false;
-									}
-								}
-								// Reverse direction for :only-* (if we haven't yet done so)
-								start = dir = type === "only" && !start && "nextSibling";
-							}
-							return true;
-						}
-
-						start = [ forward ? parent.firstChild : parent.lastChild ];
-
-						// non-xml :nth-child(...) stores cache data on `parent`
-						if ( forward && useCache ) {
-							// Seek `elem` from a previously-cached index
-							outerCache = parent[ expando ] || (parent[ expando ] = {});
-							cache = outerCache[ type ] || [];
-							nodeIndex = cache[0] === dirruns && cache[1];
-							diff = cache[0] === dirruns && cache[2];
-							node = nodeIndex && parent.childNodes[ nodeIndex ];
-
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-
-								// Fallback to seeking `elem` from the start
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								// When found, cache indexes on `parent` and break
-								if ( node.nodeType === 1 && ++diff && node === elem ) {
-									outerCache[ type ] = [ dirruns, nodeIndex, diff ];
-									break;
-								}
-							}
-
-						// Use previously-cached element index if available
-						} else if ( useCache && (cache = (elem[ expando ] || (elem[ expando ] = {}))[ type ]) && cache[0] === dirruns ) {
-							diff = cache[1];
-
-						// xml :nth-child(...) or :nth-last-child(...) or :nth(-last)?-of-type(...)
-						} else {
-							// Use the same loop as above to seek `elem` from the start
-							while ( (node = ++nodeIndex && node && node[ dir ] ||
-								(diff = nodeIndex = 0) || start.pop()) ) {
-
-								if ( ( ofType ? node.nodeName.toLowerCase() === name : node.nodeType === 1 ) && ++diff ) {
-									// Cache the index of each encountered element
-									if ( useCache ) {
-										(node[ expando ] || (node[ expando ] = {}))[ type ] = [ dirruns, diff ];
-									}
-
-									if ( node === elem ) {
-										break;
-									}
-								}
-							}
-						}
-
-						// Incorporate the offset, then check against cycle size
-						diff -= last;
-						return diff === first || ( diff % first === 0 && diff / first >= 0 );
-					}
-				};
-		},
-
-		"PSEUDO": function( pseudo, argument ) {
-			// pseudo-class names are case-insensitive
-			// http://www.w3.org/TR/selectors/#pseudo-classes
-			// Prioritize by case sensitivity in case custom pseudos are added with uppercase letters
-			// Remember that setFilters inherits from pseudos
-			var args,
-				fn = Expr.pseudos[ pseudo ] || Expr.setFilters[ pseudo.toLowerCase() ] ||
-					Sizzle.error( "unsupported pseudo: " + pseudo );
-
-			// The user may use createPseudo to indicate that
-			// arguments are needed to create the filter function
-			// just as Sizzle does
-			if ( fn[ expando ] ) {
-				return fn( argument );
-			}
-
-			// But maintain support for old signatures
-			if ( fn.length > 1 ) {
-				args = [ pseudo, pseudo, "", argument ];
-				return Expr.setFilters.hasOwnProperty( pseudo.toLowerCase() ) ?
-					markFunction(function( seed, matches ) {
-						var idx,
-							matched = fn( seed, argument ),
-							i = matched.length;
-						while ( i-- ) {
-							idx = indexOf.call( seed, matched[i] );
-							seed[ idx ] = !( matches[ idx ] = matched[i] );
-						}
-					}) :
-					function( elem ) {
-						return fn( elem, 0, args );
-					};
-			}
-
-			return fn;
-		}
-	},
-
-	pseudos: {
-		// Potentially complex pseudos
-		"not": markFunction(function( selector ) {
-			// Trim the selector passed to compile
-			// to avoid treating leading and trailing
-			// spaces as combinators
-			var input = [],
-				results = [],
-				matcher = compile( selector.replace( rtrim, "$1" ) );
-
-			return matcher[ expando ] ?
-				markFunction(function( seed, matches, context, xml ) {
-					var elem,
-						unmatched = matcher( seed, null, xml, [] ),
-						i = seed.length;
-
-					// Match elements unmatched by `matcher`
-					while ( i-- ) {
-						if ( (elem = unmatched[i]) ) {
-							seed[i] = !(matches[i] = elem);
-						}
-					}
-				}) :
-				function( elem, context, xml ) {
-					input[0] = elem;
-					matcher( input, null, xml, results );
-					return !results.pop();
-				};
-		}),
-
-		"has": markFunction(function( selector ) {
-			return function( elem ) {
-				return Sizzle( selector, elem ).length > 0;
-			};
-		}),
-
-		"contains": markFunction(function( text ) {
-			return function( elem ) {
-				return ( elem.textContent || elem.innerText || getText( elem ) ).indexOf( text ) > -1;
-			};
-		}),
-
-		// "Whether an element is represented by a :lang() selector
-		// is based solely on the element's language value
-		// being equal to the identifier C,
-		// or beginning with the identifier C immediately followed by "-".
-		// The matching of C against the element's language value is performed case-insensitively.
-		// The identifier C does not have to be a valid language name."
-		// http://www.w3.org/TR/selectors/#lang-pseudo
-		"lang": markFunction( function( lang ) {
-			// lang value must be a valid identifier
-			if ( !ridentifier.test(lang || "") ) {
-				Sizzle.error( "unsupported lang: " + lang );
-			}
-			lang = lang.replace( runescape, funescape ).toLowerCase();
-			return function( elem ) {
-				var elemLang;
-				do {
-					if ( (elemLang = documentIsHTML ?
-						elem.lang :
-						elem.getAttribute("xml:lang") || elem.getAttribute("lang")) ) {
-
-						elemLang = elemLang.toLowerCase();
-						return elemLang === lang || elemLang.indexOf( lang + "-" ) === 0;
-					}
-				} while ( (elem = elem.parentNode) && elem.nodeType === 1 );
-				return false;
-			};
-		}),
-
-		// Miscellaneous
-		"target": function( elem ) {
-			var hash = window.location && window.location.hash;
-			return hash && hash.slice( 1 ) === elem.id;
-		},
-
-		"root": function( elem ) {
-			return elem === docElem;
-		},
-
-		"focus": function( elem ) {
-			return elem === document.activeElement && (!document.hasFocus || document.hasFocus()) && !!(elem.type || elem.href || ~elem.tabIndex);
-		},
-
-		// Boolean properties
-		"enabled": function( elem ) {
-			return elem.disabled === false;
-		},
-
-		"disabled": function( elem ) {
-			return elem.disabled === true;
-		},
-
-		"checked": function( elem ) {
-			// In CSS3, :checked should return both checked and selected elements
-			// http://www.w3.org/TR/2011/REC-css3-selectors-20110929/#checked
-			var nodeName = elem.nodeName.toLowerCase();
-			return (nodeName === "input" && !!elem.checked) || (nodeName === "option" && !!elem.selected);
-		},
-
-		"selected": function( elem ) {
-			// Accessing this property makes selected-by-default
-			// options in Safari work properly
-			if ( elem.parentNode ) {
-				elem.parentNode.selectedIndex;
-			}
-
-			return elem.selected === true;
-		},
-
-		// Contents
-		"empty": function( elem ) {
-			// http://www.w3.org/TR/selectors/#empty-pseudo
-			// :empty is negated by element (1) or content nodes (text: 3; cdata: 4; entity ref: 5),
-			//   but not by others (comment: 8; processing instruction: 7; etc.)
-			// nodeType < 6 works because attributes (2) do not appear as children
-			for ( elem = elem.firstChild; elem; elem = elem.nextSibling ) {
-				if ( elem.nodeType < 6 ) {
-					return false;
-				}
-			}
-			return true;
-		},
-
-		"parent": function( elem ) {
-			return !Expr.pseudos["empty"]( elem );
-		},
-
-		// Element/input types
-		"header": function( elem ) {
-			return rheader.test( elem.nodeName );
-		},
-
-		"input": function( elem ) {
-			return rinputs.test( elem.nodeName );
-		},
-
-		"button": function( elem ) {
-			var name = elem.nodeName.toLowerCase();
-			return name === "input" && elem.type === "button" || name === "button";
-		},
-
-		"text": function( elem ) {
-			var attr;
-			return elem.nodeName.toLowerCase() === "input" &&
-				elem.type === "text" &&
-
-				// Support: IE<8
-				// New HTML5 attribute values (e.g., "search") appear with elem.type === "text"
-				( (attr = elem.getAttribute("type")) == null || attr.toLowerCase() === "text" );
-		},
-
-		// Position-in-collection
-		"first": createPositionalPseudo(function() {
-			return [ 0 ];
-		}),
-
-		"last": createPositionalPseudo(function( matchIndexes, length ) {
-			return [ length - 1 ];
-		}),
-
-		"eq": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			return [ argument < 0 ? argument + length : argument ];
-		}),
-
-		"even": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 0;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"odd": createPositionalPseudo(function( matchIndexes, length ) {
-			var i = 1;
-			for ( ; i < length; i += 2 ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"lt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; --i >= 0; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		}),
-
-		"gt": createPositionalPseudo(function( matchIndexes, length, argument ) {
-			var i = argument < 0 ? argument + length : argument;
-			for ( ; ++i < length; ) {
-				matchIndexes.push( i );
-			}
-			return matchIndexes;
-		})
-	}
-};
-
-Expr.pseudos["nth"] = Expr.pseudos["eq"];
-
-// Add button/input type pseudos
-for ( i in { radio: true, checkbox: true, file: true, password: true, image: true } ) {
-	Expr.pseudos[ i ] = createInputPseudo( i );
-}
-for ( i in { submit: true, reset: true } ) {
-	Expr.pseudos[ i ] = createButtonPseudo( i );
-}
-
-// Easy API for creating new setFilters
-function setFilters() {}
-setFilters.prototype = Expr.filters = Expr.pseudos;
-Expr.setFilters = new setFilters();
-
-tokenize = Sizzle.tokenize = function( selector, parseOnly ) {
-	var matched, match, tokens, type,
-		soFar, groups, preFilters,
-		cached = tokenCache[ selector + " " ];
-
-	if ( cached ) {
-		return parseOnly ? 0 : cached.slice( 0 );
-	}
-
-	soFar = selector;
-	groups = [];
-	preFilters = Expr.preFilter;
-
-	while ( soFar ) {
-
-		// Comma and first run
-		if ( !matched || (match = rcomma.exec( soFar )) ) {
-			if ( match ) {
-				// Don't consume trailing commas as valid
-				soFar = soFar.slice( match[0].length ) || soFar;
-			}
-			groups.push( (tokens = []) );
-		}
-
-		matched = false;
-
-		// Combinators
-		if ( (match = rcombinators.exec( soFar )) ) {
-			matched = match.shift();
-			tokens.push({
-				value: matched,
-				// Cast descendant combinators to space
-				type: match[0].replace( rtrim, " " )
-			});
-			soFar = soFar.slice( matched.length );
-		}
-
-		// Filters
-		for ( type in Expr.filter ) {
-			if ( (match = matchExpr[ type ].exec( soFar )) && (!preFilters[ type ] ||
-				(match = preFilters[ type ]( match ))) ) {
-				matched = match.shift();
-				tokens.push({
-					value: matched,
-					type: type,
-					matches: match
-				});
-				soFar = soFar.slice( matched.length );
-			}
-		}
-
-		if ( !matched ) {
-			break;
-		}
-	}
-
-	// Return the length of the invalid excess
-	// if we're just parsing
-	// Otherwise, throw an error or return tokens
-	return parseOnly ?
-		soFar.length :
-		soFar ?
-			Sizzle.error( selector ) :
-			// Cache the tokens
-			tokenCache( selector, groups ).slice( 0 );
-};
-
-function toSelector( tokens ) {
-	var i = 0,
-		len = tokens.length,
-		selector = "";
-	for ( ; i < len; i++ ) {
-		selector += tokens[i].value;
-	}
-	return selector;
-}
-
-function addCombinator( matcher, combinator, base ) {
-	var dir = combinator.dir,
-		checkNonElements = base && dir === "parentNode",
-		doneName = done++;
-
-	return combinator.first ?
-		// Check against closest ancestor/preceding element
-		function( elem, context, xml ) {
-			while ( (elem = elem[ dir ]) ) {
-				if ( elem.nodeType === 1 || checkNonElements ) {
-					return matcher( elem, context, xml );
-				}
-			}
-		} :
-
-		// Check against all ancestor/preceding elements
-		function( elem, context, xml ) {
-			var oldCache, outerCache,
-				newCache = [ dirruns, doneName ];
-
-			// We can't set arbitrary data on XML nodes, so they don't benefit from dir caching
-			if ( xml ) {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						if ( matcher( elem, context, xml ) ) {
-							return true;
-						}
-					}
-				}
-			} else {
-				while ( (elem = elem[ dir ]) ) {
-					if ( elem.nodeType === 1 || checkNonElements ) {
-						outerCache = elem[ expando ] || (elem[ expando ] = {});
-						if ( (oldCache = outerCache[ dir ]) &&
-							oldCache[ 0 ] === dirruns && oldCache[ 1 ] === doneName ) {
-
-							// Assign to newCache so results back-propagate to previous elements
-							return (newCache[ 2 ] = oldCache[ 2 ]);
-						} else {
-							// Reuse newcache so results back-propagate to previous elements
-							outerCache[ dir ] = newCache;
-
-							// A match means we're done; a fail means we have to keep checking
-							if ( (newCache[ 2 ] = matcher( elem, context, xml )) ) {
-								return true;
-							}
-						}
-					}
-				}
-			}
-		};
-}
-
-function elementMatcher( matchers ) {
-	return matchers.length > 1 ?
-		function( elem, context, xml ) {
-			var i = matchers.length;
-			while ( i-- ) {
-				if ( !matchers[i]( elem, context, xml ) ) {
-					return false;
-				}
-			}
-			return true;
-		} :
-		matchers[0];
-}
-
-function multipleContexts( selector, contexts, results ) {
-	var i = 0,
-		len = contexts.length;
-	for ( ; i < len; i++ ) {
-		Sizzle( selector, contexts[i], results );
-	}
-	return results;
-}
-
-function condense( unmatched, map, filter, context, xml ) {
-	var elem,
-		newUnmatched = [],
-		i = 0,
-		len = unmatched.length,
-		mapped = map != null;
-
-	for ( ; i < len; i++ ) {
-		if ( (elem = unmatched[i]) ) {
-			if ( !filter || filter( elem, context, xml ) ) {
-				newUnmatched.push( elem );
-				if ( mapped ) {
-					map.push( i );
-				}
-			}
-		}
-	}
-
-	return newUnmatched;
-}
-
-function setMatcher( preFilter, selector, matcher, postFilter, postFinder, postSelector ) {
-	if ( postFilter && !postFilter[ expando ] ) {
-		postFilter = setMatcher( postFilter );
-	}
-	if ( postFinder && !postFinder[ expando ] ) {
-		postFinder = setMatcher( postFinder, postSelector );
-	}
-	return markFunction(function( seed, results, context, xml ) {
-		var temp, i, elem,
-			preMap = [],
-			postMap = [],
-			preexisting = results.length,
-
-			// Get initial elements from seed or context
-			elems = seed || multipleContexts( selector || "*", context.nodeType ? [ context ] : context, [] ),
-
-			// Prefilter to get matcher input, preserving a map for seed-results synchronization
-			matcherIn = preFilter && ( seed || !selector ) ?
-				condense( elems, preMap, preFilter, context, xml ) :
-				elems,
-
-			matcherOut = matcher ?
-				// If we have a postFinder, or filtered seed, or non-seed postFilter or preexisting results,
-				postFinder || ( seed ? preFilter : preexisting || postFilter ) ?
-
-					// ...intermediate processing is necessary
-					[] :
-
-					// ...otherwise use results directly
-					results :
-				matcherIn;
-
-		// Find primary matches
-		if ( matcher ) {
-			matcher( matcherIn, matcherOut, context, xml );
-		}
-
-		// Apply postFilter
-		if ( postFilter ) {
-			temp = condense( matcherOut, postMap );
-			postFilter( temp, [], context, xml );
-
-			// Un-match failing elements by moving them back to matcherIn
-			i = temp.length;
-			while ( i-- ) {
-				if ( (elem = temp[i]) ) {
-					matcherOut[ postMap[i] ] = !(matcherIn[ postMap[i] ] = elem);
-				}
-			}
-		}
-
-		if ( seed ) {
-			if ( postFinder || preFilter ) {
-				if ( postFinder ) {
-					// Get the final matcherOut by condensing this intermediate into postFinder contexts
-					temp = [];
-					i = matcherOut.length;
-					while ( i-- ) {
-						if ( (elem = matcherOut[i]) ) {
-							// Restore matcherIn since elem is not yet a final match
-							temp.push( (matcherIn[i] = elem) );
-						}
-					}
-					postFinder( null, (matcherOut = []), temp, xml );
-				}
-
-				// Move matched elements from seed to results to keep them synchronized
-				i = matcherOut.length;
-				while ( i-- ) {
-					if ( (elem = matcherOut[i]) &&
-						(temp = postFinder ? indexOf.call( seed, elem ) : preMap[i]) > -1 ) {
-
-						seed[temp] = !(results[temp] = elem);
-					}
-				}
-			}
-
-		// Add elements to results, through postFinder if defined
-		} else {
-			matcherOut = condense(
-				matcherOut === results ?
-					matcherOut.splice( preexisting, matcherOut.length ) :
-					matcherOut
-			);
-			if ( postFinder ) {
-				postFinder( null, results, matcherOut, xml );
-			} else {
-				push.apply( results, matcherOut );
-			}
-		}
-	});
-}
-
-function matcherFromTokens( tokens ) {
-	var checkContext, matcher, j,
-		len = tokens.length,
-		leadingRelative = Expr.relative[ tokens[0].type ],
-		implicitRelative = leadingRelative || Expr.relative[" "],
-		i = leadingRelative ? 1 : 0,
-
-		// The foundational matcher ensures that elements are reachable from top-level context(s)
-		matchContext = addCombinator( function( elem ) {
-			return elem === checkContext;
-		}, implicitRelative, true ),
-		matchAnyContext = addCombinator( function( elem ) {
-			return indexOf.call( checkContext, elem ) > -1;
-		}, implicitRelative, true ),
-		matchers = [ function( elem, context, xml ) {
-			return ( !leadingRelative && ( xml || context !== outermostContext ) ) || (
-				(checkContext = context).nodeType ?
-					matchContext( elem, context, xml ) :
-					matchAnyContext( elem, context, xml ) );
-		} ];
-
-	for ( ; i < len; i++ ) {
-		if ( (matcher = Expr.relative[ tokens[i].type ]) ) {
-			matchers = [ addCombinator(elementMatcher( matchers ), matcher) ];
-		} else {
-			matcher = Expr.filter[ tokens[i].type ].apply( null, tokens[i].matches );
-
-			// Return special upon seeing a positional matcher
-			if ( matcher[ expando ] ) {
-				// Find the next relative operator (if any) for proper handling
-				j = ++i;
-				for ( ; j < len; j++ ) {
-					if ( Expr.relative[ tokens[j].type ] ) {
-						break;
-					}
-				}
-				return setMatcher(
-					i > 1 && elementMatcher( matchers ),
-					i > 1 && toSelector(
-						// If the preceding token was a descendant combinator, insert an implicit any-element `*`
-						tokens.slice( 0, i - 1 ).concat({ value: tokens[ i - 2 ].type === " " ? "*" : "" })
-					).replace( rtrim, "$1" ),
-					matcher,
-					i < j && matcherFromTokens( tokens.slice( i, j ) ),
-					j < len && matcherFromTokens( (tokens = tokens.slice( j )) ),
-					j < len && toSelector( tokens )
-				);
-			}
-			matchers.push( matcher );
-		}
-	}
-
-	return elementMatcher( matchers );
-}
-
-function matcherFromGroupMatchers( elementMatchers, setMatchers ) {
-	var bySet = setMatchers.length > 0,
-		byElement = elementMatchers.length > 0,
-		superMatcher = function( seed, context, xml, results, outermost ) {
-			var elem, j, matcher,
-				matchedCount = 0,
-				i = "0",
-				unmatched = seed && [],
-				setMatched = [],
-				contextBackup = outermostContext,
-				// We must always have either seed elements or outermost context
-				elems = seed || byElement && Expr.find["TAG"]( "*", outermost ),
-				// Use integer dirruns iff this is the outermost matcher
-				dirrunsUnique = (dirruns += contextBackup == null ? 1 : Math.random() || 0.1),
-				len = elems.length;
-
-			if ( outermost ) {
-				outermostContext = context !== document && context;
-			}
-
-			// Add elements passing elementMatchers directly to results
-			// Keep `i` a string if there are no elements so `matchedCount` will be "00" below
-			// Support: IE<9, Safari
-			// Tolerate NodeList properties (IE: "length"; Safari: ) matching elements by id
-			for ( ; i !== len && (elem = elems[i]) != null; i++ ) {
-				if ( byElement && elem ) {
-					j = 0;
-					while ( (matcher = elementMatchers[j++]) ) {
-						if ( matcher( elem, context, xml ) ) {
-							results.push( elem );
-							break;
-						}
-					}
-					if ( outermost ) {
-						dirruns = dirrunsUnique;
-					}
-				}
-
-				// Track unmatched elements for set filters
-				if ( bySet ) {
-					// They will have gone through all possible matchers
-					if ( (elem = !matcher && elem) ) {
-						matchedCount--;
-					}
-
-					// Lengthen the array for every element, matched or not
-					if ( seed ) {
-						unmatched.push( elem );
-					}
-				}
-			}
-
-			// Apply set filters to unmatched elements
-			matchedCount += i;
-			if ( bySet && i !== matchedCount ) {
-				j = 0;
-				while ( (matcher = setMatchers[j++]) ) {
-					matcher( unmatched, setMatched, context, xml );
-				}
-
-				if ( seed ) {
-					// Reintegrate element matches to eliminate the need for sorting
-					if ( matchedCount > 0 ) {
-						while ( i-- ) {
-							if ( !(unmatched[i] || setMatched[i]) ) {
-								setMatched[i] = pop.call( results );
-							}
-						}
-					}
-
-					// Discard index placeholder values to get only actual matches
-					setMatched = condense( setMatched );
-				}
-
-				// Add matches to results
-				push.apply( results, setMatched );
-
-				// Seedless set matches succeeding multiple successful matchers stipulate sorting
-				if ( outermost && !seed && setMatched.length > 0 &&
-					( matchedCount + setMatchers.length ) > 1 ) {
-
-					Sizzle.uniqueSort( results );
-				}
-			}
-
-			// Override manipulation of globals by nested matchers
-			if ( outermost ) {
-				dirruns = dirrunsUnique;
-				outermostContext = contextBackup;
-			}
-
-			return unmatched;
-		};
-
-	return bySet ?
-		markFunction( superMatcher ) :
-		superMatcher;
-}
-
-compile = Sizzle.compile = function( selector, match /* Internal Use Only */ ) {
-	var i,
-		setMatchers = [],
-		elementMatchers = [],
-		cached = compilerCache[ selector + " " ];
-
-	if ( !cached ) {
-		// Generate a function of recursive functions that can be used to check each element
-		if ( !match ) {
-			match = tokenize( selector );
-		}
-		i = match.length;
-		while ( i-- ) {
-			cached = matcherFromTokens( match[i] );
-			if ( cached[ expando ] ) {
-				setMatchers.push( cached );
-			} else {
-				elementMatchers.push( cached );
-			}
-		}
-
-		// Cache the compiled function
-		cached = compilerCache( selector, matcherFromGroupMatchers( elementMatchers, setMatchers ) );
-
-		// Save selector and tokenization
-		cached.selector = selector;
-	}
-	return cached;
-};
-
-/**
- * A low-level selection function that works with Sizzle's compiled
- *  selector functions
- * @param {String|Function} selector A selector or a pre-compiled
- *  selector function built with Sizzle.compile
- * @param {Element} context
- * @param {Array} [results]
- * @param {Array} [seed] A set of elements to match against
- */
-select = Sizzle.select = function( selector, context, results, seed ) {
-	var i, tokens, token, type, find,
-		compiled = typeof selector === "function" && selector,
-		match = !seed && tokenize( (selector = compiled.selector || selector) );
-
-	results = results || [];
-
-	// Try to minimize operations if there is no seed and only one group
-	if ( match.length === 1 ) {
-
-		// Take a shortcut and set the context if the root selector is an ID
-		tokens = match[0] = match[0].slice( 0 );
-		if ( tokens.length > 2 && (token = tokens[0]).type === "ID" &&
-				support.getById && context.nodeType === 9 && documentIsHTML &&
-				Expr.relative[ tokens[1].type ] ) {
-
-			context = ( Expr.find["ID"]( token.matches[0].replace(runescape, funescape), context ) || [] )[0];
-			if ( !context ) {
-				return results;
-
-			// Precompiled matchers will still verify ancestry, so step up a level
-			} else if ( compiled ) {
-				context = context.parentNode;
-			}
-
-			selector = selector.slice( tokens.shift().value.length );
-		}
-
-		// Fetch a seed set for right-to-left matching
-		i = matchExpr["needsContext"].test( selector ) ? 0 : tokens.length;
-		while ( i-- ) {
-			token = tokens[i];
-
-			// Abort if we hit a combinator
-			if ( Expr.relative[ (type = token.type) ] ) {
-				break;
-			}
-			if ( (find = Expr.find[ type ]) ) {
-				// Search, expanding context for leading sibling combinators
-				if ( (seed = find(
-					token.matches[0].replace( runescape, funescape ),
-					rsibling.test( tokens[0].type ) && testContext( context.parentNode ) || context
-				)) ) {
-
-					// If seed is empty or no tokens remain, we can return early
-					tokens.splice( i, 1 );
-					selector = seed.length && toSelector( tokens );
-					if ( !selector ) {
-						push.apply( results, seed );
-						return results;
-					}
-
-					break;
-				}
-			}
-		}
-	}
-
-	// Compile and execute a filtering function if one is not provided
-	// Provide `match` to avoid retokenization if we modified the selector above
-	( compiled || compile( selector, match ) )(
-		seed,
-		context,
-		!documentIsHTML,
-		results,
-		rsibling.test( selector ) && testContext( context.parentNode ) || context
-	);
-	return results;
-};
-
-// One-time assignments
-
-// Sort stability
-support.sortStable = expando.split("").sort( sortOrder ).join("") === expando;
-
-// Support: Chrome<14
-// Always assume duplicates if they aren't passed to the comparison function
-support.detectDuplicates = !!hasDuplicate;
-
-// Initialize against the default document
-setDocument();
-
-// Support: Webkit<537.32 - Safari 6.0.3/Chrome 25 (fixed in Chrome 27)
-// Detached nodes confoundingly follow *each other*
-support.sortDetached = assert(function( div1 ) {
-	// Should return 1, but returns 4 (following)
-	return div1.compareDocumentPosition( document.createElement("div") ) & 1;
-});
-
-// Support: IE<8
-// Prevent attribute/property "interpolation"
-// http://msdn.microsoft.com/en-us/library/ms536429%28VS.85%29.aspx
-if ( !assert(function( div ) {
-	div.innerHTML = " ";
-	return div.firstChild.getAttribute("href") === "#" ;
-}) ) {
-	addHandle( "type|href|height|width", function( elem, name, isXML ) {
-		if ( !isXML ) {
-			return elem.getAttribute( name, name.toLowerCase() === "type" ? 1 : 2 );
-		}
-	});
-}
-
-// Support: IE<9
-// Use defaultValue in place of getAttribute("value")
-if ( !support.attributes || !assert(function( div ) {
-	div.innerHTML = " ";
-	div.firstChild.setAttribute( "value", "" );
-	return div.firstChild.getAttribute( "value" ) === "";
-}) ) {
-	addHandle( "value", function( elem, name, isXML ) {
-		if ( !isXML && elem.nodeName.toLowerCase() === "input" ) {
-			return elem.defaultValue;
-		}
-	});
-}
-
-// Support: IE<9
-// Use getAttributeNode to fetch booleans when getAttribute lies
-if ( !assert(function( div ) {
-	return div.getAttribute("disabled") == null;
-}) ) {
-	addHandle( booleans, function( elem, name, isXML ) {
-		var val;
-		if ( !isXML ) {
-			return elem[ name ] === true ? name.toLowerCase() :
-					(val = elem.getAttributeNode( name )) && val.specified ?
-					val.value :
-				null;
-		}
-	});
-}
-
-return Sizzle;
-
-})( window );
-
-
-
-jQuery.find = Sizzle;
-jQuery.expr = Sizzle.selectors;
-jQuery.expr[":"] = jQuery.expr.pseudos;
-jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = Sizzle.getText;
-jQuery.isXMLDoc = Sizzle.isXML;
-jQuery.contains = Sizzle.contains;
-
-
-
-var rneedsContext = jQuery.expr.match.needsContext;
-
-var rsingleTag = (/^<(\w+)\s*\/?>(?:<\/\1>|)$/);
-
-
-
-var risSimple = /^.[^:#\[\.,]*$/;
-
-// Implement the identical functionality for filter and not
-function winnow( elements, qualifier, not ) {
-	if ( jQuery.isFunction( qualifier ) ) {
-		return jQuery.grep( elements, function( elem, i ) {
-			/* jshint -W018 */
-			return !!qualifier.call( elem, i, elem ) !== not;
-		});
-
-	}
-
-	if ( qualifier.nodeType ) {
-		return jQuery.grep( elements, function( elem ) {
-			return ( elem === qualifier ) !== not;
-		});
-
-	}
-
-	if ( typeof qualifier === "string" ) {
-		if ( risSimple.test( qualifier ) ) {
-			return jQuery.filter( qualifier, elements, not );
-		}
-
-		qualifier = jQuery.filter( qualifier, elements );
-	}
-
-	return jQuery.grep( elements, function( elem ) {
-		return ( indexOf.call( qualifier, elem ) >= 0 ) !== not;
-	});
-}
-
-jQuery.filter = function( expr, elems, not ) {
-	var elem = elems[ 0 ];
-
-	if ( not ) {
-		expr = ":not(" + expr + ")";
-	}
-
-	return elems.length === 1 && elem.nodeType === 1 ?
-		jQuery.find.matchesSelector( elem, expr ) ? [ elem ] : [] :
-		jQuery.find.matches( expr, jQuery.grep( elems, function( elem ) {
-			return elem.nodeType === 1;
-		}));
-};
-
-jQuery.fn.extend({
-	find: function( selector ) {
-		var i,
-			len = this.length,
-			ret = [],
-			self = this;
-
-		if ( typeof selector !== "string" ) {
-			return this.pushStack( jQuery( selector ).filter(function() {
-				for ( i = 0; i < len; i++ ) {
-					if ( jQuery.contains( self[ i ], this ) ) {
-						return true;
-					}
-				}
-			}) );
-		}
-
-		for ( i = 0; i < len; i++ ) {
-			jQuery.find( selector, self[ i ], ret );
-		}
-
-		// Needed because $( selector, context ) becomes $( context ).find( selector )
-		ret = this.pushStack( len > 1 ? jQuery.unique( ret ) : ret );
-		ret.selector = this.selector ? this.selector + " " + selector : selector;
-		return ret;
-	},
-	filter: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], false) );
-	},
-	not: function( selector ) {
-		return this.pushStack( winnow(this, selector || [], true) );
-	},
-	is: function( selector ) {
-		return !!winnow(
-			this,
-
-			// If this is a positional/relative selector, check membership in the returned set
-			// so $("p:first").is("p:last") won't return true for a doc with two "p".
-			typeof selector === "string" && rneedsContext.test( selector ) ?
-				jQuery( selector ) :
-				selector || [],
-			false
-		).length;
-	}
-});
-
-
-// Initialize a jQuery object
-
-
-// A central reference to the root jQuery(document)
-var rootjQuery,
-
-	// A simple way to check for HTML strings
-	// Prioritize #id over  to avoid XSS via location.hash (#9521)
-	// Strict HTML recognition (#11290: must start with <)
-	rquickExpr = /^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,
-
-	init = jQuery.fn.init = function( selector, context ) {
-		var match, elem;
-
-		// HANDLE: $(""), $(null), $(undefined), $(false)
-		if ( !selector ) {
-			return this;
-		}
-
-		// Handle HTML strings
-		if ( typeof selector === "string" ) {
-			if ( selector[0] === "<" && selector[ selector.length - 1 ] === ">" && selector.length >= 3 ) {
-				// Assume that strings that start and end with <> are HTML and skip the regex check
-				match = [ null, selector, null ];
-
-			} else {
-				match = rquickExpr.exec( selector );
-			}
-
-			// Match html or make sure no context is specified for #id
-			if ( match && (match[1] || !context) ) {
-
-				// HANDLE: $(html) -> $(array)
-				if ( match[1] ) {
-					context = context instanceof jQuery ? context[0] : context;
-
-					// scripts is true for back-compat
-					// Intentionally let the error be thrown if parseHTML is not present
-					jQuery.merge( this, jQuery.parseHTML(
-						match[1],
-						context && context.nodeType ? context.ownerDocument || context : document,
-						true
-					) );
-
-					// HANDLE: $(html, props)
-					if ( rsingleTag.test( match[1] ) && jQuery.isPlainObject( context ) ) {
-						for ( match in context ) {
-							// Properties of context are called as methods if possible
-							if ( jQuery.isFunction( this[ match ] ) ) {
-								this[ match ]( context[ match ] );
-
-							// ...and otherwise set as attributes
-							} else {
-								this.attr( match, context[ match ] );
-							}
-						}
-					}
-
-					return this;
-
-				// HANDLE: $(#id)
-				} else {
-					elem = document.getElementById( match[2] );
-
-					// Check parentNode to catch when Blackberry 4.6 returns
-					// nodes that are no longer in the document #6963
-					if ( elem && elem.parentNode ) {
-						// Inject the element directly into the jQuery object
-						this.length = 1;
-						this[0] = elem;
-					}
-
-					this.context = document;
-					this.selector = selector;
-					return this;
-				}
-
-			// HANDLE: $(expr, $(...))
-			} else if ( !context || context.jquery ) {
-				return ( context || rootjQuery ).find( selector );
-
-			// HANDLE: $(expr, context)
-			// (which is just equivalent to: $(context).find(expr)
-			} else {
-				return this.constructor( context ).find( selector );
-			}
-
-		// HANDLE: $(DOMElement)
-		} else if ( selector.nodeType ) {
-			this.context = this[0] = selector;
-			this.length = 1;
-			return this;
-
-		// HANDLE: $(function)
-		// Shortcut for document ready
-		} else if ( jQuery.isFunction( selector ) ) {
-			return typeof rootjQuery.ready !== "undefined" ?
-				rootjQuery.ready( selector ) :
-				// Execute immediately if ready is not present
-				selector( jQuery );
-		}
-
-		if ( selector.selector !== undefined ) {
-			this.selector = selector.selector;
-			this.context = selector.context;
-		}
-
-		return jQuery.makeArray( selector, this );
-	};
-
-// Give the init function the jQuery prototype for later instantiation
-init.prototype = jQuery.fn;
-
-// Initialize central reference
-rootjQuery = jQuery( document );
-
-
-var rparentsprev = /^(?:parents|prev(?:Until|All))/,
-	// methods guaranteed to produce a unique set when starting from a unique set
-	guaranteedUnique = {
-		children: true,
-		contents: true,
-		next: true,
-		prev: true
-	};
-
-jQuery.extend({
-	dir: function( elem, dir, until ) {
-		var matched = [],
-			truncate = until !== undefined;
-
-		while ( (elem = elem[ dir ]) && elem.nodeType !== 9 ) {
-			if ( elem.nodeType === 1 ) {
-				if ( truncate && jQuery( elem ).is( until ) ) {
-					break;
-				}
-				matched.push( elem );
-			}
-		}
-		return matched;
-	},
-
-	sibling: function( n, elem ) {
-		var matched = [];
-
-		for ( ; n; n = n.nextSibling ) {
-			if ( n.nodeType === 1 && n !== elem ) {
-				matched.push( n );
-			}
-		}
-
-		return matched;
-	}
-});
-
-jQuery.fn.extend({
-	has: function( target ) {
-		var targets = jQuery( target, this ),
-			l = targets.length;
-
-		return this.filter(function() {
-			var i = 0;
-			for ( ; i < l; i++ ) {
-				if ( jQuery.contains( this, targets[i] ) ) {
-					return true;
-				}
-			}
-		});
-	},
-
-	closest: function( selectors, context ) {
-		var cur,
-			i = 0,
-			l = this.length,
-			matched = [],
-			pos = rneedsContext.test( selectors ) || typeof selectors !== "string" ?
-				jQuery( selectors, context || this.context ) :
-				0;
-
-		for ( ; i < l; i++ ) {
-			for ( cur = this[i]; cur && cur !== context; cur = cur.parentNode ) {
-				// Always skip document fragments
-				if ( cur.nodeType < 11 && (pos ?
-					pos.index(cur) > -1 :
-
-					// Don't pass non-elements to Sizzle
-					cur.nodeType === 1 &&
-						jQuery.find.matchesSelector(cur, selectors)) ) {
-
-					matched.push( cur );
-					break;
-				}
-			}
-		}
-
-		return this.pushStack( matched.length > 1 ? jQuery.unique( matched ) : matched );
-	},
-
-	// Determine the position of an element within
-	// the matched set of elements
-	index: function( elem ) {
-
-		// No argument, return index in parent
-		if ( !elem ) {
-			return ( this[ 0 ] && this[ 0 ].parentNode ) ? this.first().prevAll().length : -1;
-		}
-
-		// index in selector
-		if ( typeof elem === "string" ) {
-			return indexOf.call( jQuery( elem ), this[ 0 ] );
-		}
-
-		// Locate the position of the desired element
-		return indexOf.call( this,
-
-			// If it receives a jQuery object, the first element is used
-			elem.jquery ? elem[ 0 ] : elem
-		);
-	},
-
-	add: function( selector, context ) {
-		return this.pushStack(
-			jQuery.unique(
-				jQuery.merge( this.get(), jQuery( selector, context ) )
-			)
-		);
-	},
-
-	addBack: function( selector ) {
-		return this.add( selector == null ?
-			this.prevObject : this.prevObject.filter(selector)
-		);
-	}
-});
-
-function sibling( cur, dir ) {
-	while ( (cur = cur[dir]) && cur.nodeType !== 1 ) {}
-	return cur;
-}
-
-jQuery.each({
-	parent: function( elem ) {
-		var parent = elem.parentNode;
-		return parent && parent.nodeType !== 11 ? parent : null;
-	},
-	parents: function( elem ) {
-		return jQuery.dir( elem, "parentNode" );
-	},
-	parentsUntil: function( elem, i, until ) {
-		return jQuery.dir( elem, "parentNode", until );
-	},
-	next: function( elem ) {
-		return sibling( elem, "nextSibling" );
-	},
-	prev: function( elem ) {
-		return sibling( elem, "previousSibling" );
-	},
-	nextAll: function( elem ) {
-		return jQuery.dir( elem, "nextSibling" );
-	},
-	prevAll: function( elem ) {
-		return jQuery.dir( elem, "previousSibling" );
-	},
-	nextUntil: function( elem, i, until ) {
-		return jQuery.dir( elem, "nextSibling", until );
-	},
-	prevUntil: function( elem, i, until ) {
-		return jQuery.dir( elem, "previousSibling", until );
-	},
-	siblings: function( elem ) {
-		return jQuery.sibling( ( elem.parentNode || {} ).firstChild, elem );
-	},
-	children: function( elem ) {
-		return jQuery.sibling( elem.firstChild );
-	},
-	contents: function( elem ) {
-		return elem.contentDocument || jQuery.merge( [], elem.childNodes );
-	}
-}, function( name, fn ) {
-	jQuery.fn[ name ] = function( until, selector ) {
-		var matched = jQuery.map( this, fn, until );
-
-		if ( name.slice( -5 ) !== "Until" ) {
-			selector = until;
-		}
-
-		if ( selector && typeof selector === "string" ) {
-			matched = jQuery.filter( selector, matched );
-		}
-
-		if ( this.length > 1 ) {
-			// Remove duplicates
-			if ( !guaranteedUnique[ name ] ) {
-				jQuery.unique( matched );
-			}
-
-			// Reverse order for parents* and prev-derivatives
-			if ( rparentsprev.test( name ) ) {
-				matched.reverse();
-			}
-		}
-
-		return this.pushStack( matched );
-	};
-});
-var rnotwhite = (/\S+/g);
-
-
-
-// String to Object options format cache
-var optionsCache = {};
-
-// Convert String-formatted options into Object-formatted ones and store in cache
-function createOptions( options ) {
-	var object = optionsCache[ options ] = {};
-	jQuery.each( options.match( rnotwhite ) || [], function( _, flag ) {
-		object[ flag ] = true;
-	});
-	return object;
-}
-
-/*
- * Create a callback list using the following parameters:
- *
- *	options: an optional list of space-separated options that will change how
- *			the callback list behaves or a more traditional option object
- *
- * By default a callback list will act like an event callback list and can be
- * "fired" multiple times.
- *
- * Possible options:
- *
- *	once:			will ensure the callback list can only be fired once (like a Deferred)
- *
- *	memory:			will keep track of previous values and will call any callback added
- *					after the list has been fired right away with the latest "memorized"
- *					values (like a Deferred)
- *
- *	unique:			will ensure a callback can only be added once (no duplicate in the list)
- *
- *	stopOnFalse:	interrupt callings when a callback returns false
- *
- */
-jQuery.Callbacks = function( options ) {
-
-	// Convert options from String-formatted to Object-formatted if needed
-	// (we check in cache first)
-	options = typeof options === "string" ?
-		( optionsCache[ options ] || createOptions( options ) ) :
-		jQuery.extend( {}, options );
-
-	var // Last fire value (for non-forgettable lists)
-		memory,
-		// Flag to know if list was already fired
-		fired,
-		// Flag to know if list is currently firing
-		firing,
-		// First callback to fire (used internally by add and fireWith)
-		firingStart,
-		// End of the loop when firing
-		firingLength,
-		// Index of currently firing callback (modified by remove if needed)
-		firingIndex,
-		// Actual callback list
-		list = [],
-		// Stack of fire calls for repeatable lists
-		stack = !options.once && [],
-		// Fire callbacks
-		fire = function( data ) {
-			memory = options.memory && data;
-			fired = true;
-			firingIndex = firingStart || 0;
-			firingStart = 0;
-			firingLength = list.length;
-			firing = true;
-			for ( ; list && firingIndex < firingLength; firingIndex++ ) {
-				if ( list[ firingIndex ].apply( data[ 0 ], data[ 1 ] ) === false && options.stopOnFalse ) {
-					memory = false; // To prevent further calls using add
-					break;
-				}
-			}
-			firing = false;
-			if ( list ) {
-				if ( stack ) {
-					if ( stack.length ) {
-						fire( stack.shift() );
-					}
-				} else if ( memory ) {
-					list = [];
-				} else {
-					self.disable();
-				}
-			}
-		},
-		// Actual Callbacks object
-		self = {
-			// Add a callback or a collection of callbacks to the list
-			add: function() {
-				if ( list ) {
-					// First, we save the current length
-					var start = list.length;
-					(function add( args ) {
-						jQuery.each( args, function( _, arg ) {
-							var type = jQuery.type( arg );
-							if ( type === "function" ) {
-								if ( !options.unique || !self.has( arg ) ) {
-									list.push( arg );
-								}
-							} else if ( arg && arg.length && type !== "string" ) {
-								// Inspect recursively
-								add( arg );
-							}
-						});
-					})( arguments );
-					// Do we need to add the callbacks to the
-					// current firing batch?
-					if ( firing ) {
-						firingLength = list.length;
-					// With memory, if we're not firing then
-					// we should call right away
-					} else if ( memory ) {
-						firingStart = start;
-						fire( memory );
-					}
-				}
-				return this;
-			},
-			// Remove a callback from the list
-			remove: function() {
-				if ( list ) {
-					jQuery.each( arguments, function( _, arg ) {
-						var index;
-						while ( ( index = jQuery.inArray( arg, list, index ) ) > -1 ) {
-							list.splice( index, 1 );
-							// Handle firing indexes
-							if ( firing ) {
-								if ( index <= firingLength ) {
-									firingLength--;
-								}
-								if ( index <= firingIndex ) {
-									firingIndex--;
-								}
-							}
-						}
-					});
-				}
-				return this;
-			},
-			// Check if a given callback is in the list.
-			// If no argument is given, return whether or not list has callbacks attached.
-			has: function( fn ) {
-				return fn ? jQuery.inArray( fn, list ) > -1 : !!( list && list.length );
-			},
-			// Remove all callbacks from the list
-			empty: function() {
-				list = [];
-				firingLength = 0;
-				return this;
-			},
-			// Have the list do nothing anymore
-			disable: function() {
-				list = stack = memory = undefined;
-				return this;
-			},
-			// Is it disabled?
-			disabled: function() {
-				return !list;
-			},
-			// Lock the list in its current state
-			lock: function() {
-				stack = undefined;
-				if ( !memory ) {
-					self.disable();
-				}
-				return this;
-			},
-			// Is it locked?
-			locked: function() {
-				return !stack;
-			},
-			// Call all callbacks with the given context and arguments
-			fireWith: function( context, args ) {
-				if ( list && ( !fired || stack ) ) {
-					args = args || [];
-					args = [ context, args.slice ? args.slice() : args ];
-					if ( firing ) {
-						stack.push( args );
-					} else {
-						fire( args );
-					}
-				}
-				return this;
-			},
-			// Call all the callbacks with the given arguments
-			fire: function() {
-				self.fireWith( this, arguments );
-				return this;
-			},
-			// To know if the callbacks have already been called at least once
-			fired: function() {
-				return !!fired;
-			}
-		};
-
-	return self;
-};
-
-
-jQuery.extend({
-
-	Deferred: function( func ) {
-		var tuples = [
-				// action, add listener, listener list, final state
-				[ "resolve", "done", jQuery.Callbacks("once memory"), "resolved" ],
-				[ "reject", "fail", jQuery.Callbacks("once memory"), "rejected" ],
-				[ "notify", "progress", jQuery.Callbacks("memory") ]
-			],
-			state = "pending",
-			promise = {
-				state: function() {
-					return state;
-				},
-				always: function() {
-					deferred.done( arguments ).fail( arguments );
-					return this;
-				},
-				then: function( /* fnDone, fnFail, fnProgress */ ) {
-					var fns = arguments;
-					return jQuery.Deferred(function( newDefer ) {
-						jQuery.each( tuples, function( i, tuple ) {
-							var fn = jQuery.isFunction( fns[ i ] ) && fns[ i ];
-							// deferred[ done | fail | progress ] for forwarding actions to newDefer
-							deferred[ tuple[1] ](function() {
-								var returned = fn && fn.apply( this, arguments );
-								if ( returned && jQuery.isFunction( returned.promise ) ) {
-									returned.promise()
-										.done( newDefer.resolve )
-										.fail( newDefer.reject )
-										.progress( newDefer.notify );
-								} else {
-									newDefer[ tuple[ 0 ] + "With" ]( this === promise ? newDefer.promise() : this, fn ? [ returned ] : arguments );
-								}
-							});
-						});
-						fns = null;
-					}).promise();
-				},
-				// Get a promise for this deferred
-				// If obj is provided, the promise aspect is added to the object
-				promise: function( obj ) {
-					return obj != null ? jQuery.extend( obj, promise ) : promise;
-				}
-			},
-			deferred = {};
-
-		// Keep pipe for back-compat
-		promise.pipe = promise.then;
-
-		// Add list-specific methods
-		jQuery.each( tuples, function( i, tuple ) {
-			var list = tuple[ 2 ],
-				stateString = tuple[ 3 ];
-
-			// promise[ done | fail | progress ] = list.add
-			promise[ tuple[1] ] = list.add;
-
-			// Handle state
-			if ( stateString ) {
-				list.add(function() {
-					// state = [ resolved | rejected ]
-					state = stateString;
-
-				// [ reject_list | resolve_list ].disable; progress_list.lock
-				}, tuples[ i ^ 1 ][ 2 ].disable, tuples[ 2 ][ 2 ].lock );
-			}
-
-			// deferred[ resolve | reject | notify ]
-			deferred[ tuple[0] ] = function() {
-				deferred[ tuple[0] + "With" ]( this === deferred ? promise : this, arguments );
-				return this;
-			};
-			deferred[ tuple[0] + "With" ] = list.fireWith;
-		});
-
-		// Make the deferred a promise
-		promise.promise( deferred );
-
-		// Call given func if any
-		if ( func ) {
-			func.call( deferred, deferred );
-		}
-
-		// All done!
-		return deferred;
-	},
-
-	// Deferred helper
-	when: function( subordinate /* , ..., subordinateN */ ) {
-		var i = 0,
-			resolveValues = slice.call( arguments ),
-			length = resolveValues.length,
-
-			// the count of uncompleted subordinates
-			remaining = length !== 1 || ( subordinate && jQuery.isFunction( subordinate.promise ) ) ? length : 0,
-
-			// the master Deferred. If resolveValues consist of only a single Deferred, just use that.
-			deferred = remaining === 1 ? subordinate : jQuery.Deferred(),
-
-			// Update function for both resolve and progress values
-			updateFunc = function( i, contexts, values ) {
-				return function( value ) {
-					contexts[ i ] = this;
-					values[ i ] = arguments.length > 1 ? slice.call( arguments ) : value;
-					if ( values === progressValues ) {
-						deferred.notifyWith( contexts, values );
-					} else if ( !( --remaining ) ) {
-						deferred.resolveWith( contexts, values );
-					}
-				};
-			},
-
-			progressValues, progressContexts, resolveContexts;
-
-		// add listeners to Deferred subordinates; treat others as resolved
-		if ( length > 1 ) {
-			progressValues = new Array( length );
-			progressContexts = new Array( length );
-			resolveContexts = new Array( length );
-			for ( ; i < length; i++ ) {
-				if ( resolveValues[ i ] && jQuery.isFunction( resolveValues[ i ].promise ) ) {
-					resolveValues[ i ].promise()
-						.done( updateFunc( i, resolveContexts, resolveValues ) )
-						.fail( deferred.reject )
-						.progress( updateFunc( i, progressContexts, progressValues ) );
-				} else {
-					--remaining;
-				}
-			}
-		}
-
-		// if we're not waiting on anything, resolve the master
-		if ( !remaining ) {
-			deferred.resolveWith( resolveContexts, resolveValues );
-		}
-
-		return deferred.promise();
-	}
-});
-
-
-// The deferred used on DOM ready
-var readyList;
-
-jQuery.fn.ready = function( fn ) {
-	// Add the callback
-	jQuery.ready.promise().done( fn );
-
-	return this;
-};
-
-jQuery.extend({
-	// Is the DOM ready to be used? Set to true once it occurs.
-	isReady: false,
-
-	// A counter to track how many items to wait for before
-	// the ready event fires. See #6781
-	readyWait: 1,
-
-	// Hold (or release) the ready event
-	holdReady: function( hold ) {
-		if ( hold ) {
-			jQuery.readyWait++;
-		} else {
-			jQuery.ready( true );
-		}
-	},
-
-	// Handle when the DOM is ready
-	ready: function( wait ) {
-
-		// Abort if there are pending holds or we're already ready
-		if ( wait === true ? --jQuery.readyWait : jQuery.isReady ) {
-			return;
-		}
-
-		// Remember that the DOM is ready
-		jQuery.isReady = true;
-
-		// If a normal DOM Ready event fired, decrement, and wait if need be
-		if ( wait !== true && --jQuery.readyWait > 0 ) {
-			return;
-		}
-
-		// If there are functions bound, to execute
-		readyList.resolveWith( document, [ jQuery ] );
-
-		// Trigger any bound ready events
-		if ( jQuery.fn.triggerHandler ) {
-			jQuery( document ).triggerHandler( "ready" );
-			jQuery( document ).off( "ready" );
-		}
-	}
-});
-
-/**
- * The ready event handler and self cleanup method
- */
-function completed() {
-	document.removeEventListener( "DOMContentLoaded", completed, false );
-	window.removeEventListener( "load", completed, false );
-	jQuery.ready();
-}
-
-jQuery.ready.promise = function( obj ) {
-	if ( !readyList ) {
-
-		readyList = jQuery.Deferred();
-
-		// Catch cases where $(document).ready() is called after the browser event has already occurred.
-		// we once tried to use readyState "interactive" here, but it caused issues like the one
-		// discovered by ChrisS here: http://bugs.jquery.com/ticket/12282#comment:15
-		if ( document.readyState === "complete" ) {
-			// Handle it asynchronously to allow scripts the opportunity to delay ready
-			setTimeout( jQuery.ready );
-
-		} else {
-
-			// Use the handy event callback
-			document.addEventListener( "DOMContentLoaded", completed, false );
-
-			// A fallback to window.onload, that will always work
-			window.addEventListener( "load", completed, false );
-		}
-	}
-	return readyList.promise( obj );
-};
-
-// Kick off the DOM ready check even if the user does not
-jQuery.ready.promise();
-
-
-
-
-// Multifunctional method to get and set values of a collection
-// The value/s can optionally be executed if it's a function
-var access = jQuery.access = function( elems, fn, key, value, chainable, emptyGet, raw ) {
-	var i = 0,
-		len = elems.length,
-		bulk = key == null;
-
-	// Sets many values
-	if ( jQuery.type( key ) === "object" ) {
-		chainable = true;
-		for ( i in key ) {
-			jQuery.access( elems, fn, i, key[i], true, emptyGet, raw );
-		}
-
-	// Sets one value
-	} else if ( value !== undefined ) {
-		chainable = true;
-
-		if ( !jQuery.isFunction( value ) ) {
-			raw = true;
-		}
-
-		if ( bulk ) {
-			// Bulk operations run against the entire set
-			if ( raw ) {
-				fn.call( elems, value );
-				fn = null;
-
-			// ...except when executing function values
-			} else {
-				bulk = fn;
-				fn = function( elem, key, value ) {
-					return bulk.call( jQuery( elem ), value );
-				};
-			}
-		}
-
-		if ( fn ) {
-			for ( ; i < len; i++ ) {
-				fn( elems[i], key, raw ? value : value.call( elems[i], i, fn( elems[i], key ) ) );
-			}
-		}
-	}
-
-	return chainable ?
-		elems :
-
-		// Gets
-		bulk ?
-			fn.call( elems ) :
-			len ? fn( elems[0], key ) : emptyGet;
-};
-
-
-/**
- * Determines whether an object can have data
- */
-jQuery.acceptData = function( owner ) {
-	// Accepts only:
-	//  - Node
-	//    - Node.ELEMENT_NODE
-	//    - Node.DOCUMENT_NODE
-	//  - Object
-	//    - Any
-	/* jshint -W018 */
-	return owner.nodeType === 1 || owner.nodeType === 9 || !( +owner.nodeType );
-};
-
-
-function Data() {
-	// Support: Android < 4,
-	// Old WebKit does not have Object.preventExtensions/freeze method,
-	// return new empty object instead with no [[set]] accessor
-	Object.defineProperty( this.cache = {}, 0, {
-		get: function() {
-			return {};
-		}
-	});
-
-	this.expando = jQuery.expando + Math.random();
-}
-
-Data.uid = 1;
-Data.accepts = jQuery.acceptData;
-
-Data.prototype = {
-	key: function( owner ) {
-		// We can accept data for non-element nodes in modern browsers,
-		// but we should not, see #8335.
-		// Always return the key for a frozen object.
-		if ( !Data.accepts( owner ) ) {
-			return 0;
-		}
-
-		var descriptor = {},
-			// Check if the owner object already has a cache key
-			unlock = owner[ this.expando ];
-
-		// If not, create one
-		if ( !unlock ) {
-			unlock = Data.uid++;
-
-			// Secure it in a non-enumerable, non-writable property
-			try {
-				descriptor[ this.expando ] = { value: unlock };
-				Object.defineProperties( owner, descriptor );
-
-			// Support: Android < 4
-			// Fallback to a less secure definition
-			} catch ( e ) {
-				descriptor[ this.expando ] = unlock;
-				jQuery.extend( owner, descriptor );
-			}
-		}
-
-		// Ensure the cache object
-		if ( !this.cache[ unlock ] ) {
-			this.cache[ unlock ] = {};
-		}
-
-		return unlock;
-	},
-	set: function( owner, data, value ) {
-		var prop,
-			// There may be an unlock assigned to this node,
-			// if there is no entry for this "owner", create one inline
-			// and set the unlock as though an owner entry had always existed
-			unlock = this.key( owner ),
-			cache = this.cache[ unlock ];
-
-		// Handle: [ owner, key, value ] args
-		if ( typeof data === "string" ) {
-			cache[ data ] = value;
-
-		// Handle: [ owner, { properties } ] args
-		} else {
-			// Fresh assignments by object are shallow copied
-			if ( jQuery.isEmptyObject( cache ) ) {
-				jQuery.extend( this.cache[ unlock ], data );
-			// Otherwise, copy the properties one-by-one to the cache object
-			} else {
-				for ( prop in data ) {
-					cache[ prop ] = data[ prop ];
-				}
-			}
-		}
-		return cache;
-	},
-	get: function( owner, key ) {
-		// Either a valid cache is found, or will be created.
-		// New caches will be created and the unlock returned,
-		// allowing direct access to the newly created
-		// empty data object. A valid owner object must be provided.
-		var cache = this.cache[ this.key( owner ) ];
-
-		return key === undefined ?
-			cache : cache[ key ];
-	},
-	access: function( owner, key, value ) {
-		var stored;
-		// In cases where either:
-		//
-		//   1. No key was specified
-		//   2. A string key was specified, but no value provided
-		//
-		// Take the "read" path and allow the get method to determine
-		// which value to return, respectively either:
-		//
-		//   1. The entire cache object
-		//   2. The data stored at the key
-		//
-		if ( key === undefined ||
-				((key && typeof key === "string") && value === undefined) ) {
-
-			stored = this.get( owner, key );
-
-			return stored !== undefined ?
-				stored : this.get( owner, jQuery.camelCase(key) );
-		}
-
-		// [*]When the key is not a string, or both a key and value
-		// are specified, set or extend (existing objects) with either:
-		//
-		//   1. An object of properties
-		//   2. A key and value
-		//
-		this.set( owner, key, value );
-
-		// Since the "set" path can have two possible entry points
-		// return the expected data based on which path was taken[*]
-		return value !== undefined ? value : key;
-	},
-	remove: function( owner, key ) {
-		var i, name, camel,
-			unlock = this.key( owner ),
-			cache = this.cache[ unlock ];
-
-		if ( key === undefined ) {
-			this.cache[ unlock ] = {};
-
-		} else {
-			// Support array or space separated string of keys
-			if ( jQuery.isArray( key ) ) {
-				// If "name" is an array of keys...
-				// When data is initially created, via ("key", "val") signature,
-				// keys will be converted to camelCase.
-				// Since there is no way to tell _how_ a key was added, remove
-				// both plain key and camelCase key. #12786
-				// This will only penalize the array argument path.
-				name = key.concat( key.map( jQuery.camelCase ) );
-			} else {
-				camel = jQuery.camelCase( key );
-				// Try the string as a key before any manipulation
-				if ( key in cache ) {
-					name = [ key, camel ];
-				} else {
-					// If a key with the spaces exists, use it.
-					// Otherwise, create an array by matching non-whitespace
-					name = camel;
-					name = name in cache ?
-						[ name ] : ( name.match( rnotwhite ) || [] );
-				}
-			}
-
-			i = name.length;
-			while ( i-- ) {
-				delete cache[ name[ i ] ];
-			}
-		}
-	},
-	hasData: function( owner ) {
-		return !jQuery.isEmptyObject(
-			this.cache[ owner[ this.expando ] ] || {}
-		);
-	},
-	discard: function( owner ) {
-		if ( owner[ this.expando ] ) {
-			delete this.cache[ owner[ this.expando ] ];
-		}
-	}
-};
-var data_priv = new Data();
-
-var data_user = new Data();
-
-
-
-/*
-	Implementation Summary
-
-	1. Enforce API surface and semantic compatibility with 1.9.x branch
-	2. Improve the module's maintainability by reducing the storage
-		paths to a single mechanism.
-	3. Use the same single mechanism to support "private" and "user" data.
-	4. _Never_ expose "private" data to user code (TODO: Drop _data, _removeData)
-	5. Avoid exposing implementation details on user objects (eg. expando properties)
-	6. Provide a clear path for implementation upgrade to WeakMap in 2014
-*/
-var rbrace = /^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,
-	rmultiDash = /([A-Z])/g;
-
-function dataAttr( elem, key, data ) {
-	var name;
-
-	// If nothing was found internally, try to fetch any
-	// data from the HTML5 data-* attribute
-	if ( data === undefined && elem.nodeType === 1 ) {
-		name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
-		data = elem.getAttribute( name );
-
-		if ( typeof data === "string" ) {
-			try {
-				data = data === "true" ? true :
-					data === "false" ? false :
-					data === "null" ? null :
-					// Only convert to a number if it doesn't change the string
-					+data + "" === data ? +data :
-					rbrace.test( data ) ? jQuery.parseJSON( data ) :
-					data;
-			} catch( e ) {}
-
-			// Make sure we set the data so it isn't changed later
-			data_user.set( elem, key, data );
-		} else {
-			data = undefined;
-		}
-	}
-	return data;
-}
-
-jQuery.extend({
-	hasData: function( elem ) {
-		return data_user.hasData( elem ) || data_priv.hasData( elem );
-	},
-
-	data: function( elem, name, data ) {
-		return data_user.access( elem, name, data );
-	},
-
-	removeData: function( elem, name ) {
-		data_user.remove( elem, name );
-	},
-
-	// TODO: Now that all calls to _data and _removeData have been replaced
-	// with direct calls to data_priv methods, these can be deprecated.
-	_data: function( elem, name, data ) {
-		return data_priv.access( elem, name, data );
-	},
-
-	_removeData: function( elem, name ) {
-		data_priv.remove( elem, name );
-	}
-});
-
-jQuery.fn.extend({
-	data: function( key, value ) {
-		var i, name, data,
-			elem = this[ 0 ],
-			attrs = elem && elem.attributes;
-
-		// Gets all values
-		if ( key === undefined ) {
-			if ( this.length ) {
-				data = data_user.get( elem );
-
-				if ( elem.nodeType === 1 && !data_priv.get( elem, "hasDataAttrs" ) ) {
-					i = attrs.length;
-					while ( i-- ) {
-
-						// Support: IE11+
-						// The attrs elements can be null (#14894)
-						if ( attrs[ i ] ) {
-							name = attrs[ i ].name;
-							if ( name.indexOf( "data-" ) === 0 ) {
-								name = jQuery.camelCase( name.slice(5) );
-								dataAttr( elem, name, data[ name ] );
-							}
-						}
-					}
-					data_priv.set( elem, "hasDataAttrs", true );
-				}
-			}
-
-			return data;
-		}
-
-		// Sets multiple values
-		if ( typeof key === "object" ) {
-			return this.each(function() {
-				data_user.set( this, key );
-			});
-		}
-
-		return access( this, function( value ) {
-			var data,
-				camelKey = jQuery.camelCase( key );
-
-			// The calling jQuery object (element matches) is not empty
-			// (and therefore has an element appears at this[ 0 ]) and the
-			// `value` parameter was not undefined. An empty jQuery object
-			// will result in `undefined` for elem = this[ 0 ] which will
-			// throw an exception if an attempt to read a data cache is made.
-			if ( elem && value === undefined ) {
-				// Attempt to get data from the cache
-				// with the key as-is
-				data = data_user.get( elem, key );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// Attempt to get data from the cache
-				// with the key camelized
-				data = data_user.get( elem, camelKey );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// Attempt to "discover" the data in
-				// HTML5 custom data-* attrs
-				data = dataAttr( elem, camelKey, undefined );
-				if ( data !== undefined ) {
-					return data;
-				}
-
-				// We tried really hard, but the data doesn't exist.
-				return;
-			}
-
-			// Set the data...
-			this.each(function() {
-				// First, attempt to store a copy or reference of any
-				// data that might've been store with a camelCased key.
-				var data = data_user.get( this, camelKey );
-
-				// For HTML5 data-* attribute interop, we have to
-				// store property names with dashes in a camelCase form.
-				// This might not apply to all properties...*
-				data_user.set( this, camelKey, value );
-
-				// *... In the case of properties that might _actually_
-				// have dashes, we need to also store a copy of that
-				// unchanged property.
-				if ( key.indexOf("-") !== -1 && data !== undefined ) {
-					data_user.set( this, key, value );
-				}
-			});
-		}, null, value, arguments.length > 1, null, true );
-	},
-
-	removeData: function( key ) {
-		return this.each(function() {
-			data_user.remove( this, key );
-		});
-	}
-});
-
-
-jQuery.extend({
-	queue: function( elem, type, data ) {
-		var queue;
-
-		if ( elem ) {
-			type = ( type || "fx" ) + "queue";
-			queue = data_priv.get( elem, type );
-
-			// Speed up dequeue by getting out quickly if this is just a lookup
-			if ( data ) {
-				if ( !queue || jQuery.isArray( data ) ) {
-					queue = data_priv.access( elem, type, jQuery.makeArray(data) );
-				} else {
-					queue.push( data );
-				}
-			}
-			return queue || [];
-		}
-	},
-
-	dequeue: function( elem, type ) {
-		type = type || "fx";
-
-		var queue = jQuery.queue( elem, type ),
-			startLength = queue.length,
-			fn = queue.shift(),
-			hooks = jQuery._queueHooks( elem, type ),
-			next = function() {
-				jQuery.dequeue( elem, type );
-			};
-
-		// If the fx queue is dequeued, always remove the progress sentinel
-		if ( fn === "inprogress" ) {
-			fn = queue.shift();
-			startLength--;
-		}
-
-		if ( fn ) {
-
-			// Add a progress sentinel to prevent the fx queue from being
-			// automatically dequeued
-			if ( type === "fx" ) {
-				queue.unshift( "inprogress" );
-			}
-
-			// clear up the last queue stop function
-			delete hooks.stop;
-			fn.call( elem, next, hooks );
-		}
-
-		if ( !startLength && hooks ) {
-			hooks.empty.fire();
-		}
-	},
-
-	// not intended for public consumption - generates a queueHooks object, or returns the current one
-	_queueHooks: function( elem, type ) {
-		var key = type + "queueHooks";
-		return data_priv.get( elem, key ) || data_priv.access( elem, key, {
-			empty: jQuery.Callbacks("once memory").add(function() {
-				data_priv.remove( elem, [ type + "queue", key ] );
-			})
-		});
-	}
-});
-
-jQuery.fn.extend({
-	queue: function( type, data ) {
-		var setter = 2;
-
-		if ( typeof type !== "string" ) {
-			data = type;
-			type = "fx";
-			setter--;
-		}
-
-		if ( arguments.length < setter ) {
-			return jQuery.queue( this[0], type );
-		}
-
-		return data === undefined ?
-			this :
-			this.each(function() {
-				var queue = jQuery.queue( this, type, data );
-
-				// ensure a hooks for this queue
-				jQuery._queueHooks( this, type );
-
-				if ( type === "fx" && queue[0] !== "inprogress" ) {
-					jQuery.dequeue( this, type );
-				}
-			});
-	},
-	dequeue: function( type ) {
-		return this.each(function() {
-			jQuery.dequeue( this, type );
-		});
-	},
-	clearQueue: function( type ) {
-		return this.queue( type || "fx", [] );
-	},
-	// Get a promise resolved when queues of a certain type
-	// are emptied (fx is the type by default)
-	promise: function( type, obj ) {
-		var tmp,
-			count = 1,
-			defer = jQuery.Deferred(),
-			elements = this,
-			i = this.length,
-			resolve = function() {
-				if ( !( --count ) ) {
-					defer.resolveWith( elements, [ elements ] );
-				}
-			};
-
-		if ( typeof type !== "string" ) {
-			obj = type;
-			type = undefined;
-		}
-		type = type || "fx";
-
-		while ( i-- ) {
-			tmp = data_priv.get( elements[ i ], type + "queueHooks" );
-			if ( tmp && tmp.empty ) {
-				count++;
-				tmp.empty.add( resolve );
-			}
-		}
-		resolve();
-		return defer.promise( obj );
-	}
-});
-var pnum = (/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/).source;
-
-var cssExpand = [ "Top", "Right", "Bottom", "Left" ];
-
-var isHidden = function( elem, el ) {
-		// isHidden might be called from jQuery#filter function;
-		// in that case, element will be second argument
-		elem = el || elem;
-		return jQuery.css( elem, "display" ) === "none" || !jQuery.contains( elem.ownerDocument, elem );
-	};
-
-var rcheckableType = (/^(?:checkbox|radio)$/i);
-
-
-
-(function() {
-	var fragment = document.createDocumentFragment(),
-		div = fragment.appendChild( document.createElement( "div" ) ),
-		input = document.createElement( "input" );
-
-	// #11217 - WebKit loses check when the name is after the checked attribute
-	// Support: Windows Web Apps (WWA)
-	// `name` and `type` need .setAttribute for WWA
-	input.setAttribute( "type", "radio" );
-	input.setAttribute( "checked", "checked" );
-	input.setAttribute( "name", "t" );
-
-	div.appendChild( input );
-
-	// Support: Safari 5.1, iOS 5.1, Android 4.x, Android 2.3
-	// old WebKit doesn't clone checked state correctly in fragments
-	support.checkClone = div.cloneNode( true ).cloneNode( true ).lastChild.checked;
-
-	// Make sure textarea (and checkbox) defaultValue is properly cloned
-	// Support: IE9-IE11+
-	div.innerHTML = "";
-	support.noCloneChecked = !!div.cloneNode( true ).lastChild.defaultValue;
-})();
-var strundefined = typeof undefined;
-
-
-
-support.focusinBubbles = "onfocusin" in window;
-
-
-var
-	rkeyEvent = /^key/,
-	rmouseEvent = /^(?:mouse|pointer|contextmenu)|click/,
-	rfocusMorph = /^(?:focusinfocus|focusoutblur)$/,
-	rtypenamespace = /^([^.]*)(?:\.(.+)|)$/;
-
-function returnTrue() {
-	return true;
-}
-
-function returnFalse() {
-	return false;
-}
-
-function safeActiveElement() {
-	try {
-		return document.activeElement;
-	} catch ( err ) { }
-}
-
-/*
- * Helper functions for managing events -- not part of the public interface.
- * Props to Dean Edwards' addEvent library for many of the ideas.
- */
-jQuery.event = {
-
-	global: {},
-
-	add: function( elem, types, handler, data, selector ) {
-
-		var handleObjIn, eventHandle, tmp,
-			events, t, handleObj,
-			special, handlers, type, namespaces, origType,
-			elemData = data_priv.get( elem );
-
-		// Don't attach events to noData or text/comment nodes (but allow plain objects)
-		if ( !elemData ) {
-			return;
-		}
-
-		// Caller can pass in an object of custom data in lieu of the handler
-		if ( handler.handler ) {
-			handleObjIn = handler;
-			handler = handleObjIn.handler;
-			selector = handleObjIn.selector;
-		}
-
-		// Make sure that the handler has a unique ID, used to find/remove it later
-		if ( !handler.guid ) {
-			handler.guid = jQuery.guid++;
-		}
-
-		// Init the element's event structure and main handler, if this is the first
-		if ( !(events = elemData.events) ) {
-			events = elemData.events = {};
-		}
-		if ( !(eventHandle = elemData.handle) ) {
-			eventHandle = elemData.handle = function( e ) {
-				// Discard the second event of a jQuery.event.trigger() and
-				// when an event is called after a page has unloaded
-				return typeof jQuery !== strundefined && jQuery.event.triggered !== e.type ?
-					jQuery.event.dispatch.apply( elem, arguments ) : undefined;
-			};
-		}
-
-		// Handle multiple events separated by a space
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// There *must* be a type, no attaching namespace-only handlers
-			if ( !type ) {
-				continue;
-			}
-
-			// If event changes its type, use the special event handlers for the changed type
-			special = jQuery.event.special[ type ] || {};
-
-			// If selector defined, determine special event api type, otherwise given type
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-
-			// Update special based on newly reset type
-			special = jQuery.event.special[ type ] || {};
-
-			// handleObj is passed to all event handlers
-			handleObj = jQuery.extend({
-				type: type,
-				origType: origType,
-				data: data,
-				handler: handler,
-				guid: handler.guid,
-				selector: selector,
-				needsContext: selector && jQuery.expr.match.needsContext.test( selector ),
-				namespace: namespaces.join(".")
-			}, handleObjIn );
-
-			// Init the event handler queue if we're the first
-			if ( !(handlers = events[ type ]) ) {
-				handlers = events[ type ] = [];
-				handlers.delegateCount = 0;
-
-				// Only use addEventListener if the special events handler returns false
-				if ( !special.setup || special.setup.call( elem, data, namespaces, eventHandle ) === false ) {
-					if ( elem.addEventListener ) {
-						elem.addEventListener( type, eventHandle, false );
-					}
-				}
-			}
-
-			if ( special.add ) {
-				special.add.call( elem, handleObj );
-
-				if ( !handleObj.handler.guid ) {
-					handleObj.handler.guid = handler.guid;
-				}
-			}
-
-			// Add to the element's handler list, delegates in front
-			if ( selector ) {
-				handlers.splice( handlers.delegateCount++, 0, handleObj );
-			} else {
-				handlers.push( handleObj );
-			}
-
-			// Keep track of which events have ever been used, for event optimization
-			jQuery.event.global[ type ] = true;
-		}
-
-	},
-
-	// Detach an event or set of events from an element
-	remove: function( elem, types, handler, selector, mappedTypes ) {
-
-		var j, origCount, tmp,
-			events, t, handleObj,
-			special, handlers, type, namespaces, origType,
-			elemData = data_priv.hasData( elem ) && data_priv.get( elem );
-
-		if ( !elemData || !(events = elemData.events) ) {
-			return;
-		}
-
-		// Once for each type.namespace in types; type may be omitted
-		types = ( types || "" ).match( rnotwhite ) || [ "" ];
-		t = types.length;
-		while ( t-- ) {
-			tmp = rtypenamespace.exec( types[t] ) || [];
-			type = origType = tmp[1];
-			namespaces = ( tmp[2] || "" ).split( "." ).sort();
-
-			// Unbind all events (on this namespace, if provided) for the element
-			if ( !type ) {
-				for ( type in events ) {
-					jQuery.event.remove( elem, type + types[ t ], handler, selector, true );
-				}
-				continue;
-			}
-
-			special = jQuery.event.special[ type ] || {};
-			type = ( selector ? special.delegateType : special.bindType ) || type;
-			handlers = events[ type ] || [];
-			tmp = tmp[2] && new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" );
-
-			// Remove matching events
-			origCount = j = handlers.length;
-			while ( j-- ) {
-				handleObj = handlers[ j ];
-
-				if ( ( mappedTypes || origType === handleObj.origType ) &&
-					( !handler || handler.guid === handleObj.guid ) &&
-					( !tmp || tmp.test( handleObj.namespace ) ) &&
-					( !selector || selector === handleObj.selector || selector === "**" && handleObj.selector ) ) {
-					handlers.splice( j, 1 );
-
-					if ( handleObj.selector ) {
-						handlers.delegateCount--;
-					}
-					if ( special.remove ) {
-						special.remove.call( elem, handleObj );
-					}
-				}
-			}
-
-			// Remove generic event handler if we removed something and no more handlers exist
-			// (avoids potential for endless recursion during removal of special event handlers)
-			if ( origCount && !handlers.length ) {
-				if ( !special.teardown || special.teardown.call( elem, namespaces, elemData.handle ) === false ) {
-					jQuery.removeEvent( elem, type, elemData.handle );
-				}
-
-				delete events[ type ];
-			}
-		}
-
-		// Remove the expando if it's no longer used
-		if ( jQuery.isEmptyObject( events ) ) {
-			delete elemData.handle;
-			data_priv.remove( elem, "events" );
-		}
-	},
-
-	trigger: function( event, data, elem, onlyHandlers ) {
-
-		var i, cur, tmp, bubbleType, ontype, handle, special,
-			eventPath = [ elem || document ],
-			type = hasOwn.call( event, "type" ) ? event.type : event,
-			namespaces = hasOwn.call( event, "namespace" ) ? event.namespace.split(".") : [];
-
-		cur = tmp = elem = elem || document;
-
-		// Don't do events on text and comment nodes
-		if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
-			return;
-		}
-
-		// focus/blur morphs to focusin/out; ensure we're not firing them right now
-		if ( rfocusMorph.test( type + jQuery.event.triggered ) ) {
-			return;
-		}
-
-		if ( type.indexOf(".") >= 0 ) {
-			// Namespaced trigger; create a regexp to match event type in handle()
-			namespaces = type.split(".");
-			type = namespaces.shift();
-			namespaces.sort();
-		}
-		ontype = type.indexOf(":") < 0 && "on" + type;
-
-		// Caller can pass in a jQuery.Event object, Object, or just an event type string
-		event = event[ jQuery.expando ] ?
-			event :
-			new jQuery.Event( type, typeof event === "object" && event );
-
-		// Trigger bitmask: & 1 for native handlers; & 2 for jQuery (always true)
-		event.isTrigger = onlyHandlers ? 2 : 3;
-		event.namespace = namespaces.join(".");
-		event.namespace_re = event.namespace ?
-			new RegExp( "(^|\\.)" + namespaces.join("\\.(?:.*\\.|)") + "(\\.|$)" ) :
-			null;
-
-		// Clean up the event in case it is being reused
-		event.result = undefined;
-		if ( !event.target ) {
-			event.target = elem;
-		}
-
-		// Clone any incoming data and prepend the event, creating the handler arg list
-		data = data == null ?
-			[ event ] :
-			jQuery.makeArray( data, [ event ] );
-
-		// Allow special events to draw outside the lines
-		special = jQuery.event.special[ type ] || {};
-		if ( !onlyHandlers && special.trigger && special.trigger.apply( elem, data ) === false ) {
-			return;
-		}
-
-		// Determine event propagation path in advance, per W3C events spec (#9951)
-		// Bubble up to document, then to window; watch for a global ownerDocument var (#9724)
-		if ( !onlyHandlers && !special.noBubble && !jQuery.isWindow( elem ) ) {
-
-			bubbleType = special.delegateType || type;
-			if ( !rfocusMorph.test( bubbleType + type ) ) {
-				cur = cur.parentNode;
-			}
-			for ( ; cur; cur = cur.parentNode ) {
-				eventPath.push( cur );
-				tmp = cur;
-			}
-
-			// Only add window if we got to document (e.g., not plain obj or detached DOM)
-			if ( tmp === (elem.ownerDocument || document) ) {
-				eventPath.push( tmp.defaultView || tmp.parentWindow || window );
-			}
-		}
-
-		// Fire handlers on the event path
-		i = 0;
-		while ( (cur = eventPath[i++]) && !event.isPropagationStopped() ) {
-
-			event.type = i > 1 ?
-				bubbleType :
-				special.bindType || type;
-
-			// jQuery handler
-			handle = ( data_priv.get( cur, "events" ) || {} )[ event.type ] && data_priv.get( cur, "handle" );
-			if ( handle ) {
-				handle.apply( cur, data );
-			}
-
-			// Native handler
-			handle = ontype && cur[ ontype ];
-			if ( handle && handle.apply && jQuery.acceptData( cur ) ) {
-				event.result = handle.apply( cur, data );
-				if ( event.result === false ) {
-					event.preventDefault();
-				}
-			}
-		}
-		event.type = type;
-
-		// If nobody prevented the default action, do it now
-		if ( !onlyHandlers && !event.isDefaultPrevented() ) {
-
-			if ( (!special._default || special._default.apply( eventPath.pop(), data ) === false) &&
-				jQuery.acceptData( elem ) ) {
-
-				// Call a native DOM method on the target with the same name name as the event.
-				// Don't do default actions on window, that's where global variables be (#6170)
-				if ( ontype && jQuery.isFunction( elem[ type ] ) && !jQuery.isWindow( elem ) ) {
-
-					// Don't re-trigger an onFOO event when we call its FOO() method
-					tmp = elem[ ontype ];
-
-					if ( tmp ) {
-						elem[ ontype ] = null;
-					}
-
-					// Prevent re-triggering of the same event, since we already bubbled it above
-					jQuery.event.triggered = type;
-					elem[ type ]();
-					jQuery.event.triggered = undefined;
-
-					if ( tmp ) {
-						elem[ ontype ] = tmp;
-					}
-				}
-			}
-		}
-
-		return event.result;
-	},
-
-	dispatch: function( event ) {
-
-		// Make a writable jQuery.Event from the native event object
-		event = jQuery.event.fix( event );
-
-		var i, j, ret, matched, handleObj,
-			handlerQueue = [],
-			args = slice.call( arguments ),
-			handlers = ( data_priv.get( this, "events" ) || {} )[ event.type ] || [],
-			special = jQuery.event.special[ event.type ] || {};
-
-		// Use the fix-ed jQuery.Event rather than the (read-only) native event
-		args[0] = event;
-		event.delegateTarget = this;
-
-		// Call the preDispatch hook for the mapped type, and let it bail if desired
-		if ( special.preDispatch && special.preDispatch.call( this, event ) === false ) {
-			return;
-		}
-
-		// Determine handlers
-		handlerQueue = jQuery.event.handlers.call( this, event, handlers );
-
-		// Run delegates first; they may want to stop propagation beneath us
-		i = 0;
-		while ( (matched = handlerQueue[ i++ ]) && !event.isPropagationStopped() ) {
-			event.currentTarget = matched.elem;
-
-			j = 0;
-			while ( (handleObj = matched.handlers[ j++ ]) && !event.isImmediatePropagationStopped() ) {
-
-				// Triggered event must either 1) have no namespace, or
-				// 2) have namespace(s) a subset or equal to those in the bound event (both can have no namespace).
-				if ( !event.namespace_re || event.namespace_re.test( handleObj.namespace ) ) {
-
-					event.handleObj = handleObj;
-					event.data = handleObj.data;
-
-					ret = ( (jQuery.event.special[ handleObj.origType ] || {}).handle || handleObj.handler )
-							.apply( matched.elem, args );
-
-					if ( ret !== undefined ) {
-						if ( (event.result = ret) === false ) {
-							event.preventDefault();
-							event.stopPropagation();
-						}
-					}
-				}
-			}
-		}
-
-		// Call the postDispatch hook for the mapped type
-		if ( special.postDispatch ) {
-			special.postDispatch.call( this, event );
-		}
-
-		return event.result;
-	},
-
-	handlers: function( event, handlers ) {
-		var i, matches, sel, handleObj,
-			handlerQueue = [],
-			delegateCount = handlers.delegateCount,
-			cur = event.target;
-
-		// Find delegate handlers
-		// Black-hole SVG  instance trees (#13180)
-		// Avoid non-left-click bubbling in Firefox (#3861)
-		if ( delegateCount && cur.nodeType && (!event.button || event.type !== "click") ) {
-
-			for ( ; cur !== this; cur = cur.parentNode || this ) {
-
-				// Don't process clicks on disabled elements (#6911, #8165, #11382, #11764)
-				if ( cur.disabled !== true || event.type !== "click" ) {
-					matches = [];
-					for ( i = 0; i < delegateCount; i++ ) {
-						handleObj = handlers[ i ];
-
-						// Don't conflict with Object.prototype properties (#13203)
-						sel = handleObj.selector + " ";
-
-						if ( matches[ sel ] === undefined ) {
-							matches[ sel ] = handleObj.needsContext ?
-								jQuery( sel, this ).index( cur ) >= 0 :
-								jQuery.find( sel, this, null, [ cur ] ).length;
-						}
-						if ( matches[ sel ] ) {
-							matches.push( handleObj );
-						}
-					}
-					if ( matches.length ) {
-						handlerQueue.push({ elem: cur, handlers: matches });
-					}
-				}
-			}
-		}
-
-		// Add the remaining (directly-bound) handlers
-		if ( delegateCount < handlers.length ) {
-			handlerQueue.push({ elem: this, handlers: handlers.slice( delegateCount ) });
-		}
-
-		return handlerQueue;
-	},
-
-	// Includes some event props shared by KeyEvent and MouseEvent
-	props: "altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),
-
-	fixHooks: {},
-
-	keyHooks: {
-		props: "char charCode key keyCode".split(" "),
-		filter: function( event, original ) {
-
-			// Add which for key events
-			if ( event.which == null ) {
-				event.which = original.charCode != null ? original.charCode : original.keyCode;
-			}
-
-			return event;
-		}
-	},
-
-	mouseHooks: {
-		props: "button buttons clientX clientY offsetX offsetY pageX pageY screenX screenY toElement".split(" "),
-		filter: function( event, original ) {
-			var eventDoc, doc, body,
-				button = original.button;
-
-			// Calculate pageX/Y if missing and clientX/Y available
-			if ( event.pageX == null && original.clientX != null ) {
-				eventDoc = event.target.ownerDocument || document;
-				doc = eventDoc.documentElement;
-				body = eventDoc.body;
-
-				event.pageX = original.clientX + ( doc && doc.scrollLeft || body && body.scrollLeft || 0 ) - ( doc && doc.clientLeft || body && body.clientLeft || 0 );
-				event.pageY = original.clientY + ( doc && doc.scrollTop  || body && body.scrollTop  || 0 ) - ( doc && doc.clientTop  || body && body.clientTop  || 0 );
-			}
-
-			// Add which for click: 1 === left; 2 === middle; 3 === right
-			// Note: button is not normalized, so don't use it
-			if ( !event.which && button !== undefined ) {
-				event.which = ( button & 1 ? 1 : ( button & 2 ? 3 : ( button & 4 ? 2 : 0 ) ) );
-			}
-
-			return event;
-		}
-	},
-
-	fix: function( event ) {
-		if ( event[ jQuery.expando ] ) {
-			return event;
-		}
-
-		// Create a writable copy of the event object and normalize some properties
-		var i, prop, copy,
-			type = event.type,
-			originalEvent = event,
-			fixHook = this.fixHooks[ type ];
-
-		if ( !fixHook ) {
-			this.fixHooks[ type ] = fixHook =
-				rmouseEvent.test( type ) ? this.mouseHooks :
-				rkeyEvent.test( type ) ? this.keyHooks :
-				{};
-		}
-		copy = fixHook.props ? this.props.concat( fixHook.props ) : this.props;
-
-		event = new jQuery.Event( originalEvent );
-
-		i = copy.length;
-		while ( i-- ) {
-			prop = copy[ i ];
-			event[ prop ] = originalEvent[ prop ];
-		}
-
-		// Support: Cordova 2.5 (WebKit) (#13255)
-		// All events should have a target; Cordova deviceready doesn't
-		if ( !event.target ) {
-			event.target = document;
-		}
-
-		// Support: Safari 6.0+, Chrome < 28
-		// Target should not be a text node (#504, #13143)
-		if ( event.target.nodeType === 3 ) {
-			event.target = event.target.parentNode;
-		}
-
-		return fixHook.filter ? fixHook.filter( event, originalEvent ) : event;
-	},
-
-	special: {
-		load: {
-			// Prevent triggered image.load events from bubbling to window.load
-			noBubble: true
-		},
-		focus: {
-			// Fire native event if possible so blur/focus sequence is correct
-			trigger: function() {
-				if ( this !== safeActiveElement() && this.focus ) {
-					this.focus();
-					return false;
-				}
-			},
-			delegateType: "focusin"
-		},
-		blur: {
-			trigger: function() {
-				if ( this === safeActiveElement() && this.blur ) {
-					this.blur();
-					return false;
-				}
-			},
-			delegateType: "focusout"
-		},
-		click: {
-			// For checkbox, fire native event so checked state will be right
-			trigger: function() {
-				if ( this.type === "checkbox" && this.click && jQuery.nodeName( this, "input" ) ) {
-					this.click();
-					return false;
-				}
-			},
-
-			// For cross-browser consistency, don't fire native .click() on links
-			_default: function( event ) {
-				return jQuery.nodeName( event.target, "a" );
-			}
-		},
-
-		beforeunload: {
-			postDispatch: function( event ) {
-
-				// Support: Firefox 20+
-				// Firefox doesn't alert if the returnValue field is not set.
-				if ( event.result !== undefined && event.originalEvent ) {
-					event.originalEvent.returnValue = event.result;
-				}
-			}
-		}
-	},
-
-	simulate: function( type, elem, event, bubble ) {
-		// Piggyback on a donor event to simulate a different one.
-		// Fake originalEvent to avoid donor's stopPropagation, but if the
-		// simulated event prevents default then we do the same on the donor.
-		var e = jQuery.extend(
-			new jQuery.Event(),
-			event,
-			{
-				type: type,
-				isSimulated: true,
-				originalEvent: {}
-			}
-		);
-		if ( bubble ) {
-			jQuery.event.trigger( e, null, elem );
-		} else {
-			jQuery.event.dispatch.call( elem, e );
-		}
-		if ( e.isDefaultPrevented() ) {
-			event.preventDefault();
-		}
-	}
-};
-
-jQuery.removeEvent = function( elem, type, handle ) {
-	if ( elem.removeEventListener ) {
-		elem.removeEventListener( type, handle, false );
-	}
-};
-
-jQuery.Event = function( src, props ) {
-	// Allow instantiation without the 'new' keyword
-	if ( !(this instanceof jQuery.Event) ) {
-		return new jQuery.Event( src, props );
-	}
-
-	// Event object
-	if ( src && src.type ) {
-		this.originalEvent = src;
-		this.type = src.type;
-
-		// Events bubbling up the document may have been marked as prevented
-		// by a handler lower down the tree; reflect the correct value.
-		this.isDefaultPrevented = src.defaultPrevented ||
-				src.defaultPrevented === undefined &&
-				// Support: Android < 4.0
-				src.returnValue === false ?
-			returnTrue :
-			returnFalse;
-
-	// Event type
-	} else {
-		this.type = src;
-	}
-
-	// Put explicitly provided properties onto the event object
-	if ( props ) {
-		jQuery.extend( this, props );
-	}
-
-	// Create a timestamp if incoming event doesn't have one
-	this.timeStamp = src && src.timeStamp || jQuery.now();
-
-	// Mark it as fixed
-	this[ jQuery.expando ] = true;
-};
-
-// jQuery.Event is based on DOM3 Events as specified by the ECMAScript Language Binding
-// http://www.w3.org/TR/2003/WD-DOM-Level-3-Events-20030331/ecma-script-binding.html
-jQuery.Event.prototype = {
-	isDefaultPrevented: returnFalse,
-	isPropagationStopped: returnFalse,
-	isImmediatePropagationStopped: returnFalse,
-
-	preventDefault: function() {
-		var e = this.originalEvent;
-
-		this.isDefaultPrevented = returnTrue;
-
-		if ( e && e.preventDefault ) {
-			e.preventDefault();
-		}
-	},
-	stopPropagation: function() {
-		var e = this.originalEvent;
-
-		this.isPropagationStopped = returnTrue;
-
-		if ( e && e.stopPropagation ) {
-			e.stopPropagation();
-		}
-	},
-	stopImmediatePropagation: function() {
-		var e = this.originalEvent;
-
-		this.isImmediatePropagationStopped = returnTrue;
-
-		if ( e && e.stopImmediatePropagation ) {
-			e.stopImmediatePropagation();
-		}
-
-		this.stopPropagation();
-	}
-};
-
-// Create mouseenter/leave events using mouseover/out and event-time checks
-// Support: Chrome 15+
-jQuery.each({
-	mouseenter: "mouseover",
-	mouseleave: "mouseout",
-	pointerenter: "pointerover",
-	pointerleave: "pointerout"
-}, function( orig, fix ) {
-	jQuery.event.special[ orig ] = {
-		delegateType: fix,
-		bindType: fix,
-
-		handle: function( event ) {
-			var ret,
-				target = this,
-				related = event.relatedTarget,
-				handleObj = event.handleObj;
-
-			// For mousenter/leave call the handler if related is outside the target.
-			// NB: No relatedTarget if the mouse left/entered the browser window
-			if ( !related || (related !== target && !jQuery.contains( target, related )) ) {
-				event.type = handleObj.origType;
-				ret = handleObj.handler.apply( this, arguments );
-				event.type = fix;
-			}
-			return ret;
-		}
-	};
-});
-
-// Create "bubbling" focus and blur events
-// Support: Firefox, Chrome, Safari
-if ( !support.focusinBubbles ) {
-	jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
-
-		// Attach a single capturing handler on the document while someone wants focusin/focusout
-		var handler = function( event ) {
-				jQuery.event.simulate( fix, event.target, jQuery.event.fix( event ), true );
-			};
-
-		jQuery.event.special[ fix ] = {
-			setup: function() {
-				var doc = this.ownerDocument || this,
-					attaches = data_priv.access( doc, fix );
-
-				if ( !attaches ) {
-					doc.addEventListener( orig, handler, true );
-				}
-				data_priv.access( doc, fix, ( attaches || 0 ) + 1 );
-			},
-			teardown: function() {
-				var doc = this.ownerDocument || this,
-					attaches = data_priv.access( doc, fix ) - 1;
-
-				if ( !attaches ) {
-					doc.removeEventListener( orig, handler, true );
-					data_priv.remove( doc, fix );
-
-				} else {
-					data_priv.access( doc, fix, attaches );
-				}
-			}
-		};
-	});
-}
-
-jQuery.fn.extend({
-
-	on: function( types, selector, data, fn, /*INTERNAL*/ one ) {
-		var origFn, type;
-
-		// Types can be a map of types/handlers
-		if ( typeof types === "object" ) {
-			// ( types-Object, selector, data )
-			if ( typeof selector !== "string" ) {
-				// ( types-Object, data )
-				data = data || selector;
-				selector = undefined;
-			}
-			for ( type in types ) {
-				this.on( type, selector, data, types[ type ], one );
-			}
-			return this;
-		}
-
-		if ( data == null && fn == null ) {
-			// ( types, fn )
-			fn = selector;
-			data = selector = undefined;
-		} else if ( fn == null ) {
-			if ( typeof selector === "string" ) {
-				// ( types, selector, fn )
-				fn = data;
-				data = undefined;
-			} else {
-				// ( types, data, fn )
-				fn = data;
-				data = selector;
-				selector = undefined;
-			}
-		}
-		if ( fn === false ) {
-			fn = returnFalse;
-		} else if ( !fn ) {
-			return this;
-		}
-
-		if ( one === 1 ) {
-			origFn = fn;
-			fn = function( event ) {
-				// Can use an empty set, since event contains the info
-				jQuery().off( event );
-				return origFn.apply( this, arguments );
-			};
-			// Use same guid so caller can remove using origFn
-			fn.guid = origFn.guid || ( origFn.guid = jQuery.guid++ );
-		}
-		return this.each( function() {
-			jQuery.event.add( this, types, fn, data, selector );
-		});
-	},
-	one: function( types, selector, data, fn ) {
-		return this.on( types, selector, data, fn, 1 );
-	},
-	off: function( types, selector, fn ) {
-		var handleObj, type;
-		if ( types && types.preventDefault && types.handleObj ) {
-			// ( event )  dispatched jQuery.Event
-			handleObj = types.handleObj;
-			jQuery( types.delegateTarget ).off(
-				handleObj.namespace ? handleObj.origType + "." + handleObj.namespace : handleObj.origType,
-				handleObj.selector,
-				handleObj.handler
-			);
-			return this;
-		}
-		if ( typeof types === "object" ) {
-			// ( types-object [, selector] )
-			for ( type in types ) {
-				this.off( type, selector, types[ type ] );
-			}
-			return this;
-		}
-		if ( selector === false || typeof selector === "function" ) {
-			// ( types [, fn] )
-			fn = selector;
-			selector = undefined;
-		}
-		if ( fn === false ) {
-			fn = returnFalse;
-		}
-		return this.each(function() {
-			jQuery.event.remove( this, types, fn, selector );
-		});
-	},
-
-	trigger: function( type, data ) {
-		return this.each(function() {
-			jQuery.event.trigger( type, data, this );
-		});
-	},
-	triggerHandler: function( type, data ) {
-		var elem = this[0];
-		if ( elem ) {
-			return jQuery.event.trigger( type, data, elem, true );
-		}
-	}
-});
-
-
-var
-	rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,
-	rtagName = /<([\w:]+)/,
-	rhtml = /<|?\w+;/,
-	rnoInnerhtml = /<(?:script|style|link)/i,
-	// checked="checked" or checked
-	rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
-	rscriptType = /^$|\/(?:java|ecma)script/i,
-	rscriptTypeMasked = /^true\/(.*)/,
-	rcleanScript = /^\s*\s*$/g,
-
-	// We have to close these tags to support XHTML (#13200)
-	wrapMap = {
-
-		// Support: IE 9
-		option: [ 1, "", " " ],
-
-		thead: [ 1, "" ],
-		col: [ 2, "" ],
-		tr: [ 2, "" ],
-		td: [ 3, "" ],
-
-		_default: [ 0, "", "" ]
-	};
-
-// Support: IE 9
-wrapMap.optgroup = wrapMap.option;
-
-wrapMap.tbody = wrapMap.tfoot = wrapMap.colgroup = wrapMap.caption = wrapMap.thead;
-wrapMap.th = wrapMap.td;
-
-// Support: 1.x compatibility
-// Manipulating tables requires a tbody
-function manipulationTarget( elem, content ) {
-	return jQuery.nodeName( elem, "table" ) &&
-		jQuery.nodeName( content.nodeType !== 11 ? content : content.firstChild, "tr" ) ?
-
-		elem.getElementsByTagName("tbody")[0] ||
-			elem.appendChild( elem.ownerDocument.createElement("tbody") ) :
-		elem;
-}
-
-// Replace/restore the type attribute of script elements for safe DOM manipulation
-function disableScript( elem ) {
-	elem.type = (elem.getAttribute("type") !== null) + "/" + elem.type;
-	return elem;
-}
-function restoreScript( elem ) {
-	var match = rscriptTypeMasked.exec( elem.type );
-
-	if ( match ) {
-		elem.type = match[ 1 ];
-	} else {
-		elem.removeAttribute("type");
-	}
-
-	return elem;
-}
-
-// Mark scripts as having already been evaluated
-function setGlobalEval( elems, refElements ) {
-	var i = 0,
-		l = elems.length;
-
-	for ( ; i < l; i++ ) {
-		data_priv.set(
-			elems[ i ], "globalEval", !refElements || data_priv.get( refElements[ i ], "globalEval" )
-		);
-	}
-}
-
-function cloneCopyEvent( src, dest ) {
-	var i, l, type, pdataOld, pdataCur, udataOld, udataCur, events;
-
-	if ( dest.nodeType !== 1 ) {
-		return;
-	}
-
-	// 1. Copy private data: events, handlers, etc.
-	if ( data_priv.hasData( src ) ) {
-		pdataOld = data_priv.access( src );
-		pdataCur = data_priv.set( dest, pdataOld );
-		events = pdataOld.events;
-
-		if ( events ) {
-			delete pdataCur.handle;
-			pdataCur.events = {};
-
-			for ( type in events ) {
-				for ( i = 0, l = events[ type ].length; i < l; i++ ) {
-					jQuery.event.add( dest, type, events[ type ][ i ] );
-				}
-			}
-		}
-	}
-
-	// 2. Copy user data
-	if ( data_user.hasData( src ) ) {
-		udataOld = data_user.access( src );
-		udataCur = jQuery.extend( {}, udataOld );
-
-		data_user.set( dest, udataCur );
-	}
-}
-
-function getAll( context, tag ) {
-	var ret = context.getElementsByTagName ? context.getElementsByTagName( tag || "*" ) :
-			context.querySelectorAll ? context.querySelectorAll( tag || "*" ) :
-			[];
-
-	return tag === undefined || tag && jQuery.nodeName( context, tag ) ?
-		jQuery.merge( [ context ], ret ) :
-		ret;
-}
-
-// Support: IE >= 9
-function fixInput( src, dest ) {
-	var nodeName = dest.nodeName.toLowerCase();
-
-	// Fails to persist the checked state of a cloned checkbox or radio button.
-	if ( nodeName === "input" && rcheckableType.test( src.type ) ) {
-		dest.checked = src.checked;
-
-	// Fails to return the selected option to the default selected state when cloning options
-	} else if ( nodeName === "input" || nodeName === "textarea" ) {
-		dest.defaultValue = src.defaultValue;
-	}
-}
-
-jQuery.extend({
-	clone: function( elem, dataAndEvents, deepDataAndEvents ) {
-		var i, l, srcElements, destElements,
-			clone = elem.cloneNode( true ),
-			inPage = jQuery.contains( elem.ownerDocument, elem );
-
-		// Support: IE >= 9
-		// Fix Cloning issues
-		if ( !support.noCloneChecked && ( elem.nodeType === 1 || elem.nodeType === 11 ) &&
-				!jQuery.isXMLDoc( elem ) ) {
-
-			// We eschew Sizzle here for performance reasons: http://jsperf.com/getall-vs-sizzle/2
-			destElements = getAll( clone );
-			srcElements = getAll( elem );
-
-			for ( i = 0, l = srcElements.length; i < l; i++ ) {
-				fixInput( srcElements[ i ], destElements[ i ] );
-			}
-		}
-
-		// Copy the events from the original to the clone
-		if ( dataAndEvents ) {
-			if ( deepDataAndEvents ) {
-				srcElements = srcElements || getAll( elem );
-				destElements = destElements || getAll( clone );
-
-				for ( i = 0, l = srcElements.length; i < l; i++ ) {
-					cloneCopyEvent( srcElements[ i ], destElements[ i ] );
-				}
-			} else {
-				cloneCopyEvent( elem, clone );
-			}
-		}
-
-		// Preserve script evaluation history
-		destElements = getAll( clone, "script" );
-		if ( destElements.length > 0 ) {
-			setGlobalEval( destElements, !inPage && getAll( elem, "script" ) );
-		}
-
-		// Return the cloned set
-		return clone;
-	},
-
-	buildFragment: function( elems, context, scripts, selection ) {
-		var elem, tmp, tag, wrap, contains, j,
-			fragment = context.createDocumentFragment(),
-			nodes = [],
-			i = 0,
-			l = elems.length;
-
-		for ( ; i < l; i++ ) {
-			elem = elems[ i ];
-
-			if ( elem || elem === 0 ) {
-
-				// Add nodes directly
-				if ( jQuery.type( elem ) === "object" ) {
-					// Support: QtWebKit
-					// jQuery.merge because push.apply(_, arraylike) throws
-					jQuery.merge( nodes, elem.nodeType ? [ elem ] : elem );
-
-				// Convert non-html into a text node
-				} else if ( !rhtml.test( elem ) ) {
-					nodes.push( context.createTextNode( elem ) );
-
-				// Convert html into DOM nodes
-				} else {
-					tmp = tmp || fragment.appendChild( context.createElement("div") );
-
-					// Deserialize a standard representation
-					tag = ( rtagName.exec( elem ) || [ "", "" ] )[ 1 ].toLowerCase();
-					wrap = wrapMap[ tag ] || wrapMap._default;
-					tmp.innerHTML = wrap[ 1 ] + elem.replace( rxhtmlTag, "<$1>$2>" ) + wrap[ 2 ];
-
-					// Descend through wrappers to the right content
-					j = wrap[ 0 ];
-					while ( j-- ) {
-						tmp = tmp.lastChild;
-					}
-
-					// Support: QtWebKit
-					// jQuery.merge because push.apply(_, arraylike) throws
-					jQuery.merge( nodes, tmp.childNodes );
-
-					// Remember the top-level container
-					tmp = fragment.firstChild;
-
-					// Fixes #12346
-					// Support: Webkit, IE
-					tmp.textContent = "";
-				}
-			}
-		}
-
-		// Remove wrapper from fragment
-		fragment.textContent = "";
-
-		i = 0;
-		while ( (elem = nodes[ i++ ]) ) {
-
-			// #4087 - If origin and destination elements are the same, and this is
-			// that element, do not do anything
-			if ( selection && jQuery.inArray( elem, selection ) !== -1 ) {
-				continue;
-			}
-
-			contains = jQuery.contains( elem.ownerDocument, elem );
-
-			// Append to fragment
-			tmp = getAll( fragment.appendChild( elem ), "script" );
-
-			// Preserve script evaluation history
-			if ( contains ) {
-				setGlobalEval( tmp );
-			}
-
-			// Capture executables
-			if ( scripts ) {
-				j = 0;
-				while ( (elem = tmp[ j++ ]) ) {
-					if ( rscriptType.test( elem.type || "" ) ) {
-						scripts.push( elem );
-					}
-				}
-			}
-		}
-
-		return fragment;
-	},
-
-	cleanData: function( elems ) {
-		var data, elem, type, key,
-			special = jQuery.event.special,
-			i = 0;
-
-		for ( ; (elem = elems[ i ]) !== undefined; i++ ) {
-			if ( jQuery.acceptData( elem ) ) {
-				key = elem[ data_priv.expando ];
-
-				if ( key && (data = data_priv.cache[ key ]) ) {
-					if ( data.events ) {
-						for ( type in data.events ) {
-							if ( special[ type ] ) {
-								jQuery.event.remove( elem, type );
-
-							// This is a shortcut to avoid jQuery.event.remove's overhead
-							} else {
-								jQuery.removeEvent( elem, type, data.handle );
-							}
-						}
-					}
-					if ( data_priv.cache[ key ] ) {
-						// Discard any remaining `private` data
-						delete data_priv.cache[ key ];
-					}
-				}
-			}
-			// Discard any remaining `user` data
-			delete data_user.cache[ elem[ data_user.expando ] ];
-		}
-	}
-});
-
-jQuery.fn.extend({
-	text: function( value ) {
-		return access( this, function( value ) {
-			return value === undefined ?
-				jQuery.text( this ) :
-				this.empty().each(function() {
-					if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-						this.textContent = value;
-					}
-				});
-		}, null, value, arguments.length );
-	},
-
-	append: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.appendChild( elem );
-			}
-		});
-	},
-
-	prepend: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.nodeType === 1 || this.nodeType === 11 || this.nodeType === 9 ) {
-				var target = manipulationTarget( this, elem );
-				target.insertBefore( elem, target.firstChild );
-			}
-		});
-	},
-
-	before: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this );
-			}
-		});
-	},
-
-	after: function() {
-		return this.domManip( arguments, function( elem ) {
-			if ( this.parentNode ) {
-				this.parentNode.insertBefore( elem, this.nextSibling );
-			}
-		});
-	},
-
-	remove: function( selector, keepData /* Internal Use Only */ ) {
-		var elem,
-			elems = selector ? jQuery.filter( selector, this ) : this,
-			i = 0;
-
-		for ( ; (elem = elems[i]) != null; i++ ) {
-			if ( !keepData && elem.nodeType === 1 ) {
-				jQuery.cleanData( getAll( elem ) );
-			}
-
-			if ( elem.parentNode ) {
-				if ( keepData && jQuery.contains( elem.ownerDocument, elem ) ) {
-					setGlobalEval( getAll( elem, "script" ) );
-				}
-				elem.parentNode.removeChild( elem );
-			}
-		}
-
-		return this;
-	},
-
-	empty: function() {
-		var elem,
-			i = 0;
-
-		for ( ; (elem = this[i]) != null; i++ ) {
-			if ( elem.nodeType === 1 ) {
-
-				// Prevent memory leaks
-				jQuery.cleanData( getAll( elem, false ) );
-
-				// Remove any remaining nodes
-				elem.textContent = "";
-			}
-		}
-
-		return this;
-	},
-
-	clone: function( dataAndEvents, deepDataAndEvents ) {
-		dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
-		deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
-
-		return this.map(function() {
-			return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
-		});
-	},
-
-	html: function( value ) {
-		return access( this, function( value ) {
-			var elem = this[ 0 ] || {},
-				i = 0,
-				l = this.length;
-
-			if ( value === undefined && elem.nodeType === 1 ) {
-				return elem.innerHTML;
-			}
-
-			// See if we can take a shortcut and just use innerHTML
-			if ( typeof value === "string" && !rnoInnerhtml.test( value ) &&
-				!wrapMap[ ( rtagName.exec( value ) || [ "", "" ] )[ 1 ].toLowerCase() ] ) {
-
-				value = value.replace( rxhtmlTag, "<$1>$2>" );
-
-				try {
-					for ( ; i < l; i++ ) {
-						elem = this[ i ] || {};
-
-						// Remove element nodes and prevent memory leaks
-						if ( elem.nodeType === 1 ) {
-							jQuery.cleanData( getAll( elem, false ) );
-							elem.innerHTML = value;
-						}
-					}
-
-					elem = 0;
-
-				// If using innerHTML throws an exception, use the fallback method
-				} catch( e ) {}
-			}
-
-			if ( elem ) {
-				this.empty().append( value );
-			}
-		}, null, value, arguments.length );
-	},
-
-	replaceWith: function() {
-		var arg = arguments[ 0 ];
-
-		// Make the changes, replacing each context element with the new content
-		this.domManip( arguments, function( elem ) {
-			arg = this.parentNode;
-
-			jQuery.cleanData( getAll( this ) );
-
-			if ( arg ) {
-				arg.replaceChild( elem, this );
-			}
-		});
-
-		// Force removal if there was no new content (e.g., from empty arguments)
-		return arg && (arg.length || arg.nodeType) ? this : this.remove();
-	},
-
-	detach: function( selector ) {
-		return this.remove( selector, true );
-	},
-
-	domManip: function( args, callback ) {
-
-		// Flatten any nested arrays
-		args = concat.apply( [], args );
-
-		var fragment, first, scripts, hasScripts, node, doc,
-			i = 0,
-			l = this.length,
-			set = this,
-			iNoClone = l - 1,
-			value = args[ 0 ],
-			isFunction = jQuery.isFunction( value );
-
-		// We can't cloneNode fragments that contain checked, in WebKit
-		if ( isFunction ||
-				( l > 1 && typeof value === "string" &&
-					!support.checkClone && rchecked.test( value ) ) ) {
-			return this.each(function( index ) {
-				var self = set.eq( index );
-				if ( isFunction ) {
-					args[ 0 ] = value.call( this, index, self.html() );
-				}
-				self.domManip( args, callback );
-			});
-		}
-
-		if ( l ) {
-			fragment = jQuery.buildFragment( args, this[ 0 ].ownerDocument, false, this );
-			first = fragment.firstChild;
-
-			if ( fragment.childNodes.length === 1 ) {
-				fragment = first;
-			}
-
-			if ( first ) {
-				scripts = jQuery.map( getAll( fragment, "script" ), disableScript );
-				hasScripts = scripts.length;
-
-				// Use the original fragment for the last item instead of the first because it can end up
-				// being emptied incorrectly in certain situations (#8070).
-				for ( ; i < l; i++ ) {
-					node = fragment;
-
-					if ( i !== iNoClone ) {
-						node = jQuery.clone( node, true, true );
-
-						// Keep references to cloned scripts for later restoration
-						if ( hasScripts ) {
-							// Support: QtWebKit
-							// jQuery.merge because push.apply(_, arraylike) throws
-							jQuery.merge( scripts, getAll( node, "script" ) );
-						}
-					}
-
-					callback.call( this[ i ], node, i );
-				}
-
-				if ( hasScripts ) {
-					doc = scripts[ scripts.length - 1 ].ownerDocument;
-
-					// Reenable scripts
-					jQuery.map( scripts, restoreScript );
-
-					// Evaluate executable scripts on first document insertion
-					for ( i = 0; i < hasScripts; i++ ) {
-						node = scripts[ i ];
-						if ( rscriptType.test( node.type || "" ) &&
-							!data_priv.access( node, "globalEval" ) && jQuery.contains( doc, node ) ) {
-
-							if ( node.src ) {
-								// Optional AJAX dependency, but won't run scripts if not present
-								if ( jQuery._evalUrl ) {
-									jQuery._evalUrl( node.src );
-								}
-							} else {
-								jQuery.globalEval( node.textContent.replace( rcleanScript, "" ) );
-							}
-						}
-					}
-				}
-			}
-		}
-
-		return this;
-	}
-});
-
-jQuery.each({
-	appendTo: "append",
-	prependTo: "prepend",
-	insertBefore: "before",
-	insertAfter: "after",
-	replaceAll: "replaceWith"
-}, function( name, original ) {
-	jQuery.fn[ name ] = function( selector ) {
-		var elems,
-			ret = [],
-			insert = jQuery( selector ),
-			last = insert.length - 1,
-			i = 0;
-
-		for ( ; i <= last; i++ ) {
-			elems = i === last ? this : this.clone( true );
-			jQuery( insert[ i ] )[ original ]( elems );
-
-			// Support: QtWebKit
-			// .get() because push.apply(_, arraylike) throws
-			push.apply( ret, elems.get() );
-		}
-
-		return this.pushStack( ret );
-	};
-});
-
-
-var iframe,
-	elemdisplay = {};
-
-/**
- * Retrieve the actual display of a element
- * @param {String} name nodeName of the element
- * @param {Object} doc Document object
- */
-// Called only from within defaultDisplay
-function actualDisplay( name, doc ) {
-	var style,
-		elem = jQuery( doc.createElement( name ) ).appendTo( doc.body ),
-
-		// getDefaultComputedStyle might be reliably used only on attached element
-		display = window.getDefaultComputedStyle && ( style = window.getDefaultComputedStyle( elem[ 0 ] ) ) ?
-
-			// Use of this method is a temporary fix (more like optmization) until something better comes along,
-			// since it was removed from specification and supported only in FF
-			style.display : jQuery.css( elem[ 0 ], "display" );
-
-	// We don't have any data stored on the element,
-	// so use "detach" method as fast way to get rid of the element
-	elem.detach();
-
-	return display;
-}
-
-/**
- * Try to determine the default display value of an element
- * @param {String} nodeName
- */
-function defaultDisplay( nodeName ) {
-	var doc = document,
-		display = elemdisplay[ nodeName ];
-
-	if ( !display ) {
-		display = actualDisplay( nodeName, doc );
-
-		// If the simple way fails, read from inside an iframe
-		if ( display === "none" || !display ) {
-
-			// Use the already-created iframe if possible
-			iframe = (iframe || jQuery( "" )).appendTo( doc.documentElement );
-
-			// Always write a new HTML skeleton so Webkit and Firefox don't choke on reuse
-			doc = iframe[ 0 ].contentDocument;
-
-			// Support: IE
-			doc.write();
-			doc.close();
-
-			display = actualDisplay( nodeName, doc );
-			iframe.detach();
-		}
-
-		// Store the correct default display
-		elemdisplay[ nodeName ] = display;
-	}
-
-	return display;
-}
-var rmargin = (/^margin/);
-
-var rnumnonpx = new RegExp( "^(" + pnum + ")(?!px)[a-z%]+$", "i" );
-
-var getStyles = function( elem ) {
-		return elem.ownerDocument.defaultView.getComputedStyle( elem, null );
-	};
-
-
-
-function curCSS( elem, name, computed ) {
-	var width, minWidth, maxWidth, ret,
-		style = elem.style;
-
-	computed = computed || getStyles( elem );
-
-	// Support: IE9
-	// getPropertyValue is only needed for .css('filter') in IE9, see #12537
-	if ( computed ) {
-		ret = computed.getPropertyValue( name ) || computed[ name ];
-	}
-
-	if ( computed ) {
-
-		if ( ret === "" && !jQuery.contains( elem.ownerDocument, elem ) ) {
-			ret = jQuery.style( elem, name );
-		}
-
-		// Support: iOS < 6
-		// A tribute to the "awesome hack by Dean Edwards"
-		// iOS < 6 (at least) returns percentage for a larger set of values, but width seems to be reliably pixels
-		// this is against the CSSOM draft spec: http://dev.w3.org/csswg/cssom/#resolved-values
-		if ( rnumnonpx.test( ret ) && rmargin.test( name ) ) {
-
-			// Remember the original values
-			width = style.width;
-			minWidth = style.minWidth;
-			maxWidth = style.maxWidth;
-
-			// Put in the new values to get a computed value out
-			style.minWidth = style.maxWidth = style.width = ret;
-			ret = computed.width;
-
-			// Revert the changed values
-			style.width = width;
-			style.minWidth = minWidth;
-			style.maxWidth = maxWidth;
-		}
-	}
-
-	return ret !== undefined ?
-		// Support: IE
-		// IE returns zIndex value as an integer.
-		ret + "" :
-		ret;
-}
-
-
-function addGetHookIf( conditionFn, hookFn ) {
-	// Define the hook, we'll check on the first run if it's really needed.
-	return {
-		get: function() {
-			if ( conditionFn() ) {
-				// Hook not needed (or it's not possible to use it due to missing dependency),
-				// remove it.
-				// Since there are no other hooks for marginRight, remove the whole object.
-				delete this.get;
-				return;
-			}
-
-			// Hook needed; redefine it so that the support test is not executed again.
-
-			return (this.get = hookFn).apply( this, arguments );
-		}
-	};
-}
-
-
-(function() {
-	var pixelPositionVal, boxSizingReliableVal,
-		docElem = document.documentElement,
-		container = document.createElement( "div" ),
-		div = document.createElement( "div" );
-
-	if ( !div.style ) {
-		return;
-	}
-
-	div.style.backgroundClip = "content-box";
-	div.cloneNode( true ).style.backgroundClip = "";
-	support.clearCloneStyle = div.style.backgroundClip === "content-box";
-
-	container.style.cssText = "border:0;width:0;height:0;top:0;left:-9999px;margin-top:1px;" +
-		"position:absolute";
-	container.appendChild( div );
-
-	// Executing both pixelPosition & boxSizingReliable tests require only one layout
-	// so they're executed at the same time to save the second computation.
-	function computePixelPositionAndBoxSizingReliable() {
-		div.style.cssText =
-			// Support: Firefox<29, Android 2.3
-			// Vendor-prefix box-sizing
-			"-webkit-box-sizing:border-box;-moz-box-sizing:border-box;" +
-			"box-sizing:border-box;display:block;margin-top:1%;top:1%;" +
-			"border:1px;padding:1px;width:4px;position:absolute";
-		div.innerHTML = "";
-		docElem.appendChild( container );
-
-		var divStyle = window.getComputedStyle( div, null );
-		pixelPositionVal = divStyle.top !== "1%";
-		boxSizingReliableVal = divStyle.width === "4px";
-
-		docElem.removeChild( container );
-	}
-
-	// Support: node.js jsdom
-	// Don't assume that getComputedStyle is a property of the global object
-	if ( window.getComputedStyle ) {
-		jQuery.extend( support, {
-			pixelPosition: function() {
-				// This test is executed only once but we still do memoizing
-				// since we can use the boxSizingReliable pre-computing.
-				// No need to check if the test was already performed, though.
-				computePixelPositionAndBoxSizingReliable();
-				return pixelPositionVal;
-			},
-			boxSizingReliable: function() {
-				if ( boxSizingReliableVal == null ) {
-					computePixelPositionAndBoxSizingReliable();
-				}
-				return boxSizingReliableVal;
-			},
-			reliableMarginRight: function() {
-				// Support: Android 2.3
-				// Check if div with explicit width and no margin-right incorrectly
-				// gets computed margin-right based on width of container. (#3333)
-				// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-				// This support function is only executed once so no memoizing is needed.
-				var ret,
-					marginDiv = div.appendChild( document.createElement( "div" ) );
-
-				// Reset CSS: box-sizing; display; margin; border; padding
-				marginDiv.style.cssText = div.style.cssText =
-					// Support: Firefox<29, Android 2.3
-					// Vendor-prefix box-sizing
-					"-webkit-box-sizing:content-box;-moz-box-sizing:content-box;" +
-					"box-sizing:content-box;display:block;margin:0;border:0;padding:0";
-				marginDiv.style.marginRight = marginDiv.style.width = "0";
-				div.style.width = "1px";
-				docElem.appendChild( container );
-
-				ret = !parseFloat( window.getComputedStyle( marginDiv, null ).marginRight );
-
-				docElem.removeChild( container );
-
-				return ret;
-			}
-		});
-	}
-})();
-
-
-// A method for quickly swapping in/out CSS properties to get correct calculations.
-jQuery.swap = function( elem, options, callback, args ) {
-	var ret, name,
-		old = {};
-
-	// Remember the old values, and insert the new ones
-	for ( name in options ) {
-		old[ name ] = elem.style[ name ];
-		elem.style[ name ] = options[ name ];
-	}
-
-	ret = callback.apply( elem, args || [] );
-
-	// Revert the old values
-	for ( name in options ) {
-		elem.style[ name ] = old[ name ];
-	}
-
-	return ret;
-};
-
-
-var
-	// swappable if display is none or starts with table except "table", "table-cell", or "table-caption"
-	// see here for display values: https://developer.mozilla.org/en-US/docs/CSS/display
-	rdisplayswap = /^(none|table(?!-c[ea]).+)/,
-	rnumsplit = new RegExp( "^(" + pnum + ")(.*)$", "i" ),
-	rrelNum = new RegExp( "^([+-])=(" + pnum + ")", "i" ),
-
-	cssShow = { position: "absolute", visibility: "hidden", display: "block" },
-	cssNormalTransform = {
-		letterSpacing: "0",
-		fontWeight: "400"
-	},
-
-	cssPrefixes = [ "Webkit", "O", "Moz", "ms" ];
-
-// return a css property mapped to a potentially vendor prefixed property
-function vendorPropName( style, name ) {
-
-	// shortcut for names that are not vendor prefixed
-	if ( name in style ) {
-		return name;
-	}
-
-	// check for vendor prefixed names
-	var capName = name[0].toUpperCase() + name.slice(1),
-		origName = name,
-		i = cssPrefixes.length;
-
-	while ( i-- ) {
-		name = cssPrefixes[ i ] + capName;
-		if ( name in style ) {
-			return name;
-		}
-	}
-
-	return origName;
-}
-
-function setPositiveNumber( elem, value, subtract ) {
-	var matches = rnumsplit.exec( value );
-	return matches ?
-		// Guard against undefined "subtract", e.g., when used as in cssHooks
-		Math.max( 0, matches[ 1 ] - ( subtract || 0 ) ) + ( matches[ 2 ] || "px" ) :
-		value;
-}
-
-function augmentWidthOrHeight( elem, name, extra, isBorderBox, styles ) {
-	var i = extra === ( isBorderBox ? "border" : "content" ) ?
-		// If we already have the right measurement, avoid augmentation
-		4 :
-		// Otherwise initialize for horizontal or vertical properties
-		name === "width" ? 1 : 0,
-
-		val = 0;
-
-	for ( ; i < 4; i += 2 ) {
-		// both box models exclude margin, so add it if we want it
-		if ( extra === "margin" ) {
-			val += jQuery.css( elem, extra + cssExpand[ i ], true, styles );
-		}
-
-		if ( isBorderBox ) {
-			// border-box includes padding, so remove it if we want content
-			if ( extra === "content" ) {
-				val -= jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-			}
-
-			// at this point, extra isn't border nor margin, so remove border
-			if ( extra !== "margin" ) {
-				val -= jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		} else {
-			// at this point, extra isn't content, so add padding
-			val += jQuery.css( elem, "padding" + cssExpand[ i ], true, styles );
-
-			// at this point, extra isn't content nor padding, so add border
-			if ( extra !== "padding" ) {
-				val += jQuery.css( elem, "border" + cssExpand[ i ] + "Width", true, styles );
-			}
-		}
-	}
-
-	return val;
-}
-
-function getWidthOrHeight( elem, name, extra ) {
-
-	// Start with offset property, which is equivalent to the border-box value
-	var valueIsBorderBox = true,
-		val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
-		styles = getStyles( elem ),
-		isBorderBox = jQuery.css( elem, "boxSizing", false, styles ) === "border-box";
-
-	// some non-html elements return undefined for offsetWidth, so check for null/undefined
-	// svg - https://bugzilla.mozilla.org/show_bug.cgi?id=649285
-	// MathML - https://bugzilla.mozilla.org/show_bug.cgi?id=491668
-	if ( val <= 0 || val == null ) {
-		// Fall back to computed then uncomputed css if necessary
-		val = curCSS( elem, name, styles );
-		if ( val < 0 || val == null ) {
-			val = elem.style[ name ];
-		}
-
-		// Computed unit is not pixels. Stop here and return.
-		if ( rnumnonpx.test(val) ) {
-			return val;
-		}
-
-		// we need the check for style in case a browser which returns unreliable values
-		// for getComputedStyle silently falls back to the reliable elem.style
-		valueIsBorderBox = isBorderBox &&
-			( support.boxSizingReliable() || val === elem.style[ name ] );
-
-		// Normalize "", auto, and prepare for extra
-		val = parseFloat( val ) || 0;
-	}
-
-	// use the active box-sizing model to add/subtract irrelevant styles
-	return ( val +
-		augmentWidthOrHeight(
-			elem,
-			name,
-			extra || ( isBorderBox ? "border" : "content" ),
-			valueIsBorderBox,
-			styles
-		)
-	) + "px";
-}
-
-function showHide( elements, show ) {
-	var display, elem, hidden,
-		values = [],
-		index = 0,
-		length = elements.length;
-
-	for ( ; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-
-		values[ index ] = data_priv.get( elem, "olddisplay" );
-		display = elem.style.display;
-		if ( show ) {
-			// Reset the inline display of this element to learn if it is
-			// being hidden by cascaded rules or not
-			if ( !values[ index ] && display === "none" ) {
-				elem.style.display = "";
-			}
-
-			// Set elements which have been overridden with display: none
-			// in a stylesheet to whatever the default browser style is
-			// for such an element
-			if ( elem.style.display === "" && isHidden( elem ) ) {
-				values[ index ] = data_priv.access( elem, "olddisplay", defaultDisplay(elem.nodeName) );
-			}
-		} else {
-			hidden = isHidden( elem );
-
-			if ( display !== "none" || !hidden ) {
-				data_priv.set( elem, "olddisplay", hidden ? display : jQuery.css( elem, "display" ) );
-			}
-		}
-	}
-
-	// Set the display of most of the elements in a second loop
-	// to avoid the constant reflow
-	for ( index = 0; index < length; index++ ) {
-		elem = elements[ index ];
-		if ( !elem.style ) {
-			continue;
-		}
-		if ( !show || elem.style.display === "none" || elem.style.display === "" ) {
-			elem.style.display = show ? values[ index ] || "" : "none";
-		}
-	}
-
-	return elements;
-}
-
-jQuery.extend({
-	// Add in style property hooks for overriding the default
-	// behavior of getting and setting a style property
-	cssHooks: {
-		opacity: {
-			get: function( elem, computed ) {
-				if ( computed ) {
-					// We should always get a number back from opacity
-					var ret = curCSS( elem, "opacity" );
-					return ret === "" ? "1" : ret;
-				}
-			}
-		}
-	},
-
-	// Don't automatically add "px" to these possibly-unitless properties
-	cssNumber: {
-		"columnCount": true,
-		"fillOpacity": true,
-		"flexGrow": true,
-		"flexShrink": true,
-		"fontWeight": true,
-		"lineHeight": true,
-		"opacity": true,
-		"order": true,
-		"orphans": true,
-		"widows": true,
-		"zIndex": true,
-		"zoom": true
-	},
-
-	// Add in properties whose names you wish to fix before
-	// setting or getting the value
-	cssProps: {
-		// normalize float css property
-		"float": "cssFloat"
-	},
-
-	// Get and set the style property on a DOM Node
-	style: function( elem, name, value, extra ) {
-		// Don't set styles on text and comment nodes
-		if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
-			return;
-		}
-
-		// Make sure that we're working with the right name
-		var ret, type, hooks,
-			origName = jQuery.camelCase( name ),
-			style = elem.style;
-
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( style, origName ) );
-
-		// gets hook for the prefixed version
-		// followed by the unprefixed version
-		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-		// Check if we're setting a value
-		if ( value !== undefined ) {
-			type = typeof value;
-
-			// convert relative number strings (+= or -=) to relative numbers. #7345
-			if ( type === "string" && (ret = rrelNum.exec( value )) ) {
-				value = ( ret[1] + 1 ) * ret[2] + parseFloat( jQuery.css( elem, name ) );
-				// Fixes bug #9237
-				type = "number";
-			}
-
-			// Make sure that null and NaN values aren't set. See: #7116
-			if ( value == null || value !== value ) {
-				return;
-			}
-
-			// If a number was passed in, add 'px' to the (except for certain CSS properties)
-			if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
-				value += "px";
-			}
-
-			// Fixes #8908, it can be done more correctly by specifying setters in cssHooks,
-			// but it would mean to define eight (for every problematic property) identical functions
-			if ( !support.clearCloneStyle && value === "" && name.indexOf( "background" ) === 0 ) {
-				style[ name ] = "inherit";
-			}
-
-			// If a hook was provided, use that value, otherwise just set the specified value
-			if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value, extra )) !== undefined ) {
-				style[ name ] = value;
-			}
-
-		} else {
-			// If a hook was provided get the non-computed value from there
-			if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
-				return ret;
-			}
-
-			// Otherwise just get the value from the style object
-			return style[ name ];
-		}
-	},
-
-	css: function( elem, name, extra, styles ) {
-		var val, num, hooks,
-			origName = jQuery.camelCase( name );
-
-		// Make sure that we're working with the right name
-		name = jQuery.cssProps[ origName ] || ( jQuery.cssProps[ origName ] = vendorPropName( elem.style, origName ) );
-
-		// gets hook for the prefixed version
-		// followed by the unprefixed version
-		hooks = jQuery.cssHooks[ name ] || jQuery.cssHooks[ origName ];
-
-		// If a hook was provided get the computed value from there
-		if ( hooks && "get" in hooks ) {
-			val = hooks.get( elem, true, extra );
-		}
-
-		// Otherwise, if a way to get the computed value exists, use that
-		if ( val === undefined ) {
-			val = curCSS( elem, name, styles );
-		}
-
-		//convert "normal" to computed value
-		if ( val === "normal" && name in cssNormalTransform ) {
-			val = cssNormalTransform[ name ];
-		}
-
-		// Return, converting to number if forced or a qualifier was provided and val looks numeric
-		if ( extra === "" || extra ) {
-			num = parseFloat( val );
-			return extra === true || jQuery.isNumeric( num ) ? num || 0 : val;
-		}
-		return val;
-	}
-});
-
-jQuery.each([ "height", "width" ], function( i, name ) {
-	jQuery.cssHooks[ name ] = {
-		get: function( elem, computed, extra ) {
-			if ( computed ) {
-				// certain elements can have dimension info if we invisibly show them
-				// however, it must have a current display style that would benefit from this
-				return rdisplayswap.test( jQuery.css( elem, "display" ) ) && elem.offsetWidth === 0 ?
-					jQuery.swap( elem, cssShow, function() {
-						return getWidthOrHeight( elem, name, extra );
-					}) :
-					getWidthOrHeight( elem, name, extra );
-			}
-		},
-
-		set: function( elem, value, extra ) {
-			var styles = extra && getStyles( elem );
-			return setPositiveNumber( elem, value, extra ?
-				augmentWidthOrHeight(
-					elem,
-					name,
-					extra,
-					jQuery.css( elem, "boxSizing", false, styles ) === "border-box",
-					styles
-				) : 0
-			);
-		}
-	};
-});
-
-// Support: Android 2.3
-jQuery.cssHooks.marginRight = addGetHookIf( support.reliableMarginRight,
-	function( elem, computed ) {
-		if ( computed ) {
-			// WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
-			// Work around by temporarily setting element display to inline-block
-			return jQuery.swap( elem, { "display": "inline-block" },
-				curCSS, [ elem, "marginRight" ] );
-		}
-	}
-);
-
-// These hooks are used by animate to expand properties
-jQuery.each({
-	margin: "",
-	padding: "",
-	border: "Width"
-}, function( prefix, suffix ) {
-	jQuery.cssHooks[ prefix + suffix ] = {
-		expand: function( value ) {
-			var i = 0,
-				expanded = {},
-
-				// assumes a single number if not a string
-				parts = typeof value === "string" ? value.split(" ") : [ value ];
-
-			for ( ; i < 4; i++ ) {
-				expanded[ prefix + cssExpand[ i ] + suffix ] =
-					parts[ i ] || parts[ i - 2 ] || parts[ 0 ];
-			}
-
-			return expanded;
-		}
-	};
-
-	if ( !rmargin.test( prefix ) ) {
-		jQuery.cssHooks[ prefix + suffix ].set = setPositiveNumber;
-	}
-});
-
-jQuery.fn.extend({
-	css: function( name, value ) {
-		return access( this, function( elem, name, value ) {
-			var styles, len,
-				map = {},
-				i = 0;
-
-			if ( jQuery.isArray( name ) ) {
-				styles = getStyles( elem );
-				len = name.length;
-
-				for ( ; i < len; i++ ) {
-					map[ name[ i ] ] = jQuery.css( elem, name[ i ], false, styles );
-				}
-
-				return map;
-			}
-
-			return value !== undefined ?
-				jQuery.style( elem, name, value ) :
-				jQuery.css( elem, name );
-		}, name, value, arguments.length > 1 );
-	},
-	show: function() {
-		return showHide( this, true );
-	},
-	hide: function() {
-		return showHide( this );
-	},
-	toggle: function( state ) {
-		if ( typeof state === "boolean" ) {
-			return state ? this.show() : this.hide();
-		}
-
-		return this.each(function() {
-			if ( isHidden( this ) ) {
-				jQuery( this ).show();
-			} else {
-				jQuery( this ).hide();
-			}
-		});
-	}
-});
-
-
-function Tween( elem, options, prop, end, easing ) {
-	return new Tween.prototype.init( elem, options, prop, end, easing );
-}
-jQuery.Tween = Tween;
-
-Tween.prototype = {
-	constructor: Tween,
-	init: function( elem, options, prop, end, easing, unit ) {
-		this.elem = elem;
-		this.prop = prop;
-		this.easing = easing || "swing";
-		this.options = options;
-		this.start = this.now = this.cur();
-		this.end = end;
-		this.unit = unit || ( jQuery.cssNumber[ prop ] ? "" : "px" );
-	},
-	cur: function() {
-		var hooks = Tween.propHooks[ this.prop ];
-
-		return hooks && hooks.get ?
-			hooks.get( this ) :
-			Tween.propHooks._default.get( this );
-	},
-	run: function( percent ) {
-		var eased,
-			hooks = Tween.propHooks[ this.prop ];
-
-		if ( this.options.duration ) {
-			this.pos = eased = jQuery.easing[ this.easing ](
-				percent, this.options.duration * percent, 0, 1, this.options.duration
-			);
-		} else {
-			this.pos = eased = percent;
-		}
-		this.now = ( this.end - this.start ) * eased + this.start;
-
-		if ( this.options.step ) {
-			this.options.step.call( this.elem, this.now, this );
-		}
-
-		if ( hooks && hooks.set ) {
-			hooks.set( this );
-		} else {
-			Tween.propHooks._default.set( this );
-		}
-		return this;
-	}
-};
-
-Tween.prototype.init.prototype = Tween.prototype;
-
-Tween.propHooks = {
-	_default: {
-		get: function( tween ) {
-			var result;
-
-			if ( tween.elem[ tween.prop ] != null &&
-				(!tween.elem.style || tween.elem.style[ tween.prop ] == null) ) {
-				return tween.elem[ tween.prop ];
-			}
-
-			// passing an empty string as a 3rd parameter to .css will automatically
-			// attempt a parseFloat and fallback to a string if the parse fails
-			// so, simple values such as "10px" are parsed to Float.
-			// complex values such as "rotate(1rad)" are returned as is.
-			result = jQuery.css( tween.elem, tween.prop, "" );
-			// Empty strings, null, undefined and "auto" are converted to 0.
-			return !result || result === "auto" ? 0 : result;
-		},
-		set: function( tween ) {
-			// use step hook for back compat - use cssHook if its there - use .style if its
-			// available and use plain properties where available
-			if ( jQuery.fx.step[ tween.prop ] ) {
-				jQuery.fx.step[ tween.prop ]( tween );
-			} else if ( tween.elem.style && ( tween.elem.style[ jQuery.cssProps[ tween.prop ] ] != null || jQuery.cssHooks[ tween.prop ] ) ) {
-				jQuery.style( tween.elem, tween.prop, tween.now + tween.unit );
-			} else {
-				tween.elem[ tween.prop ] = tween.now;
-			}
-		}
-	}
-};
-
-// Support: IE9
-// Panic based approach to setting things on disconnected nodes
-
-Tween.propHooks.scrollTop = Tween.propHooks.scrollLeft = {
-	set: function( tween ) {
-		if ( tween.elem.nodeType && tween.elem.parentNode ) {
-			tween.elem[ tween.prop ] = tween.now;
-		}
-	}
-};
-
-jQuery.easing = {
-	linear: function( p ) {
-		return p;
-	},
-	swing: function( p ) {
-		return 0.5 - Math.cos( p * Math.PI ) / 2;
-	}
-};
-
-jQuery.fx = Tween.prototype.init;
-
-// Back Compat <1.8 extension point
-jQuery.fx.step = {};
-
-
-
-
-var
-	fxNow, timerId,
-	rfxtypes = /^(?:toggle|show|hide)$/,
-	rfxnum = new RegExp( "^(?:([+-])=|)(" + pnum + ")([a-z%]*)$", "i" ),
-	rrun = /queueHooks$/,
-	animationPrefilters = [ defaultPrefilter ],
-	tweeners = {
-		"*": [ function( prop, value ) {
-			var tween = this.createTween( prop, value ),
-				target = tween.cur(),
-				parts = rfxnum.exec( value ),
-				unit = parts && parts[ 3 ] || ( jQuery.cssNumber[ prop ] ? "" : "px" ),
-
-				// Starting value computation is required for potential unit mismatches
-				start = ( jQuery.cssNumber[ prop ] || unit !== "px" && +target ) &&
-					rfxnum.exec( jQuery.css( tween.elem, prop ) ),
-				scale = 1,
-				maxIterations = 20;
-
-			if ( start && start[ 3 ] !== unit ) {
-				// Trust units reported by jQuery.css
-				unit = unit || start[ 3 ];
-
-				// Make sure we update the tween properties later on
-				parts = parts || [];
-
-				// Iteratively approximate from a nonzero starting point
-				start = +target || 1;
-
-				do {
-					// If previous iteration zeroed out, double until we get *something*
-					// Use a string for doubling factor so we don't accidentally see scale as unchanged below
-					scale = scale || ".5";
-
-					// Adjust and apply
-					start = start / scale;
-					jQuery.style( tween.elem, prop, start + unit );
-
-				// Update scale, tolerating zero or NaN from tween.cur()
-				// And breaking the loop if scale is unchanged or perfect, or if we've just had enough
-				} while ( scale !== (scale = tween.cur() / target) && scale !== 1 && --maxIterations );
-			}
-
-			// Update tween properties
-			if ( parts ) {
-				start = tween.start = +start || +target || 0;
-				tween.unit = unit;
-				// If a +=/-= token was provided, we're doing a relative animation
-				tween.end = parts[ 1 ] ?
-					start + ( parts[ 1 ] + 1 ) * parts[ 2 ] :
-					+parts[ 2 ];
-			}
-
-			return tween;
-		} ]
-	};
-
-// Animations created synchronously will run synchronously
-function createFxNow() {
-	setTimeout(function() {
-		fxNow = undefined;
-	});
-	return ( fxNow = jQuery.now() );
-}
-
-// Generate parameters to create a standard animation
-function genFx( type, includeWidth ) {
-	var which,
-		i = 0,
-		attrs = { height: type };
-
-	// if we include width, step value is 1 to do all cssExpand values,
-	// if we don't include width, step value is 2 to skip over Left and Right
-	includeWidth = includeWidth ? 1 : 0;
-	for ( ; i < 4 ; i += 2 - includeWidth ) {
-		which = cssExpand[ i ];
-		attrs[ "margin" + which ] = attrs[ "padding" + which ] = type;
-	}
-
-	if ( includeWidth ) {
-		attrs.opacity = attrs.width = type;
-	}
-
-	return attrs;
-}
-
-function createTween( value, prop, animation ) {
-	var tween,
-		collection = ( tweeners[ prop ] || [] ).concat( tweeners[ "*" ] ),
-		index = 0,
-		length = collection.length;
-	for ( ; index < length; index++ ) {
-		if ( (tween = collection[ index ].call( animation, prop, value )) ) {
-
-			// we're done with this property
-			return tween;
-		}
-	}
-}
-
-function defaultPrefilter( elem, props, opts ) {
-	/* jshint validthis: true */
-	var prop, value, toggle, tween, hooks, oldfire, display, checkDisplay,
-		anim = this,
-		orig = {},
-		style = elem.style,
-		hidden = elem.nodeType && isHidden( elem ),
-		dataShow = data_priv.get( elem, "fxshow" );
-
-	// handle queue: false promises
-	if ( !opts.queue ) {
-		hooks = jQuery._queueHooks( elem, "fx" );
-		if ( hooks.unqueued == null ) {
-			hooks.unqueued = 0;
-			oldfire = hooks.empty.fire;
-			hooks.empty.fire = function() {
-				if ( !hooks.unqueued ) {
-					oldfire();
-				}
-			};
-		}
-		hooks.unqueued++;
-
-		anim.always(function() {
-			// doing this makes sure that the complete handler will be called
-			// before this completes
-			anim.always(function() {
-				hooks.unqueued--;
-				if ( !jQuery.queue( elem, "fx" ).length ) {
-					hooks.empty.fire();
-				}
-			});
-		});
-	}
-
-	// height/width overflow pass
-	if ( elem.nodeType === 1 && ( "height" in props || "width" in props ) ) {
-		// Make sure that nothing sneaks out
-		// Record all 3 overflow attributes because IE9-10 do not
-		// change the overflow attribute when overflowX and
-		// overflowY are set to the same value
-		opts.overflow = [ style.overflow, style.overflowX, style.overflowY ];
-
-		// Set display property to inline-block for height/width
-		// animations on inline elements that are having width/height animated
-		display = jQuery.css( elem, "display" );
-
-		// Test default display if display is currently "none"
-		checkDisplay = display === "none" ?
-			data_priv.get( elem, "olddisplay" ) || defaultDisplay( elem.nodeName ) : display;
-
-		if ( checkDisplay === "inline" && jQuery.css( elem, "float" ) === "none" ) {
-			style.display = "inline-block";
-		}
-	}
-
-	if ( opts.overflow ) {
-		style.overflow = "hidden";
-		anim.always(function() {
-			style.overflow = opts.overflow[ 0 ];
-			style.overflowX = opts.overflow[ 1 ];
-			style.overflowY = opts.overflow[ 2 ];
-		});
-	}
-
-	// show/hide pass
-	for ( prop in props ) {
-		value = props[ prop ];
-		if ( rfxtypes.exec( value ) ) {
-			delete props[ prop ];
-			toggle = toggle || value === "toggle";
-			if ( value === ( hidden ? "hide" : "show" ) ) {
-
-				// If there is dataShow left over from a stopped hide or show and we are going to proceed with show, we should pretend to be hidden
-				if ( value === "show" && dataShow && dataShow[ prop ] !== undefined ) {
-					hidden = true;
-				} else {
-					continue;
-				}
-			}
-			orig[ prop ] = dataShow && dataShow[ prop ] || jQuery.style( elem, prop );
-
-		// Any non-fx value stops us from restoring the original display value
-		} else {
-			display = undefined;
-		}
-	}
-
-	if ( !jQuery.isEmptyObject( orig ) ) {
-		if ( dataShow ) {
-			if ( "hidden" in dataShow ) {
-				hidden = dataShow.hidden;
-			}
-		} else {
-			dataShow = data_priv.access( elem, "fxshow", {} );
-		}
-
-		// store state if its toggle - enables .stop().toggle() to "reverse"
-		if ( toggle ) {
-			dataShow.hidden = !hidden;
-		}
-		if ( hidden ) {
-			jQuery( elem ).show();
-		} else {
-			anim.done(function() {
-				jQuery( elem ).hide();
-			});
-		}
-		anim.done(function() {
-			var prop;
-
-			data_priv.remove( elem, "fxshow" );
-			for ( prop in orig ) {
-				jQuery.style( elem, prop, orig[ prop ] );
-			}
-		});
-		for ( prop in orig ) {
-			tween = createTween( hidden ? dataShow[ prop ] : 0, prop, anim );
-
-			if ( !( prop in dataShow ) ) {
-				dataShow[ prop ] = tween.start;
-				if ( hidden ) {
-					tween.end = tween.start;
-					tween.start = prop === "width" || prop === "height" ? 1 : 0;
-				}
-			}
-		}
-
-	// If this is a noop like .hide().hide(), restore an overwritten display value
-	} else if ( (display === "none" ? defaultDisplay( elem.nodeName ) : display) === "inline" ) {
-		style.display = display;
-	}
-}
-
-function propFilter( props, specialEasing ) {
-	var index, name, easing, value, hooks;
-
-	// camelCase, specialEasing and expand cssHook pass
-	for ( index in props ) {
-		name = jQuery.camelCase( index );
-		easing = specialEasing[ name ];
-		value = props[ index ];
-		if ( jQuery.isArray( value ) ) {
-			easing = value[ 1 ];
-			value = props[ index ] = value[ 0 ];
-		}
-
-		if ( index !== name ) {
-			props[ name ] = value;
-			delete props[ index ];
-		}
-
-		hooks = jQuery.cssHooks[ name ];
-		if ( hooks && "expand" in hooks ) {
-			value = hooks.expand( value );
-			delete props[ name ];
-
-			// not quite $.extend, this wont overwrite keys already present.
-			// also - reusing 'index' from above because we have the correct "name"
-			for ( index in value ) {
-				if ( !( index in props ) ) {
-					props[ index ] = value[ index ];
-					specialEasing[ index ] = easing;
-				}
-			}
-		} else {
-			specialEasing[ name ] = easing;
-		}
-	}
-}
-
-function Animation( elem, properties, options ) {
-	var result,
-		stopped,
-		index = 0,
-		length = animationPrefilters.length,
-		deferred = jQuery.Deferred().always( function() {
-			// don't match elem in the :animated selector
-			delete tick.elem;
-		}),
-		tick = function() {
-			if ( stopped ) {
-				return false;
-			}
-			var currentTime = fxNow || createFxNow(),
-				remaining = Math.max( 0, animation.startTime + animation.duration - currentTime ),
-				// archaic crash bug won't allow us to use 1 - ( 0.5 || 0 ) (#12497)
-				temp = remaining / animation.duration || 0,
-				percent = 1 - temp,
-				index = 0,
-				length = animation.tweens.length;
-
-			for ( ; index < length ; index++ ) {
-				animation.tweens[ index ].run( percent );
-			}
-
-			deferred.notifyWith( elem, [ animation, percent, remaining ]);
-
-			if ( percent < 1 && length ) {
-				return remaining;
-			} else {
-				deferred.resolveWith( elem, [ animation ] );
-				return false;
-			}
-		},
-		animation = deferred.promise({
-			elem: elem,
-			props: jQuery.extend( {}, properties ),
-			opts: jQuery.extend( true, { specialEasing: {} }, options ),
-			originalProperties: properties,
-			originalOptions: options,
-			startTime: fxNow || createFxNow(),
-			duration: options.duration,
-			tweens: [],
-			createTween: function( prop, end ) {
-				var tween = jQuery.Tween( elem, animation.opts, prop, end,
-						animation.opts.specialEasing[ prop ] || animation.opts.easing );
-				animation.tweens.push( tween );
-				return tween;
-			},
-			stop: function( gotoEnd ) {
-				var index = 0,
-					// if we are going to the end, we want to run all the tweens
-					// otherwise we skip this part
-					length = gotoEnd ? animation.tweens.length : 0;
-				if ( stopped ) {
-					return this;
-				}
-				stopped = true;
-				for ( ; index < length ; index++ ) {
-					animation.tweens[ index ].run( 1 );
-				}
-
-				// resolve when we played the last frame
-				// otherwise, reject
-				if ( gotoEnd ) {
-					deferred.resolveWith( elem, [ animation, gotoEnd ] );
-				} else {
-					deferred.rejectWith( elem, [ animation, gotoEnd ] );
-				}
-				return this;
-			}
-		}),
-		props = animation.props;
-
-	propFilter( props, animation.opts.specialEasing );
-
-	for ( ; index < length ; index++ ) {
-		result = animationPrefilters[ index ].call( animation, elem, props, animation.opts );
-		if ( result ) {
-			return result;
-		}
-	}
-
-	jQuery.map( props, createTween, animation );
-
-	if ( jQuery.isFunction( animation.opts.start ) ) {
-		animation.opts.start.call( elem, animation );
-	}
-
-	jQuery.fx.timer(
-		jQuery.extend( tick, {
-			elem: elem,
-			anim: animation,
-			queue: animation.opts.queue
-		})
-	);
-
-	// attach callbacks from options
-	return animation.progress( animation.opts.progress )
-		.done( animation.opts.done, animation.opts.complete )
-		.fail( animation.opts.fail )
-		.always( animation.opts.always );
-}
-
-jQuery.Animation = jQuery.extend( Animation, {
-
-	tweener: function( props, callback ) {
-		if ( jQuery.isFunction( props ) ) {
-			callback = props;
-			props = [ "*" ];
-		} else {
-			props = props.split(" ");
-		}
-
-		var prop,
-			index = 0,
-			length = props.length;
-
-		for ( ; index < length ; index++ ) {
-			prop = props[ index ];
-			tweeners[ prop ] = tweeners[ prop ] || [];
-			tweeners[ prop ].unshift( callback );
-		}
-	},
-
-	prefilter: function( callback, prepend ) {
-		if ( prepend ) {
-			animationPrefilters.unshift( callback );
-		} else {
-			animationPrefilters.push( callback );
-		}
-	}
-});
-
-jQuery.speed = function( speed, easing, fn ) {
-	var opt = speed && typeof speed === "object" ? jQuery.extend( {}, speed ) : {
-		complete: fn || !fn && easing ||
-			jQuery.isFunction( speed ) && speed,
-		duration: speed,
-		easing: fn && easing || easing && !jQuery.isFunction( easing ) && easing
-	};
-
-	opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
-		opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[ opt.duration ] : jQuery.fx.speeds._default;
-
-	// normalize opt.queue - true/undefined/null -> "fx"
-	if ( opt.queue == null || opt.queue === true ) {
-		opt.queue = "fx";
-	}
-
-	// Queueing
-	opt.old = opt.complete;
-
-	opt.complete = function() {
-		if ( jQuery.isFunction( opt.old ) ) {
-			opt.old.call( this );
-		}
-
-		if ( opt.queue ) {
-			jQuery.dequeue( this, opt.queue );
-		}
-	};
-
-	return opt;
-};
-
-jQuery.fn.extend({
-	fadeTo: function( speed, to, easing, callback ) {
-
-		// show any hidden elements after setting opacity to 0
-		return this.filter( isHidden ).css( "opacity", 0 ).show()
-
-			// animate to the value specified
-			.end().animate({ opacity: to }, speed, easing, callback );
-	},
-	animate: function( prop, speed, easing, callback ) {
-		var empty = jQuery.isEmptyObject( prop ),
-			optall = jQuery.speed( speed, easing, callback ),
-			doAnimation = function() {
-				// Operate on a copy of prop so per-property easing won't be lost
-				var anim = Animation( this, jQuery.extend( {}, prop ), optall );
-
-				// Empty animations, or finishing resolves immediately
-				if ( empty || data_priv.get( this, "finish" ) ) {
-					anim.stop( true );
-				}
-			};
-			doAnimation.finish = doAnimation;
-
-		return empty || optall.queue === false ?
-			this.each( doAnimation ) :
-			this.queue( optall.queue, doAnimation );
-	},
-	stop: function( type, clearQueue, gotoEnd ) {
-		var stopQueue = function( hooks ) {
-			var stop = hooks.stop;
-			delete hooks.stop;
-			stop( gotoEnd );
-		};
-
-		if ( typeof type !== "string" ) {
-			gotoEnd = clearQueue;
-			clearQueue = type;
-			type = undefined;
-		}
-		if ( clearQueue && type !== false ) {
-			this.queue( type || "fx", [] );
-		}
-
-		return this.each(function() {
-			var dequeue = true,
-				index = type != null && type + "queueHooks",
-				timers = jQuery.timers,
-				data = data_priv.get( this );
-
-			if ( index ) {
-				if ( data[ index ] && data[ index ].stop ) {
-					stopQueue( data[ index ] );
-				}
-			} else {
-				for ( index in data ) {
-					if ( data[ index ] && data[ index ].stop && rrun.test( index ) ) {
-						stopQueue( data[ index ] );
-					}
-				}
-			}
-
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && (type == null || timers[ index ].queue === type) ) {
-					timers[ index ].anim.stop( gotoEnd );
-					dequeue = false;
-					timers.splice( index, 1 );
-				}
-			}
-
-			// start the next in the queue if the last step wasn't forced
-			// timers currently will call their complete callbacks, which will dequeue
-			// but only if they were gotoEnd
-			if ( dequeue || !gotoEnd ) {
-				jQuery.dequeue( this, type );
-			}
-		});
-	},
-	finish: function( type ) {
-		if ( type !== false ) {
-			type = type || "fx";
-		}
-		return this.each(function() {
-			var index,
-				data = data_priv.get( this ),
-				queue = data[ type + "queue" ],
-				hooks = data[ type + "queueHooks" ],
-				timers = jQuery.timers,
-				length = queue ? queue.length : 0;
-
-			// enable finishing flag on private data
-			data.finish = true;
-
-			// empty the queue first
-			jQuery.queue( this, type, [] );
-
-			if ( hooks && hooks.stop ) {
-				hooks.stop.call( this, true );
-			}
-
-			// look for any active animations, and finish them
-			for ( index = timers.length; index--; ) {
-				if ( timers[ index ].elem === this && timers[ index ].queue === type ) {
-					timers[ index ].anim.stop( true );
-					timers.splice( index, 1 );
-				}
-			}
-
-			// look for any animations in the old queue and finish them
-			for ( index = 0; index < length; index++ ) {
-				if ( queue[ index ] && queue[ index ].finish ) {
-					queue[ index ].finish.call( this );
-				}
-			}
-
-			// turn off finishing flag
-			delete data.finish;
-		});
-	}
-});
-
-jQuery.each([ "toggle", "show", "hide" ], function( i, name ) {
-	var cssFn = jQuery.fn[ name ];
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return speed == null || typeof speed === "boolean" ?
-			cssFn.apply( this, arguments ) :
-			this.animate( genFx( name, true ), speed, easing, callback );
-	};
-});
-
-// Generate shortcuts for custom animations
-jQuery.each({
-	slideDown: genFx("show"),
-	slideUp: genFx("hide"),
-	slideToggle: genFx("toggle"),
-	fadeIn: { opacity: "show" },
-	fadeOut: { opacity: "hide" },
-	fadeToggle: { opacity: "toggle" }
-}, function( name, props ) {
-	jQuery.fn[ name ] = function( speed, easing, callback ) {
-		return this.animate( props, speed, easing, callback );
-	};
-});
-
-jQuery.timers = [];
-jQuery.fx.tick = function() {
-	var timer,
-		i = 0,
-		timers = jQuery.timers;
-
-	fxNow = jQuery.now();
-
-	for ( ; i < timers.length; i++ ) {
-		timer = timers[ i ];
-		// Checks the timer has not already been removed
-		if ( !timer() && timers[ i ] === timer ) {
-			timers.splice( i--, 1 );
-		}
-	}
-
-	if ( !timers.length ) {
-		jQuery.fx.stop();
-	}
-	fxNow = undefined;
-};
-
-jQuery.fx.timer = function( timer ) {
-	jQuery.timers.push( timer );
-	if ( timer() ) {
-		jQuery.fx.start();
-	} else {
-		jQuery.timers.pop();
-	}
-};
-
-jQuery.fx.interval = 13;
-
-jQuery.fx.start = function() {
-	if ( !timerId ) {
-		timerId = setInterval( jQuery.fx.tick, jQuery.fx.interval );
-	}
-};
-
-jQuery.fx.stop = function() {
-	clearInterval( timerId );
-	timerId = null;
-};
-
-jQuery.fx.speeds = {
-	slow: 600,
-	fast: 200,
-	// Default speed
-	_default: 400
-};
-
-
-// Based off of the plugin by Clint Helfers, with permission.
-// http://blindsignals.com/index.php/2009/07/jquery-delay/
-jQuery.fn.delay = function( time, type ) {
-	time = jQuery.fx ? jQuery.fx.speeds[ time ] || time : time;
-	type = type || "fx";
-
-	return this.queue( type, function( next, hooks ) {
-		var timeout = setTimeout( next, time );
-		hooks.stop = function() {
-			clearTimeout( timeout );
-		};
-	});
-};
-
-
-(function() {
-	var input = document.createElement( "input" ),
-		select = document.createElement( "select" ),
-		opt = select.appendChild( document.createElement( "option" ) );
-
-	input.type = "checkbox";
-
-	// Support: iOS 5.1, Android 4.x, Android 2.3
-	// Check the default checkbox/radio value ("" on old WebKit; "on" elsewhere)
-	support.checkOn = input.value !== "";
-
-	// Must access the parent to make an option select properly
-	// Support: IE9, IE10
-	support.optSelected = opt.selected;
-
-	// Make sure that the options inside disabled selects aren't marked as disabled
-	// (WebKit marks them as disabled)
-	select.disabled = true;
-	support.optDisabled = !opt.disabled;
-
-	// Check if an input maintains its value after becoming a radio
-	// Support: IE9, IE10
-	input = document.createElement( "input" );
-	input.value = "t";
-	input.type = "radio";
-	support.radioValue = input.value === "t";
-})();
-
-
-var nodeHook, boolHook,
-	attrHandle = jQuery.expr.attrHandle;
-
-jQuery.fn.extend({
-	attr: function( name, value ) {
-		return access( this, jQuery.attr, name, value, arguments.length > 1 );
-	},
-
-	removeAttr: function( name ) {
-		return this.each(function() {
-			jQuery.removeAttr( this, name );
-		});
-	}
-});
-
-jQuery.extend({
-	attr: function( elem, name, value ) {
-		var hooks, ret,
-			nType = elem.nodeType;
-
-		// don't get/set attributes on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		// Fallback to prop when attributes are not supported
-		if ( typeof elem.getAttribute === strundefined ) {
-			return jQuery.prop( elem, name, value );
-		}
-
-		// All attributes are lowercase
-		// Grab necessary hook if one is defined
-		if ( nType !== 1 || !jQuery.isXMLDoc( elem ) ) {
-			name = name.toLowerCase();
-			hooks = jQuery.attrHooks[ name ] ||
-				( jQuery.expr.match.bool.test( name ) ? boolHook : nodeHook );
-		}
-
-		if ( value !== undefined ) {
-
-			if ( value === null ) {
-				jQuery.removeAttr( elem, name );
-
-			} else if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
-				return ret;
-
-			} else {
-				elem.setAttribute( name, value + "" );
-				return value;
-			}
-
-		} else if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
-			return ret;
-
-		} else {
-			ret = jQuery.find.attr( elem, name );
-
-			// Non-existent attributes return null, we normalize to undefined
-			return ret == null ?
-				undefined :
-				ret;
-		}
-	},
-
-	removeAttr: function( elem, value ) {
-		var name, propName,
-			i = 0,
-			attrNames = value && value.match( rnotwhite );
-
-		if ( attrNames && elem.nodeType === 1 ) {
-			while ( (name = attrNames[i++]) ) {
-				propName = jQuery.propFix[ name ] || name;
-
-				// Boolean attributes get special treatment (#10870)
-				if ( jQuery.expr.match.bool.test( name ) ) {
-					// Set corresponding property to false
-					elem[ propName ] = false;
-				}
-
-				elem.removeAttribute( name );
-			}
-		}
-	},
-
-	attrHooks: {
-		type: {
-			set: function( elem, value ) {
-				if ( !support.radioValue && value === "radio" &&
-					jQuery.nodeName( elem, "input" ) ) {
-					// Setting the type on a radio button after the value resets the value in IE6-9
-					// Reset value to default in case type is set after value during creation
-					var val = elem.value;
-					elem.setAttribute( "type", value );
-					if ( val ) {
-						elem.value = val;
-					}
-					return value;
-				}
-			}
-		}
-	}
-});
-
-// Hooks for boolean attributes
-boolHook = {
-	set: function( elem, value, name ) {
-		if ( value === false ) {
-			// Remove boolean attributes when set to false
-			jQuery.removeAttr( elem, name );
-		} else {
-			elem.setAttribute( name, name );
-		}
-		return name;
-	}
-};
-jQuery.each( jQuery.expr.match.bool.source.match( /\w+/g ), function( i, name ) {
-	var getter = attrHandle[ name ] || jQuery.find.attr;
-
-	attrHandle[ name ] = function( elem, name, isXML ) {
-		var ret, handle;
-		if ( !isXML ) {
-			// Avoid an infinite loop by temporarily removing this function from the getter
-			handle = attrHandle[ name ];
-			attrHandle[ name ] = ret;
-			ret = getter( elem, name, isXML ) != null ?
-				name.toLowerCase() :
-				null;
-			attrHandle[ name ] = handle;
-		}
-		return ret;
-	};
-});
-
-
-
-
-var rfocusable = /^(?:input|select|textarea|button)$/i;
-
-jQuery.fn.extend({
-	prop: function( name, value ) {
-		return access( this, jQuery.prop, name, value, arguments.length > 1 );
-	},
-
-	removeProp: function( name ) {
-		return this.each(function() {
-			delete this[ jQuery.propFix[ name ] || name ];
-		});
-	}
-});
-
-jQuery.extend({
-	propFix: {
-		"for": "htmlFor",
-		"class": "className"
-	},
-
-	prop: function( elem, name, value ) {
-		var ret, hooks, notxml,
-			nType = elem.nodeType;
-
-		// don't get/set properties on text, comment and attribute nodes
-		if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
-			return;
-		}
-
-		notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
-
-		if ( notxml ) {
-			// Fix name and attach hooks
-			name = jQuery.propFix[ name ] || name;
-			hooks = jQuery.propHooks[ name ];
-		}
-
-		if ( value !== undefined ) {
-			return hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ?
-				ret :
-				( elem[ name ] = value );
-
-		} else {
-			return hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ?
-				ret :
-				elem[ name ];
-		}
-	},
-
-	propHooks: {
-		tabIndex: {
-			get: function( elem ) {
-				return elem.hasAttribute( "tabindex" ) || rfocusable.test( elem.nodeName ) || elem.href ?
-					elem.tabIndex :
-					-1;
-			}
-		}
-	}
-});
-
-// Support: IE9+
-// Selectedness for an option in an optgroup can be inaccurate
-if ( !support.optSelected ) {
-	jQuery.propHooks.selected = {
-		get: function( elem ) {
-			var parent = elem.parentNode;
-			if ( parent && parent.parentNode ) {
-				parent.parentNode.selectedIndex;
-			}
-			return null;
-		}
-	};
-}
-
-jQuery.each([
-	"tabIndex",
-	"readOnly",
-	"maxLength",
-	"cellSpacing",
-	"cellPadding",
-	"rowSpan",
-	"colSpan",
-	"useMap",
-	"frameBorder",
-	"contentEditable"
-], function() {
-	jQuery.propFix[ this.toLowerCase() ] = this;
-});
-
-
-
-
-var rclass = /[\t\r\n\f]/g;
-
-jQuery.fn.extend({
-	addClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			proceed = typeof value === "string" && value,
-			i = 0,
-			len = this.length;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).addClass( value.call( this, j, this.className ) );
-			});
-		}
-
-		if ( proceed ) {
-			// The disjunction here is for better compressibility (see removeClass)
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					" "
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						if ( cur.indexOf( " " + clazz + " " ) < 0 ) {
-							cur += clazz + " ";
-						}
-					}
-
-					// only assign if different to avoid unneeded rendering.
-					finalValue = jQuery.trim( cur );
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	removeClass: function( value ) {
-		var classes, elem, cur, clazz, j, finalValue,
-			proceed = arguments.length === 0 || typeof value === "string" && value,
-			i = 0,
-			len = this.length;
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( j ) {
-				jQuery( this ).removeClass( value.call( this, j, this.className ) );
-			});
-		}
-		if ( proceed ) {
-			classes = ( value || "" ).match( rnotwhite ) || [];
-
-			for ( ; i < len; i++ ) {
-				elem = this[ i ];
-				// This expression is here for better compressibility (see addClass)
-				cur = elem.nodeType === 1 && ( elem.className ?
-					( " " + elem.className + " " ).replace( rclass, " " ) :
-					""
-				);
-
-				if ( cur ) {
-					j = 0;
-					while ( (clazz = classes[j++]) ) {
-						// Remove *all* instances
-						while ( cur.indexOf( " " + clazz + " " ) >= 0 ) {
-							cur = cur.replace( " " + clazz + " ", " " );
-						}
-					}
-
-					// only assign if different to avoid unneeded rendering.
-					finalValue = value ? jQuery.trim( cur ) : "";
-					if ( elem.className !== finalValue ) {
-						elem.className = finalValue;
-					}
-				}
-			}
-		}
-
-		return this;
-	},
-
-	toggleClass: function( value, stateVal ) {
-		var type = typeof value;
-
-		if ( typeof stateVal === "boolean" && type === "string" ) {
-			return stateVal ? this.addClass( value ) : this.removeClass( value );
-		}
-
-		if ( jQuery.isFunction( value ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
-			});
-		}
-
-		return this.each(function() {
-			if ( type === "string" ) {
-				// toggle individual class names
-				var className,
-					i = 0,
-					self = jQuery( this ),
-					classNames = value.match( rnotwhite ) || [];
-
-				while ( (className = classNames[ i++ ]) ) {
-					// check each className given, space separated list
-					if ( self.hasClass( className ) ) {
-						self.removeClass( className );
-					} else {
-						self.addClass( className );
-					}
-				}
-
-			// Toggle whole class name
-			} else if ( type === strundefined || type === "boolean" ) {
-				if ( this.className ) {
-					// store className if set
-					data_priv.set( this, "__className__", this.className );
-				}
-
-				// If the element has a class name or if we're passed "false",
-				// then remove the whole classname (if there was one, the above saved it).
-				// Otherwise bring back whatever was previously saved (if anything),
-				// falling back to the empty string if nothing was stored.
-				this.className = this.className || value === false ? "" : data_priv.get( this, "__className__" ) || "";
-			}
-		});
-	},
-
-	hasClass: function( selector ) {
-		var className = " " + selector + " ",
-			i = 0,
-			l = this.length;
-		for ( ; i < l; i++ ) {
-			if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) >= 0 ) {
-				return true;
-			}
-		}
-
-		return false;
-	}
-});
-
-
-
-
-var rreturn = /\r/g;
-
-jQuery.fn.extend({
-	val: function( value ) {
-		var hooks, ret, isFunction,
-			elem = this[0];
-
-		if ( !arguments.length ) {
-			if ( elem ) {
-				hooks = jQuery.valHooks[ elem.type ] || jQuery.valHooks[ elem.nodeName.toLowerCase() ];
-
-				if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
-					return ret;
-				}
-
-				ret = elem.value;
-
-				return typeof ret === "string" ?
-					// handle most common string cases
-					ret.replace(rreturn, "") :
-					// handle cases where value is null/undef or number
-					ret == null ? "" : ret;
-			}
-
-			return;
-		}
-
-		isFunction = jQuery.isFunction( value );
-
-		return this.each(function( i ) {
-			var val;
-
-			if ( this.nodeType !== 1 ) {
-				return;
-			}
-
-			if ( isFunction ) {
-				val = value.call( this, i, jQuery( this ).val() );
-			} else {
-				val = value;
-			}
-
-			// Treat null/undefined as ""; convert numbers to string
-			if ( val == null ) {
-				val = "";
-
-			} else if ( typeof val === "number" ) {
-				val += "";
-
-			} else if ( jQuery.isArray( val ) ) {
-				val = jQuery.map( val, function( value ) {
-					return value == null ? "" : value + "";
-				});
-			}
-
-			hooks = jQuery.valHooks[ this.type ] || jQuery.valHooks[ this.nodeName.toLowerCase() ];
-
-			// If set returns undefined, fall back to normal setting
-			if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
-				this.value = val;
-			}
-		});
-	}
-});
-
-jQuery.extend({
-	valHooks: {
-		option: {
-			get: function( elem ) {
-				var val = jQuery.find.attr( elem, "value" );
-				return val != null ?
-					val :
-					// Support: IE10-11+
-					// option.text throws exceptions (#14686, #14858)
-					jQuery.trim( jQuery.text( elem ) );
-			}
-		},
-		select: {
-			get: function( elem ) {
-				var value, option,
-					options = elem.options,
-					index = elem.selectedIndex,
-					one = elem.type === "select-one" || index < 0,
-					values = one ? null : [],
-					max = one ? index + 1 : options.length,
-					i = index < 0 ?
-						max :
-						one ? index : 0;
-
-				// Loop through all the selected options
-				for ( ; i < max; i++ ) {
-					option = options[ i ];
-
-					// IE6-9 doesn't update selected after form reset (#2551)
-					if ( ( option.selected || i === index ) &&
-							// Don't return options that are disabled or in a disabled optgroup
-							( support.optDisabled ? !option.disabled : option.getAttribute( "disabled" ) === null ) &&
-							( !option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" ) ) ) {
-
-						// Get the specific value for the option
-						value = jQuery( option ).val();
-
-						// We don't need an array for one selects
-						if ( one ) {
-							return value;
-						}
-
-						// Multi-Selects return an array
-						values.push( value );
-					}
-				}
-
-				return values;
-			},
-
-			set: function( elem, value ) {
-				var optionSet, option,
-					options = elem.options,
-					values = jQuery.makeArray( value ),
-					i = options.length;
-
-				while ( i-- ) {
-					option = options[ i ];
-					if ( (option.selected = jQuery.inArray( option.value, values ) >= 0) ) {
-						optionSet = true;
-					}
-				}
-
-				// force browsers to behave consistently when non-matching value is set
-				if ( !optionSet ) {
-					elem.selectedIndex = -1;
-				}
-				return values;
-			}
-		}
-	}
-});
-
-// Radios and checkboxes getter/setter
-jQuery.each([ "radio", "checkbox" ], function() {
-	jQuery.valHooks[ this ] = {
-		set: function( elem, value ) {
-			if ( jQuery.isArray( value ) ) {
-				return ( elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0 );
-			}
-		}
-	};
-	if ( !support.checkOn ) {
-		jQuery.valHooks[ this ].get = function( elem ) {
-			// Support: Webkit
-			// "" is returned instead of "on" if a value isn't specified
-			return elem.getAttribute("value") === null ? "on" : elem.value;
-		};
-	}
-});
-
-
-
-
-// Return jQuery for attributes-only inclusion
-
-
-jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
-	"mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave " +
-	"change select submit keydown keypress keyup error contextmenu").split(" "), function( i, name ) {
-
-	// Handle event binding
-	jQuery.fn[ name ] = function( data, fn ) {
-		return arguments.length > 0 ?
-			this.on( name, null, data, fn ) :
-			this.trigger( name );
-	};
-});
-
-jQuery.fn.extend({
-	hover: function( fnOver, fnOut ) {
-		return this.mouseenter( fnOver ).mouseleave( fnOut || fnOver );
-	},
-
-	bind: function( types, data, fn ) {
-		return this.on( types, null, data, fn );
-	},
-	unbind: function( types, fn ) {
-		return this.off( types, null, fn );
-	},
-
-	delegate: function( selector, types, data, fn ) {
-		return this.on( types, selector, data, fn );
-	},
-	undelegate: function( selector, types, fn ) {
-		// ( namespace ) or ( selector, types [, fn] )
-		return arguments.length === 1 ? this.off( selector, "**" ) : this.off( types, selector || "**", fn );
-	}
-});
-
-
-var nonce = jQuery.now();
-
-var rquery = (/\?/);
-
-
-
-// Support: Android 2.3
-// Workaround failure to string-cast null input
-jQuery.parseJSON = function( data ) {
-	return JSON.parse( data + "" );
-};
-
-
-// Cross-browser xml parsing
-jQuery.parseXML = function( data ) {
-	var xml, tmp;
-	if ( !data || typeof data !== "string" ) {
-		return null;
-	}
-
-	// Support: IE9
-	try {
-		tmp = new DOMParser();
-		xml = tmp.parseFromString( data, "text/xml" );
-	} catch ( e ) {
-		xml = undefined;
-	}
-
-	if ( !xml || xml.getElementsByTagName( "parsererror" ).length ) {
-		jQuery.error( "Invalid XML: " + data );
-	}
-	return xml;
-};
-
-
-var
-	// Document location
-	ajaxLocParts,
-	ajaxLocation,
-
-	rhash = /#.*$/,
-	rts = /([?&])_=[^&]*/,
-	rheaders = /^(.*?):[ \t]*([^\r\n]*)$/mg,
-	// #7653, #8125, #8152: local protocol detection
-	rlocalProtocol = /^(?:about|app|app-storage|.+-extension|file|res|widget):$/,
-	rnoContent = /^(?:GET|HEAD)$/,
-	rprotocol = /^\/\//,
-	rurl = /^([\w.+-]+:)(?:\/\/(?:[^\/?#]*@|)([^\/?#:]*)(?::(\d+)|)|)/,
-
-	/* Prefilters
-	 * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
-	 * 2) These are called:
-	 *    - BEFORE asking for a transport
-	 *    - AFTER param serialization (s.data is a string if s.processData is true)
-	 * 3) key is the dataType
-	 * 4) the catchall symbol "*" can be used
-	 * 5) execution will start with transport dataType and THEN continue down to "*" if needed
-	 */
-	prefilters = {},
-
-	/* Transports bindings
-	 * 1) key is the dataType
-	 * 2) the catchall symbol "*" can be used
-	 * 3) selection will start with transport dataType and THEN go to "*" if needed
-	 */
-	transports = {},
-
-	// Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
-	allTypes = "*/".concat("*");
-
-// #8138, IE may throw an exception when accessing
-// a field from window.location if document.domain has been set
-try {
-	ajaxLocation = location.href;
-} catch( e ) {
-	// Use the href attribute of an A element
-	// since IE will modify it given document.location
-	ajaxLocation = document.createElement( "a" );
-	ajaxLocation.href = "";
-	ajaxLocation = ajaxLocation.href;
-}
-
-// Segment location into parts
-ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
-
-// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
-function addToPrefiltersOrTransports( structure ) {
-
-	// dataTypeExpression is optional and defaults to "*"
-	return function( dataTypeExpression, func ) {
-
-		if ( typeof dataTypeExpression !== "string" ) {
-			func = dataTypeExpression;
-			dataTypeExpression = "*";
-		}
-
-		var dataType,
-			i = 0,
-			dataTypes = dataTypeExpression.toLowerCase().match( rnotwhite ) || [];
-
-		if ( jQuery.isFunction( func ) ) {
-			// For each dataType in the dataTypeExpression
-			while ( (dataType = dataTypes[i++]) ) {
-				// Prepend if requested
-				if ( dataType[0] === "+" ) {
-					dataType = dataType.slice( 1 ) || "*";
-					(structure[ dataType ] = structure[ dataType ] || []).unshift( func );
-
-				// Otherwise append
-				} else {
-					(structure[ dataType ] = structure[ dataType ] || []).push( func );
-				}
-			}
-		}
-	};
-}
-
-// Base inspection function for prefilters and transports
-function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR ) {
-
-	var inspected = {},
-		seekingTransport = ( structure === transports );
-
-	function inspect( dataType ) {
-		var selected;
-		inspected[ dataType ] = true;
-		jQuery.each( structure[ dataType ] || [], function( _, prefilterOrFactory ) {
-			var dataTypeOrTransport = prefilterOrFactory( options, originalOptions, jqXHR );
-			if ( typeof dataTypeOrTransport === "string" && !seekingTransport && !inspected[ dataTypeOrTransport ] ) {
-				options.dataTypes.unshift( dataTypeOrTransport );
-				inspect( dataTypeOrTransport );
-				return false;
-			} else if ( seekingTransport ) {
-				return !( selected = dataTypeOrTransport );
-			}
-		});
-		return selected;
-	}
-
-	return inspect( options.dataTypes[ 0 ] ) || !inspected[ "*" ] && inspect( "*" );
-}
-
-// A special extend for ajax options
-// that takes "flat" options (not to be deep extended)
-// Fixes #9887
-function ajaxExtend( target, src ) {
-	var key, deep,
-		flatOptions = jQuery.ajaxSettings.flatOptions || {};
-
-	for ( key in src ) {
-		if ( src[ key ] !== undefined ) {
-			( flatOptions[ key ] ? target : ( deep || (deep = {}) ) )[ key ] = src[ key ];
-		}
-	}
-	if ( deep ) {
-		jQuery.extend( true, target, deep );
-	}
-
-	return target;
-}
-
-/* Handles responses to an ajax request:
- * - finds the right dataType (mediates between content-type and expected dataType)
- * - returns the corresponding response
- */
-function ajaxHandleResponses( s, jqXHR, responses ) {
-
-	var ct, type, finalDataType, firstDataType,
-		contents = s.contents,
-		dataTypes = s.dataTypes;
-
-	// Remove auto dataType and get content-type in the process
-	while ( dataTypes[ 0 ] === "*" ) {
-		dataTypes.shift();
-		if ( ct === undefined ) {
-			ct = s.mimeType || jqXHR.getResponseHeader("Content-Type");
-		}
-	}
-
-	// Check if we're dealing with a known content-type
-	if ( ct ) {
-		for ( type in contents ) {
-			if ( contents[ type ] && contents[ type ].test( ct ) ) {
-				dataTypes.unshift( type );
-				break;
-			}
-		}
-	}
-
-	// Check to see if we have a response for the expected dataType
-	if ( dataTypes[ 0 ] in responses ) {
-		finalDataType = dataTypes[ 0 ];
-	} else {
-		// Try convertible dataTypes
-		for ( type in responses ) {
-			if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
-				finalDataType = type;
-				break;
-			}
-			if ( !firstDataType ) {
-				firstDataType = type;
-			}
-		}
-		// Or just use first one
-		finalDataType = finalDataType || firstDataType;
-	}
-
-	// If we found a dataType
-	// We add the dataType to the list if needed
-	// and return the corresponding response
-	if ( finalDataType ) {
-		if ( finalDataType !== dataTypes[ 0 ] ) {
-			dataTypes.unshift( finalDataType );
-		}
-		return responses[ finalDataType ];
-	}
-}
-
-/* Chain conversions given the request and the original response
- * Also sets the responseXXX fields on the jqXHR instance
- */
-function ajaxConvert( s, response, jqXHR, isSuccess ) {
-	var conv2, current, conv, tmp, prev,
-		converters = {},
-		// Work with a copy of dataTypes in case we need to modify it for conversion
-		dataTypes = s.dataTypes.slice();
-
-	// Create converters map with lowercased keys
-	if ( dataTypes[ 1 ] ) {
-		for ( conv in s.converters ) {
-			converters[ conv.toLowerCase() ] = s.converters[ conv ];
-		}
-	}
-
-	current = dataTypes.shift();
-
-	// Convert to each sequential dataType
-	while ( current ) {
-
-		if ( s.responseFields[ current ] ) {
-			jqXHR[ s.responseFields[ current ] ] = response;
-		}
-
-		// Apply the dataFilter if provided
-		if ( !prev && isSuccess && s.dataFilter ) {
-			response = s.dataFilter( response, s.dataType );
-		}
-
-		prev = current;
-		current = dataTypes.shift();
-
-		if ( current ) {
-
-		// There's only work to do if current dataType is non-auto
-			if ( current === "*" ) {
-
-				current = prev;
-
-			// Convert response if prev dataType is non-auto and differs from current
-			} else if ( prev !== "*" && prev !== current ) {
-
-				// Seek a direct converter
-				conv = converters[ prev + " " + current ] || converters[ "* " + current ];
-
-				// If none found, seek a pair
-				if ( !conv ) {
-					for ( conv2 in converters ) {
-
-						// If conv2 outputs current
-						tmp = conv2.split( " " );
-						if ( tmp[ 1 ] === current ) {
-
-							// If prev can be converted to accepted input
-							conv = converters[ prev + " " + tmp[ 0 ] ] ||
-								converters[ "* " + tmp[ 0 ] ];
-							if ( conv ) {
-								// Condense equivalence converters
-								if ( conv === true ) {
-									conv = converters[ conv2 ];
-
-								// Otherwise, insert the intermediate dataType
-								} else if ( converters[ conv2 ] !== true ) {
-									current = tmp[ 0 ];
-									dataTypes.unshift( tmp[ 1 ] );
-								}
-								break;
-							}
-						}
-					}
-				}
-
-				// Apply converter (if not an equivalence)
-				if ( conv !== true ) {
-
-					// Unless errors are allowed to bubble, catch and return them
-					if ( conv && s[ "throws" ] ) {
-						response = conv( response );
-					} else {
-						try {
-							response = conv( response );
-						} catch ( e ) {
-							return { state: "parsererror", error: conv ? e : "No conversion from " + prev + " to " + current };
-						}
-					}
-				}
-			}
-		}
-	}
-
-	return { state: "success", data: response };
-}
-
-jQuery.extend({
-
-	// Counter for holding the number of active queries
-	active: 0,
-
-	// Last-Modified header cache for next request
-	lastModified: {},
-	etag: {},
-
-	ajaxSettings: {
-		url: ajaxLocation,
-		type: "GET",
-		isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
-		global: true,
-		processData: true,
-		async: true,
-		contentType: "application/x-www-form-urlencoded; charset=UTF-8",
-		/*
-		timeout: 0,
-		data: null,
-		dataType: null,
-		username: null,
-		password: null,
-		cache: null,
-		throws: false,
-		traditional: false,
-		headers: {},
-		*/
-
-		accepts: {
-			"*": allTypes,
-			text: "text/plain",
-			html: "text/html",
-			xml: "application/xml, text/xml",
-			json: "application/json, text/javascript"
-		},
-
-		contents: {
-			xml: /xml/,
-			html: /html/,
-			json: /json/
-		},
-
-		responseFields: {
-			xml: "responseXML",
-			text: "responseText",
-			json: "responseJSON"
-		},
-
-		// Data converters
-		// Keys separate source (or catchall "*") and destination types with a single space
-		converters: {
-
-			// Convert anything to text
-			"* text": String,
-
-			// Text to html (true = no transformation)
-			"text html": true,
-
-			// Evaluate text as a json expression
-			"text json": jQuery.parseJSON,
-
-			// Parse text as xml
-			"text xml": jQuery.parseXML
-		},
-
-		// For options that shouldn't be deep extended:
-		// you can add your own custom options here if
-		// and when you create one that shouldn't be
-		// deep extended (see ajaxExtend)
-		flatOptions: {
-			url: true,
-			context: true
-		}
-	},
-
-	// Creates a full fledged settings object into target
-	// with both ajaxSettings and settings fields.
-	// If target is omitted, writes into ajaxSettings.
-	ajaxSetup: function( target, settings ) {
-		return settings ?
-
-			// Building a settings object
-			ajaxExtend( ajaxExtend( target, jQuery.ajaxSettings ), settings ) :
-
-			// Extending ajaxSettings
-			ajaxExtend( jQuery.ajaxSettings, target );
-	},
-
-	ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
-	ajaxTransport: addToPrefiltersOrTransports( transports ),
-
-	// Main method
-	ajax: function( url, options ) {
-
-		// If url is an object, simulate pre-1.5 signature
-		if ( typeof url === "object" ) {
-			options = url;
-			url = undefined;
-		}
-
-		// Force options to be an object
-		options = options || {};
-
-		var transport,
-			// URL without anti-cache param
-			cacheURL,
-			// Response headers
-			responseHeadersString,
-			responseHeaders,
-			// timeout handle
-			timeoutTimer,
-			// Cross-domain detection vars
-			parts,
-			// To know if global events are to be dispatched
-			fireGlobals,
-			// Loop variable
-			i,
-			// Create the final options object
-			s = jQuery.ajaxSetup( {}, options ),
-			// Callbacks context
-			callbackContext = s.context || s,
-			// Context for global events is callbackContext if it is a DOM node or jQuery collection
-			globalEventContext = s.context && ( callbackContext.nodeType || callbackContext.jquery ) ?
-				jQuery( callbackContext ) :
-				jQuery.event,
-			// Deferreds
-			deferred = jQuery.Deferred(),
-			completeDeferred = jQuery.Callbacks("once memory"),
-			// Status-dependent callbacks
-			statusCode = s.statusCode || {},
-			// Headers (they are sent all at once)
-			requestHeaders = {},
-			requestHeadersNames = {},
-			// The jqXHR state
-			state = 0,
-			// Default abort message
-			strAbort = "canceled",
-			// Fake xhr
-			jqXHR = {
-				readyState: 0,
-
-				// Builds headers hashtable if needed
-				getResponseHeader: function( key ) {
-					var match;
-					if ( state === 2 ) {
-						if ( !responseHeaders ) {
-							responseHeaders = {};
-							while ( (match = rheaders.exec( responseHeadersString )) ) {
-								responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
-							}
-						}
-						match = responseHeaders[ key.toLowerCase() ];
-					}
-					return match == null ? null : match;
-				},
-
-				// Raw string
-				getAllResponseHeaders: function() {
-					return state === 2 ? responseHeadersString : null;
-				},
-
-				// Caches the header
-				setRequestHeader: function( name, value ) {
-					var lname = name.toLowerCase();
-					if ( !state ) {
-						name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
-						requestHeaders[ name ] = value;
-					}
-					return this;
-				},
-
-				// Overrides response content-type header
-				overrideMimeType: function( type ) {
-					if ( !state ) {
-						s.mimeType = type;
-					}
-					return this;
-				},
-
-				// Status-dependent callbacks
-				statusCode: function( map ) {
-					var code;
-					if ( map ) {
-						if ( state < 2 ) {
-							for ( code in map ) {
-								// Lazy-add the new callback in a way that preserves old ones
-								statusCode[ code ] = [ statusCode[ code ], map[ code ] ];
-							}
-						} else {
-							// Execute the appropriate callbacks
-							jqXHR.always( map[ jqXHR.status ] );
-						}
-					}
-					return this;
-				},
-
-				// Cancel the request
-				abort: function( statusText ) {
-					var finalText = statusText || strAbort;
-					if ( transport ) {
-						transport.abort( finalText );
-					}
-					done( 0, finalText );
-					return this;
-				}
-			};
-
-		// Attach deferreds
-		deferred.promise( jqXHR ).complete = completeDeferred.add;
-		jqXHR.success = jqXHR.done;
-		jqXHR.error = jqXHR.fail;
-
-		// Remove hash character (#7531: and string promotion)
-		// Add protocol if not provided (prefilters might expect it)
-		// Handle falsy url in the settings object (#10093: consistency with old signature)
-		// We also use the url parameter if available
-		s.url = ( ( url || s.url || ajaxLocation ) + "" ).replace( rhash, "" )
-			.replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
-
-		// Alias method option to type as per ticket #12004
-		s.type = options.method || options.type || s.method || s.type;
-
-		// Extract dataTypes list
-		s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().match( rnotwhite ) || [ "" ];
-
-		// A cross-domain request is in order when we have a protocol:host:port mismatch
-		if ( s.crossDomain == null ) {
-			parts = rurl.exec( s.url.toLowerCase() );
-			s.crossDomain = !!( parts &&
-				( parts[ 1 ] !== ajaxLocParts[ 1 ] || parts[ 2 ] !== ajaxLocParts[ 2 ] ||
-					( parts[ 3 ] || ( parts[ 1 ] === "http:" ? "80" : "443" ) ) !==
-						( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? "80" : "443" ) ) )
-			);
-		}
-
-		// Convert data if not already a string
-		if ( s.data && s.processData && typeof s.data !== "string" ) {
-			s.data = jQuery.param( s.data, s.traditional );
-		}
-
-		// Apply prefilters
-		inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
-
-		// If request was aborted inside a prefilter, stop there
-		if ( state === 2 ) {
-			return jqXHR;
-		}
-
-		// We can fire global events as of now if asked to
-		fireGlobals = s.global;
-
-		// Watch for a new set of requests
-		if ( fireGlobals && jQuery.active++ === 0 ) {
-			jQuery.event.trigger("ajaxStart");
-		}
-
-		// Uppercase the type
-		s.type = s.type.toUpperCase();
-
-		// Determine if request has content
-		s.hasContent = !rnoContent.test( s.type );
-
-		// Save the URL in case we're toying with the If-Modified-Since
-		// and/or If-None-Match header later on
-		cacheURL = s.url;
-
-		// More options handling for requests with no content
-		if ( !s.hasContent ) {
-
-			// If data is available, append data to url
-			if ( s.data ) {
-				cacheURL = ( s.url += ( rquery.test( cacheURL ) ? "&" : "?" ) + s.data );
-				// #9682: remove data so that it's not used in an eventual retry
-				delete s.data;
-			}
-
-			// Add anti-cache in url if needed
-			if ( s.cache === false ) {
-				s.url = rts.test( cacheURL ) ?
-
-					// If there is already a '_' parameter, set its value
-					cacheURL.replace( rts, "$1_=" + nonce++ ) :
-
-					// Otherwise add one to the end
-					cacheURL + ( rquery.test( cacheURL ) ? "&" : "?" ) + "_=" + nonce++;
-			}
-		}
-
-		// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-		if ( s.ifModified ) {
-			if ( jQuery.lastModified[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ cacheURL ] );
-			}
-			if ( jQuery.etag[ cacheURL ] ) {
-				jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ cacheURL ] );
-			}
-		}
-
-		// Set the correct header, if data is being sent
-		if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
-			jqXHR.setRequestHeader( "Content-Type", s.contentType );
-		}
-
-		// Set the Accepts header for the server, depending on the dataType
-		jqXHR.setRequestHeader(
-			"Accept",
-			s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
-				s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
-				s.accepts[ "*" ]
-		);
-
-		// Check for headers option
-		for ( i in s.headers ) {
-			jqXHR.setRequestHeader( i, s.headers[ i ] );
-		}
-
-		// Allow custom headers/mimetypes and early abort
-		if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
-			// Abort if not done already and return
-			return jqXHR.abort();
-		}
-
-		// aborting is no longer a cancellation
-		strAbort = "abort";
-
-		// Install callbacks on deferreds
-		for ( i in { success: 1, error: 1, complete: 1 } ) {
-			jqXHR[ i ]( s[ i ] );
-		}
-
-		// Get transport
-		transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
-
-		// If no transport, we auto-abort
-		if ( !transport ) {
-			done( -1, "No Transport" );
-		} else {
-			jqXHR.readyState = 1;
-
-			// Send global event
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
-			}
-			// Timeout
-			if ( s.async && s.timeout > 0 ) {
-				timeoutTimer = setTimeout(function() {
-					jqXHR.abort("timeout");
-				}, s.timeout );
-			}
-
-			try {
-				state = 1;
-				transport.send( requestHeaders, done );
-			} catch ( e ) {
-				// Propagate exception as error if not done
-				if ( state < 2 ) {
-					done( -1, e );
-				// Simply rethrow otherwise
-				} else {
-					throw e;
-				}
-			}
-		}
-
-		// Callback for when everything is done
-		function done( status, nativeStatusText, responses, headers ) {
-			var isSuccess, success, error, response, modified,
-				statusText = nativeStatusText;
-
-			// Called once
-			if ( state === 2 ) {
-				return;
-			}
-
-			// State is "done" now
-			state = 2;
-
-			// Clear timeout if it exists
-			if ( timeoutTimer ) {
-				clearTimeout( timeoutTimer );
-			}
-
-			// Dereference transport for early garbage collection
-			// (no matter how long the jqXHR object will be used)
-			transport = undefined;
-
-			// Cache response headers
-			responseHeadersString = headers || "";
-
-			// Set readyState
-			jqXHR.readyState = status > 0 ? 4 : 0;
-
-			// Determine if successful
-			isSuccess = status >= 200 && status < 300 || status === 304;
-
-			// Get response data
-			if ( responses ) {
-				response = ajaxHandleResponses( s, jqXHR, responses );
-			}
-
-			// Convert no matter what (that way responseXXX fields are always set)
-			response = ajaxConvert( s, response, jqXHR, isSuccess );
-
-			// If successful, handle type chaining
-			if ( isSuccess ) {
-
-				// Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
-				if ( s.ifModified ) {
-					modified = jqXHR.getResponseHeader("Last-Modified");
-					if ( modified ) {
-						jQuery.lastModified[ cacheURL ] = modified;
-					}
-					modified = jqXHR.getResponseHeader("etag");
-					if ( modified ) {
-						jQuery.etag[ cacheURL ] = modified;
-					}
-				}
-
-				// if no content
-				if ( status === 204 || s.type === "HEAD" ) {
-					statusText = "nocontent";
-
-				// if not modified
-				} else if ( status === 304 ) {
-					statusText = "notmodified";
-
-				// If we have data, let's convert it
-				} else {
-					statusText = response.state;
-					success = response.data;
-					error = response.error;
-					isSuccess = !error;
-				}
-			} else {
-				// We extract error from statusText
-				// then normalize statusText and status for non-aborts
-				error = statusText;
-				if ( status || !statusText ) {
-					statusText = "error";
-					if ( status < 0 ) {
-						status = 0;
-					}
-				}
-			}
-
-			// Set data for the fake xhr object
-			jqXHR.status = status;
-			jqXHR.statusText = ( nativeStatusText || statusText ) + "";
-
-			// Success/Error
-			if ( isSuccess ) {
-				deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
-			} else {
-				deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
-			}
-
-			// Status-dependent callbacks
-			jqXHR.statusCode( statusCode );
-			statusCode = undefined;
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( isSuccess ? "ajaxSuccess" : "ajaxError",
-					[ jqXHR, s, isSuccess ? success : error ] );
-			}
-
-			// Complete
-			completeDeferred.fireWith( callbackContext, [ jqXHR, statusText ] );
-
-			if ( fireGlobals ) {
-				globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
-				// Handle the global AJAX counter
-				if ( !( --jQuery.active ) ) {
-					jQuery.event.trigger("ajaxStop");
-				}
-			}
-		}
-
-		return jqXHR;
-	},
-
-	getJSON: function( url, data, callback ) {
-		return jQuery.get( url, data, callback, "json" );
-	},
-
-	getScript: function( url, callback ) {
-		return jQuery.get( url, undefined, callback, "script" );
-	}
-});
-
-jQuery.each( [ "get", "post" ], function( i, method ) {
-	jQuery[ method ] = function( url, data, callback, type ) {
-		// shift arguments if data argument was omitted
-		if ( jQuery.isFunction( data ) ) {
-			type = type || callback;
-			callback = data;
-			data = undefined;
-		}
-
-		return jQuery.ajax({
-			url: url,
-			type: method,
-			dataType: type,
-			data: data,
-			success: callback
-		});
-	};
-});
-
-// Attach a bunch of functions for handling common AJAX events
-jQuery.each( [ "ajaxStart", "ajaxStop", "ajaxComplete", "ajaxError", "ajaxSuccess", "ajaxSend" ], function( i, type ) {
-	jQuery.fn[ type ] = function( fn ) {
-		return this.on( type, fn );
-	};
-});
-
-
-jQuery._evalUrl = function( url ) {
-	return jQuery.ajax({
-		url: url,
-		type: "GET",
-		dataType: "script",
-		async: false,
-		global: false,
-		"throws": true
-	});
-};
-
-
-jQuery.fn.extend({
-	wrapAll: function( html ) {
-		var wrap;
-
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).wrapAll( html.call(this, i) );
-			});
-		}
-
-		if ( this[ 0 ] ) {
-
-			// The elements to wrap the target around
-			wrap = jQuery( html, this[ 0 ].ownerDocument ).eq( 0 ).clone( true );
-
-			if ( this[ 0 ].parentNode ) {
-				wrap.insertBefore( this[ 0 ] );
-			}
-
-			wrap.map(function() {
-				var elem = this;
-
-				while ( elem.firstElementChild ) {
-					elem = elem.firstElementChild;
-				}
-
-				return elem;
-			}).append( this );
-		}
-
-		return this;
-	},
-
-	wrapInner: function( html ) {
-		if ( jQuery.isFunction( html ) ) {
-			return this.each(function( i ) {
-				jQuery( this ).wrapInner( html.call(this, i) );
-			});
-		}
-
-		return this.each(function() {
-			var self = jQuery( this ),
-				contents = self.contents();
-
-			if ( contents.length ) {
-				contents.wrapAll( html );
-
-			} else {
-				self.append( html );
-			}
-		});
-	},
-
-	wrap: function( html ) {
-		var isFunction = jQuery.isFunction( html );
-
-		return this.each(function( i ) {
-			jQuery( this ).wrapAll( isFunction ? html.call(this, i) : html );
-		});
-	},
-
-	unwrap: function() {
-		return this.parent().each(function() {
-			if ( !jQuery.nodeName( this, "body" ) ) {
-				jQuery( this ).replaceWith( this.childNodes );
-			}
-		}).end();
-	}
-});
-
-
-jQuery.expr.filters.hidden = function( elem ) {
-	// Support: Opera <= 12.12
-	// Opera reports offsetWidths and offsetHeights less than zero on some elements
-	return elem.offsetWidth <= 0 && elem.offsetHeight <= 0;
-};
-jQuery.expr.filters.visible = function( elem ) {
-	return !jQuery.expr.filters.hidden( elem );
-};
-
-
-
-
-var r20 = /%20/g,
-	rbracket = /\[\]$/,
-	rCRLF = /\r?\n/g,
-	rsubmitterTypes = /^(?:submit|button|image|reset|file)$/i,
-	rsubmittable = /^(?:input|select|textarea|keygen)/i;
-
-function buildParams( prefix, obj, traditional, add ) {
-	var name;
-
-	if ( jQuery.isArray( obj ) ) {
-		// Serialize array item.
-		jQuery.each( obj, function( i, v ) {
-			if ( traditional || rbracket.test( prefix ) ) {
-				// Treat each array item as a scalar.
-				add( prefix, v );
-
-			} else {
-				// Item is non-scalar (array or object), encode its numeric index.
-				buildParams( prefix + "[" + ( typeof v === "object" ? i : "" ) + "]", v, traditional, add );
-			}
-		});
-
-	} else if ( !traditional && jQuery.type( obj ) === "object" ) {
-		// Serialize object item.
-		for ( name in obj ) {
-			buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
-		}
-
-	} else {
-		// Serialize scalar item.
-		add( prefix, obj );
-	}
-}
-
-// Serialize an array of form elements or a set of
-// key/values into a query string
-jQuery.param = function( a, traditional ) {
-	var prefix,
-		s = [],
-		add = function( key, value ) {
-			// If value is a function, invoke it and return its value
-			value = jQuery.isFunction( value ) ? value() : ( value == null ? "" : value );
-			s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
-		};
-
-	// Set traditional to true for jQuery <= 1.3.2 behavior.
-	if ( traditional === undefined ) {
-		traditional = jQuery.ajaxSettings && jQuery.ajaxSettings.traditional;
-	}
-
-	// If an array was passed in, assume that it is an array of form elements.
-	if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
-		// Serialize the form elements
-		jQuery.each( a, function() {
-			add( this.name, this.value );
-		});
-
-	} else {
-		// If traditional, encode the "old" way (the way 1.3.2 or older
-		// did it), otherwise encode params recursively.
-		for ( prefix in a ) {
-			buildParams( prefix, a[ prefix ], traditional, add );
-		}
-	}
-
-	// Return the resulting serialization
-	return s.join( "&" ).replace( r20, "+" );
-};
-
-jQuery.fn.extend({
-	serialize: function() {
-		return jQuery.param( this.serializeArray() );
-	},
-	serializeArray: function() {
-		return this.map(function() {
-			// Can add propHook for "elements" to filter or add form elements
-			var elements = jQuery.prop( this, "elements" );
-			return elements ? jQuery.makeArray( elements ) : this;
-		})
-		.filter(function() {
-			var type = this.type;
-
-			// Use .is( ":disabled" ) so that fieldset[disabled] works
-			return this.name && !jQuery( this ).is( ":disabled" ) &&
-				rsubmittable.test( this.nodeName ) && !rsubmitterTypes.test( type ) &&
-				( this.checked || !rcheckableType.test( type ) );
-		})
-		.map(function( i, elem ) {
-			var val = jQuery( this ).val();
-
-			return val == null ?
-				null :
-				jQuery.isArray( val ) ?
-					jQuery.map( val, function( val ) {
-						return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-					}) :
-					{ name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
-		}).get();
-	}
-});
-
-
-jQuery.ajaxSettings.xhr = function() {
-	try {
-		return new XMLHttpRequest();
-	} catch( e ) {}
-};
-
-var xhrId = 0,
-	xhrCallbacks = {},
-	xhrSuccessStatus = {
-		// file protocol always yields status code 0, assume 200
-		0: 200,
-		// Support: IE9
-		// #1450: sometimes IE returns 1223 when it should be 204
-		1223: 204
-	},
-	xhrSupported = jQuery.ajaxSettings.xhr();
-
-// Support: IE9
-// Open requests must be manually aborted on unload (#5280)
-if ( window.ActiveXObject ) {
-	jQuery( window ).on( "unload", function() {
-		for ( var key in xhrCallbacks ) {
-			xhrCallbacks[ key ]();
-		}
-	});
-}
-
-support.cors = !!xhrSupported && ( "withCredentials" in xhrSupported );
-support.ajax = xhrSupported = !!xhrSupported;
-
-jQuery.ajaxTransport(function( options ) {
-	var callback;
-
-	// Cross domain only allowed if supported through XMLHttpRequest
-	if ( support.cors || xhrSupported && !options.crossDomain ) {
-		return {
-			send: function( headers, complete ) {
-				var i,
-					xhr = options.xhr(),
-					id = ++xhrId;
-
-				xhr.open( options.type, options.url, options.async, options.username, options.password );
-
-				// Apply custom fields if provided
-				if ( options.xhrFields ) {
-					for ( i in options.xhrFields ) {
-						xhr[ i ] = options.xhrFields[ i ];
-					}
-				}
-
-				// Override mime type if needed
-				if ( options.mimeType && xhr.overrideMimeType ) {
-					xhr.overrideMimeType( options.mimeType );
-				}
-
-				// X-Requested-With header
-				// For cross-domain requests, seeing as conditions for a preflight are
-				// akin to a jigsaw puzzle, we simply never set it to be sure.
-				// (it can always be set on a per-request basis or even using ajaxSetup)
-				// For same-domain requests, won't change header if already provided.
-				if ( !options.crossDomain && !headers["X-Requested-With"] ) {
-					headers["X-Requested-With"] = "XMLHttpRequest";
-				}
-
-				// Set headers
-				for ( i in headers ) {
-					xhr.setRequestHeader( i, headers[ i ] );
-				}
-
-				// Callback
-				callback = function( type ) {
-					return function() {
-						if ( callback ) {
-							delete xhrCallbacks[ id ];
-							callback = xhr.onload = xhr.onerror = null;
-
-							if ( type === "abort" ) {
-								xhr.abort();
-							} else if ( type === "error" ) {
-								complete(
-									// file: protocol always yields status 0; see #8605, #14207
-									xhr.status,
-									xhr.statusText
-								);
-							} else {
-								complete(
-									xhrSuccessStatus[ xhr.status ] || xhr.status,
-									xhr.statusText,
-									// Support: IE9
-									// Accessing binary-data responseText throws an exception
-									// (#11426)
-									typeof xhr.responseText === "string" ? {
-										text: xhr.responseText
-									} : undefined,
-									xhr.getAllResponseHeaders()
-								);
-							}
-						}
-					};
-				};
-
-				// Listen to events
-				xhr.onload = callback();
-				xhr.onerror = callback("error");
-
-				// Create the abort callback
-				callback = xhrCallbacks[ id ] = callback("abort");
-
-				try {
-					// Do send the request (this may raise an exception)
-					xhr.send( options.hasContent && options.data || null );
-				} catch ( e ) {
-					// #14683: Only rethrow if this hasn't been notified as an error yet
-					if ( callback ) {
-						throw e;
-					}
-				}
-			},
-
-			abort: function() {
-				if ( callback ) {
-					callback();
-				}
-			}
-		};
-	}
-});
-
-
-
-
-// Install script dataType
-jQuery.ajaxSetup({
-	accepts: {
-		script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
-	},
-	contents: {
-		script: /(?:java|ecma)script/
-	},
-	converters: {
-		"text script": function( text ) {
-			jQuery.globalEval( text );
-			return text;
-		}
-	}
-});
-
-// Handle cache's special case and crossDomain
-jQuery.ajaxPrefilter( "script", function( s ) {
-	if ( s.cache === undefined ) {
-		s.cache = false;
-	}
-	if ( s.crossDomain ) {
-		s.type = "GET";
-	}
-});
-
-// Bind script tag hack transport
-jQuery.ajaxTransport( "script", function( s ) {
-	// This transport only deals with cross domain requests
-	if ( s.crossDomain ) {
-		var script, callback;
-		return {
-			send: function( _, complete ) {
-				script = jQuery("
-          
-        
-      
-
-      
-    
-